feat: charte graphique des boutons (primary/secondary/danger)

Override CSS scopé aux classes .btn-* (jamais les variables --bs-* racine,
donc alertes/badges inchangés) pour remplacer les couleurs dérivées du thème
Simplex (danger mauve, secondary gris illisible). Trois rôles : la couleur
encode la fonction, le remplissage l'emphase.

- primary terracotta : action principale validante
- secondary gris ardoise : action neutre/alternative (lisible)
- danger rouge #c0392b : destructif (outline par défaut, plein en confirmation)

Audit + conformation des usages :
- compte_admin « Supprimer mon compte » : primary outline -> danger outline
- compte_abonnement « Me désabonner » : outline-primary -> outline-danger
- compte_abonnement « Je suis sûr » : outline-primary -> danger plein

Tests : ajout tests/test_boutons.py (garde de non-régression du primary).
conftest : implémente le hook pytest_setup_options (--headless=new) ; la
fixture chrome_options n'était jamais utilisée par dash.testing, d'où les
fenêtres Chrome qui s'ouvraient pendant les tests.

Specs et plan : docs/superpowers/{specs,plans}/2026-06-30-charte-boutons*.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-06-30 13:21:24 +02:00
parent d436fd4d9e
commit 0cfafedeef
7 changed files with 567 additions and 25 deletions
+12 -12
View File
@@ -74,17 +74,17 @@ def test_data():
_cleanup_db_artifacts()
@pytest.fixture(scope="session")
def chrome_options():
def pytest_setup_options():
"""Options Chrome pour les tests d'intégration Selenium.
dash.testing n'utilise PAS une fixture `chrome_options` (contrairement à
pytest-selenium) : il appelle ce hook `pytest_setup_options`. C'est donc le
seul point d'entrée qui a réellement un effet. On force `--headless=new`
pour qu'aucune fenêtre Chrome ne s'ouvre pendant les tests. Le dossier de
téléchargement, `--no-sandbox`, `--disable-gpu` et `--disable-dev-shm-usage`
sont déjà gérés par dash.testing.browser.
"""
options = Options()
options.add_argument("--window-size=1200,1200 ")
options.add_experimental_option(
"prefs",
{
"download.default_directory": "/home/colin/git/decp.info",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True,
},
)
options.add_argument("--headless=new")
options.add_argument("--window-size=1200,1200")
return options