Skip to content

Commit 4d4d867

Browse files
Replace verify_canvas_matches_reference with enhanced capture_and_verify_baseline in Playwright tests; refactor to support optional timeout handling and remove redundant method.
1 parent acb428a commit 4d4d867

2 files changed

Lines changed: 14 additions & 34 deletions

File tree

tests/acceptance/test_tracks_add_and_display.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
load_main_page,
1515
reset_date_filter,
1616
setup_tracks_display,
17-
verify_canvas_matches_reference,
1817
verify_filter_active,
1918
verify_filter_inactive,
2019
verify_filter_range_label_cleared,
@@ -78,9 +77,9 @@ def test_add_tracks_and_display_all(
7877
wait_for_canvas_change(page, canvas, canvas_before_tracks)
7978

8079
# Capture and compare with reference image
81-
verify_canvas_matches_reference(
82-
canvas, acceptance_test_data_folder, ALL_TRACKS_FILE_NAME
83-
)
80+
actual_path = acceptance_test_data_folder / "new_file.png"
81+
reference_path = acceptance_test_data_folder / ALL_TRACKS_FILE_NAME
82+
capture_and_verify_baseline(canvas, actual_path, reference_path)
8483

8584

8685
@pytest.mark.skip(reason="only works in headed right now")
@@ -126,7 +125,7 @@ def test_filter_tracks_by_date(
126125
# Capture baseline and verify against reference
127126
reference_screenshot = acceptance_test_data_folder / ALL_TRACKS_FILE_NAME
128127
canvas_with_all_tracks = capture_and_verify_baseline(
129-
page, canvas, actual_screenshot_path, reference_screenshot
128+
canvas, actual_screenshot_path, reference_screenshot, page
130129
)
131130

132131
# Apply date filter
@@ -140,9 +139,9 @@ def test_filter_tracks_by_date(
140139
wait_for_canvas_change(page, canvas, canvas_with_all_tracks)
141140

142141
# Capture and compare with reference image
143-
verify_canvas_matches_reference(
144-
canvas, acceptance_test_data_folder, FILTERED_TRACKS_FILE_NAME
145-
)
142+
filtered_actual_path = acceptance_test_data_folder / "new_filtered_file.png"
143+
filtered_reference_path = acceptance_test_data_folder / FILTERED_TRACKS_FILE_NAME
144+
capture_and_verify_baseline(canvas, filtered_actual_path, filtered_reference_path)
146145

147146

148147
@pytest.mark.skip(reason="only works in headed right now")
@@ -170,9 +169,9 @@ def test_toggle_intersection_layers(
170169
page.wait_for_timeout(PLAYWRIGHT_VISIBLE_TIMEOUT_MS)
171170

172171
# Capture screenshot and verify against reference
173-
verify_canvas_matches_reference(
174-
canvas, acceptance_test_data_folder, ALL_TRACKS_FILE_NAME
175-
)
172+
actual_path = acceptance_test_data_folder / "new_file.png"
173+
reference_path = acceptance_test_data_folder / ALL_TRACKS_FILE_NAME
174+
capture_and_verify_baseline(canvas, actual_path, reference_path)
176175

177176

178177
@pytest.mark.skip(reason="only works in headed right now")

tests/utils/playwright_helpers.py

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,20 +1081,20 @@ def _verify_screenshot_against_reference(
10811081

10821082

10831083
def capture_and_verify_baseline(
1084-
page: Page,
10851084
canvas: Any,
10861085
actual_screenshot_path: Path,
10871086
reference_screenshot: Path,
1087+
page: Page | None = None,
10881088
*,
10891089
timeout_ms: int = PLAYWRIGHT_VISIBLE_TIMEOUT_MS,
10901090
) -> bytes:
10911091
"""Capture canvas screenshot and verify against reference baseline.
10921092
10931093
Args:
1094-
page: Playwright page object
10951094
canvas: Canvas locator
10961095
actual_screenshot_path: Path to save actual screenshot
10971096
reference_screenshot: Path to reference screenshot file
1097+
page: Optional Playwright page object for timeout
10981098
timeout_ms: Timeout in milliseconds to wait before taking screenshot
10991099
11001100
Returns:
@@ -1104,7 +1104,8 @@ def capture_and_verify_baseline(
11041104
pytest.skip: If reference screenshot doesn't exist
11051105
AssertionError: If screenshots don't match within tolerance
11061106
"""
1107-
page.wait_for_timeout(timeout_ms)
1107+
if page and timeout_ms:
1108+
page.wait_for_timeout(timeout_ms)
11081109
canvas_screenshot = canvas.screenshot(path=actual_screenshot_path)
11091110
_verify_screenshot_against_reference(actual_screenshot_path, reference_screenshot)
11101111
return canvas_screenshot
@@ -1116,26 +1117,6 @@ def verify_filter_range_label_visible(page: Page) -> None:
11161117
range_label.wait_for(state="visible", timeout=PLAYWRIGHT_QUICK_VISIBLE_TIMEOUT_MS)
11171118

11181119

1119-
def verify_canvas_matches_reference(
1120-
canvas: Any, acceptance_test_data_folder: Path, all_tracks_filename: str
1121-
) -> None:
1122-
"""Take screenshot and verify it matches the expected baseline.
1123-
1124-
Args:
1125-
canvas: Canvas locator
1126-
acceptance_test_data_folder: Path to folder with test data
1127-
all_tracks_filename: Name of reference screenshot file
1128-
1129-
Raises:
1130-
pytest.skip: If reference screenshot doesn't exist
1131-
AssertionError: If screenshots don't match within tolerance
1132-
"""
1133-
actual_path = acceptance_test_data_folder / "new_file.png"
1134-
reference_path = acceptance_test_data_folder / all_tracks_filename
1135-
canvas.screenshot(path=actual_path)
1136-
_verify_screenshot_against_reference(actual_path, reference_path)
1137-
1138-
11391120
def reset_date_filter(page: Page) -> None:
11401121
"""Reset the date filter by clicking Reset button and unchecking checkbox."""
11411122

0 commit comments

Comments
 (0)