Skip to content

test: improve and fix test suite for Symfony 4 (#1204)#1205

Open
chriskaya wants to merge 1 commit intomasterfrom
chriskaya/improve-tests-sf4
Open

test: improve and fix test suite for Symfony 4 (#1204)#1205
chriskaya wants to merge 1 commit intomasterfrom
chriskaya/improve-tests-sf4

Conversation

@chriskaya
Copy link
Copy Markdown
Collaborator

@chriskaya chriskaya commented Apr 27, 2026

Résumé

Cette branche améliore en profondeur l'infrastructure de tests (unit, fonctionnel, smoke, E2E Cypress), modernise quelques APIs Symfony 4 dépréciées, et corrige une série de bugs détectés en chemin. 50 commits, ~6 200 insertions / 2 655 suppressions sur 122 fichiers.

Tests (le plus gros morceau)

Tests unitaires d'entités (~141 tests)

  • Beneficiary (32), Membership (37), Shift (41), ShiftBucket (31)

Tests unitaires de services

  • BeneficiaryService, MembershipService, PeriodService, ShiftServiceUnitTest, TimeLogService

Tests fonctionnels

  • Nouveau FunctionalTestCase avec helper loginAs partagé
  • MembershipControllerTest (controller tests)
  • SmokeTest couvrant 67 routes (a permis de détecter et corriger plusieurs bugs de templates)
  • Renommage du dossier tests/Functionnaltests/Functional
  • Ré-activation des tests fonctionnels précédemment skipés (suite au fix new Session())
  • DynamicContentFixtures pour fournir des données de test

E2E Cypress

  • Nouveau test : inscription d'un membre (member_can_register)
  • Nouveau test : réservation de créneau (member_can_book_shift)
  • Stabilisation du test freeze/unfreeze (waits d'animation)
  • Custom commands dans support/commands.js
  • Sélecteurs résilients (suppression d'IDs hardcodés)

Infra de test

  • Configuration de couverture de code + scripts composer test
  • Session mock_file en env test
  • Désactivation du strict_mode Webpack Encore en test
  • Override du cookie_domain en env test pour le cross-host Cypress

CI / Build

  • Refactor du workflow CI pour s'appuyer sur des cibles Makefile (locales et CI alignées)
  • Nouveau Makefile (dev local + tests) + variante CI-aware
  • Job fast-tests ajouté ; phpStan ne dépend plus de la DB
  • Cypress E2E splitté en 2 jobs parallèles (main + OIDC)
  • Build des assets Encore une fois dans le job setup, partagé via artifact
  • Cache node_modules + binaire Cypress
  • Cypress lancé localement via l'image Docker cypress/included
  • membres.yourcoop.local ajouté à /etc/hosts (CI + setup-test)
  • Upload des screenshots Cypress en cas d'échec
  • Variable SWIPE_CARD_SECRET ajoutée + ordre de démarrage du serveur Cypress corrigé

Corrections de bugs

  • Période : bug de précédence d'opérateur dans hasWarningStatus
  • Session : remplacement de new Session() par $this->addFlash() / $request->getSession()
  • Shift booking : utilisation de addFlash() pour les flash messages
  • Formation : __toString protégé contre un name null
  • Membership : suppression d'actions mortes (findUserHelp, findUser)
  • Templates : bugs détectés via les smoke tests
  • Keycloak : membres.yourcoop.local autorisé dans la config client elefan
  • Docker : remplacement du bind mount par un volume nommé pour la donnée MariaDB

Modernisation / Cleanup

  • Doctrine : remplacement du déprécié 'App:Entity' par Entity::class (sur l'ensemble des Controllers/Commands/Services)
  • Suppression d'imports Array_ inutilisés dans les services
  • .gitignore : nettoyage des règles Symfony 2/3 et doublons ; ignore des dossiers Cypress runtime (screenshots/videos/downloads)

Documentation

@chriskaya chriskaya requested review from PaulienM, njean42 and raphodn and removed request for PaulienM, njean42 and raphodn April 27, 2026 12:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant