Symptom
The Playwright E2E (chromium gate) job fails on every run (it gates merges), in step "Playwright tests (fast PR gate: boot group)".
Affected runs (both within the last hour):
32369012389 — PR audit/entry-flow-hardening-closure (pull_request)
32369041299 — push to main
Root cause (real code regression, NOT flaky)
tests/utils/onboarding-runtime.js declares waitForEvanToStayInactive twice as an export async function:
- Line 195:
export async function waitForEvanToStayInactive(page, options = {}) {
- Line 247:
export async function waitForEvanToStayInactive(page, options = {}) {
CI log (deterministic, every test in the file):
SyntaxError: /home/runner/work/MathMasterHTML/MathMasterHTML/tests/utils/onboarding-runtime.js:
Identifier 'waitForEvanToStayInactive' has already been declared. (247:22)
Because it is a parse-time SyntaxError, the whole boot-group fails before any test runs. A rerun will not help — the duplicate must be removed.
Recommended fix (needs push confirmation)
Delete the second (redundant) definition — the block from line 246 through line 293:
export async function waitForEvanToStayInactive(page, options = {}) {
... // duplicate, ends at line 293
}
The first definition (lines 195–245) already handles both #evan-skip-button and #evan-stop-button, so dropping the second is safe and behavior-preserving. If the second was an intended refinement, reconcile the two into one definition instead — but only one export async function waitForEvanToStayInactive may remain.
Note
This regression is present on main (the push run failed), so it blocks all future PRs until fixed. I did not push a code change — opening this for your confirmation/approval per repo policy.
Symptom
The
Playwright E2E (chromium gate)job fails on every run (it gates merges), in step "Playwright tests (fast PR gate: boot group)".Affected runs (both within the last hour):
32369012389— PRaudit/entry-flow-hardening-closure(pull_request)32369041299— push tomainRoot cause (real code regression, NOT flaky)
tests/utils/onboarding-runtime.jsdeclareswaitForEvanToStayInactivetwice as anexport async function:export async function waitForEvanToStayInactive(page, options = {}) {export async function waitForEvanToStayInactive(page, options = {}) {CI log (deterministic, every test in the file):
Because it is a parse-time SyntaxError, the whole boot-group fails before any test runs. A rerun will not help — the duplicate must be removed.
Recommended fix (needs push confirmation)
Delete the second (redundant) definition — the block from line 246 through line 293:
The first definition (lines 195–245) already handles both
#evan-skip-buttonand#evan-stop-button, so dropping the second is safe and behavior-preserving. If the second was an intended refinement, reconcile the two into one definition instead — but only oneexport async function waitForEvanToStayInactivemay remain.Note
This regression is present on
main(the push run failed), so it blocks all future PRs until fixed. I did not push a code change — opening this for your confirmation/approval per repo policy.