# Suggest having hooks before any test cases (`prefer-hooks-on-top`) All hooks should be defined before the start of the tests ## Rule Details Examples of **incorrect** code for this rule ```js /* eslint jest/prefer-hooks-on-top: "error" */ describe('foo', () => { beforeEach(() => { //some hook code }); test('bar', () => { some_fn(); }); beforeAll(() => { //some hook code }); test('bar', () => { some_fn(); }); }); // Nested describe scenario describe('foo', () => { beforeAll(() => { //some hook code }); test('bar', () => { some_fn(); }); describe('inner_foo', () => { beforeEach(() => { //some hook code }); test('inner bar', () => { some_fn(); }); test('inner bar', () => { some_fn(); }); beforeAll(() => { //some hook code }); afterAll(() => { //some hook code }); test('inner bar', () => { some_fn(); }); }); }); ``` Examples of **correct** code for this rule ```js /* eslint jest/prefer-hooks-on-top: "error" */ describe('foo', () => { beforeEach(() => { //some hook code }); // Not affected by rule someSetup(); afterEach(() => { //some hook code }); test('bar', () => { some_fn(); }); }); // Nested describe scenario describe('foo', () => { beforeEach(() => { //some hook code }); test('bar', () => { some_fn(); }); describe('inner_foo', () => { beforeEach(() => { //some hook code }); test('inner bar', () => { some_fn(); }); }); }); ```