Test non-regression : aucun texte brut rendu dans le head de /recherche
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
"""Tests — page /recherche sans texte parasite dans <head>.
|
||||
|
||||
Régression du texte de chantier resté hors commentaire dans
|
||||
``frontend/recherche.html`` : le commentaire de tête se fermait, puis
|
||||
un paragraphe de description du mécanisme de thème suivait en texte
|
||||
brut dans ``<head>`` — le navigateur le rendait tout en haut de la
|
||||
page, au-dessus de la barre header. Le correctif supprime ce texte
|
||||
du rendu (il n'est pas remis en commentaire : un grep doit donner
|
||||
0 occurrence dans les gabarits) sans toucher au mécanisme lui-même,
|
||||
déjà documenté par les commentaires des scripts étape 1 / étape 2.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
FRONTEND = ROOT / "frontend"
|
||||
|
||||
|
||||
def _html() -> str:
|
||||
return (FRONTEND / "recherche.html").read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def test_pas_de_texte_brut_dans_head():
|
||||
"""Entre les balises et les scripts, <head> ne contient aucun
|
||||
texte rendu : tout descriptif vit dans un commentaire ou dans un
|
||||
commentaire de script, jamais en texte brut."""
|
||||
head = _html().split("</head>")[0]
|
||||
sans_commentaires = re.sub(r"<!--.*?-->", "", head, flags=re.DOTALL)
|
||||
sans_scripts = re.sub(
|
||||
r"<script.*?</script>", "", sans_commentaires, flags=re.DOTALL
|
||||
)
|
||||
sans_titre = re.sub(
|
||||
r"<title>.*?</title>", "", sans_scripts, flags=re.DOTALL
|
||||
)
|
||||
texte = re.sub(r"<[^>]+>", "", sans_titre).strip()
|
||||
assert texte == "", f"texte brut rendu dans <head> : {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("<script>") < html.index('<link rel="stylesheet"')
|
||||
assert "obsigate-theme-mode" in html
|
||||
assert "import('/static/js/themes.js')" in html
|
||||
assert "initThemes" in html
|
||||
assert '<html lang="fr" data-theme="dark">' in html
|
||||
assert '<script src="/static/js/recherche.js"></script>' in html
|
||||
Reference in New Issue
Block a user