tr
TryGhost
GitHub
Ghost
Workspace
GitHub
CI Pipeline Executions
Filtered
Runs
Demo
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Overview
⌘K
Ghost
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
Succeeded
30438
48cd2f95 Changed the acceptance coverage lanes to vitest's v8 provider no ref The acceptance lanes (test:ci:e2e, test:ci:integration) wrapped vitest in c8, which reports coverage V8 can describe but c8 cannot interpret. Two measured problems, both on the real e2e suite: - Branch and function counts are inflated. V8 emits block ranges; without an AST c8 cannot see an `if` with no `else`, a ternary, or a `||`/`??` short-circuit as a branch point at all, so it scores them covered. e2e branches read 80.48% under c8 against 58.00% under the v8 provider, on near-identical denominators (20811 vs 21926) — the gap is entirely in the numerator. - Denominators collapse for files a run never loads. c8 credits each such file exactly 1 branch and 1 function regardless of content. The integration lane leaves most of core/ unloaded, so its branch denominator falls to 12532 against the v8 provider's 21926, and an untested file added today barely moves the gate. Vitest 4's v8 provider does AST-aware remapping, so both go away. Coverage is now configured in vitest.config.db.ts and the lanes just pass --coverage; cobertura still lands at coverage-e2e/ and coverage-integration/, so ci.yml and the nx outputs are unchanged. Thresholds are re-baselined from measured runs against MySQL 8.0 with Redis and MinIO up, minus roughly 2pt of headroom. The branch gates drop hardest (e2e 75 to 56, integration 73 to 32). No test changed and none started failing — the old numbers were simply not measuring what they claimed. Both lanes' gates and report directories live in one COVERAGE_LANES table in the config, selected by the COVERAGE_LANE env var the test:ci:* scripts set, rather than split between the config and a long CLI override. The lookup uses Object.hasOwn, so 'constructor' and the rest of Object.prototype are rejected instead of resolving to inherited members and silently skipping the gate, and an empty string is a bad value rather than "unset". An unset lane reports without gating, so ad-hoc local --coverage runs no longer inherit e2e's thresholds. Vitest 4 has no coverage.all — `include` is what reports never-loaded files. Verified: identical counts with and without it, so it was dead config implying a behaviour `include` already provided. Two entries from .c8rc.e2e.json did not carry over: the `!core/server/data/migrations/utils.js` negation, which matched nothing (utils is a directory), and .c8rc.json, which nothing referenced. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
by Austin Bur...
A
Succeeded
30438
ec60ccfd Changed the acceptance coverage lanes to vitest's v8 provider no ref The acceptance lanes (test:ci:e2e, test:ci:integration) wrapped vitest in c8, which reports coverage V8 can describe but c8 cannot interpret. Two measured problems, both on the real e2e suite: - Branch and function counts are inflated. V8 emits block ranges; without an AST c8 cannot see an `if` with no `else`, a ternary, or a `||`/`??` short-circuit as a branch point at all, so it scores them covered. e2e branches read 80.48% under c8 against 58.00% under the v8 provider, on near-identical denominators (20811 vs 21926) — the gap is entirely in the numerator. - Denominators collapse for files a run never loads. c8 credits each such file exactly 1 branch and 1 function regardless of content. The integration lane leaves most of core/ unloaded, so its branch denominator falls to 12532 against the v8 provider's 21926, and an untested file added today barely moves the gate. Vitest 4's v8 provider does AST-aware remapping, so both go away. Coverage is now configured in vitest.config.db.ts and the lanes just pass --coverage; cobertura still lands at coverage-e2e/ and coverage-integration/, so ci.yml and the nx outputs are unchanged. Thresholds are re-baselined from measured runs against MySQL 8.0 with Redis and MinIO up, minus roughly 2pt of headroom. The branch gates drop hardest (e2e 75 to 56, integration 73 to 32). No test changed and none started failing — the old numbers were simply not measuring what they claimed. Both lanes' gates and report directories live in one COVERAGE_LANES table in the config, selected by the COVERAGE_LANE env var the test:ci:* scripts set, rather than split between the config and a long CLI override. An unrecognised lane throws rather than silently dropping the gate; an unset one reports without gating, so ad-hoc local --coverage runs no longer inherit e2e's thresholds. `all` needs an explicit `include` under vitest 4, otherwise only loaded files report. Two entries from .c8rc.e2e.json did not carry over: the `!core/server/data/migrations/utils.js` negation, which matched nothing (utils is a directory), and .c8rc.json, which nothing referenced. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
by Austin Bur...
A
Failed
30438
672f67ce Changed the acceptance coverage lanes to vitest's v8 provider no ref The acceptance lanes (test:ci:e2e, test:ci:integration) wrapped vitest in c8, which reports coverage V8 can describe but c8 cannot interpret. Two measured problems, both on the real e2e suite: - Branch and function counts are inflated. V8 emits block ranges; without an AST c8 cannot see an `if` with no `else`, a ternary, or a `||`/`??` short-circuit as a branch point at all, so it scores them covered. e2e branches read 80.48% under c8 against 58.00% under the v8 provider, on near-identical denominators (20811 vs 21926) — the gap is entirely in the numerator. - Denominators collapse for files a run never loads. c8 credits each such file exactly 1 branch and 1 function regardless of content. The integration lane leaves most of core/ unloaded, so its branch denominator falls to 12532 against the v8 provider's 21926, and an untested file added today barely moves the gate. Vitest 4's v8 provider does AST-aware remapping, so both go away. Coverage is now configured in vitest.config.db.ts and the lanes just pass --coverage; cobertura still lands at coverage-e2e/ and coverage-integration/, so ci.yml and the nx outputs are unchanged. Thresholds are re-baselined from measured runs against MySQL 8.0 with Redis and MinIO up, minus roughly 2pt of headroom. The branch gates drop hardest (e2e 75 to 56, integration 73 to 32). No test changed and none started failing — the old numbers were simply not measuring what they claimed. `all` needs an explicit `include` under vitest 4, otherwise only loaded files report. Two entries from .c8rc.e2e.json did not carry over: the `!core/server/data/migrations/utils.js` negation, which matched nothing (utils is a directory), and .c8rc.json, which nothing referenced. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
by Austin Bur...
A
Previous
Next