Skip to main content
All failure patterns
Timing or race conditionPlaywright

Playwright timeout exceeded

Playwright stopped waiting because an action or assertion did not reach its expected state before the configured timeout.

RECOGNIZABLE ERROR

TimeoutError: locator.click: Timeout 30000ms exceeded.

RANKED DIAGNOSIS

What usually causes it

  1. 01

    The element never reached the required state

    The locator resolved, but the target stayed hidden, disabled, moving, or covered.

    DIAGNOSE

    Open the trace and inspect the actionability log immediately before the timeout.

    FIX

    Wait for the user-visible state that enables the action, then act on a role or test-id locator.

  2. 02

    The locator no longer identifies the intended element

    A text, role, label, or DOM structure changed and the locator now resolves to zero or multiple nodes.

    DIAGNOSE

    Run the locator in the trace viewer or Playwright inspector and check its match count.

    FIX

    Replace structural selectors with a unique role, label, or test-id contract.

  3. 03

    The application request did not complete

    A failed or stalled API request prevented the page from reaching the expected state.

    DIAGNOSE

    Inspect failed requests and console errors in the trace instead of increasing the timeout first.

    FIX

    Fix or mock the failing dependency and wait on the resulting UI state rather than a fixed delay.

Prevent the repeat

  • Capture a trace on the first retry.
  • Assert the state that enables the next action.
  • Keep locator contracts stable and unique.

Primary references

Run this against your evidence

The browser triage workflow uses the same stable pattern slug and does not upload your paste.

Open local triage

Related failure patterns