Bird
Raised Fist0
Cypresstesting~5 mins

beforeEach and afterEach hooks in Cypress - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner

What is the purpose of the beforeEach hook in Cypress?

The beforeEach hook runs a block of code before each test in a test suite. It helps set up a consistent starting state for tests, like visiting a page or logging in.

Click to reveal answer
beginner

When is the afterEach hook executed in Cypress?

The afterEach hook runs a block of code after each test in a test suite. It is used to clean up or reset things after a test finishes, like clearing cookies or resetting data.

Click to reveal answer
beginner

How do beforeEach and afterEach hooks help in writing tests?

They help avoid repeating setup and cleanup code in every test. This makes tests shorter, easier to read, and less error-prone.

Click to reveal answer
beginner

Show a simple example of using beforeEach and afterEach in Cypress.

describe('My Test Suite', () => {
  beforeEach(() => {
    cy.visit('/login')
  })

  afterEach(() => {
    cy.clearCookies()
  })

  it('logs in successfully', () => {
    cy.get('#username').type('user')
    cy.get('#password').type('pass')
    cy.get('button[type=submit]').click()
    cy.url().should('include', '/dashboard')
  })
})
Click to reveal answer
intermediate

Can beforeEach and afterEach hooks be nested inside describe blocks?

Yes. Hooks inside a describe block only run for tests inside that block. This helps organize setup and cleanup for different groups of tests.

Click to reveal answer

What does the beforeEach hook do in Cypress?

ARuns code before each test
BRuns code after all tests
CRuns code only once before all tests
DRuns code after each test

When is the afterEach hook executed?

ABefore each test
BBefore all tests
CAfter each test
DOnly once after all tests

Which hook would you use to visit a page before every test?

AafterEach
BbeforeAll
CafterAll
DbeforeEach

Can beforeEach hooks be scoped inside describe blocks?

AYes, they run only for tests inside that block
BNo, they must be global
CYes, but they run for all tests anyway
DNo, only <code>afterEach</code> can be scoped

What is a benefit of using beforeEach and afterEach?

AThey make tests slower
BThey reduce code repetition and improve test clarity
CThey run tests in parallel
DThey replace the need for assertions

Explain how beforeEach and afterEach hooks improve test writing in Cypress.

Think about what happens before and after every test.
You got /4 concepts.

    Describe a scenario where you would use beforeEach and afterEach hooks in a test suite.

    Consider common setup and cleanup tasks in web testing.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the beforeEach hook in Cypress testing?
      easy
      A. To run code before every test to set up the test environment
      B. To run code after every test to clean up the test environment
      C. To skip a test conditionally
      D. To group multiple tests together

      Solution

      1. Step 1: Understand the role of beforeEach

        The beforeEach hook runs before each test to prepare the environment or state needed for the test.
      2. Step 2: Differentiate from afterEach

        Unlike afterEach, which runs after tests to clean up, beforeEach sets up conditions before tests.
      3. Final Answer:

        To run code before every test to set up the test environment -> Option A
      4. Quick Check:

        beforeEach = setup before tests [OK]
      Hint: Remember: beforeEach runs before tests, afterEach runs after [OK]
      Common Mistakes:
      • Confusing beforeEach with afterEach
      • Thinking beforeEach skips tests
      • Assuming beforeEach groups tests
      2. Which of the following is the correct syntax to use afterEach in a Cypress test file?
      easy
      A. afterEach { cy.visit('/home') }
      B. afterEach(() => { cy.visit('/home') })
      C. afterEach: () => cy.visit('/home')
      D. afterEach => { cy.visit('/home') }

      Solution

      1. Step 1: Recall correct function syntax in Cypress

        Cypress hooks use function calls with arrow functions inside parentheses, like afterEach(() => { ... }).
      2. Step 2: Identify syntax errors in other options

        Options B, C, and D miss parentheses or use incorrect arrow function syntax.
      3. Final Answer:

        afterEach(() => { cy.visit('/home') }) -> Option B
      4. Quick Check:

        Hook syntax = function call with arrow function [OK]
      Hint: Hooks need parentheses and arrow functions: hook(() => {}) [OK]
      Common Mistakes:
      • Omitting parentheses after hook name
      • Using curly braces without parentheses
      • Incorrect arrow function syntax
      3. Consider this Cypress test code:
      describe('My Tests', () => {
        beforeEach(() => {
          cy.visit('/login')
        })
      
        it('Test 1', () => {
          cy.get('#username').type('user1')
        })
      
        it('Test 2', () => {
          cy.get('#username').type('user2')
        })
      })

      How many times will cy.visit('/login') run when these tests execute?
      medium
      A. Once before all tests
      B. Twice, once after each test
      C. Twice, once before each test
      D. Once after all tests

      Solution

      1. Step 1: Understand beforeEach behavior

        The beforeEach hook runs before every individual test inside the describe block.
      2. Step 2: Count the tests and hook calls

        There are two tests, so cy.visit('/login') runs twice, once before each test.
      3. Final Answer:

        Twice, once before each test -> Option C
      4. Quick Check:

        beforeEach runs before every test [OK]
      Hint: Count tests; beforeEach runs before each one [OK]
      Common Mistakes:
      • Thinking beforeEach runs only once
      • Confusing beforeEach with afterEach
      • Assuming hooks run after tests
      4. You wrote this Cypress test:
      describe('Sample', () => {
        beforeEach(() => {
          cy.visit('/dashboard')
        })
      
        afterEach(() => {
          cy.clearCookies
        })
      
        it('checks title', () => {
          cy.title().should('include', 'Dashboard')
        })
      })

      Why does cy.clearCookies not run after the test?
      medium
      A. Because cy.clearCookies is missing parentheses to call the function
      B. Because afterEach only runs before tests
      C. Because cy.clearCookies is not a valid Cypress command
      D. Because beforeEach overrides afterEach

      Solution

      1. Step 1: Check the afterEach hook code

        The code uses cy.clearCookies without parentheses, so the function is not called.
      2. Step 2: Understand function call syntax

        To execute the command, parentheses are required: cy.clearCookies().
      3. Final Answer:

        Because cy.clearCookies is missing parentheses to call the function -> Option A
      4. Quick Check:

        Functions need () to run [OK]
      Hint: Always add () to call Cypress commands [OK]
      Common Mistakes:
      • Forgetting parentheses on Cypress commands
      • Confusing beforeEach and afterEach roles
      • Assuming afterEach runs before tests
      5. You want to test a form that requires logging in before each test and clearing local storage after each test. Which is the best way to organize your Cypress hooks?
      hard
      A. Use only beforeEach for both login and clearing local storage
      B. Use afterEach to log in and beforeEach to clear local storage
      C. Use only afterEach for both login and clearing local storage
      D. Use beforeEach to log in and afterEach to clear local storage

      Solution

      1. Step 1: Identify setup and cleanup tasks

        Logging in is setup needed before each test; clearing local storage is cleanup after each test.
      2. Step 2: Assign tasks to correct hooks

        Use beforeEach for setup (login) and afterEach for cleanup (clear local storage).
      3. Final Answer:

        Use beforeEach to log in and afterEach to clear local storage -> Option D
      4. Quick Check:

        Setup beforeEach, cleanup afterEach [OK]
      Hint: Setup in beforeEach, cleanup in afterEach [OK]
      Common Mistakes:
      • Mixing setup and cleanup in wrong hooks
      • Using only one hook for both tasks
      • Not cleaning up after tests
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard