c4aa90b0d1
- Votes cappés à VOTES_PER_WEEK (pas d'accumulation) pour valoriser les connexions régulières - Solde de votes affiché dans la liste (input inéditable) à la place du bandeau Alert, avec date de prochain rechargement - Compteur de votes par feature affiché comme input inéditable en fin de ligne (avant le bouton "+") - Animation FLIP JS (roadmap_flip.js) : seules les lignes qui changent de position sont animées après un vote - Renommage votes_credited_until → votes_last_credited_at (migration 0005) - Constantes du module utilisées dans les assertions de tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
23 lines
956 B
Python
23 lines
956 B
Python
import pytest
|
|
|
|
# Importer l'app complète à la collecte : sa découverte use_pages enregistre
|
|
# chaque page (et ses @callback) exactement une fois, en contexte propre. Un Dash
|
|
# minimal ad hoc suivi d'imports de pages dans les tests provoque un double
|
|
# enregistrement des @callback (Dash ré-exécute chaque page via exec_module
|
|
# pendant la découverte de src.app), d'où "Duplicate callback outputs" qui casse
|
|
# le rendu de toutes les pages dans la suite Selenium. En important src.app ici,
|
|
# la découverte tourne en premier et les imports ultérieurs de pages sont mis en
|
|
# cache. Voir aussi tests/subscriptions/conftest.py.
|
|
from src.app import app # noqa: F401, E402
|
|
|
|
|
|
@pytest.fixture
|
|
def users_db_path(monkeypatch, tmp_path):
|
|
from src.auth.db import reset_conn_for_tests
|
|
|
|
db_path = tmp_path / "users.test.sqlite"
|
|
monkeypatch.setenv("USERS_DB_PATH", str(db_path))
|
|
reset_conn_for_tests()
|
|
yield db_path
|
|
reset_conn_for_tests()
|