# 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.