From 2878ccbee9c5bf3078deff2b3e5d137750f5e735 Mon Sep 17 00:00:00 2001
From: Jens Grochtdreis <jens.grochtdreis@swr.de>
Date: Thu, 14 Mar 2024 17:00:31 +0100
Subject: [PATCH] Screenshot Spec erweitert und korrigiert

---
 tests/screenshot.spec.js | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/tests/screenshot.spec.js b/tests/screenshot.spec.js
index 20c8c9a..f8e9be7 100644
--- a/tests/screenshot.spec.js
+++ b/tests/screenshot.spec.js
@@ -1,5 +1,5 @@
 const playwright = require('playwright');
-const { test} = require('@playwright/test');
+const { test,expect} = require('@playwright/test');
 
 test("Screenshot Marketingseite", async({ page }) => {
     await page.goto("https://www.tatort-game.de/index.html");
@@ -8,8 +8,12 @@ test("Screenshot Marketingseite", async({ page }) => {
 
 test("SWR Startseite", async({ page }) => {
     await page.goto("https://www.swr.de/index.html");
-    await page.screenshot({ path: "screenshots/swr/startseite-full.png", fullPage: true });
-    await page.screenshot({ path: "screenshots/swr/startseite.png", fullPage: false });
+    // Chill until the network is idle
+    await page.waitForLoadState('networkidle');
+    await page.evaluate(scroll, {direction: "down", speed: "slow"});
+    // await page.evaluate(scroll, {direction: "up", speed: "fast"});
+    await expect(page).toHaveScreenshot({ path: "screenshots/swr/startseite.png", fullPage: false });
+    await expect(page).toHaveScreenshot({ path: "screenshots/swr/startseite-full.png", fullPage: true });
 })
 
 test("SWR Logo", async({ page }) => {
@@ -31,4 +35,19 @@ test("SWR Logo - multipel", async({ page }) => {
 test("Pagination", async({ page }) => {
     await page.goto("http://localhost:3020/components/preview/pagination--default");
     await page.locator('.pagination').screenshot({ path: 'screenshots/swr/module/pagination/pagination.png' });
-})
\ No newline at end of file
+})
+
+let scroll = async (args) => {
+    const {direction, speed} = args;
+    const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
+    const scrollHeight = () => document.body.scrollHeight;
+    const start = direction === "down" ? 0 : scrollHeight();
+    const shouldStop = (position) => direction === "down" ? position > scrollHeight() : position < 0;
+    const increment = direction === "down" ? 100 : -100;
+    const delayTime = speed === "slow" ? 50 : 10;
+    console.error(start, shouldStop(start), increment)
+    for (let i = start; !shouldStop(i); i += increment) {
+        window.scrollTo(0, i);
+        await delay(delayTime);
+    }
+};
\ No newline at end of file
-- 
GitLab