mirror of
https://github.com/morluto/rea
synced 2026-10-25 22:08:11 -04:00
fix(ci): stabilize Vitest project routing and shards
This commit is contained in:
@@ -20,6 +20,7 @@ per-suite table below.
|
||||
| `tests/binarySession.test.ts` | `tests/composition/analysis-sessions/binarySession.*.test.ts` | Analysis-session composition |
|
||||
| `tests/javascriptSemanticAnalysis.test.ts` | `tests/composition/javascript-applications/javascriptSemanticAnalysis.*.test.ts` | JavaScript-application composition |
|
||||
| `tests/config.test.ts` | `tests/composition/setup-lifecycle/config.test.ts` | Setup-lifecycle composition |
|
||||
| `tests/composition/analysis-sessions/runtime.test.ts` | `tests/acceptance/applications/runtime.test.ts` | Compiled MCP acceptance workflow |
|
||||
| `tests/conformanceFixtures.test.ts` | `tests/conformance/providers/conformanceFixtures.test.ts` | Provider conformance |
|
||||
| `tests/codexAgentEval.test.ts` | `tests/evaluation/model-evals/codexAgentEval.test.ts` | Deterministic model-evaluator logic |
|
||||
| `tests/composition/analysis-sessions/{boundedCartesianProjection,symbolAnalysis,jsonShape}.test.ts` | `src/domain/{boundedCartesianProjection,symbolAnalysis,jsonShape}.test.ts` | Colocated pure-domain behavior |
|
||||
|
||||
+3
-3
@@ -85,7 +85,7 @@
|
||||
"test": "vitest run",
|
||||
"test:run": "vitest run",
|
||||
"pretest:fast": "npm run build:cached",
|
||||
"test:fast": "vitest run --project domain --project services --project composition",
|
||||
"test:fast": "vitest run --project domain --project services --project adapters --project composition",
|
||||
"pretest:boundary": "npm run build:cached",
|
||||
"test:boundary": "vitest run --project boundary --project process-global",
|
||||
"pretest:acceptance": "npm run build:cached",
|
||||
@@ -93,7 +93,7 @@
|
||||
"pretest:changed": "npm run build:cached",
|
||||
"test:changed": "vitest run --changed",
|
||||
"pretest:integration": "npm run build:cached",
|
||||
"test:integration": "vitest run --project boundary --project process-global",
|
||||
"test:integration": "vitest run --project boundary --project process-global --project acceptance",
|
||||
"pretest:coverage": "npm run build:cached",
|
||||
"test:coverage": "vitest run --coverage.enabled --coverage.provider=v8",
|
||||
"test:ci": "npm run test:coverage -- --reporter=default --reporter=junit --outputFile.junit=test-results.xml",
|
||||
@@ -104,7 +104,7 @@
|
||||
"pretest:verbose": "npm run build:cached",
|
||||
"test:verbose": "vitest run --reporter=verbose",
|
||||
"pretest:watch": "npm run build:cached",
|
||||
"test:watch": "vitest --project domain --project services --changed",
|
||||
"test:watch": "vitest --project domain --project services --project adapters --project composition --project boundary --project conformance --project evaluation --changed",
|
||||
"pretest:watch:all": "npm run build:cached",
|
||||
"test:watch:all": "vitest --changed",
|
||||
"typecheck": "tsc --noEmit",
|
||||
|
||||
@@ -36,7 +36,7 @@ describe("Vitest project configuration", () => {
|
||||
expect(vitestConfiguration.test?.coverage?.enabled).toBe(false);
|
||||
expect(vitestConfiguration.test?.reporters).toEqual(["default"]);
|
||||
expect(vitestConfiguration.test?.retry).toBe(0);
|
||||
expect(MAX_TEST_WORKERS).toBe(Math.min(4, availableParallelism()));
|
||||
expect(MAX_TEST_WORKERS).toBe(Math.min(2, availableParallelism()));
|
||||
expect(TEST_PROJECTS.map(({ name }) => name).sort()).toEqual(
|
||||
EXPECTED_PROJECTS,
|
||||
);
|
||||
|
||||
+42
-18
@@ -8,6 +8,9 @@ const CANONICAL_TEMPORARY_DIRECTORY = realpathSync(tmpdir());
|
||||
const COVERAGE_ENABLED = process.argv.some((argument) =>
|
||||
argument.startsWith("--coverage"),
|
||||
);
|
||||
const COVERAGE_SHARD = process.argv.some((argument) =>
|
||||
argument.startsWith("--shard="),
|
||||
);
|
||||
// Keep every project on one worker budget. Vitest requires projects selected
|
||||
// by an explicit file list to agree on maxWorkers unless they are assigned
|
||||
// artificial sequence barriers; a shared cap avoids that trap and limits the
|
||||
@@ -75,6 +78,25 @@ export const TEST_PROJECTS = [
|
||||
},
|
||||
];
|
||||
|
||||
const ZERO_COVERAGE_THRESHOLDS = {
|
||||
statements: 0,
|
||||
branches: 0,
|
||||
functions: 0,
|
||||
lines: 0,
|
||||
"src/domain/**": {
|
||||
statements: 0,
|
||||
branches: 0,
|
||||
functions: 0,
|
||||
lines: 0,
|
||||
},
|
||||
"src/contracts/**": {
|
||||
statements: 0,
|
||||
branches: 0,
|
||||
functions: 0,
|
||||
lines: 0,
|
||||
},
|
||||
};
|
||||
|
||||
const projects = TEST_PROJECTS.map((project) => ({
|
||||
extends: true as const,
|
||||
test: project,
|
||||
@@ -99,24 +121,26 @@ export default defineConfig({
|
||||
`rea-vitest-coverage-${String(process.pid)}`,
|
||||
),
|
||||
include: ["src/**"],
|
||||
thresholds: {
|
||||
statements: 65,
|
||||
branches: 60,
|
||||
functions: 60,
|
||||
lines: 68,
|
||||
"src/domain/**": {
|
||||
statements: 80,
|
||||
branches: 75,
|
||||
functions: 75,
|
||||
lines: 80,
|
||||
},
|
||||
"src/contracts/**": {
|
||||
statements: 85,
|
||||
branches: 80,
|
||||
functions: 80,
|
||||
lines: 85,
|
||||
},
|
||||
},
|
||||
thresholds: COVERAGE_SHARD
|
||||
? ZERO_COVERAGE_THRESHOLDS
|
||||
: {
|
||||
statements: 65,
|
||||
branches: 60,
|
||||
functions: 60,
|
||||
lines: 68,
|
||||
"src/domain/**": {
|
||||
statements: 80,
|
||||
branches: 75,
|
||||
functions: 75,
|
||||
lines: 80,
|
||||
},
|
||||
"src/contracts/**": {
|
||||
statements: 85,
|
||||
branches: 80,
|
||||
functions: 80,
|
||||
lines: 85,
|
||||
},
|
||||
},
|
||||
reporter: ["text", "text-summary"],
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user