Skip to content

🧪 Campaign: full console test coverage vs server-nestjs migration (unit + e2e + Playwright) #2574

Description

@shikanime

Description

Tester chaque usage console → services externes (GitLab, Keycloak, Vault, ArgoCD, Nexus, Registry, SonarQube, Harbor) contre apps/server-nestjs, pour trouver les bugs et incompatibilités de la migration apps/server → apps/server-nestjs, et couvrir 100 % des features customer-facing touchées.

  • apps/server (Fastify) est figé — ne pas modifier.
  • apps/server-nestjs est le backend cible.
  • Le mapping legacy→nestjs repose sur des événements : apps/server fire hook.<entity>.<verb> ; nestjs utilise EventEmitter2 avec @OnEvent → capturePluginResult.
  • Checklist de parité : https://github.com/cloud-pi-native/console (cf. MIGRATION-PARITY-MATRIX.md).
  1. Tests unitaires (vitest) couvrant chaque chemin console→service externe + le contrat emit→consumer.
  2. Tests e2e (apps/server-nestjs/test/*.e2e-spec.ts, gated E2E=1) pour chaque ressource migrée.
  3. Playwright pour les journeys UI customer-facing (cross-service fragility → socle cahier).
  4. Issues une par bug/incoherence trouvée, itérées jusqu'au vert.
  • Baseline unitaire : 578 passés / 59 skipped (Node 24, CI=true).

  • Seed validé : app-events.service.spec.ts — parity zone.* (listener sans émetteur). 12/12 ✅

  • Blocage infra : les hôtes d'intégration *.dso.cpin-hp.numerique-interieur.fr ne résolvent pas en DNS depuis cette machine dev → les tests e2e sont exécutés sur un host connecté / en CI.

  • Unit: parity matrix emit→consumer (app-events.service.spec.ts)

  • Unit: couverture 100 % chemins GitLab (gitlab.service.spec.ts)

  • Unit: couverture 100 % chemins Keycloak + admin-role sync (keycloak.service.spec.ts)

  • Unit: couverture 100 % chemins Vault y.c. zone.* (vault.service.spec.ts)

  • Unit: couverture 100 % chemins ArgoCD/Nexus/Registry/SonarQube

  • E2E: vault.e2e-spec.ts zone.* case (gap)

  • E2E: keycloak admin-role group sync (gap)

  • E2E: argocd/nexus/registry/sonarqube rollback + retry paths (gaps)

  • Playwright: create-project full plugin sync journey

  • Socle cahier: cross-service scenarios inscrits dans Tests Fonctionnels/

pnpm --filter @cpn-console/server-nestjs run lint && pnpm --filter @cpn-console/server-nestjs test vert + chaque sous-tâche clôturée (issue liée + test vert). E2E validé sur host connecté.

Activity

  1. shikanime commented on Aug 25, 2026

    @shikanime
    MemberAuthor

    Sous-tâche seed validée: issue zone.* emit gap ci-dessus. Baseline 578→586 (Node 24).

  2. shikanime commented on Aug 25, 2026

    @shikanime
    MemberAuthor

    Vague 1 livrée — 6 PRs draft (tests uniquement)

    PR Unité Contenu
    #2578 seed Matrice de parité + vault zone unit/e2e (+8 tests)
    #2579 u2 projectMember emit parity + garde anti-consommateur fantôme
    #2580 u3 e2e gated repository.sync miroir GitLab
    #2581 u3b keycloak admin-role reconcile-only parity + garde émission
    #2582 u10 e2e gated argocd ensureDeleteExternal / rollback
    #2583 u11 nexus/sonarqube/registry chemins d'erreur externes (+13 tests)

    Gate combinée : 600 passed / 64 skipped (arbre fusionné des 5 feuilles + seed, Node 24).

    Blocants cutover tracés : #2575 (zone), #2576 (cluster), #2577 (harbor).
    E2E gated non exécutés ici (hôtes intégration DNS-inaccessibles depuis le poste de dev) — à jouer sur hôte connecté / CI.

  3. shikanime commented on Aug 25, 2026

    @shikanime
    MemberAuthor

    Mise à jour — exécution de la stratégie de test

  4. shikanime commented on Aug 25, 2026

    @shikanime
    MemberAuthor

    Vague 2 livrée — couverture adversariale + acceptance utilisateur

    PR Cible Contenu
    #2585 vault +40 tests : mapping VaultError, approle, secrets récursifs (client 35%→85%)
    #2586 registry +9 tests : caller-decides 409/500, pagination, retention NaN (client 23%→83%)
    #2587 observability +28 tests : plugin lifecycle, YAML round-trip idempotent (11%→92%)
    #2588 utils partagés +60 tests : http/config/members/vault/queries edges, 2 comportements documentés
    #2589 playwright UAT SECR-001 toggle secrets ; SECR-003 skip documenté

    Gate combinée : 723 passed / 59 skipped / 0 failed (arbre fusionné des 4 branches nestjs, Node 24).
    Couverture globale : 79.3% → 83.5% statements / 80.2% → 84.4% lines — cible ≥80% atteinte.
    Merge queue manuel (#32905282108) : success, incluant les 4 shards Playwright sur images construites depuis la PR.

    Méthode « don't trust, prove it » : chaque feuille a été revérifiée par le dispatcher dans son workspace avant PR ; deux bugs de spec (mock MSW multi-segments, ordre DFS) et un écart upstream (cron ? Quartz) corrigés/documentés pendant la revérification.

  5. self-assigned this
    on Aug 26, 2026
  6. added this to the 9.25.0 milestone on Aug 26, 2026
  7. modified the milestones: 9.25.0, 10.0.0 on Sep 1, 2026
  8. added theissue type on Sep 29, 2026
  9. 3 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions