Bird
Raised Fist0
NextJSframework~5 mins

E2E testing with Playwright in NextJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is E2E testing?
E2E (End-to-End) testing checks if the whole app works as expected from the user's point of view. It tests all parts together, like clicking buttons and loading pages.
Click to reveal answer
beginner
What is Playwright used for in testing?
Playwright is a tool that automates browsers to run E2E tests. It can open pages, click buttons, fill forms, and check results automatically.
Click to reveal answer
intermediate
How do you start a Playwright test in Next.js?
You write a test file using Playwright's test functions. You open the page with `page.goto()`, interact with elements, and use assertions to check results.
Click to reveal answer
intermediate
Why use selectors like `data-testid` in Playwright tests?
Selectors like `data-testid` are stable and do not change often. They help tests find elements reliably without breaking when UI changes.
Click to reveal answer
beginner
What does a passing Playwright test report show?
It shows which tests ran and passed. If all tests pass, it means the app works as expected for those scenarios.
Click to reveal answer
What does E2E testing primarily verify?
AThe entire app works from user actions
BOnly the backend logic
CIndividual functions in code
DThe app's database schema
Which Playwright method opens a web page in a test?
Apage.goto()
Bpage.open()
Cbrowser.launch()
Dtest.start()
Why prefer `data-testid` selectors in tests?
AThey are visible to users
BThey change often with UI updates
CThey are faster to type
DThey are stable and do not affect UI
What does a failed assertion in Playwright indicate?
AThe test passed successfully
BThe test file is missing
CThe app did not behave as expected
DThe browser crashed
Which command runs Playwright tests in a Next.js project?
Anext dev
Bnpm run test:e2e
Cnpm start
Dplaywright open
Explain how to write a simple E2E test with Playwright for a Next.js app.
Think about the steps a user takes and how to automate them.
You got /5 concepts.
    Describe why stable selectors are important in E2E testing and how to implement them.
    Consider what happens if UI changes but tests still need to work.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of E2E testing in a Next.js application using Playwright?
      easy
      A. To check only the backend API responses
      B. To verify CSS styles and layout only
      C. To test individual React components in isolation
      D. To test the entire user experience from start to finish

      Solution

      1. Step 1: Understand E2E testing scope

        E2E (end-to-end) testing simulates real user actions across the whole app, not just parts.
      2. Step 2: Identify Playwright's role

        Playwright automates browser actions to test full user flows, like clicking and filling forms.
      3. Final Answer:

        To test the entire user experience from start to finish -> Option D
      4. Quick Check:

        E2E testing = full user experience [OK]
      Hint: E2E tests cover full user flows, not just parts [OK]
      Common Mistakes:
      • Confusing E2E with unit or integration tests
      • Thinking E2E tests only check backend APIs
      • Assuming E2E tests verify only UI styles
      2. Which of the following is the correct syntax to launch a browser and open a new page in Playwright for Next.js E2E testing?
      easy
      A. const browser = await chromium.launch(); const page = await browser.newPage();
      B. const browser = await chromium.launch(); const page = browser.newPage();
      C. const browser = playwright.launchChromium(); const page = browser.newPage();
      D. const browser = await playwright.chromium.launch(); const page = await browser.newPage();

      Solution

      1. Step 1: Recall Playwright import and usage

        Playwright's browser types like chromium are imported directly, so you use chromium.launch().
      2. Step 2: Check async usage and method names

        launch() and newPage() are async and must be awaited; syntax must match Playwright docs.
      3. Final Answer:

        const browser = await chromium.launch(); const page = await browser.newPage(); -> Option A
      4. Quick Check:

        Use 'await chromium.launch()' and 'await browser.newPage()' [OK]
      Hint: Use 'await chromium.launch()' and 'await browser.newPage()' [OK]
      Common Mistakes:
      • Using 'playwright.chromium.launch()' instead of 'chromium.launch()'
      • Missing 'await' keyword for async calls
      • Calling 'newPage()' directly on Playwright instead of browser
      3. Given this Playwright test snippet for a Next.js app:
      await page.goto('http://localhost:3000');
      await page.click('button#submit');
      const text = await page.textContent('div.result');
      console.log(text);

      What will be logged if the button triggers showing 'Success' inside div.result?
      medium
      A. Error: selector not found
      B. undefined
      C. 'Success'
      D. '' (empty string)

      Solution

      1. Step 1: Understand the test flow

        The test navigates to the page, clicks the submit button, then reads text from 'div.result'.
      2. Step 2: Analyze expected page behavior

        Clicking the button triggers showing 'Success' inside 'div.result', so textContent returns 'Success'.
      3. Final Answer:

        'Success' -> Option C
      4. Quick Check:

        textContent('div.result') = 'Success' after click [OK]
      Hint: Click triggers text update; textContent reads updated text [OK]
      Common Mistakes:
      • Assuming textContent returns undefined if element exists
      • Expecting error without checking if selector exists
      • Thinking textContent returns empty string if no text
      4. You wrote this Playwright test for a Next.js app:
      await page.goto('http://localhost:3000');
      await page.click('button.submit');
      await expect(page.locator('div.result')).toHaveText('Success');

      But the test fails with timeout error. What is the most likely cause?
      medium
      A. The page.goto URL is incorrect
      B. The selector 'button.submit' does not match any element
      C. The assertion syntax is invalid
      D. The test forgot to import 'expect' from Playwright

      Solution

      1. Step 1: Analyze failure reason

        Timeout usually means the expected text never appeared in 'div.result'.
      2. Step 2: Check selector correctness

        If 'button.submit' selector is wrong (e.g., class is 'submit-btn'), click never happens, so text never changes.
      3. Final Answer:

        The selector 'button.submit' does not match any element -> Option B
      4. Quick Check:

        Wrong selector = no click = assertion timeout [OK]
      Hint: Check selectors carefully; wrong selector blocks actions [OK]
      Common Mistakes:
      • Assuming assertion syntax is wrong without checking selectors
      • Ignoring that click may fail silently if selector is wrong
      • Not verifying page URL correctness
      5. You want to write a Playwright test for a Next.js app that fills a login form and verifies the welcome message. Which sequence of steps is correct?
      hard
      A. Go to login page, fill username and password, click submit, wait for welcome message, assert text
      B. Click submit button, fill username and password, go to login page, assert welcome message
      C. Fill username and password, assert welcome message, click submit, go to login page
      D. Assert welcome message, go to login page, fill username and password, click submit

      Solution

      1. Step 1: Understand logical user flow

        User must first visit login page, then fill form fields, then submit.
      2. Step 2: Verify post-submit behavior

        After submitting, wait for welcome message to appear, then assert its text.
      3. Final Answer:

        Go to login page, fill username and password, click submit, wait for welcome message, assert text -> Option A
      4. Quick Check:

        Follow user steps in order: visit, fill, submit, check [OK]
      Hint: Follow real user steps: open page, fill, submit, then check [OK]
      Common Mistakes:
      • Trying to assert before submitting the form
      • Clicking submit before filling fields
      • Checking messages before navigating to page
      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