Repository navigation
💡 [REQUEST] - Migrer les tests basés sur mocks vers MSW (handlers + data centralisés) #2655
Copy link
Copy link
Closed
Closed
Copy link
Labels
Milestone
Description
Activity
Décision de périmètre : MSW n'interceptant que du HTTP, les mocks Prisma (
src/__mocks__/prisma.ts,mockDeep<PrismaService>) restent hors périmètre — un accès base n'est pas un frontière HTTP modélisable en handlers.
vitest-mock-extendedreste donc autorisé pour les dépendances non HTTP (services internes, Prisma) ; la migration vise les frontières HTTP uniquement (clients externes, appels API duxhr-client).- added 8 commits that reference this issue
on Sep 3, 2026 - locked and limited conversation to collaborators
on Sep 17, 2026 - linked a pull request that will close this issuetest(server-nestjs): migrate Registry client spec to MSW + @msw/data #2671
on Oct 8, 2026 - linked a pull request that will close this issuetest(server-nestjs): migrate Vault client spec to MSW + @msw/data #2670
on Oct 8, 2026 - linked a pull request that will close this issuetest(server-nestjs): migrate Nexus client spec to MSW + @msw/data #2669
on Oct 8, 2026 - linked a pull request that will close this issuetest(server-nestjs): migrate registry client spec to MSW + @msw/data #2666
on Oct 8, 2026 - linked a pull request that will close this issuetest(server-nestjs): migrate vault client spec to MSW + @msw/data #2665
on Oct 8, 2026 - linked a pull request that will close this issuetest(server-nestjs): migrate nexus client spec to MSW + @msw/data #2664
on Oct 8, 2026 - linked a pull request that will close this issuetest(server-nestjs): add @msw/data dependency #2659
on Oct 8, 2026 - linked a pull request that will close this issuetest(server-nestjs): migrate nexus, vault, registry client specs to MSW + @msw/data #2656
on Oct 8, 2026
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