From f593d3c63dec9ecdf4b3b2c528d155329063e159 Mon Sep 17 00:00:00 2001 From: lorenzozanee Date: Sun, 20 Sep 2026 09:03:00 +0800 Subject: [PATCH] test: cover graph PDF output at large point counts --- .../integration/graph/test_graph_print.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 components/dash-core-components/tests/integration/graph/test_graph_print.py diff --git a/components/dash-core-components/tests/integration/graph/test_graph_print.py b/components/dash-core-components/tests/integration/graph/test_graph_print.py new file mode 100644 index 0000000000..1e955b1b57 --- /dev/null +++ b/components/dash-core-components/tests/integration/graph/test_graph_print.py @@ -0,0 +1,36 @@ +import base64 + +import pytest + +from dash import Dash, dcc + + +@pytest.mark.parametrize("point_count", [1000, 1001]) +def test_grpr001_graph_survives_print(point_count, dash_dcc): + app = Dash(__name__) + points = list(range(point_count)) + app.layout = dcc.Graph( + id="graph", + figure={ + "data": [{"type": "scatter", "mode": "lines", "x": points, "y": points}], + "layout": {"width": 600, "height": 400}, + }, + ) + + dash_dcc.start_server(app) + dash_dcc.wait_for_element("#graph .main-svg") + + driver = dash_dcc.driver + if not hasattr(driver, "execute_cdp_cmd"): + pytest.skip("print-to-PDF regression requires Chrome DevTools Protocol") + + driver.execute_cdp_cmd("Emulation.setEmulatedMedia", {"media": "print"}) + pdf = driver.execute_cdp_cmd( + "Page.printToPDF", {"printBackground": True, "preferCSSPageSize": True} + ) + + pdf_bytes = base64.b64decode(pdf["data"]) + assert pdf_bytes.startswith(b"%PDF") + assert len(pdf_bytes) > 1000 + assert dash_dcc.find_element("#graph .scatterlayer .trace path").is_displayed() + assert dash_dcc.get_logs() == []