screenshot: add an option to not retake existing screenshots

This commit is contained in:
Corentin Sechet 2022-04-13 10:51:45 +02:00
parent 334915496a
commit 424d520c2b
2 changed files with 18 additions and 7 deletions

View File

@ -102,6 +102,7 @@ def prune_caches(cache_names: list[str]) -> None:
@argument("source", type=str)
@option("-o", "--output-directory", type=PathArgument(), default=None)
@option("-w", "--screen-width", type=int, default=None)
@option("-c", "--continue", "continue_", type=bool, help="Don't reshot already existing screenshots", count=True)
@_async_command
@pass_obj
async def screenshot_diff_cli(
@ -109,9 +110,10 @@ async def screenshot_diff_cli(
source: str,
output_directory: Optional[str],
screen_width: Optional[int],
continue_: bool
) -> None:
"""Generate screenshot diffs"""
await screenshot_diff(config, source, output_directory, screen_width=screen_width)
await screenshot_diff(config, source, output_directory, screen_width=screen_width, continue_=continue_)
if __name__ == "__main__":

View File

@ -19,6 +19,7 @@ async def screenshot_diff(
config: Config,
right_source_name: str,
output_directory: Optional[str],
continue_: bool = False,
screen_width: Optional[int] = None,
) -> None:
"""Compare pages with or without local css"""
@ -28,7 +29,7 @@ async def screenshot_diff(
else:
output_path = Path(output_directory)
output_path.mkdir(parents=True)
output_path.mkdir(parents=True, exist_ok=True)
left_source = config.source
right_source = config.get_source(right_source_name)
@ -45,6 +46,7 @@ async def screenshot_diff(
url,
output_path,
theme_name,
continue_
),
)
for (theme_name, url) in config.urls
@ -59,7 +61,16 @@ async def _diff_url(
url: str,
output_path: Path,
theme_name: str,
continue_: bool
) -> None:
url_slug = get_url_slug(url)
left_filename = output_path / f"{theme_name}_{url_slug}_left"
right_filename = output_path / f"{theme_name}_{url_slug}_right"
if left_filename.is_file() and right_filename.is_file() and continue_:
return
left_bytes = await _screenshot_url(left, url)
right_bytes = await _screenshot_url(right, url)
@ -76,14 +87,12 @@ async def _diff_url(
if not diff.getbbox():
return
url_slug = get_url_slug(url)
if not output_path.is_dir():
output_path.mkdir()
output_path.mkdir(parents=True, exist_ok=True)
with open(output_path / f"{theme_name}_{url_slug}_left", "wb") as screenshot_file:
with open(left_filename, "wb") as screenshot_file:
screenshot_file.write(left_bytes)
with open(output_path / f"{theme_name}_{url_slug}_right", "wb") as screenshot_file:
with open(right_filename, "wb") as screenshot_file:
screenshot_file.write(right_bytes)