|
1 | 1 | # Testing Lane Execution Report |
2 | 2 |
|
3 | 3 | Generated: 2026-05-26 |
4 | | -PR: PR_26146_025-test-location-audit-and-runner-preflight |
| 4 | +PR: PR_26146_026-playwright-structure-enforcement-and-fast-fail-routing |
5 | 5 |
|
6 | 6 | ## Summary |
7 | 7 |
|
8 | 8 | PASS: 3 |
9 | | -WARN: 1 |
| 9 | +WARN: 0 |
10 | 10 | FAIL: 0 |
11 | 11 | SKIP: 3 |
12 | 12 |
|
13 | 13 | ## Full Samples Smoke |
14 | 14 |
|
15 | 15 | Status: SKIP |
16 | | -Reason: This PR changes Playwright test placement, audit/preflight scripts, and targeted lane runner behavior only. No sample JSON, shared sample loader, or sample framework files were changed. |
| 16 | +Reason: This PR changes Playwright structure enforcement, preflight validation, runner routing, and test placement only. No sample JSON, shared sample loader, or sample framework files were changed. |
17 | 17 |
|
18 | 18 | ## Executed and Skipped Lanes |
19 | 19 |
|
20 | 20 | | Lane / Check | Status | Executed/Skipped Reason | Affected Surface | Evidence | |
21 | 21 | | --- | --- | --- | --- | --- | |
22 | | -| test-location-preflight | PASS | Executed first because this PR adds the audit/preflight gate. | Playwright file ownership and lane placement | `npm run test:lanes:preflight` passed and wrote `docs/dev/reports/test_location_audit_report.md`. | |
23 | | -| tool-runtime | PASS | Executed because tool test routing changed and the runner preflight/Node CLI path needed validation. | Asset Manager V2, Preview Generator V2, Collision Inspector V2 runtime tests | `PLAYWRIGHT_BROWSERS_PATH=0 npm run test:lane:tool-runtime`; preflight passed, Asset Manager V2 focused subset 5 passed, Preview Generator V2 7 passed, Collision Inspector V2 4 passed. | |
24 | | -| integration | PASS | Executed because the runner preflight also guards game/integration Playwright placement. | Game index preview manifest handoff | `PLAYWRIGHT_BROWSERS_PATH=0 npm run test:lane:integration`; preflight passed, focused Pong handoff subset 3 passed. | |
25 | | -| moved-game-specs | WARN | Executed once to validate relocated Asteroids game specs without changing game runtime behavior. | Asteroids game-specific Playwright tests moved from tools to games | 5 passed, 1 existing Asteroids ship-state expectation failed; exact failing test listed below. | |
26 | | -| workspace-contract | SKIP | Skipped because `npm run test:workspace-v2` behavior was preserved and Workspace V2 runner wiring was not changed for this PR. | Workspace Manager V2 contract/lifecycle behavior | Not run. | |
27 | | -| engine-src | SKIP | Skipped because no `src/`, engine, or node runtime test lane files were changed. | src/ engine/shared runtime behavior | Not run. | |
| 22 | +| playwright-structure-preflight | PASS | Executed first because structural enforcement now gates expensive Playwright lanes. | Playwright lane ownership, file placement, imports, fixture documentation | `npm run test:lanes:preflight` passed and wrote `docs/dev/reports/playwright_structure_audit.md`. | |
| 23 | +| integration | PASS | Executed because `GameIndexPreviewManifestResolution.spec.mjs` moved from `games/` to `integration/` and the lane target changed. | Game index preview manifest handoff | `PLAYWRIGHT_BROWSERS_PATH=0 npm run test:lane:integration`; preflight passed, focused Pong handoff subset 3 passed. | |
| 24 | +| tool-runtime | PASS | Executed because runner preflight and Windows-safe Playwright argv handling changed. | Asset Manager V2, Preview Generator V2, Collision Inspector V2 runtime tests | `PLAYWRIGHT_BROWSERS_PATH=0 npm run test:lane:tool-runtime`; preflight passed, Asset Manager focused subset 5 passed, Preview Generator 7 passed, Collision Inspector 4 passed. | |
| 25 | +| workspace-contract | SKIP | Skipped because `npm run test:workspace-v2` compatibility was preserved and Workspace V2 wiring was not changed. | Workspace Manager V2 contract/lifecycle behavior | Not run. | |
| 26 | +| engine-src | SKIP | Skipped because no `src/`, engine Playwright, or node engine lane targets changed. | src/ engine/shared runtime behavior | Not run. | |
28 | 27 | | samples | SKIP | Skipped because samples are on-request or affected-sample only and this PR did not impact samples. | On-request samples lane | Not run. | |
29 | 28 |
|
30 | | -## Moved Game Spec WARN Detail |
| 29 | +## Fast-Fail Coverage |
31 | 30 |
|
32 | | -Focused command: |
| 31 | +- Runner preflight validates selected lane targets before Playwright starts. |
| 32 | +- Structural audit validates lane ownership, file placement, missing relative imports, documented game fixtures, and shared helper naming. |
| 33 | +- Missing target files, invalid lane targets, invalid empty grep patterns, missing fixtures, or Windows shell quoting hazards fail before browser execution. |
| 34 | +- No deterministic setup failures were found in this run, so no lanes were fast-failed. |
33 | 35 |
|
34 | | -`PLAYWRIGHT_BROWSERS_PATH=0 node ./node_modules/@playwright/test/cli.js test tests/playwright/games/AsteroidsBackgroundAssetResolution.spec.mjs tests/playwright/games/AsteroidsBeatTiming.spec.mjs tests/playwright/games/AsteroidsGameSceneCleanup.spec.mjs tests/playwright/games/AsteroidsShipStateVisuals.spec.mjs --project=playwright --workers=1 --reporter=list` |
| 36 | +## Placement Corrections |
35 | 37 |
|
36 | | -Result: 5 passed, 1 failed. |
| 38 | +- `tests/playwright/tools/AsteroidsBackgroundAssetResolution.spec.mjs` -> `tests/playwright/games/AsteroidsBackgroundAssetResolution.spec.mjs` |
| 39 | +- `tests/playwright/tools/AsteroidsBeatTiming.spec.mjs` -> `tests/playwright/games/AsteroidsBeatTiming.spec.mjs` |
| 40 | +- `tests/playwright/tools/AsteroidsGameSceneCleanup.spec.mjs` -> `tests/playwright/games/AsteroidsGameSceneCleanup.spec.mjs` |
| 41 | +- `tests/playwright/tools/AsteroidsShipStateVisuals.spec.mjs` -> `tests/playwright/games/AsteroidsShipStateVisuals.spec.mjs` |
| 42 | +- `tests/playwright/games/GameIndexPreviewManifestResolution.spec.mjs` -> `tests/playwright/integration/GameIndexPreviewManifestResolution.spec.mjs` |
37 | 43 |
|
38 | | -Failing test: |
| 44 | +## Quoting Corrections |
39 | 45 |
|
40 | | -- `AsteroidsShipStateVisuals.spec.mjs > validates Asteroids ship visual states from manifest runtime rendering` |
| 46 | +- Playwright lane commands invoke `node node_modules/@playwright/test/cli.js` instead of shelling through a platform command wrapper. |
| 47 | +- Grep patterns such as `launch guard|temporary UAT context|rejects non-Workspace` are passed as literal argv values on Windows. |
| 48 | +- Runner command display quotes shell-sensitive argv values for readability without using shell interpretation for Playwright. |
41 | 49 |
|
42 | | -Observed failure: expected ship visual states to include `destroyed`, but the runtime returned `["idle", "move"]`. This was recorded as WARN because the PR only moves test ownership and runner preflight behavior; it does not alter Asteroids runtime or sample JSON. |
| 50 | +## Runtime Savings Observations |
| 51 | + |
| 52 | +- Structural failures now stop before browser boot. |
| 53 | +- Unselected lanes are skipped before command construction reaches Playwright execution. |
| 54 | +- Workspace contract, engine/src, samples, and full samples smoke were not run because they were outside the affected surface. |
| 55 | +- Focused integration validation used the targeted Pong handoff subset instead of broad all-game coverage. |
43 | 56 |
|
44 | 57 | ## Static Validation |
45 | 58 |
|
46 | 59 | - PASS `node --check scripts/audit-playwright-test-locations.mjs` |
47 | 60 | - PASS `node --check scripts/run-targeted-test-lanes.mjs` |
48 | | -- PASS `node --check tests/playwright/games/AsteroidsBackgroundAssetResolution.spec.mjs` |
49 | | -- PASS `node --check tests/playwright/games/AsteroidsBeatTiming.spec.mjs` |
50 | | -- PASS `node --check tests/playwright/games/AsteroidsGameSceneCleanup.spec.mjs` |
51 | | -- PASS `node --check tests/playwright/games/AsteroidsShipStateVisuals.spec.mjs` |
52 | | - |
53 | | -## Runner Safeguards |
54 | | - |
55 | | -- Playwright lane commands run through `node node_modules/@playwright/test/cli.js`, so grep patterns such as `launch guard|temporary UAT context|rejects non-Workspace` remain literal on Windows. |
56 | | -- Playwright-bearing lanes run the location audit before expensive execution. |
57 | | -- If the audit reports blocking placement findings, the lane runner writes the lane report and exits before running long Playwright suites. |
58 | | -- No full lanes were rerun after known out-of-scope failures. |
| 61 | +- PASS `node --check tests/playwright/integration/GameIndexPreviewManifestResolution.spec.mjs` |
0 commit comments