Skip to content

fix(cv): messages de connexion/dossier exacts et accessibilité (BUG-01 à 06) - #35

Merged
iPoower merged 1 commit into
mainfrom
fix/recette-messages
Oct 29, 2026
Merged

iPoower merged 1 commit into
mainfrom
fix/recette-messages

Conversation

@iPoower

@iPoower iPoower commented Oct 29, 2026

Copy link
Copy Markdown
Owner

Objet

Corrige les 6 anomalies relevées par la recette Phase T (PR #34, brouillon), avec le plus petit changement possible dans src/. Aucun changement de cryptographie, de format, de stockage, de CSP, de service worker, de workflow ni de garde-fou CI.

Bug → test → résultat

Tests : tests/e2e/messages-exacts.spec.ts (suite e2e existante, toutes les projections Chromium/WebKit de playwright.config.ts).

Bug Correctif Test Avant (main 551f3d9) Après (ba98f84)
BUG-01 fenêtre Google fermée/bloquée error_callback → code popup ; message « Connexion Google annulée ou fenêtre bloquée : réessaie (autorise les fenêtres pour ce site). », état « En attente » BUG-01 fenêtre Google fermée ou bloquée : message exact, aucune « session expirée » ❌ reçu « Session Google expirée : reconnecte-toi pour reprendre. » ✅
BUG-02 autorisation Drive refusée access_denied ou portée drive.file absente → code scope ; message « L’accès au dossier Google Drive n’a pas été accordé… » BUG-02 autorisation Google Drive refusée : l’accès non accordé est expliqué ❌ reçu « Session Google expirée… » ✅
BUG-03 sélecteur annulé cancelled du Picker → « Aucun dossier choisi. », état neutre BUG-03 sélecteur Google annulé : état neutre « Aucun dossier choisi » ❌ reçu « Opération non confirmée… » / « Erreur — action nécessaire » ✅
BUG-04 démo sur l’origine de production Origine où Google Drive est configuré : seules la route et la navigation Google Drive existent (autres routes redirigées vers #/drive, recherche rapide et raccourcis désactivés) ; premier rendu après lecture de drive-config.json BUG-04 origine de production : aucun état ni sauvegarde de démonstration ❌ Accueil de démonstration affiché (« Connexion vérifiée »), pas d’écran Google Drive ✅
BUG-05 « Restaurer cette version » aria-describedby vers un texte visible « Coche cette confirmation pour activer… » (ou « Cette version est identique… ») BUG-05 « Restaurer cette version » désactivé : condition décrite par un texte visible ❌ aria-describedby absent ✅
BUG-06 « Annuler » désactivé Bouton retiré à l’étape de contrôle, comme l’annonçait le commentaire du code BUG-06 sauvegarde : « Annuler » n’est jamais laissé désactivé sans explication ❌ désactivé sans explication observé ✅

Test existant adapté : connected-drive.spec.ts ouvrait Réglages puis cliquait le lien vers Google Drive ; sur l’origine connectée, Réglages redirige désormais vers #/drive (le test le vérifie).

Preuves locales (Chromium ; WebKit absent de l’environnement local)

  • Sur origin/main + nouveau test : 6/6 échecs, chacun pour la raison attendue (voir tableau).
  • Sur cette branche : npm test 376/376 ✅, npm run typecheck ✅, npm run build + npm run security ✅, npm run test:e2e 93 réussis, 7 ignorés (ignorés par conception : clavier bureau / mobile uniquement), 0 échec.
  • WebKit : preuve attendue de la CI (« Vérification complète »).

Impact et risques

  • Changement sensible (OAuth / écrans affichés en production) : revue humaine obligatoire, ne pas fusionner automatiquement.
  • google-drive-session.js : seuls les codes d’erreur de rejet changent (popup, scope) ; jeton, portée, stockage et flux inchangés.
  • Production isolée : les écrans de démonstration n’y sont plus affichés. GitHub Pages (démo sans configuration Google) et les builds de test sont inchangés. Aucun impact Race Control / origine partagée (pas de stockage, cache ni SW touché).
  • Risque résiduel : si drive-config.json est injoignable (hors ligne au premier chargement sur la production), l’origine se comporte comme une démo explicitement signalée (bandeau « Démonstration »).
  • Premier rendu attendu après la lecture de la configuration (délai de 10 s maximum en cas de réseau lent, déjà présent dans GoogleDriveSession.load).

Retour arrière

Revert du commit ba98f84 (code seul ; aucune donnée ni migration).


Generated by Claude Code

…1 à 06)

Corrige les anomalies relevées par la recette Phase T (PR #34), sans toucher
à la cryptographie, au format, au stockage, à la CSP ni au service worker :

- BUG-01 : fenêtre Google fermée/bloquée (error_callback) → code « popup »,
  message « Connexion Google annulée ou fenêtre bloquée… », état neutre ;
- BUG-02 : autorisation Drive refusée ou décochée → code « scope », message
  expliquant que l'accès n'a pas été accordé ; plus jamais « session
  expirée » ni « synchronisation bloquée » sans session préalable ;
- BUG-03 : sélecteur annulé → « Aucun dossier choisi. », pas d'erreur ;
- BUG-04 : sur l'origine où Google Drive est configuré, seuls l'écran Google
  Drive et sa navigation sont affichés (autres routes redirigées, recherche
  rapide et raccourcis désactivés) ; premier rendu après lecture de la
  configuration pour ne jamais montrer d'état de démonstration ;
- BUG-05 : « Restaurer cette version » décrit par un texte visible
  (aria-describedby) tant qu'il est désactivé ;
- BUG-06 : « Annuler » retiré à l'étape de contrôle, comme le commentaire
  l'annonçait, au lieu d'être laissé désactivé sans explication.

Tests : tests/e2e/messages-exacts.spec.ts (rouges sur main, verts ici) ;
connected-drive.spec.ts suit la redirection de Réglages vers Google Drive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E5jwZntqAvJaRThsuEjgja
@iPoower
iPoower merged commit f737bb1 into main Oct 29, 2026
12 of 13 checks passed
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.

2 participants