Dependencies naar de nieuwste versies + update-check in de testsuite
Upgrades
- Frontend: React 19.2, Vite 8.2, @vitejs/plugin-react 6.1, ESLint 9.39
- Backend: Express 5.2, Helmet 8.3, express-rate-limit 8.7, pino 10.3,
pino-http 11, pg 8.23, dotenv 17.4, bcryptjs 3.0, ESLint 10.9
- Lockfiles opnieuw gegenereerd (backend had er geen)
Breaking changes opgevangen
- Express 5 laat kale wildcards in routes niet toe: app.use("/api/*") is een
prefix-mount geworden en app.get("*") pad-loze middleware
- Vite 8 bundelt met Rolldown, dat de object-vorm van manualChunks niet kent;
omgezet naar build.rollupOptions.output.advancedChunks
- Rate-limit headers verschillen per RFC-draft; de test kijkt nu naar de hele
RateLimit-headerfamilie in plaats van naar RateLimit-Limit
- ESLint blijft in de frontend op 9: eslint-plugin-react ondersteunt nog geen
ESLint 10 (peer <= ^9.7)
Update-check bij het testen
- docker/check-updates.mjs vergelijkt beide package.json's met het
npm-register; werkt zonder node_modules en zonder npm install
- test.ps1 draait dit als stap 1 van 4, met -Strict (falen) en -SkipDeps
(offline). Ook informatief in de Test-stage van de pipeline
- Bewuste uitzonderingen met reden in docker/update-exceptions.json
- dev.ps1 up gebruikt --renew-anon-volumes, anders houdt de dev-container de
oude node_modules na een upgrade
Overig
- ESLint flat configs voor beide packages; npm run lint werkte niet omdat er
geen configuratie was. Beide draaien nu groen (alleen waarschuwingen over
bestaande ongebruikte variabelen)
- README.md, BEHEER.md en Changelog.md bijgewerkt
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bfec3a25f3
commit
1c0eed61f6
@@ -2,21 +2,26 @@
|
||||
# Draait de volledige testsuite voor de 2-container opzet. Alles gebeurt in
|
||||
# Docker, dus je hebt geen Node op de host nodig.
|
||||
#
|
||||
# 1. Backend-tests (Dockerfile target 'test' → node --test, zonder database)
|
||||
# 2. Productiebuild (Vite-build + app-image; faalt de frontend, faalt dit)
|
||||
# 3. Smoketest (productie-image + postgres, /api/health en / opvragen)
|
||||
# 1. Dependency-check (staan package.json's op de laatste versies?)
|
||||
# 2. Backend-tests (Dockerfile target 'test' → node --test, zonder database)
|
||||
# 3. Productiebuild (Vite-build + app-image; faalt de frontend, faalt dit)
|
||||
# 4. Smoketest (productie-image + postgres, /api/health en / opvragen)
|
||||
#
|
||||
# De smoketest publiceert geen hostpoorten en gebruikt een eigen netwerk, dus
|
||||
# hij botst niet met een draaiende dev-stack.
|
||||
#
|
||||
# Gebruik:
|
||||
# .\test.ps1 # alle stappen
|
||||
# .\test.ps1 -Unit # alleen de backend-tests
|
||||
# .\test.ps1 -NoSmoke # tests + build, zonder de stack te starten
|
||||
# .\test.ps1 -Unit # dependency-check + backend-tests
|
||||
# .\test.ps1 -NoSmoke # zonder de stack te starten
|
||||
# .\test.ps1 -Strict # faal als een dependency achterloopt
|
||||
# .\test.ps1 -SkipDeps # dependency-check overslaan (bijv. offline)
|
||||
|
||||
param(
|
||||
[switch]$Unit,
|
||||
[switch]$NoSmoke
|
||||
[switch]$NoSmoke,
|
||||
[switch]$Strict,
|
||||
[switch]$SkipDeps
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
@@ -34,8 +39,31 @@ function Write-Step {
|
||||
Write-Host "── $Label" -ForegroundColor Cyan
|
||||
}
|
||||
|
||||
# ── 1. Backend-tests ──────────────────────────────────────────────────────
|
||||
Write-Step "[1/3] Backend-tests"
|
||||
# ── 1. Dependency-check ───────────────────────────────────────────────────
|
||||
# Vergelijkt de versies in frontend/ en backend/package.json met het
|
||||
# npm-register. Bewuste uitzonderingen staan in docker/update-exceptions.json.
|
||||
if (-not $SkipDeps) {
|
||||
Write-Step "[1/4] Dependency-check"
|
||||
|
||||
$checkArgs = @("node", "docker/check-updates.mjs")
|
||||
if ($Strict) { $checkArgs += "--strict" }
|
||||
|
||||
docker run --rm -v "${PSScriptRoot}:/repo" -w /repo node:22-alpine @checkArgs
|
||||
$checkCode = $LASTEXITCODE
|
||||
|
||||
if ($checkCode -ne 0) {
|
||||
if ($Strict) {
|
||||
Write-Error "Dependencies lopen achter — bijwerken of -SkipDeps gebruiken."
|
||||
exit 1
|
||||
}
|
||||
Write-Host "Let op: er zijn nieuwere versies beschikbaar (zie hierboven)." -ForegroundColor Yellow
|
||||
}
|
||||
} else {
|
||||
Write-Step "[1/4] Dependency-check overgeslagen (-SkipDeps)"
|
||||
}
|
||||
|
||||
# ── 2. Backend-tests ──────────────────────────────────────────────────────
|
||||
Write-Step "[2/4] Backend-tests"
|
||||
docker build --target test -t $testImage $PSScriptRoot
|
||||
if ($LASTEXITCODE -ne 0) { Write-Error "Testimage bouwen mislukt"; exit 1 }
|
||||
|
||||
@@ -49,8 +77,8 @@ if ($Unit) {
|
||||
exit 0
|
||||
}
|
||||
|
||||
# ── 2. Productiebuild (inclusief Vite-build) ──────────────────────────────
|
||||
Write-Step "[2/3] Productie-image bouwen"
|
||||
# ── 3. Productiebuild (inclusief Vite-build) ──────────────────────────────
|
||||
Write-Step "[3/4] Productie-image bouwen"
|
||||
docker build --target production `
|
||||
--build-arg APP_VERSION=$appVersion `
|
||||
--build-arg VITE_APP_VERSION=$appVersion `
|
||||
@@ -64,9 +92,8 @@ if ($NoSmoke) {
|
||||
Write-Host "Smoketest overgeslagen (-NoSmoke) — klaar." -ForegroundColor Green
|
||||
exit 0
|
||||
}
|
||||
|
||||
# ── 3. Smoketest op het productie-image + postgres ────────────────────────
|
||||
Write-Step "[3/3] Smoketest (app + postgres)"
|
||||
# ── 4. Smoketest op het productie-image + postgres ────────────────────────
|
||||
Write-Step "[4/4] Smoketest (app + postgres)"
|
||||
|
||||
function Remove-SmokeStack {
|
||||
docker rm -f $smokeApp $smokeDb 2>$null | Out-Null
|
||||
|
||||
Reference in New Issue
Block a user