52 lines
1.6 KiB
Markdown
52 lines
1.6 KiB
Markdown
# Tests - ihm_client
|
||
|
||
Cette page décrit la stratégie de test, l’outillage et les conventions. Aucun exemple exécutable n’est inclus.
|
||
|
||
## Périmètre et objectifs
|
||
|
||
- Couverture des utilitaires (hex/binaire, DOM, adresses → emojis).
|
||
- Couverture des services isolables (`TokenService`).
|
||
- Non-régression des conversions et des invariants d’API.
|
||
|
||
## Outils
|
||
|
||
- Test runner: Jest 29 (environnement `jsdom`).
|
||
- TypeScript: `ts-jest` (transform TS).
|
||
- Setup global: `tests/setup.ts` (polyfills Web, mocks réseau et stockage).
|
||
- E2E: Playwright (Chromium headless) avec `playwright.config.ts`.
|
||
|
||
## Organisation
|
||
|
||
- `tests/unit/` : tests unitaires ciblés, rapides.
|
||
- `tests/integration/` : réservé aux interactions WASM/services (à compléter si besoin).
|
||
- `tests/e2e/` : tests de bout en bout (smoke tests).
|
||
|
||
## Exécution
|
||
|
||
- Lancer tous les tests: `npm run test`
|
||
- Couverture: `npm run test:coverage`
|
||
- Veille interactive: `npm run test:watch`
|
||
- E2E: `npm run e2e:install` puis `npm run test:e2e`
|
||
|
||
## Conventions
|
||
|
||
- Un test = un invariant métier/technique.
|
||
- Mocks minimaux, privilégier l’isolation des dépendances (ex. `jose` mocké).
|
||
- Aucun exemple de code applicatif dans la documentation.
|
||
|
||
## Polyfills et mocks de test
|
||
|
||
- `TextEncoder`/`TextDecoder` via `util`.
|
||
- `crypto.subtle.digest` faux pour hashing déterministe en test d’emojis.
|
||
- `fetch`, `WebSocket`, `localStorage`, `sessionStorage` mockés.
|
||
|
||
## Critères d’acceptation
|
||
|
||
- 100% vert sur la suite unitaire.
|
||
- Build TypeScript OK (`npm run build:dist`) avant commit.
|
||
|
||
## Rapports
|
||
|
||
- Rapport couverture: `coverage/` (text, lcov, html).
|
||
- Logs de tests: sortie Jest standard.
|