test(e2e): parcours admin Playwright + fix cookie Secure conditionnel (ADR-0010) #46

Merged
Corentin merged 2 commits from test/playwright-admin into dev 2026-06-17 17:07:36 +02:00

2 commits

Author SHA1 Message Date
Imugiii
ffd2d6b2b6 test(e2e): parcours admin Playwright (garde -> login -> dashboard -> logout)
All checks were successful
CI / php-lint (pull_request) Successful in 23s
CI / js-tests (pull_request) Successful in 22s
CI / auto-merge (pull_request) Successful in 4s
CI / secret-scan (pull_request) Successful in 8s
CI / static-tests (pull_request) Successful in 1m17s
Etape 2 de l'E2E. Verifie : la garde de session redirige vers /login, la connexion
(admin@wakdo.local, mdp dev seede, jeton CSRF) atteint role.default_route
(/admin/dashboard), la deconnexion ramene au login. URLs absolues sur admin.wakdo.test.
L'admin seede n'a pas de PIN -> pas d'action sensible testee ici.

Tourne avec le parcours borne via tests/e2e/run.sh (2 tests verts).
2026-06-17 15:05:40 +00:00
Imugiii
e5aba9599e fix(auth): cookie de session Secure conditionnel au HTTPS (ADR-0010)
`secure => true` etait en dur : un cookie Secure n'etant renvoye qu'en HTTPS, la
session ne tenait pas en HTTP (dev / standalone local / E2E) et le login admin
echouait ("Session expiree" -> CSRF KO). Revele par le parcours E2E admin.

SessionManager::cookieSecure() derive le flag du schema : X-Forwarded-Proto=https
(pose par Traefik en prod, fiable car l'app n'est joignable que par le proxy sur le
reseau interne), sinon var HTTPS, sinon port 443. Applique a la pose ET a l'expiration
du cookie. Prod inchange (toujours HTTPS -> Secure). httponly + SameSite=Strict
restent inconditionnels. Detail : docs/adr/0010.

Verifie : PHPStan L6 OK, 263 tests unit OK, E2E admin (login/garde/logout) vert.
2026-06-17 15:05:40 +00:00