diff --git a/frontend/recherche.html b/frontend/recherche.html index 9a6944b..ba9c40d 100644 --- a/frontend/recherche.html +++ b/frontend/recherche.html @@ -25,22 +25,6 @@ comportements de la SPA et ne sont pas rejoués ici. Sidebar statique (navigation de l'app) : les vaults, tags et récents dynamiques vivent dans la SPA, pas sur cette page. --> - Thème (défaut 4) : le thème ObsiGate n'est PAS une préférence - serveur — il vit dans localStorage, lu par la SPA au démarrage - (frontend/js/ui.js initTheme : mode ; frontend/js/sync.js - init() -> themes.js initThemes : clé + mode). Étape 1 ci-dessous - (script synchrone en tête, avant les feuilles) : pose - data-theme = mode persisté (obsigate-theme-mode, repli - obsigate-theme historique quand il valait déjà un mode, sinon - 'dark', le défaut SPA) pour que la première peinture soit déjà - dans le bon mode clair/sombre. Étape 2 en fin de page (module - différé) : initThemes() de themes.js applique la palette - complète — 16 thèmes intégrés, modes high-contrast/sepia - générés, thèmes personnalisés — via variables inline sur :root, - exactement comme la SPA. data-theme="dark" sur n'est - plus que le repli sans JS. Aucun endpoint serveur, aucune - police externe ajoutée (la CSP stricte de /recherche et le - repli typographique système sont inchangés). ", "", sans_commentaires, flags=re.DOTALL + ) + sans_titre = re.sub( + r".*?", "", sans_scripts, flags=re.DOTALL + ) + texte = re.sub(r"<[^>]+>", "", sans_titre).strip() + assert texte == "", f"texte brut rendu dans : {texte[:200]!r}" + + +def test_mecanisme_theme_intact(): + """Le retrait du texte ne touche ni l'étape 1 (script synchrone + avant les feuilles) ni l'étape 2 (initThemes différé).""" + html = _html() + assert html.index("' in html