Konfigurationsbereich auffindbar machen
Der Bereich war sichtbar, wurde aber übersehen: ein 12-Pixel-Knopf, der an der Überschrift klebte, während "Handel pausieren" und "Training starten" jeweils in einer eigenen Box mit normalgroßem Knopf sitzen. 71x26 px gegenüber 90x58 und 79x58 - das liest sich nicht als Bedienelement. Der Bereich sieht jetzt aus wie die beiden anderen: eigene Panel-Box, Knopf "Konfiguration bearbeiten" in gleicher Größe (114x58 px, 14px Schrift), daneben eine Zeile, die sagt, was dahintersteckt. Geöffnet heißt der Knopf "Konfiguration schließen". Zwei neue Tests halten die drei Haupt-Bedienelemente auf gleicher Linie: keine Inline-Styles, die Schrift oder Polsterung verkleinern, und jeder Knopf muss in einer Panel-Box stehen statt in einer Überschrift. 233 Tests (6 neue), ruff sauber. Im Browser durchgespielt: öffnen, 76 Felder, risk.cooldown_bars_after_exit geändert und sofort wirksam, schließen.
This commit is contained in:
@@ -145,6 +145,38 @@ def test_hidden_sections_are_unhidden_by_the_status_loop(section_id: str):
|
||||
)
|
||||
|
||||
|
||||
PRIMARY_BUTTONS = ["trade-btn", "train-btn", "cfg-toggle"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("button_id", PRIMARY_BUTTONS)
|
||||
def test_primary_buttons_are_not_shrunk_by_inline_styles(button_id: str):
|
||||
"""Die Haupt-Bedienelemente sollen gleich aussehen.
|
||||
|
||||
Der Konfigurationsknopf war einmal ein 12-Pixel-Anhängsel an einer Überschrift und
|
||||
wurde schlicht übersehen. Inline-Styles, die Schrift oder Polsterung verkleinern,
|
||||
gehören hier nicht hin.
|
||||
"""
|
||||
match = re.search(rf'<button id="{button_id}"([^>]*)>', _DASHBOARD)
|
||||
assert match is not None, f"Knopf #{button_id} fehlt"
|
||||
attributes = match.group(1)
|
||||
for verboten in ("font-size", "padding"):
|
||||
assert verboten not in attributes, (
|
||||
f"#{button_id} verkleinert sich per Inline-Style ({verboten}) gegenüber den anderen"
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("button_id", PRIMARY_BUTTONS)
|
||||
def test_primary_buttons_sit_inside_a_panel(button_id: str):
|
||||
"""Ein Knopf direkt in der Überschrift liest sich nicht als Bedienelement."""
|
||||
match = re.search(rf'<button id="{button_id}"[^>]*>', _DASHBOARD)
|
||||
before = _DASHBOARD[: match.start()]
|
||||
letzte_ueberschrift = before.rfind("<h2>")
|
||||
letztes_panel = before.rfind('class="panel"')
|
||||
assert letztes_panel > letzte_ueberschrift, (
|
||||
f"#{button_id} steht in einer Überschrift statt in einer Panel-Box"
|
||||
)
|
||||
|
||||
|
||||
def test_render_functions_are_called_by_the_status_loop():
|
||||
body = function_body(script_body(), "refresh")
|
||||
for name in ("renderTrading", "renderTraining"):
|
||||
|
||||
Reference in New Issue
Block a user