diff --git a/screens/rendering/render_overlay.py b/screens/rendering/render_overlay.py index f2ff251e..c573921f 100644 --- a/screens/rendering/render_overlay.py +++ b/screens/rendering/render_overlay.py @@ -60,7 +60,18 @@ def _render_overlay(el, meta, slug, children_map=None, ctx=None, parent_flex_dir # bord à bord peu lisible comme dialogue — 560px reste une largeur # de boîte de dialogue confortable, tout en retombant sur 90% sur un # écran de jeu étroit (mobile/portrait) pour ne jamais déborder. - "padding:24px; width:100%; max-width:min(560px, 90%); max-height:90%; overflow:auto; box-sizing:border-box;" + # color:#e8eaf0 : la classe Bulma ".box" (ajoutée ci-dessous) impose + # elle-même une couleur de texte SOMBRE (pensée pour un fond blanc + # par défaut) — comme aucun widget ne fige de couleur de texte à sa + # création (default_style_for_widget.py), un titre/texte posé dans + # la boîte SANS couleur personnalisée héritait de ce gris sombre + # imposé par Bulma, invisible sur le fond sombre par défaut de cette + # boîte de dialogue (texte "présent mais invisible", pas de bug côté + # utilisateur). On redonne donc ici une couleur claire par défaut, + # que Bulma ne peut plus écraser (élément le plus proche gagne) — + # un texte/titre qui personnalise sa propre couleur reste bien sûr + # prioritaire sur celle-ci. + "color:#e8eaf0; padding:24px; width:100%; max-width:min(560px, 90%); max-height:90%; overflow:auto; box-sizing:border-box;" ) child_html = _render_children(el, slug, children_map, ctx) return ( diff --git a/tests/test_confort.py b/tests/test_confort.py index d62894bc..3b657b4e 100644 --- a/tests/test_confort.py +++ b/tests/test_confort.py @@ -181,6 +181,28 @@ def test_overlay_widget_renders_fullscreen_fixed_box(client, game): assert "forgeOverlayBox" in snippet +def test_overlay_box_default_text_color_survives_the_bulma_box_class(client, game): + """Régression : la classe Bulma ".box" (voir render_overlay.py) impose + elle-même une couleur de texte SOMBRE, pensée pour un fond blanc. Un + texte posé dans la boîte SANS couleur personnalisée (le cas par défaut + — aucun widget ne fige de couleur à sa création, voir + default_style_for_widget.py) héritait donc de ce gris sombre, invisible + sur le fond sombre par défaut de la boîte — "j'ai mis un texte dedans + mais il ne se voit pas", sans la moindre erreur serveur. La boîte doit + donc fixer elle-même une couleur de texte claire par défaut, que Bulma + ne peut plus écraser (élément le plus proche gagne).""" + screen_id = _create_screen(client, game) + overlay_id = _add_element(client, game, screen_id, "superposition") + client.post(f"/game/{game}/elements/{overlay_id}/children/add", data={"widget": "texte"}) + + resp = client.get(f"/game/{game}/play") + html = resp.data.decode() + idx = html.find("forgeOverlayBox") + assert idx != -1 + box_tag = html[html.rfind("