--- name: pre-vercel-check description: Deploy gate: check:pre-vercel / check:pre-vercel:ci. Gebaseerd op scripts/pre-vercel-check.ts (actuele stappen + timing). --- # PRE-VERCEL CHECK SKILL Ultieme drempel vóór release. ## Wat het echt doet `npm run check:pre-vercel` (repo root) → `cd apps/web && npm run check:pre-vercel` → **`tsx ../../scripts/pre-vercel-check.ts`**. **CI / één-commando parity** (lint + TypeScript + build): - Root: **`npm run check:pre-vercel:ci`** - Of vanuit `apps/web`: **`npm run check:pre-vercel:ci`** (= `PREFLIGHT_MODE=ci`). In `scripts/pre-vercel-check.ts`: - **Standaard**: **type-check → ESLint → Next.js build** (`check:build` → `next-build-with-retry.mjs`). Prelude overslaan: **`PREFLIGHT_SKIP_FAST_CHECKS=1`** (alleen build). - **`PREFLIGHT_MODE=ci`** of **`strict`**: **type-check → ESLint → agency-marketing + mail-legacy + public storefront URL + www-host literal audits → metadata:verify → build** (`ci` forceert prelude; skip-flag geldt niet voor `ci`-mode). - Los (backwards compatible / overrides met skip-flag): - `PREFLIGHT_STRICT=true` → altijd `type-check` - `PREFLIGHT_LINT=true` → altijd `lint` - **`PREFLIGHT_MAIL_RELAY_VERIFY=1`**: vóór de Next-build **`verify:mail-relay-env:strict`** (Combell relay + auth in `.env.local`); faalt snel bij incomplete relay-env. - **`PREFLIGHT_VOICEJAR_WEB_VITALS_FIELD=1`** + **`DATABASE_URL`**: vóór de Next-build root **`npm run verify:voicejar-web-vitals-field:when-db`** (JSON aggregaat veld-Web Vitals; zie **doc 33** §3c — strikte exit alleen als je **`VOICEJAR_WEB_VITALS_REPORT_STRICT=1`** meegeeft). - Per stap: **duur in seconden** in de log (`OK in …s`, totaal aan het eind). **Relay + CI-preflight in één:** root **`npm run check:pre-vercel:ci:with-mail`**. **Relay zonder CI-audits:** **`npm run check:pre-vercel:with-mail`** (nog steeds standaard type-check + lint + relay-check + build). Er wordt **geen** apart `integrity-handshake.ts` meer aangeroepen door dit script. **Build-retry:** bij succes op **poging 2 of 3** schrijft `next-build-with-retry.mjs` een **`console.warn`** recovery-regel (meetbare flakes / parallel `.next`). ## Fast Lane 1. Tijdens iteratie: gerichte checks (`npx eslint …`, `npm run type-check`). 2. **Macro vlak vóór commit:** `npm run check:pre-vercel` (type-check + lint + Next build). **Alleen** webpack-build itereren: `PREFLIGHT_SKIP_FAST_CHECKS=1 npm run check:pre-vercel`. 3. **CI of “alles in één”** met audits: `npm run check:pre-vercel:ci`. ## Verplichte richtlijnen - `802-PUSH-AND-VALIDATE.mdc`, `200-CODE-INTEGRITY.mdc`, `.cursorrules` (PRE-FLIGHT MANDATE). - Bij gate-failure: **blocker** - geen push. ## Live console-audit: fix-on-fail (agent - niet alles op het eind) Doel: bij **elke** Playwright-console-fout **meteen** root-cause fixen, **één route hertesten**, daarna **weer volledig scannen** - geen batch van tientallen failures eerst verzamelen. 1. **Fail-fast draaien** (stopt op eerste fout; standaard live = `fast` + `desktop-mobile-light` + 6 workers via `scripts/live-console-audit-hosts.sh`): - `npm run full-check:live:fail-fast` - Of zelf: `PLAYWRIGHT_MAX_FAILURES=1 npm run full-check:live` 2. **Uit output halen**: testtitel bevat `clean console on ` en profiel (`desktop-light` / `mobile-light`, …). 3. **Fix** in code/config (allowlist alleen als de fout echt verwachte ruis is - liever echte fix). 4. **Hertest enkel die route** (snel): ```bash cd apps/web && CONSOLE_AUDIT_SCOPE=extended CONSOLE_AUDIT_SPEED=fast CONSOLE_AUDIT_PROFILES=desktop-mobile-light \ PLAYWRIGHT_BASE_URL=https://www.voices.be \ npx playwright test tests/e2e/console-audit.spec.ts --grep 'clean console on /jouw/pad' --workers=1 ``` Pas het grep-patroon aan op het pad (speciale tekens escapen in regex waar nodig). 5. **Opnieuw** `npm run full-check:live:fail-fast` tot groen; daarna optioneel `npm run full-check:live` (zelfde host) voor volledige sweep zonder vroege stop. **Strengere parity** met lokale full-check (langzamer): `CONSOLE_AUDIT_SPEED=thorough CONSOLE_AUDIT_PROFILES=all PLAYWRIGHT_LIVE_WORKERS=2 PLAYWRIGHT_MAX_FAILURES= npm run full-check:live`.