Found while implementing #4471 (which brings e2e/**/*.ts under a new root tsconfig.e2e.json). Filed rather than folded in, because it is outside that card's ruled surface (e2e/**).
Measurement
The four Playwright configs live at the repo root, not under e2e/, so the tsconfig.e2e.json#4471 adds does not reach them, and neither does anything else:
playwright.config.ts
playwright.import-console.config.ts
playwright.import-harness.config.ts
playwright.live.config.ts
So the same statement #4471 makes about the specs holds for the configs that decide which specs run, where they run, and what webServer command builds the app under test.
Current cost: zero errors, which is the point
Compiled against #4471's option set (ES2022 + DOM + types: ["node"], strict), the four files are clean:
$ npx tsc -p tsconfig.e2e.probe.json # extends tsconfig.e2e.json, include: ["playwright*.config.ts"]
exit=0
That makes this observation-class, not a live defect — there is nothing to fix today. What is missing is the gate: playwright.config.ts's webServer.command, testIgnore, and projects are read by no compiler, so a defineConfig option that stops existing (or is misspelled into undefined) surfaces only as a confusing Playwright runtime failure in the e2e CI job.
Suggested remedy
One line, once #4471 lands: widen tsconfig.e2e.json's include to
"include": ["e2e/**/*.ts", "playwright*.config.ts"]
and extend scripts/__tests__/e2e-type-check.test.ts's on-disk coverage sweep to assert the root playwright*.config.ts files are in the program too — the same glob-not-a-list doctrine that file already carries for e2e/.
Depends on #4471 for the config to widen.
Generated by Claude Code
Found while implementing #4471 (which brings
e2e/**/*.tsunder a new roottsconfig.e2e.json). Filed rather than folded in, because it is outside that card's ruled surface (e2e/**).Measurement
The four Playwright configs live at the repo root, not under
e2e/, so thetsconfig.e2e.json#4471 adds does not reach them, and neither does anything else:tsconfig.json— include:["packages", "examples", "apps"]tsconfig.scripts.json— include:["scripts/**/*.ts"]tsconfig.vitest-setup.json— include: the rootvitest.setup*filestsconfig.e2e.json(new, Type-check coverage gap: e2e/ is outside every tsconfig, so 30 Playwright specs are compiled by nothing #4471) — include:["e2e/**/*.ts"]turbo run type-checkwalks package.jsonscripts, and the repo root is not a workspace packageSo the same statement #4471 makes about the specs holds for the configs that decide which specs run, where they run, and what
webServercommand builds the app under test.Current cost: zero errors, which is the point
Compiled against #4471's option set (ES2022 + DOM +
types: ["node"],strict), the four files are clean:That makes this observation-class, not a live defect — there is nothing to fix today. What is missing is the gate:
playwright.config.ts'swebServer.command,testIgnore, andprojectsare read by no compiler, so adefineConfigoption that stops existing (or is misspelled intoundefined) surfaces only as a confusing Playwright runtime failure in thee2eCI job.Suggested remedy
One line, once #4471 lands: widen
tsconfig.e2e.json's include toand extend
scripts/__tests__/e2e-type-check.test.ts's on-disk coverage sweep to assert the rootplaywright*.config.tsfiles are in the program too — the same glob-not-a-list doctrine that file already carries fore2e/.Depends on #4471 for the config to widen.
Generated by Claude Code