============================================================ QA SMOKE — Redmine #29 (épopée) "Ajouter les rôles et compétences Agile manquants dans les listes et filtres" Projet : GetYourJob (id 11) | Statut entrée : QA PR : https://github.com/omdev-tech/GetYourJob/pull/232 (base dev) Branche : feat/redmine-29-agile-roles Worktree testé : .worktrees/redmine-29-agile-roles Date : 2026-06-11 Verdict : PASS ============================================================ NOTE : aucun secret n'est inclus dans ce rapport (aucune valeur d'environnement, clé API, URL DB, token ou cookie). ------------------------------------------------------------ MÉTHODE ------------------------------------------------------------ Un smoke UI complet (dev server + DB live + auth prod) n'est pas praticable dans cet environnement. Conformément à la consigne, la preuve de smoke repose sur les suites vitest ajoutées (RoleNormalizationService + AgileRolesAndSkills. integration), qui assertent EXACTEMENT les surfaces de données qui pilotent à la fois les sélecteurs (profil / offre) ET les filtres de recherche : - ROLE_PICKER_TAXONOMY -> InlineRoleSelector + filtre rôle (TopFilterBar / MobileFilterModal) - EnhancedDataNormalizationService.searchTechnologies -> autocomplete compétences/outils (sélecteur + suggestions de filtre) - RoleNormalizationService.normalizeRole -> mappe les libellés bruts des offres/profils vers l'enum utilisé par le filtre (pertinence du filtre). Inspection source des fichiers modifiés en complément. ------------------------------------------------------------ COMMANDES EXÉCUTÉES ------------------------------------------------------------ $ npx prisma generate -> Generated Prisma Client (v6.12.0) [OK] $ npx vitest run \ src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts \ src/domain/services/__tests__/RoleNormalizationService.test.ts -> Test Files 2 passed (2) -> Tests 236 passed (236) [OK] $ npx vitest run AgileRolesAndSkills.integration --reporter=verbose -> 13 passed (13) [OK] (détail ci-dessous) $ npx tsc --noEmit -> Erreurs présentes MAIS uniquement dans des fichiers NON touchés par #29 (pré-existantes, repo-wide ; tsc/lint standalone est cassé sur Next 16, le build s'appuie sur ignoreBuildErrors). Aucun fichier non-test modifié par #29 n'a d'erreur tsc. Les seules erreurs sur des fichiers #29 sont "Cannot find name describe/expect" dans les *.test.ts (globals vitest non résolus par tsc standalone — les tests passent au runtime). => PAS de régression de type imputable à #29. ------------------------------------------------------------ INSPECTION SOURCE (extraits, fichiers modifiés par 1de0426) ------------------------------------------------------------ src/lib/role-picker-taxonomy.ts category: 'Leadership & Architecture' { value: 'AGILE_COACH', label: 'Coach Agile' } { value: 'SCRUM_MASTER_SAFE', label: 'Scrum Master SAFe' } { value: 'RELEASE_TRAIN_ENGINEER', label: 'Release Train Engineer (RTE)' } prisma/schema.prisma (enum RoleType) AGILE_COACH SCRUM_MASTER_SAFE RELEASE_TRAIN_ENGINEER + migration prisma/migrations/20260611190000_add_agile_scale_role_types/migration.sql src/domain/entities/TechnologyStackRemainingCategories.ts nouvelle sous-catégorie 'agile-methodologies-tools' : Coaching Agile / Amélioration continue / Agilité à l'échelle Jira / Confluence / Miro ------------------------------------------------------------ ACCEPTANCE CRITERIA -> RÉSULTAT ------------------------------------------------------------ [OK] AC1 Coach Agile, Scrum Master SAFe, RTE dispo dans "Leadership & Architecture" (sélecteur profil/offre). (test: roles live in "Leadership & Architecture") [OK] AC2 Compétences Agilité à l'échelle, Coaching Agile, Amélioration continue disponibles. (test: skills searchable) [OK] AC3 Outils Confluence + Miro disponibles ; Jira présent. (test: tools Jira/Confluence/Miro searchable) [OK] AC4 Nouveaux rôles/compétences/outils dans les filtres de recherche (ALL_ROLE_TYPES + autocomplete). (test: present in flat ALL_ROLE_TYPES list) [OK] AC5 Filtre pertinent : "Coach Agile"->AGILE_COACH, "RTE"->RELEASE_TRAIN_ENGINEER (un libellé brut normalise vers l'enum envoyé par le filtre). (test: role-string search resolves to the right enum) [OK] AC6 Règles de priorité role-normalization.md respectées : "Scrum Master SAFe" distinct de "Scrum Master". (test: SAFe -> SCRUM_MASTER_SAFE, NOT generic bucket) [OK] AC7 Aucune régression : "Scrum Master" -> SCRUM_MASTER, React résout toujours, tous les rôles existants présents. (tests: no-regression cases, 223 RoleNormalization cases verts) ------------------------------------------------------------ DÉTAIL — AgileRolesAndSkills.integration (13 tests, verbose) ------------------------------------------------------------ RUN v4.0.18 /home/naqued/Development/omdev/GetYourJob/git/GetYourJob/.worktrees/redmine-29-agile-roles ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile roles in the picker / filter taxonomy (#57, #65) > Coach Agile, Scrum Master SAFe and RTE live in "Leadership & Architecture" 1ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile roles in the picker / filter taxonomy (#57, #65) > the generic Scrum Master stays out of Leadership & Architecture (kept distinct) 0ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile roles in the picker / filter taxonomy (#57, #65) > the new roles are filterable (present in the flat ALL_ROLE_TYPES list that feeds the filter) 0ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile roles in the picker / filter taxonomy (#57, #65) > the new roles expose human labels (chip / option text) 0ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile roles in the picker / filter taxonomy (#57, #65) > no regression: every existing role is still present in the taxonomy 1ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Filtering relevance — a role-string search resolves to the right enum (#60, #65) > "Coach Agile" offer normalizes to AGILE_COACH (matches the Coach Agile filter) 1ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Filtering relevance — a role-string search resolves to the right enum (#60, #65) > "Release Train Engineer" offer normalizes to RELEASE_TRAIN_ENGINEER 0ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Filtering relevance — a role-string search resolves to the right enum (#60, #65) > "Scrum Master SAFe" offer normalizes to SCRUM_MASTER_SAFE — NOT the generic bucket 1ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Filtering relevance — a role-string search resolves to the right enum (#60, #65) > no regression: a plain "Scrum Master" offer still normalizes to SCRUM_MASTER 0ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile skills & tools in the selector / filter autocomplete (#57, #65) > tools Jira, Confluence and Miro are now searchable (were absent before) 1ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile skills & tools in the selector / filter autocomplete (#57, #65) > skills Agilité à l'échelle, Coaching Agile, Amélioration continue are searchable 1ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile skills & tools in the selector / filter autocomplete (#57, #65) > skills are reachable by their domain aliases (relevance for free-text feeds) 1ms ✓ ci src/domain/services/__tests__/AgileRolesAndSkills.integration.test.ts > Agile skills & tools in the selector / filter autocomplete (#57, #65) > no regression: a core technology still resolves 0ms Test Files 1 passed (1) Tests 13 passed (13) Start at 21:20:40 Duration 302ms (transform 149ms, setup 0ms, import 179ms, tests 11ms, environment 0ms)