From acb8500dc0dece7a13536e093e79848201dc72fd Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Wed, 18 Mar 2026 15:02:27 +0100 Subject: [PATCH] =?UTF-8?q?Test=20e2e=20:=20recherche=20=E2=86=92=20observ?= =?UTF-8?q?atoire=20#65?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- tests/test_main.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/test_main.py b/tests/test_main.py index 6cd2903..6809636 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -179,3 +179,38 @@ def test_007_observatoire_share_url(dash_duo: DashComposite): assert "acheteur_id=a1" in share_url_value, ( f"Share URL should contain acheteur_id param, got: {share_url_value}" ) + + +def test_008_search_to_observatoire(dash_duo: DashComposite): + from src.app import app + + dash_duo.start_server(app) + dash_duo.wait_for_text_to_equal(".logo > h1", "decp.info", timeout=4) + + # Search for an acheteur + search_bar = dash_duo.find_element("#search") + search_bar.send_keys("ACHETEUR 1") + search_bar.send_keys(Keys.ENTER) + + dash_duo.wait_for_element("#results_acheteur_datatable", timeout=2) + + # Find the observatoire link in acheteur_nom column + observatoire_link = dash_duo.find_element( + '#results_acheteur_datatable td[data-dash-column="acheteur_nom"] a[href*="observatoire"]' + ) + assert "📊" in observatoire_link.text + + # Click the observatoire link + observatoire_link.click() + + # Wait for observatoire page to load + dash_duo.wait_for_element("#dashboard_acheteur_id", timeout=4) + + import time + + time.sleep(1) # Allow callback chain to complete + + acheteur_input = dash_duo.find_element("#dashboard_acheteur_id") + assert acheteur_input.get_attribute("value") == "a1", ( + "acheteur_id input should be populated after navigating from search" + )