* fix(coverage): include core/ files in v8 per-file gate (#1301)
Two issues prevented coverage.include's '../../core/...' globs from
reaching core/ files:
1. allowExternal defaults to false — v8 drops any file whose absolute
path doesn't start with the project root (clients/web/) before the
include filter runs. Set allowExternal: true, and switch the globs
to absolute paths so tinyglobby + picomatch handle them correctly.
2. vitest's coverage transformer only processes files inside a project
root; for everything else it falls back to raw-TS parsing in
rolldown, which can't handle TS-only syntax (e.g. import type) —
silently dropping untested core/ files and bypassing the gate.
Root the unit project at the repo root so the transformer reaches
core/. The repo root has no node_modules, so add an explicit react
alias and shift include/setupFiles paths accordingly.
Also add the four pure-type core files (samplingCreateMessage,
sessionStorage, inspectorClientProtocol, inspectorClientEventTarget)
to the exclude list with a comment — they have no executable code.
Verified by introducing an untested probe file, confirming exit=1 with
threshold errors, then removing it.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* refactor(coverage): address review feedback on #1305
- Drop allowExternal: true — with the unit project rooted at repoRoot,
core/ files are no longer "external" to any project that collects
coverage (the storybook project doesn't), so the flag is redundant.
- Extract sharedAliases / sharedDedupe constants and reference them
from both the top-level resolve and the unit project resolve, so
the two stay in sync if a new core/* alias is added.
- Add TODO(#1243) on the inspectorClientEventTarget.ts exclusion so
it's revisited once the class gains real behavior in the
InspectorClient port.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>