test: testing overhaul -- CI e2e gates, parallel suites, generated matrices, mutation testing (#215)

Closes the "e2e never runs in CI" hole. Adds per-PR e2e smoke gate,
nightly full-suite workflows, parallel vitest forks (per-fork DBs),
Playwright parallel/serial/visual projects against production builds,
metadata-generated test suites (drift guards, hostile inputs, format
matrix, pairwise settings, property-based fuzz), Stryker mutation
testing, Schemathesis API fuzz, coverage ratchet, and fixes for three
session-poisoning bugs that caused 200+ serial-bucket failures.

Bug fix included: favicon/split/bulk-rename could hang clients forever
when ZIP streaming failed after reply.hijack().
This commit is contained in:
SnapOtter
2026-06-10 22:01:13 +08:00
committed by GitHub
parent 3b8d529b44
commit 4ec39c556f
62 changed files with 2888 additions and 298 deletions
+4 -1
View File
@@ -9,7 +9,8 @@
"lint": "biome check src/",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"clean": "rm -rf dist"
"clean": "rm -rf dist",
"test:mutation": "stryker run"
},
"dependencies": {
"@snapotter/shared": "workspace:*",
@@ -17,6 +18,8 @@
"sharp": "^0.34.5"
},
"devDependencies": {
"@stryker-mutator/core": "^9.6.1",
"@stryker-mutator/vitest-runner": "^9.6.1",
"typescript": "^5.7.0",
"vitest": "^3.2.6"
},
+13
View File
@@ -0,0 +1,13 @@
{
"$schema": "https://raw.githubusercontent.com/stryker-mutator/stryker-js/master/packages/api/schema/stryker-core.json",
"testRunner": "vitest",
"plugins": ["@stryker-mutator/vitest-runner"],
"mutate": ["src/**/*.ts", "!src/types.ts", "!src/index.ts"],
"incremental": true,
"incrementalFile": "reports/stryker-incremental.json",
"reporters": ["html", "clear-text", "progress"],
"htmlReporter": { "fileName": "reports/mutation/mutation.html" },
"thresholds": { "high": 80, "low": 60, "break": null },
"tempDirName": ".stryker-tmp",
"ignoreStatic": true
}