test: add vitest, coverage and mutation gate with availability domain core

Pure logic lives in apps/web/src/domain and must stay at 100% coverage and a
100% mutation score. The first unit is the availability logic for the hero:
parsing, resolving and formatting the next free capacity block.

Vitest is pinned to 4.1.11 because @stryker-mutator/vitest-runner 10.0.0
runs zero tests per mutant under vitest 5 and reports surviving mutants.
ESLint now ignores Stryker, coverage and report output.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 18:12:47 +02:00
co-authored by Claude Sonnet 5.5
parent 43d0a49c3d
commit 0995a3b5ca
7 changed files with 14550 additions and 6122 deletions
+9 -2
View File
@@ -9,7 +9,8 @@
"build": "next build --webpack",
"start": "next start",
"lint": "eslint app src scripts video",
"test": "echo \"No tests configured\"",
"test": "vitest run",
"test:coverage": "vitest run --coverage",
"test:links": "tsx ./scripts/test-links.ts",
"test:file-examples": "tsx ./scripts/test-file-examples-comprehensive.ts",
"generate-estimate": "tsx ./scripts/generate-estimate.ts",
@@ -21,6 +22,7 @@
"video:render:all": "npm run video:render:contact && npm run video:render:button",
"pagespeed:test": "npx tsx ./scripts/pagespeed-sitemap.ts",
"typecheck": "tsc --noEmit",
"test:mutation": "stryker run",
"check:og": "tsx scripts/check-og-images.ts",
"check:forms": "tsx scripts/check-forms.ts"
},
@@ -104,12 +106,16 @@
"@mintel/next-utils": "^1.9.0",
"@mintel/tsconfig": "^1.9.0",
"@next/eslint-plugin-next": "^16.1.6",
"@stryker-mutator/core": "^10.0.0",
"@stryker-mutator/typescript-checker": "^10.0.0",
"@stryker-mutator/vitest-runner": "^10.0.0",
"@tailwindcss/typography": "^0.5.15",
"@types/mime-types": "^3.0.1",
"@types/node": "^25.0.6",
"@types/nodemailer": "^7.0.10",
"@types/prismjs": "^1.26.5",
"@types/qrcode": "^1.5.6",
"@vitest/coverage-v8": "^4.1.11",
"autoprefixer": "^10.4.20",
"cheerio": "^1.1.2",
"concurrently": "^9.2.1",
@@ -121,7 +127,8 @@
"require-extensions": "^0.0.4",
"tsx": "^4.21.0",
"typescript": "5.9.3",
"typescript-eslint": "^8.54.0"
"typescript-eslint": "^8.54.0",
"vitest": "^4.1.11"
},
"repository": {
"type": "git",