Description
Les tests du monorepo reposent majoritairement sur des mocks de haut niveau : vitest-mock-extended (mockDeep), vi.mock (src/__mocks__/prisma.ts) et vi.spyOn sur les clients ts-rest.
Ces mocks couplent les tests à la forme interne des services : renommer une méthode ou changer un schéma Prisma casse les tests sans aucun changement de comportement observable.
Seuls 6 specs clients de apps/server-nestjs (gitlab, keycloak, nexus, registry, sonarqube, vault) utilisent déjà MSW.
Objectif : migrer les tests basés sur mocks vers MSW, avec handlers et fixtures centralisés dans un dossier msw/ (handlers + data) réutilisable, plutôt que des setups setupServer(...) dupliqués dans chaque spec.
Périmètre :
apps/client : remplacer les vi.spyOn(apiClient.*) des stores par des handlers MSW interceptant le vrai appel HTTP du xhr-client.
apps/server-nestjs : généraliser MSW à tout ce qui est frontière HTTP ; les mocks Prisma (accès base, non-HTTP) restent hors périmètre.
plugins/* : mĂŞmes handlers MSW que server-nestjs pour les clients externes, via un partage dans packages/ si pertinent.
PRs liées
Issues liées
Exemples simples
apps/client/src/stores/project.spec.ts : listProjects mocké à la main → handler http.get('*/api/v1/projects') servi depuis msw/data/projects.ts.
apps/server-nestjs/src/modules/vault/vault-client.service.spec.ts : handlers inline → extraits vers msw/handlers/vault.ts + fixtures msw/data/vault.ts.
Spécifications techniques
- MSW 2.x est déjà dans le catalog pnpm (
msw: ^2.12.10).
- Structure cible par application :
src/test/msw/handlers/<domaine>.ts (handlers) et src/test/msw/data/<domaine>.ts (fixtures typées depuis @cpn-console/shared).
server.listen() / resetHandlers() / close() centralisés dans un setup Vitest (vitest.config.ts → test.setupFiles).
Définition du fini
Description
Les tests du monorepo reposent majoritairement sur des mocks de haut niveau :
vitest-mock-extended(mockDeep),vi.mock(src/__mocks__/prisma.ts) etvi.spyOnsur les clients ts-rest.Ces mocks couplent les tests à la forme interne des services : renommer une méthode ou changer un schéma Prisma casse les tests sans aucun changement de comportement observable.
Seuls 6 specs clients de
apps/server-nestjs(gitlab, keycloak, nexus, registry, sonarqube, vault) utilisent déjà MSW.Objectif : migrer les tests basés sur mocks vers MSW, avec handlers et fixtures centralisés dans un dossier
msw/(handlers+data) réutilisable, plutôt que des setupssetupServer(...)dupliqués dans chaque spec.Périmètre :
apps/client: remplacer lesvi.spyOn(apiClient.*)des stores par des handlers MSW interceptant le vrai appel HTTP duxhr-client.apps/server-nestjs: généraliser MSW à tout ce qui est frontière HTTP ; les mocks Prisma (accès base, non-HTTP) restent hors périmètre.plugins/*: mêmes handlers MSW queserver-nestjspour les clients externes, via un partage danspackages/si pertinent.PRs liées
Issues liées
Exemples simples
apps/client/src/stores/project.spec.ts:listProjectsmocké à la main → handlerhttp.get('*/api/v1/projects')servi depuismsw/data/projects.ts.apps/server-nestjs/src/modules/vault/vault-client.service.spec.ts: handlers inline → extraits versmsw/handlers/vault.ts+ fixturesmsw/data/vault.ts.Spécifications techniques
msw: ^2.12.10).src/test/msw/handlers/<domaine>.ts(handlers) etsrc/test/msw/data/<domaine>.ts(fixtures typées depuis@cpn-console/shared).server.listen()/resetHandlers()/close()centralisés dans un setup Vitest (vitest.config.ts→test.setupFiles).Définition du fini
vi.spyOn(apiClient.*)HTTP ne subsiste dans les specs deapps/client(grep -rn "spyOn(apiClient" apps/client/srcvide)apps/server-nestjshors MSW sont migrées vers des handlers MSWmsw/(handlers + data) et partagés entreserver-nestjset les plugins concernéspnpm test