Repository navigation
fix: le bouton Rejouer avait disparu de Classique (hotfix 2.3.3) - #224
Merged
Merged
Conversation
Régression de la 2.3.2, causée par le correctif hidden lui-même. modeClassique.js ajoutait .hidden à .input-row dans ses trois fins de partie, et #resetButton — le bouton Rejouer — vit dans cette rangée. Tant que .hidden n'était défini nulle part globalement, ces lignes ne faisaient rien et personne ne les avait remarquées ; la règle globale de la 2.3.2 les a rendues vraies. Deux aggravations : rien ne retire jamais la classe, donc le joueur restait bloqué jusqu'au rechargement complet de la page ; et aucun des cinq autres modes ne masque sa rangée de saisie — Classique était le seul, par du code mort. Les trois lignes sont retirées, sans effet fonctionnel : le code neutralise déjà les contrôles juste au-dessus (textbar.disabled, pointer-events sur Valider, Give Up grisé). Les masquer en plus n'apportait rien et coûtait le Rejouer. La vérification de la 2.3.2 avait mesuré le rayon d'action page par page sur la production, mais sur des pages fraîchement chargées : l'état « partie terminée » n'est jamais atteint par un simple goto. Une règle CSS globale doit être éprouvée sur les états de l'application, pas seulement sur ses pages au chargement — d'où le nouveau test, qui joue une partie jusqu'au bout et vérifie que Rejouer est visible, réellement cliquable, et qu'un clic relance bien une partie.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Blocage de jeu en production, introduit par la 2.3.2. D'où un
hotfix/*versmainplutôt que le passage pardevelop(CLAUDE.md §4).Le symptôme
En Classique, gagné ou perdu, normal ou Expert : plus aucun moyen de relancer une partie sans recharger la page.
La cause — c'est le correctif
hiddende la 2.3.2modeClassique.jsajoutait.hiddenà.input-rowdans ses trois fins de partie. Or#resetButton— le bouton Rejouer — vit dans cette rangée.Tant que
.hiddenn'était défini nulle part globalement, ces lignes ne faisaient rien et personne ne les avait remarquées depuis des mois. La règle[hidden], .hidden { display: none !important }livrée en 2.3.2 les a rendues vraies.Deux aggravations :
Pourquoi la vérification de la 2.3.2 ne l'a pas vu
Le rayon d'action de la règle avait pourtant été mesuré page par page sur la production avant de l'écrire — mais sur des pages fraîchement chargées. L'état « partie terminée » n'est jamais atteint par un simple
goto: la régression était hors de portée de la mesure.C'est une lacune de méthode, pas de malchance. Une règle CSS globale doit être éprouvée sur les états de l'application, pas seulement sur ses pages au chargement — c'est exactement ce que le nouveau test fait.
Le correctif
Les trois lignes retirées. Sans effet fonctionnel : le code neutralise déjà les contrôles juste au-dessus (
textbar.disabled,pointer-events: nonesur Valider, Give Up grisé). Masquer la rangée en plus n'apportait rien et coûtait le Rejouer. Classique se comporte de nouveau comme les cinq autres modes.Vérifications
tests-e2e/classic_replay_button.spec.js— nouveau. Joue une partie jusqu'à l'abandon, puis vérifie que Rejouer est visible, réellement cliquable (elementFromPoint: un bouton « visible » peut être recouvert ou à zéro pixel), et qu'un clic relance bien une partie. Deux largeurs plus le parcours complet.CACHE_VERSIONv105 → v106.Hors périmètre, volontairement
prod_smoke.sh(la passe nocturne du serveur maison, posée aujourd'hui) a trouvé un débordement horizontal de 14 px sur la page profil à 390 px et 13 px à 480 px. Réel, antérieur, sans rapport — traité séparément pour que ce lot ne contienne que la régression.