"""Barre commune v0.4.1 (correctif fusion #125) — re-vendange 0.45.12. - JS vendangé VERBATIM depuis dracodev-commons, branche menu-compte-icones-svg-ns-v0-4-1 (PR commons #11), ui/barre-apps/. Le CSS est lui aussi verbatim : la source commons v0.4.1 y ajoute le resserrement du menu compte (min-width 248 → 232 px, demande de Bruno, @edde1b5). - Correctif : en v0.4.0, les icônes du menu compte étaient créées via document.createElement() — espace de noms HTML, jamais dessinées par le navigateur (libellés décalés d'un cran d'icône, aucun glyphe visible en production). La v0.4.1 crée le et ses primitives via document.createElementNS() (espace de noms SVG). """ import hashlib from pathlib import Path R = Path(__file__).resolve().parents[1] # Empreintes SHA-256 de la source commons # (Projets/dracodev-commons, ui/barre-apps/ ; branche du # correctif v0.4.1 @edde1b5 : JS espace de noms SVG, CSS # menu compte resserré à 232 px). SHA256_CSS_V041 = "874b26eafba5b3e174140280415edbae00cd38bc4beb39d897a4b4c5b923af6e" SHA256_JS_V041 = "82c4940e8e115ed71d95f7c0dcdc906b93e49855580cc0fec7a1ccba34f85a42" def _sha256(chemin): return hashlib.sha256((R / chemin).read_bytes()).hexdigest() def test_barre_css_js_verbatim_commons_v041(): assert _sha256("static/css/draco-barre.css") == SHA256_CSS_V041 assert _sha256("static/js/draco-barre.js") == SHA256_JS_V041 def test_js_icones_espace_de_noms_svg(): js = (R / "static/js/draco-barre.js").read_text(encoding="utf-8") assert "MENU_ICONES" in js # Le correctif : création dans l'espace de noms SVG… assert 'createElementNS(SVG_NS, "svg")' in js assert "createElementNS(SVG_NS, spec[0])" in js # …et plus aucune création HTML du svg ou des primitives. assert 'createElement("svg")' not in js assert "createElement(spec[0])" not in js # Comportements conservés. assert 'hub: "https://hub.dracodev.net/"' in js assert '"profil", "Profil"' in js assert 'data-compte-act", "deconnexion"' in js