Skip to content

Commit 43af37c

Browse files
committed
update playwright
1 parent cf2b579 commit 43af37c

5 files changed

Lines changed: 63 additions & 28 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ jobs:
173173

174174
runs-on: ubuntu-latest
175175
container:
176-
image: mcr.microsoft.com/playwright:v1.58.2-noble
176+
image: mcr.microsoft.com/playwright:v1.59.1-noble
177177
env:
178178
ImageOS: ubuntu22
179179
HOME: /root

package-lock.json

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"@babel/preset-env": "7.27.2",
3838
"@babel/preset-typescript": "^7.27.1",
3939
"@eslint/js": "^9.29.0",
40-
"@playwright/test": "^1.58.2",
40+
"@playwright/test": "^1.59.1",
4141
"@types/jest": "^30.0.0",
4242
"@types/phoenix": "^1.6.6",
4343
"css.escape": "^1.5.1",

test/e2e/test-fixtures.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,36 @@ const liveViewSourceMap = JSON.parse(
1717
.toString("utf-8"),
1818
);
1919

20+
const pageChecks = async (page, ignoreJSErrors) => {
21+
// this can be used to check for any console messages that are not expected;
22+
// in a LV app, I'd add a unique ID warning check here
23+
// const consoleMessages: Array<string> = [];
24+
// page.on("console", async (msg) => { consoleMessages.push(msg.text()) });
25+
const unhandledErrors = [];
26+
page.on("pageerror", (exception) => {
27+
unhandledErrors.push(exception);
28+
});
29+
30+
const cleanup = async () => {
31+
if (!ignoreJSErrors) {
32+
testBase
33+
.expect(unhandledErrors, "Detected an unhandled JavaScript Error!")
34+
.toEqual([]);
35+
}
36+
};
37+
38+
return { cleanup };
39+
};
40+
2041
const test = testBase.extend({
42+
ignoreJSErrors: [false, { option: true }],
43+
44+
page: async ({ page, ignoreJSErrors }, use) => {
45+
const { cleanup } = await pageChecks(page, ignoreJSErrors);
46+
await use(page);
47+
await cleanup();
48+
},
49+
2150
autoTestFixture: [
2251
async ({ page, browserName }, use) => {
2352
// NOTE: it depends on your project name

test/e2e/tests/portal.spec.js

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -99,20 +99,26 @@ test("streams work in teleported LiveComponent", async ({ page }) => {
9999
).toEqual(4);
100100
});
101101

102-
test("tooltip example", async ({ page }) => {
103-
await page.goto("/portal?tick=false");
104-
await syncLV(page);
105-
106-
await expect(page.locator("#tooltip-example-portal")).toBeHidden();
107-
await expect(page.locator("#tooltip-example-no-portal")).toBeHidden();
108-
109-
await page.getByRole("button", { name: "Hover me", exact: true }).hover();
110-
await expect(page.locator("#tooltip-example-portal")).toBeVisible();
111-
await expect(page.locator("#tooltip-example-no-portal")).toBeHidden();
112-
113-
await page.getByRole("button", { name: "Hover me (no portal)" }).hover();
114-
await expect(page.locator("#tooltip-example-portal")).toBeHidden();
115-
await expect(page.locator("#tooltip-example-no-portal")).toBeVisible();
102+
test.describe("tooltip", () => {
103+
// The tooltip sometimes causes a
104+
// ResizeObserver loop completed with undelivered notifications
105+
// error, which is safe to ignore.
106+
test.use({ ignoreJSErrors: true });
107+
test("tooltip example", async ({ page }) => {
108+
await page.goto("/portal?tick=false");
109+
await syncLV(page);
110+
111+
await expect(page.locator("#tooltip-example-portal")).toBeHidden();
112+
await expect(page.locator("#tooltip-example-no-portal")).toBeHidden();
113+
114+
await page.getByRole("button", { name: "Hover me", exact: true }).hover();
115+
await expect(page.locator("#tooltip-example-portal")).toBeVisible();
116+
await expect(page.locator("#tooltip-example-no-portal")).toBeHidden();
117+
118+
await page.getByRole("button", { name: "Hover me (no portal)" }).hover();
119+
await expect(page.locator("#tooltip-example-portal")).toBeHidden();
120+
await expect(page.locator("#tooltip-example-no-portal")).toBeVisible();
121+
});
116122
});
117123

118124
test("teleported hook works correctly", async ({ page }) => {

0 commit comments

Comments
 (0)