"""v7.69.3 — la section Aide doit être positionnée comme la section Settings. Auparavant `help.html` neutralisait l'overlay en inline (`position:static;background:none;backdrop-filter:none`) et forçait un panneau `1050px / 100vh-120px` : Aide s'affichait comme un bloc posé dans la page tandis que Settings était une modale centrée. Le même gabarit partagé (`.settings-overlay` / `.settings-panel`) produisait donc deux rendus. """ from pathlib import Path ROOT = Path(__file__).resolve().parents[1] SETTINGS = (ROOT / "app" / "templates" / "settings.html").read_text(encoding="utf-8") HELP = (ROOT / "app" / "templates" / "help.html").read_text(encoding="utf-8") def _opening_tag(src: str, css_class: str) -> str: """La balise d'ouverture qui porte cette classe, sans ses attributs.""" line = next(row for row in src.splitlines() if f'class="{css_class}"' in row) # coupe avant x-data ET avant n'importe quel handler @keydown(.escape) return line.split(" x-data=")[0].split(" @keydown")[0].strip() class TestHelpMatchesSettingsPositioning: def test_help_overlay_no_longer_disables_itself(self): # l'overlay d'Aide EST celui de Settings : aucune surcharge inline ne # peut subsister sur cette balise (le positionnement vient du CSS # partagé). On asserte sur la BALISE, pas sur le fichier entier — le # commentaire de tête du template mentionne ces valeurs à l'infinitif. assert _opening_tag(HELP, "settings-overlay") == '
même position absolue dans le panneau for src, name in ((HELP, "help"), (SETTINGS, "settings")): assert 'class="settings-close"' in src, name