diff --git a/CHANGELOG.md b/CHANGELOG.md index af841d4..a3bbf20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,16 @@ so this log can be regenerated from history (e.g. with `git-cliff`). ## [Unreleased] -_Changes on `main` that have not yet been tagged._ +### Changed +- `excalidraw.spec` resets per test. Its two long-standing "flaky" specs were + deterministic failures: all three tests bootstrap through `/setup`, but the + file reset once per file with `beforeAll`, and `POST /auth/setup` returns 410 + once a user exists — `SetupPage` renders that error without navigating, so + tests 2 and 3 sat on `/setup` for the full 30s timeout. They passed on retry + only because a retry restarts the worker and re-runs `beforeAll`. That is why + it was always exactly two flaky specs: the number of tests after the first. + The suite now reports `42 passed` with no flakes, and the playwright job + dropped from ~10m to ~5m. ## [0.2.1] - 2026-08-17 diff --git a/e2e/flows/excalidraw.spec.ts b/e2e/flows/excalidraw.spec.ts index 956a5b4..6f69f71 100644 --- a/e2e/flows/excalidraw.spec.ts +++ b/e2e/flows/excalidraw.spec.ts @@ -16,7 +16,14 @@ function reset() { ); } -test.beforeAll(reset); +// beforeEACH, not beforeAll. All three tests below bootstrap through +// /setup, and POST /auth/setup returns 410 (auth.setup_closed) once any user +// exists — SetupPage then renders an error and does NOT navigate, so every +// test after the first hung until the 30s timeout and only passed on retry +// (a retry restarts the worker, which re-runs a beforeAll). That read as +// flakiness for a long time; it was deterministic. Same reason +// create-placement, new-doc-edit-mode and tree-reorder reset per test. +test.beforeEach(reset); /** * Drive a rectangle into the open Excalidraw modal via the dev-only