Playwright breaking changes, updated weekly

Every verified Playwright trap in Footgun: changes and behaviors that break code or give wrong results, newest first. Each one has the error you see, the fix, and the date it was last checked. The list updates when the weekly check adds or retires a trap. For the full cause and sources, open the trap, or see all Playwright traps.

  1. fg-0313· added 2026-10-15· last checked 2026-10-15

    Browsers installed during the Docker build are missing at runtime because the user or PLAYWRIGHT_BROWSERS_PATH changed

    Symptom

    Executable doesn't exist at /home/node/.cache/ms-playwright/chromium-1208/chrome-linux/chrome

    Fix

    Set PLAYWRIGHT_BROWSERS_PATH to one shared folder for both the install step and the runtime, and copy that folder into the final stage. Use 0 to keep browsers inside node_modules instead. The variable does not move branded Chrome or Edge installs.

  2. fg-0314· added 2026-10-15· last checked 2026-10-15

    Cached Playwright browsers in CI fail with 'Host system is missing dependencies to run browsers'

    Symptom

    Host system is missing dependencies to run browsers.

    Fix

    Drop the cache and run install --with-deps every time, or key the cache on the exact Playwright version and still run install-deps on a cache hit.

  3. fg-0321· added 2026-10-15· last checked 2026-10-15

    Videos are missing for most tests when one page is created in beforeAll and reused

    Symptom

    Only one video file appears for a whole describe block

    Fix

    Use the per-test page fixture, or record a trace instead of a video for serial suites.

  4. fg-0312· added 2026-10-15· last checked 2026-10-15

    A stuck click burns the whole test and fails as 'Test timeout of 30000ms exceeded' instead of naming the locator

    Symptom

    Test timeout of 30000ms exceeded.

    Fix

    Set actionTimeout and navigationTimeout below the test timeout so a missing element fails fast with its own error.

  5. fg-0316· added 2026-10-15· last checked 2026-10-15

    Executable doesn't exist at /ms-playwright/chromium-XXXX inside the official Playwright Docker image

    Symptom

    browserType.launch: Executable doesn't exist at /ms-playwright/chromium_headless_shell-1208/chrome-headless-shell-linux64/chrome-headless-shell

    Fix

    Pin @playwright/test to an exact version and use the image tag with the same version. Upgrade both in one commit.

  6. fg-0383· added 2026-10-15· last checked 2026-10-15

    npx playwright install hangs after the first browser download on Playwright 1.55 to 1.59 with recent Node releases

    Symptom

    The download reaches 100% and then the install prints nothing and never exits

    Fix

    Upgrade Playwright to 1.60.0 or later. That is the only real fix, since the hang also appears on the Node 24 LTS line from 24.16.

  7. fg-0323· added 2026-10-15· last checked 2026-10-15

    waitForLoadState('networkidle') times out on pages with analytics, polling or websockets

    Symptom

    page.waitForLoadState: Timeout 30000ms exceeded

    Fix

    Remove networkidle and wait for the thing the test needs with a web-first assertion.

  8. fg-0315· added 2026-10-15· last checked 2026-10-15

    Chromium crashes mid-test in Docker with 'Target page, context or browser has been closed'

    Symptom

    page.goto: Target page, context or browser has been closed

    Fix

    Run the container with --ipc=host and --init, or raise shm size on platforms that do not allow host IPC.

  9. fg-0322· added 2026-10-15· last checked 2026-10-15

    waitForLoadState() after a click returns immediately and the next step runs on the old page

    Symptom

    Assertions after click() plus waitForLoadState() read the previous page

    Fix

    Wait for the destination itself with waitForURL or a web-first assertion on the new page.

  10. fg-0317· added 2026-10-15· last checked 2026-10-15

    Installing with --only-shell or --no-shell, then launching in the other mode, fails with Executable doesn't exist

    Symptom

    Executable doesn't exist at .../chromium-1208/chrome-linux64/chrome after npx playwright install --only-shell

    Fix

    Match the install flag to how tests launch. Use --only-shell only when every run is headless with no channel, and --no-shell only when you set channel: 'chromium'.

  11. fg-0318· added 2026-10-15· last checked 2026-10-15

    No trace.zip for a failed test because the config records traces only on first retry

    Symptom

    test-results has no trace.zip for a local failure

    Fix

    Use retain-on-failure, which records every test and keeps only the failing ones.

  12. fg-0320· added 2026-10-15· last checked 2026-10-15

    Screenshots and traces from an earlier Playwright run vanish when a second run starts

    Symptom

    test-results from the first CI step are gone before the upload step

    Fix

    Give each invocation its own outputDir, or upload artifacts after each step.

  13. fg-0324· added 2026-10-15· last checked 2026-10-15

    With channel 'chrome' or 'msedge', PDF downloads stop firing and screenshots change after Playwright 1.49

    Symptom

    page.waitForEvent('download') times out on a PDF link because the PDF opens inline

    Fix

    Assert on the opened PDF page or fetch the file with the request API instead of waiting for a download, and regenerate screenshot baselines per channel.

  14. fg-0070· added 2026-06-22· last checked 2026-06-22· stale, may be out of date

    Playwright fails with 'libglib-2.0.so.0: cannot open shared object file' on a Nixpacks build

    Symptom

    libglib-2.0.so.0: cannot open shared object file

    Fix

    Build from the official Playwright Docker image, keeping its tag in step with the playwright package version.

Have your agent check Playwright changes before it codes

$ /plugin marketplace add getfootgun/footgun
$ /plugin install footgun@footgun