Working screenshot diff

This commit is contained in:
Mark Tolmacs
2025-08-25 11:13:03 +02:00
parent 9ad75b8375
commit 6317ac16ee
5 changed files with 1594 additions and 1241 deletions

View File

@@ -10,26 +10,19 @@ export class Record {
public static start() { public static start() {
Record.events += ` await page.setViewportSize({ width: ${window.innerWidth}, height: ${window.innerHeight} });\n`; Record.events += ` await page.setViewportSize({ width: ${window.innerWidth}, height: ${window.innerHeight} });\n`;
Record.events += `await page.goto("http://localhost:3000");`; Record.events += `await page.goto("http://localhost:3000");\n`;
Record.events += `await page.waitForLoadState("load");`; Record.events += `await page.waitForLoadState("load");\n`;
// Record.events += " const mask = [\n"; // Capture LocalStorage, which is essential to re-establish state
// Record.events += ` page.getByRole("button", { name: "Share" }),\n`;
// Record.events += ` page.getByTitle("Library").locator("div"),\n`;
// Record.events += " ];\n";
// capture a snapshot of localStorage (if available) to include in the header
Record.events += " await page.evaluate(() => {\n"; Record.events += " await page.evaluate(() => {\n";
try { for (let i = 0; i < localStorage.length; i++) {
for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i);
const key = localStorage.key(i); if (key != null) {
if (key != null) { const value = JSON.stringify(localStorage.getItem(key));
const value = JSON.stringify(localStorage.getItem(key)); Record.events += ` localStorage.getItem("${key}");\n`;
Record.events += ` localStorage.getItem("${key}");\n`; Record.events += ` localStorage.setItem("${key}", ${value});\n`;
Record.events += ` localStorage.setItem("${key}", ${value});\n`;
}
} }
} catch {} }
Record.events += " });\n"; Record.events += " });\n";
Record.events += " await page.reload();\n"; Record.events += " await page.reload();\n";
Record.events += ` await page.waitForLoadState("load");\n`; Record.events += ` await page.waitForLoadState("load");\n`;
@@ -171,10 +164,12 @@ export class Record {
} }
const button = const button =
event.button === 0 ? "left" : event.button === 1 ? "middle" : "right"; event.button === 0 ? "left" : event.button === 1 ? "middle" : "right";
Record.events += ` await page.mouse.down({ button: "${button}" });\n`; Record.events += ` await page.mouse.up({ button: "${button}" });\n`;
Record.events += Record.events += " await expect(page).toHaveScreenshot({\n";
" await expect(page).toHaveScreenshot({ maxDiffPixels: 100 });\n"; Record.events += " maxDiffPixels: 100,\n";
Record.events += " maxDiffPixelRatio: 0.01,\n";
Record.events += " });\n";
} }
private static onKeyDown(event: KeyboardEvent) { private static onKeyDown(event: KeyboardEvent) {
@@ -198,8 +193,10 @@ export class Record {
} }
Record.events += ` await page.keyboard.up("${event.key}");\n`; Record.events += ` await page.keyboard.up("${event.key}");\n`;
Record.events += Record.events += " await expect(page).toHaveScreenshot({\n";
" await expect(page).toHaveScreenshot({ maxDiffPixels: 100 });\n"; Record.events += " maxDiffPixels: 100,\n";
Record.events += " maxDiffPixelRatio: 0.01,\n";
Record.events += " });\n";
} }
} }

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -39,7 +39,12 @@ export default defineConfig({
projects: [ projects: [
{ {
name: "chromium", name: "chromium",
use: { ...devices["Desktop Chrome"] }, use: {
...devices["Desktop Chrome"],
launchOptions: {
args: ["--disable-font-subpixel-positioning"],
},
},
}, },
// { // {