Corrige le texte invisible dans la boîte de dialogue (régression du style Bulma)
Régression du commit précédent (d87d6ad, classes Bulma sur la
superposition) : la classe ".box" impose elle-même une couleur de texte
SOMBRE (pensée pour un fond blanc). 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. Ni erreur serveur ni régression de test visible : juste un
texte "présent mais invisible", exactement ce qui a été rapporté ("j'ai
mis un texte dedans mais il ne se voit pas").
Correctif : la boîte fixe elle-même une couleur de texte claire par
défaut (color:#e8eaf0) dans son propre style inline — l'élément le plus
proche gagne, donc ça écrase la couleur imposée par la classe Bulma, tout
en restant surchargeable : un titre/texte qui personnalise sa propre
couleur (réglage "Couleur du texte") continue de l'emporter normalement.
Nouveau test de régression, confirmé en échec sur le commit précédent
(même style Bulma, pas encore cette couleur) puis au vert avec le
correctif. 138 tests au vert au total. Jeu de démo régénéré.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
d87d6addce
commit
69bafcb5c5
@@ -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 (
|
||||
|
||||
@@ -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("<div", 0, idx):idx + 200]
|
||||
assert "color:#e8eaf0" in box_tag
|
||||
|
||||
|
||||
def test_overlay_wrapper_does_not_trap_its_own_z_index(client, game):
|
||||
"""Régression : le cadre .playElement/.canvasElement partagé par TOUS
|
||||
les widgets (voir filters/element_style_filter.py) posait quand même
|
||||
|
||||
Reference in New Issue
Block a user