Skip to content

Commit ed86366

Browse files
authored
Add playwright image comparison tests (#37)
1 parent 62fb524 commit ed86366

File tree

8 files changed

+11
-7
lines changed

8 files changed

+11
-7
lines changed

ci/single_example.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ export default defineConfig({
7373
command: 'npm run serve',
7474
url: 'http://localhost:$PORT',
7575
reuseExistingServer: !process.env.CI
76-
}
76+
},
77+
snapshotPathTemplate: '{testDir}/../../../../tests/snapshots/{arg}{ext}'
7778
});
7879
EOF
7980

ci/tests/example.spec.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ test('loads bokehjs', async ({ page }) => {
1717
test('is interactive', async ({ page }) => {
1818
await page.goto('/');
1919

20-
// Take screenshot
20+
await expect(page).toHaveScreenshot('initial.png');
2121

2222
const boxZoom = await page.getByTitle('Box Zoom').click();
2323
const bbox = await page.locator('.bk-CartesianFrame').boundingBox();
@@ -28,9 +28,12 @@ test('is interactive', async ({ page }) => {
2828
await page.mouse.move(bbox!.x + bbox!.width*0.8, bbox!.y + bbox!.height*0.8);
2929
await page.mouse.up();
3030
await page.waitForTimeout(100);
31-
// Take screenshot
31+
32+
await expect(page).toHaveScreenshot('zoom.png');
3233

3334
const reset = await page.getByTitle('Reset').click();
3435
await page.waitForTimeout(100);
35-
// Take screenshot
36+
37+
// Reset image is the same as initial image except for tool selection
38+
await expect(page).toHaveScreenshot('reset.png');
3639
});

ci/tests/snapshots/initial.png

24.6 KB
Loading

ci/tests/snapshots/reset.png

24.8 KB
Loading

ci/tests/snapshots/zoom.png

19.2 KB
Loading

ci/typescript/create_vanilla_vite.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ function create_bokehjs_plot(): Bokeh.Plotting.Figure {
5858
5959
return plot;
6060
}
61-
document.querySelector<HTMLDivElement>('#app')!.innerHTML = \`<div id='target'>Hello</div>\`;
61+
document.querySelector<HTMLDivElement>('#app')!.innerHTML = \`<div id='target'></div>\`;
6262
6363
Bokeh.Plotting.show(create_bokehjs_plot(), "#target");
6464
EOF

recipes/src/recipes/typescript/vanilla_vite_recipe.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export class VanillaViteRecipe extends Recipe {
5353
baseTypeScriptExample.import + "\n" +
5454
baseTypeScriptExample.version + "\n" +
5555
baseTypeScriptExample.function + "\n" +
56-
"document.querySelector<HTMLDivElement>('#app')!.innerHTML = \\`<div id='target'>Hello</div>\\`;\n\n" +
56+
"document.querySelector<HTMLDivElement>('#app')!.innerHTML = \\`<div id='target'></div>\\`;\n\n" +
5757
baseTypeScriptExample.show()
5858
));
5959

typescript/vanilla_vite/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Create an initial basic project using `create-vite`.
6565
6666
return plot;
6767
}
68-
document.querySelector<HTMLDivElement>('#app')!.innerHTML = `<div id='target'>Hello</div>`;
68+
document.querySelector<HTMLDivElement>('#app')!.innerHTML = `<div id='target'></div>`;
6969
7070
Bokeh.Plotting.show(create_bokehjs_plot(), "#target");
7171

0 commit comments

Comments
 (0)