From 341dd8468605d68bdad142451a1f2de6fcdce216 Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Mon, 13 Jul 2026 11:32:44 +0200 Subject: [PATCH] =?UTF-8?q?test(acheteur):=20couverture=20E2E=20du=20d?= =?UTF-8?q?=C3=A9filement=20horizontal=20AG=20Grid=20(#41)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_tableau_hscroll.py | 50 +++++++++++++++-------------------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/tests/test_tableau_hscroll.py b/tests/test_tableau_hscroll.py index c53fff1..95db797 100644 --- a/tests/test_tableau_hscroll.py +++ b/tests/test_tableau_hscroll.py @@ -1,36 +1,28 @@ -import pytest from dash.testing.composite import DashComposite -@pytest.mark.skip( - reason=( - "Plus de dash_table.DataTable disponible pour ce test depuis la migration " - "AG Grid des fiches acheteur/titulaire (#41, entity_grid.py) : /acheteurs " - "et /titulaires rendent désormais tous deux une grille AG Grid (qui gère " - "son propre défilement horizontal nativement, cf. " - "test_figures.py::test_ag_grid_always_shows_horizontal_scroll), donc " - ".marches_table + table_hscroll.js n'y existent plus. Le seul repli " - "restant, observatoire.py (Lot 2b, hors périmètre de #41), a un bug " - "préexistant et sans rapport (get_considerations_card_content lève un " - "ValueError sur ce jeu de données — src/figures.py, unpack 2-tuple/" - "3-tuple dans compute_considerations_stats) qui empêche actuellement le " - ".marches_table de cette page de se rendre en Selenium. À réactiver sur " - "observatoire.py une fois ce bug corrigé séparément, ou à retirer si " - "cette couverture E2E est jugée obsolète." - ) -) -def test_marches_table_hscroll_bar_present(dash_duo: DashComposite): - """La barre de défilement est injectée et le conteneur scroll horizontalement.""" +def test_acheteur_ag_grid_horizontal_scroll_present(dash_duo: DashComposite): + """La grille AG Grid de la fiche acheteur affiche son propre défilement + horizontal natif (alwaysShowHorizontalScroll=True, cf. ag_grid() dans + src/figures.py), avec le jeu complet de colonnes DECP. Remplace l'ancien + test basé sur dash_table.DataTable + table_hscroll.js, disparu de + /acheteurs et /titulaires depuis la migration AG Grid (#41, + src/utils/entity_grid.py).""" from src.app import app dash_duo.start_server(app) - dash_duo.wait_for_page(f"{dash_duo.server_url}/observatoire?acheteur_id=123") - dash_duo.wait_for_element(".marches_table", timeout=20) - # Barre injectée par table_hscroll.js - dash_duo.wait_for_element(".marches_table .dt-hscroll", timeout=10) - dash_duo.wait_for_element(".marches_table .dt-hscroll-thumb", timeout=5) + dash_duo.wait_for_page(f"{dash_duo.server_url}/acheteurs/123") - # Le conteneur Dash doit avoir overflow-x:hidden (scroll contenu, pas de scrollbar page) - container = dash_duo.find_element(".marches_table .dash-spreadsheet-container") - overflow = container.value_of_css_property("overflow-x") - assert overflow == "hidden" + # Attendre que la grille AG Grid soit montée puis ait rendu des lignes. + dash_duo.wait_for_element("#acheteur-grid-container .ag-root", timeout=20) + dash_duo.wait_for_element( + "#acheteur-grid-container .ag-center-cols-container .ag-row", timeout=10 + ) + + # Le viewport de défilement horizontal natif d'AG Grid doit être présent + # (scopé au conteneur de la fiche acheteur pour ne pas matcher une autre + # grille éventuellement présente sur la page, ex. top 10). + dash_duo.wait_for_element( + "#acheteur-grid-container div.ag-body-horizontal-scroll-viewport", + timeout=10, + )