TDD Workflow
Red → Green → Refactor jako obowiązkowy cykl dla każdego komponentu i modułu — test istnieje zanim powstanie implementacja, co eliminuje regresje przy refactoringu i wymusza projektowanie przez kontrakt, nie implementację.
W MazCode test pisze się przed kodem — Red → Green → Refactor to nie sugestia, to obowiązkowy workflow dla każdego komponentu, slice'a i modułu. Vitest 4 uruchamia 3000+ unit testów w 12 sekund. Playwright smoke suite pokrywa 11 scenariuszy E2E z real Auth0 login, content CRUD roundtrip i axe-core WCAG 2.1 AA audit — wszystko na production build, w 3 minuty, w izolowanym test-sandbox repo.
Większość agencji webowych nie ma żadnych testów automatycznych. "Testowanie" to ręczna weryfikacja na stagingu, klikanie po stronie i nadzieja, że nic nie popsuło się przy ostatnim deploju. W najlepszym przypadku: kilka unit testów napisanych retrospektywnie, bez pokrycia krytycznych ścieżek. Rezultat: każdy deploy to hazard, refactoring jest niebezpieczny, a nowy developer boi się tknąć istniejący kod. Jest inna ścieżka.
TDD w MazCode to obowiązkowy workflow, nie opcja. Zanim pojawi się pierwsza linia kodu komponentu, istnieje test który failuje (Red). Minimalna implementacja sprawia, że test przechodzi (Green). Refactoring z pełnym coverage jako siatką bezpieczeństwa (Refactor). Ten cykl dotyczy każdego nowego slice'a (163 w codebase), każdego shared component (40 w `components/ui`) i każdego modułu w `lib/`. Wynik: 3142 testów w ostatnim run, 91.2% coverage na `src/lib/**` i `src/components/**`.
Vitest 4 vs Jest: cold start 0.3s vs 4-8s, watch mode re-run po zmianie pliku w 0.1-0.4s vs 1-3s, native ESM support bez babel transform, TypeScript bez dodatkowej konfiguracji. W praktyce: full test suite MazCode (3142 testów, 246 plików) w 12.4 sekundy. To nie akademicka różnica — developer dostaje feedback w czasie rzeczywistym, nie po 30 sekundach oczekiwania. Konfiguracja: `@testing-library/react 16` + `@testing-library/user-event`, globalne mocki dla `next/image`, `next/link` i `framer-motion` w `vitest.setup.tsx`. Krytyczna zasada: `@/lib/documents` nie jest mockowana — testy używają prawdziwych plików JSON z `content/`, co wykrywa błędy data layera których mockowanie by nie złapało.
Playwright E2E smoke suite to osobna warstwa. 11 spec files, 66 testów, ~3 minuty runtime na production build. Pokrycie: publiczna strona desktop+mobile, admin auth z real Auth0 login (3 konta: admin@/editor@/redaktor@mazcode.pl), content edit/publish roundtrip z weryfikacją na stronie, preview deployments, media upload z mockowanym Cloudinary, API contract baseline (commit/cron/feed/sitemap), SEO metadata (OG/JSON-LD/canonical), accessibility z axe-core. Bezpieczeństwo: `.env.test.local` pinuje `CONTENT_REPO_SLUG=test-sandbox` — wszystkie operacje modyfikujące dane trafiają do `MazCom-Websites/test-sandbox`, nie do repo klienta. Hard-assert w 4 miejscach: playwright.config, global-setup, verify-env script, Octokit allowlist proxy.
Axe-core integration w E2E suite to automatyczny WCAG 2.1 AA audit na każdej stronie publicznej. Każdy test ładuje stronę, uruchamia `checkA11y()` i failuje przy critical lub serious violation. W MazCode: zero critical accessibility violations na wszystkich stronach klientów od momentu wdrożenia pipeline. Pokrycie: keyboard navigation, screen reader labels, color contrast ratio, focus management, ARIA attributes. Nie zastępuje manualnego auditu, ale wyłapuje regresje automatycznie.
W MazCode CI/CD pipeline wygląda tak: git push → GitHub Actions uruchamia Vitest (12s) → jeśli pass, Playwright smoke na preview deployment (3 min) → jeśli pass, merge jest dozwolony. Zero merge bez zielonych testów. Zero deploy bez E2E smoke. Dla stron klientów: po każdym commicie w admin panelu deploy jest blokowany do czasu przejścia smoke suite. Regresje są wyłapywane przed dotarciem do użytkownika.
Biznesowo: koszt naprawienia buga w production to 10-100x więcej niż koszt testu który by go złapał wcześniej. Dla klienta to przekłada się na: zero nieoczekiwanych przestojów po aktualizacjach treści, pewność że nowe funkcje nie psują istniejących, możliwość bezpiecznego refactoringu po 2 latach od launchu. W MazCode codebase: zero regresji zgłoszonych przez klientów w production od wdrożenia pełnego pipeline w 2024 roku.
Red → Green → Refactor jako obowiązkowy cykl dla każdego komponentu i modułu — test istnieje zanim powstanie implementacja, co eliminuje regresje przy refactoringu i wymusza projektowanie przez kontrakt, nie implementację.
Vitest snapshot testing wyłapuje niezamierzone zmiany w renderowanym HTML — każda modyfikacja shared component jest porównywana z zatwierdzonym baseline, a diff jest widoczny w PR przed merge.
Playwright z real Auth0 login (3 role), content CRUD roundtrip, API contract baseline, OG/JSON-LD/canonical SEO — 66 testów na production build, izolowane w test-sandbox repo, uruchamiane w 3 minuty w CI/CD.
Axe-core integration w każdym E2E teście automatycznie weryfikuje WCAG 2.1 AA: keyboard navigation, screen reader labels, color contrast, ARIA — zero critical violations na wszystkich stronach klientów MazCode.
3142 testów, 91.2% coverage, TDD jako obowiązkowy workflow, Playwright E2E z real Auth0 i axe-core accessibility audit — zero regresji zgłoszonych przez klientów w production od wdrożenia pełnego pipeline.