open-brainy/tests/configs/vitest.perf.config.ts
David Snelling ebb3a4bf13
Some checks failed
Delta Gate / Delta gate — candidate vs control (push) Waiting to run
CI / Node 22 (push) Successful in 12m27s
CI / Bun (latest) (push) Has been cancelled
CI / Node 24 (push) Has been cancelled
CI / Integration + conformance (Node 22) (push) Has been cancelled
test(batch): the batch-vs-individual timing assertion runs in the perf lane, not the correctness gate
The wall-clock ratio (batch faster than N individual gets) started failing
under the exclusive release gate because individual gets got faster on
this candidate (open-path/hydration changes), not because batchGet
regressed — a perf assertion misclassified into a correctness file.

Skip it under the default gate via a BRAINY_PERF_LANE env marker the perf
config sets for itself; the file joins the perf config's include list so
the case still runs (with every other test in the file) under
`npm run test:perf`.
2026-09-02 11:54:29 -07:00

68 lines
2.5 KiB
TypeScript

import { defineConfig } from 'vitest/config'
/**
* Perf/scale + environment-dependent test configuration.
*
* The exclusive on-demand slot for everything the correctness gate
* (`vitest.config.ts`, the config a bare `vitest run` picks up) excludes:
* wall-clock/scale benchmarks and the two tests whose outcome depends on
* the host machine or network rather than the code. See CONTRIBUTING.md's
* "Test gate" section and the exclude list in `vitest.config.ts` (root) for
* why each file lives here instead of the gate.
*
* `include` names this set explicitly — it is the mirror image of the
* root config's exclude list, not an independent glob, so the two stay in
* sync by inspection. Longer timeouts than the gate's 120s/60s: one case in
* tests/critical-performance-benchmark.test.ts measures ~128s of real work.
*/
export default defineConfig({
test: {
globals: true,
setupFiles: ['./tests/setup.ts'],
environment: 'node',
// The marker a test uses to tell it is running under this lane (see
// tests/integration/storage-batch-operations.test.ts's batch-vs-
// individual timing case) — a wall-clock RATIO assertion self-skips
// with a reason when this is absent, rather than flaking the
// correctness gate on whichever path happens to be faster this build.
env: { BRAINY_PERF_LANE: '1' },
// Sequential, single fork — same isolation the gate uses, so a perf
// measurement isn't skewed by sibling test contention.
pool: 'forks',
poolOptions: {
forks: {
maxForks: 1,
minForks: 1,
singleFork: true,
isolate: true
}
},
testTimeout: 300000, // 5 minutes per test (the 128s case plus headroom)
hookTimeout: 120000,
teardownTimeout: 10000,
maxConcurrency: 1,
fileParallelism: false,
include: [
'tests/performance/**/*.{test,spec}.{js,ts}',
'tests/critical-performance-benchmark.test.ts',
'tests/api/performance-benchmarks.test.ts',
'tests/package-size-limit.test.ts',
'tests/model-loading.test.ts',
// Not a whole perf file — one wall-clock-ratio case inside an
// otherwise-correctness integration suite (self-skipped everywhere
// else via BRAINY_PERF_LANE). Stays in the integration gate's
// include too, so every OTHER test in the file keeps running there.
'tests/integration/storage-batch-operations.test.ts'
],
reporters: process.env.CI ? ['dot'] : ['basic'],
retry: process.env.CI ? 1 : 0,
shard: process.env.VITEST_SHARD
}
})