Doel van dit document is beschrijven welke tooling we voor welke tests gebruiken.
De nadruk in dit document ligt op testautomatisering, maar zoals in ons "Testen en kwaliteit"-document staat: "handmatig en automatisch testen gaan samen".
Tests uitgevoerd door externe partijen (pen test, wettelijke toets) zijn niet opgenomen in dit document.
- Containercomponenten: zijn verantwoordelijk voor het ophalen en weergeven van data, zoals pagina's.
- Presentatiecomponenten: zijn verantwoordelijk voor het weergeven van data.
- Overige units: bijvoorbeeld API code, utility functies.
- eslint: Linting
- prettier: Formatting
- Vitest: Test runner voor alle tests behalve Playwright-tests
- Playwright: Test framework inclusief runner tegen browser-engine
- Mock Service Worker: Mock server
- React Testing Library: Library voor het testen van React componenten
- Ladle: Library voor het ontwikkelen en testen van alleenstaande componenten (alternatief voor Storybook)
Omdat presentatiecomponenten puur de data weergeven die ze krijgen, kunnen ze met Ladle getest worden. Ze hebben geen backend of mock server nodig.
---
title: Presentatiecomponenten
---
flowchart LR
rtl([React Testing Library])
playwright([Playwright])
component(Component)
subgraph ladle-story [Ladle story]
component
end
style ladle-story fill:#ececff,stroke:#c5b9de
rtl --> component
playwright --> component
Voor de tests met Playwright of een browser, wordt de story geserved door de ladle dev server.
Containercomponenten hebben interacties met de backend voor hun data. Ze hebben dus de backend of een mock server nodig.
---
title: Containercomponenten
---
flowchart LR
component(Component)
rtl([React Testing Library])
msw([Mock Service Worker])
rtl --> component
component --> msw
---
title: React integration test
---
flowchart LR
fe(Frontend)
rtl([React Testing Library])
msw([Mock Service Worker])
rtl --> fe
fe --> msw
Plan is om binnenkort deze tests te vervangen door Playwright tests. (issue 898)
- Linting: Rust compiler en clippy
- Formatting: rustfmt
- Test runner: cargo test
- Unit en integratie-tests: geen additionele libraries of tools nodig
- API client: reqwest
Als de performance van cargo test
een probleem wordt, kunnen we overstappen op cargo-nextest.
---
title: API integration tests
---
flowchart LR
be(Backend)
db[(Database)]
api-client([API client])
api-client --> be
be --> db
Test runner: Playwright
---
title: End-to-end tests
---
flowchart LR
fe(Frontend)
be(Backend)
db[(Database)]
playwright([Playwright])
playwright --> fe
subgraph Abacus
fe -.- be
be -.- db
end
Nog te bepalen.
- Benchmarking opties:
- Load en stress testen:
Nog te bepalen.
- Opties:
- Google Lighthouse
- Axe (ondersteund door Ladle)
- Pa11y