From 560fb6d018f5438fa755ccb1e1dd0978b5b681f5 Mon Sep 17 00:00:00 2001 From: signed-long <38993953+signed-long@users.noreply.github.com> Date: Sun, 23 Jun 2024 00:56:00 -0600 Subject: [PATCH 1/3] playwright to take screenshots --- .github/workflows/utils/screenshots.py | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/utils/screenshots.py diff --git a/.github/workflows/utils/screenshots.py b/.github/workflows/utils/screenshots.py new file mode 100644 index 00000000..856678f3 --- /dev/null +++ b/.github/workflows/utils/screenshots.py @@ -0,0 +1,28 @@ +from playwright.sync_api import sync_playwright +import sys +from time import sleep + +base_url = sys.argv[1] +endpoints = { + "Login": "login", + "RouteList": "1d3dc3e03047b0c7", + "RouteActivity": "1d3dc3e03047b0c7/000000dd--455f14369d", +} + +def take_screenshots(device_type, browser): + page = browser.new_page() + page.goto(f"{base_url}") + page.get_by_role("button", name="Try the demo").click() + for endpoint in endpoints: + page.goto(f"{base_url}/{endpoints[endpoint]}") + sleep(2) + page.screenshot(path=f"screenshots/{endpoint}-{device_type}.png", full_page=True) + browser.close() + +with sync_playwright() as p: + iphone_13 = p.devices['iPhone 13'] + browser = p.webkit.launch(headless=False) + context = browser.new_context(**iphone_13) + take_screenshots("mobile", context) + browser = p.webkit.launch() + take_screenshots("desktop", browser) \ No newline at end of file From a2dbbf8ed74191e5460fa582980c20aec2ae1ae2 Mon Sep 17 00:00:00 2001 From: signed-long <38993953+signed-long@users.noreply.github.com> Date: Sun, 23 Jun 2024 01:16:35 -0600 Subject: [PATCH 2/3] turn on headless mode --- .github/workflows/utils/screenshots.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/utils/screenshots.py b/.github/workflows/utils/screenshots.py index 856678f3..6baf634b 100644 --- a/.github/workflows/utils/screenshots.py +++ b/.github/workflows/utils/screenshots.py @@ -21,7 +21,7 @@ def take_screenshots(device_type, browser): with sync_playwright() as p: iphone_13 = p.devices['iPhone 13'] - browser = p.webkit.launch(headless=False) + browser = p.webkit.launch() context = browser.new_context(**iphone_13) take_screenshots("mobile", context) browser = p.webkit.launch() From 38c06084b702f01a3d439e36043aa4dbeb493b76 Mon Sep 17 00:00:00 2001 From: signed-long <38993953+signed-long@users.noreply.github.com> Date: Sun, 23 Jun 2024 14:26:27 -0600 Subject: [PATCH 3/3] JS?? JS. --- .github/workflows/utils/screenshots.py | 28 -------------------- bun.lockb | Bin 226369 -> 227494 bytes package.json | 1 + src/ci/screenshots.cjs | 34 +++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 28 deletions(-) delete mode 100644 .github/workflows/utils/screenshots.py mode change 100644 => 100755 bun.lockb create mode 100644 src/ci/screenshots.cjs diff --git a/.github/workflows/utils/screenshots.py b/.github/workflows/utils/screenshots.py deleted file mode 100644 index 6baf634b..00000000 --- a/.github/workflows/utils/screenshots.py +++ /dev/null @@ -1,28 +0,0 @@ -from playwright.sync_api import sync_playwright -import sys -from time import sleep - -base_url = sys.argv[1] -endpoints = { - "Login": "login", - "RouteList": "1d3dc3e03047b0c7", - "RouteActivity": "1d3dc3e03047b0c7/000000dd--455f14369d", -} - -def take_screenshots(device_type, browser): - page = browser.new_page() - page.goto(f"{base_url}") - page.get_by_role("button", name="Try the demo").click() - for endpoint in endpoints: - page.goto(f"{base_url}/{endpoints[endpoint]}") - sleep(2) - page.screenshot(path=f"screenshots/{endpoint}-{device_type}.png", full_page=True) - browser.close() - -with sync_playwright() as p: - iphone_13 = p.devices['iPhone 13'] - browser = p.webkit.launch() - context = browser.new_context(**iphone_13) - take_screenshots("mobile", context) - browser = p.webkit.launch() - take_screenshots("desktop", browser) \ No newline at end of file diff --git a/bun.lockb b/bun.lockb old mode 100644 new mode 100755 index deaef1f95fa483119fcdb3199ea19909cba19c68..0a097f488744e0390f300da7451a370f6af0a5a6 GIT binary patch delta 33139 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 L-p1wxssTy_4q^iEehu= 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 { + const mobile_browser = await webkit.launch() + const iphone_13 = devices['iPhone 13'] + const mobile_context = await mobile_browser.newContext(iphone_13) + await takeScreenshots('mobile', mobile_context) + await mobile_browser.close() + + const desktop_browser = await webkit.launch() + const desktop_context = await desktop_browser.newContext({viewport: { width: 1920, height: 1080 }}) + await takeScreenshots('desktop', desktop_context) + await desktop_browser.close() +})()