Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 97fa060969938793e1c5dce2a6f9bc848cdaf34d
parent 750c0ba195acbf607811cf80fb91fa4573ea22ac
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Mon, 28 Sep 2026 12:36:14 -0400

homepage: no-data.spec skips itself when the run has more than one worker

It moves the shared e2e summary aside, and `mode: "serial"` orders one file's
tests, not the files: under --workers=N the other specs read the summary
while it is gone. The skip reason names the run's worker count; the
config's own workers: 1 still runs it. FACTS: this and the 2origin stage
guard.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
Mhomepage/e2e/no-data.spec.ts | 9+++++++++
Mplans/FACTS.md | 11+++++++++++
2 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/homepage/e2e/no-data.spec.ts b/homepage/e2e/no-data.spec.ts @@ -15,6 +15,15 @@ import { FIXTURE_SUMMARY_NAME } from "./fixture-summary"; test.describe.configure({ mode: "serial" }); test("with no summary, / and /stats/ render no numbers and say why", async ({ page }) => { + // `mode: "serial"` orders this file's tests, not the files: under + // `--workers=N` (N > 1) the other specs run beside this one and read the + // same summary file while it is moved aside, so they would draw the empty + // state and fail. Only a one-worker run (the config's own) can check it. + const workers = test.info().config.workers; + test.skip( + workers > 1, + `no-data moves the shared e2e summary aside, which races the other specs when workers > 1 (this run: ${workers})`, + ); const file = path.resolve(test.info().project.testDir, FIXTURE_SUMMARY_NAME); const aside = `${file}.aside`; fs.renameSync(file, aside); diff --git a/plans/FACTS.md b/plans/FACTS.md @@ -7116,6 +7116,17 @@ out. O3's facts are the section just above ("O3 — runner lows"). Anchors are a - **`no-data.spec.ts` renames the fixture aside** (`.e2e-summary.json.aside`, same gitignore pattern) and restores it in `finally`; it runs serially (`:15`). A killed run can leave the `.aside`; the next config start rewrites the fixture anyway. + - *Amended 2026-09-28 (release 13, slice W2):* `mode: "serial"` orders one file's tests, not the + files, so under `--workers=N` the other specs read the summary while it is aside. The test now + skips itself when `test.info().config.workers > 1`, naming the run's worker count in the skip + reason; the config's own `workers: 1` still runs it. +- **`playwright.2origin.config.ts` stages only in the runner** (release 13, slice W2): Playwright + evaluates a config again in every worker process, after setting `TEST_WORKER_INDEX` there + (`playwright/lib/worker/workerMain.js:60`, 1.59.1), and each evaluation re-ran + `stageTwoOrigins()` — which `rmSync`s and rewrites `.2origin/originB` under the running `serve`. + The call is now `if (!process.env.TEST_WORKER_INDEX) stageTwoOrigins();`. (UI mode's + out-of-process loader would still evaluate it without that variable; the CLI loads test files + in-process.) ### report-to-video measures the brand's face per character (O5)