test: verify screenshot seam alignment; release tile buffers

This commit is contained in:
Mathew Sir Guest the best
2026-07-07 23:23:17 -06:00
parent ab50a984a8
commit cafacee2b9
3 changed files with 102 additions and 14 deletions
+42
View File
@@ -66,3 +66,45 @@ class TestChromiumPath:
if c.args and str(c.args[0]).startswith("window.scrollTo")
]
assert len(scroll_calls) >= 2
def test_tall_page_stitches_tiles_bottom_aligned(self, tmp_path):
driver = MagicMock(name="driver")
driver.capabilities = {"browserName": "chrome"}
driver.execute_script.side_effect = lambda script: {
"return document.body.parentNode.scrollWidth": 100,
"return document.body.parentNode.scrollHeight": 150, # 3 tiles of 60
"return document.documentElement.clientWidth": 100,
"return window.innerHeight": 60,
}.get(script) # window.scrollTo(...) -> None
driver.get_screenshot_as_png.side_effect = [
png_bytes(100, 60, (255, 0, 0)), # tile @ y=0
png_bytes(100, 60, (0, 255, 0)), # tile @ y=60
png_bytes(100, 60, (0, 0, 255)), # tile @ y=120, clamped to paste_y=90
]
out = tmp_path / "shot.png"
assert save_full_page(driver, str(out)) is True
img = Image.open(out)
assert img.size == (100, 150)
assert img.getpixel((50, 30)) == (255, 0, 0) # first tile
assert img.getpixel((50, 75)) == (0, 255, 0) # second tile (rows 60-89)
assert img.getpixel((50, 140)) == (0, 0, 255) # third tile, bottom-aligned
def test_wide_page_clamps_last_column(self, tmp_path):
driver = MagicMock(name="driver")
driver.capabilities = {"browserName": "chrome"}
driver.execute_script.side_effect = lambda script: {
"return document.body.parentNode.scrollWidth": 150, # 2 columns of 100
"return document.body.parentNode.scrollHeight": 60,
"return document.documentElement.clientWidth": 100,
"return window.innerHeight": 60,
}.get(script)
driver.get_screenshot_as_png.side_effect = [
png_bytes(100, 60, (255, 0, 0)), # column @ x=0
png_bytes(100, 60, (0, 0, 255)), # column @ x=100, clamped to paste_x=50
]
out = tmp_path / "shot.png"
assert save_full_page(driver, str(out)) is True
img = Image.open(out)
assert img.size == (150, 60)
assert img.getpixel((25, 30)) == (255, 0, 0) # left column (cols 0-49)
assert img.getpixel((140, 30)) == (0, 0, 255) # right column, clamped (cols 50-149)