"""Tests Sprint 25 — refactor web frontend miroir du Sprint 17.
Sprint 17 a découpé le rapport HTML monolithique en 10 fichiers Jinja2.
Sprint 25 fait pareil pour la SPA web : l'ancien ``_HTML_TEMPLATE`` de
~1500 lignes string Python (3000+ lignes au total avec le JS) dans
``picarones/web/app.py`` est remplacé par :
picarones/web/templates/
├── base.html.j2
├── _ascii_banner.html
├── _header_nav.html
├── _view_benchmark.html
├── _view_reports.html
├── _view_engines.html
├── _view_import.html
└── _modals.html
picarones/web/static/
├── retro.css (existait déjà)
└── web-app.js (extrait du `` inline avec du code dans la page
rendue — uniquement des `` inline avec du code
# ---------------------------------------------------------------------------
class TestNoInlineScriptCode:
"""Sprint 25 a extrait tout le JS dans /static/web-app.js. La page
rendue ne doit plus contenir un bloc ```` qui
embarque du code (les ```` restent
autorisés)."""
def test_no_large_inline_script_block(self):
from picarones.interfaces.web._legacy.routers.home import render_index as _render_index
html = _render_index("fr")
# Capture tout le contenu entre .
pattern = re.compile(
r"",
re.DOTALL,
)
for body in pattern.findall(html):
# Quelques bytes blancs sont tolérés (ex. )
stripped = body.strip()
assert len(stripped) < 200, (
"Un bloc