Skip to content

Commit e63dbe6

Browse files
committed
fix(e2e): reduce flakiness
1 parent a1d9864 commit e63dbe6

File tree

10 files changed

+48
-38
lines changed

10 files changed

+48
-38
lines changed

package.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -230,23 +230,23 @@
230230
"start": "pnpm run --stream \"/.*\\.watch/\"",
231231
"test": "pnpm build.full && pnpm test.unit && pnpm test.e2e",
232232
"test.e2e": "pnpm test.e2e.chromium && pnpm test.e2e.webkit && test.e2e.integrations",
233-
"test.e2e.chromium": "DEBUG=${DEBUG:-pw:webserver} playwright test starters --browser=chromium --config starters/playwright.config.ts",
234-
"test.e2e.chromium.debug": "PWDEBUG=1 DEBUG=${DEBUG:-pw:webserver} playwright test starters --browser=chromium --config starters/playwright.config.ts",
233+
"test.e2e.chromium": "playwright test starters --browser=chromium --config starters/playwright.config.ts",
234+
"test.e2e.chromium.debug": "PWDEBUG=1 playwright test starters --browser=chromium --config starters/playwright.config.ts",
235235
"test.e2e.cli": "pnpm --filter qwik-cli-e2e e2e",
236-
"test.e2e.firefox": "DEBUG=${DEBUG:-pw:webserver} playwright test starters --browser=firefox --config starters/playwright.config.ts",
237-
"test.e2e.integrations.chromium": "DEBUG=${DEBUG:-pw:webserver} playwright test e2e/adapters-e2e/tests --project=chromium --config e2e/adapters-e2e/playwright.config.ts",
238-
"test.e2e.integrations.webkit": "DEBUG=${DEBUG:-pw:webserver} playwright test e2e/adapters-e2e/tests --project=webkit --config e2e/adapters-e2e/playwright.config.ts",
239-
"test.e2e.router": "DEBUG=${DEBUG:-pw:webserver} playwright test starters/e2e/qwikrouter --browser=chromium --config starters/playwright.config.ts",
236+
"test.e2e.firefox": "playwright test starters --browser=firefox --config starters/playwright.config.ts",
237+
"test.e2e.integrations.chromium": "playwright test e2e/adapters-e2e/tests --project=chromium --config e2e/adapters-e2e/playwright.config.ts",
238+
"test.e2e.integrations.webkit": "playwright test e2e/adapters-e2e/tests --project=webkit --config e2e/adapters-e2e/playwright.config.ts",
239+
"test.e2e.router": "playwright test starters/e2e/qwikrouter --browser=chromium --config starters/playwright.config.ts",
240240
"test.e2e.run": "tsm scripts/e2e-cli.ts",
241-
"test.e2e.webkit": "DEBUG=${DEBUG:-pw:webserver} playwright test starters --browser=webkit --config starters/playwright.config.ts",
242-
"test.e2e.qwik-react.chromium": "DEBUG=${DEBUG:-pw:webserver} playwright test e2e/qwik-react-e2e/tests --project=chromium --config e2e/qwik-react-e2e/playwright.config.ts",
243-
"test.e2e.qwik-react.webkit": "DEBUG=${DEBUG:-pw:webserver} playwright test e2e/qwik-react-e2e/tests --project=webkit --config e2e/qwik-react-e2e/playwright.config.ts",
241+
"test.e2e.webkit": "playwright test starters --browser=webkit --config starters/playwright.config.ts",
242+
"test.e2e.qwik-react.chromium": "playwright test e2e/qwik-react-e2e/tests --project=chromium --config e2e/qwik-react-e2e/playwright.config.ts",
243+
"test.e2e.qwik-react.webkit": "playwright test e2e/qwik-react-e2e/tests --project=webkit --config e2e/qwik-react-e2e/playwright.config.ts",
244244
"test.rust": "make test",
245245
"test.rust.bench": "make benchmark",
246246
"test.rust.update": "make test-update",
247247
"test.unit": "vitest packages",
248248
"test.unit.debug": "vitest --inspect-brk packages",
249-
"test.vite": "DEBUG=${DEBUG:-pw:webserver} playwright test starters/e2e/qwikrouter --browser=chromium --config starters/playwright.config.ts",
249+
"test.vite": "playwright test starters/e2e/qwikrouter --browser=chromium --config starters/playwright.config.ts",
250250
"tsc.check": "tsc --noEmit",
251251
"tsc.trace": "tsc -p tsconfig.json --traceResolution > tsc.log",
252252
"tsc.watch": "tsc --noEmit --watch --preserveWatchOutput",

starters/e2e/e2e.context.e2e.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,14 @@ test.describe("context", () => {
5555
"bar = 0",
5656
"bar = 0",
5757
]);
58+
// Add 2 level3 components to the first level2
5859
await btnLevel2Increment.click();
5960
await btnLevel2Increment.click();
61+
// Add 1 level3 component to the second level2
6062
await btnLevel2Increment2.click();
63+
// Wait for all level3 to be visible
64+
const level3s = page.locator(".level3-state2");
65+
await expect(level3s).toHaveCount(3);
6166

6267
const level3State1 = page.locator(".level3-state1");
6368
const level3State2 = page.locator(".level3-state2");

starters/e2e/e2e.signals.e2e.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -319,11 +319,11 @@ test.describe("signals", () => {
319319
const result = page.locator("#issue-3415-result");
320320
const button = page.locator("#issue-3415-button");
321321
await expect(result).toHaveText("foo");
322-
await expect(await result.innerHTML()).toEqual("<b>foo</b>");
322+
expect(await result.innerHTML()).toEqual("<b>foo</b>");
323323

324324
await button.click();
325325
await expect(result).toHaveText("bar");
326-
await expect(await result.innerHTML()).toEqual("<i>bar</i>");
326+
expect(await result.innerHTML()).toEqual("<i>bar</i>");
327327
});
328328

329329
test("bind value", async ({ page }) => {
@@ -348,8 +348,8 @@ test.describe("signals", () => {
348348

349349
await input.clear();
350350
await textarea.fill("from2");
351-
await expect(input).toHaveValue("from2");
352351
await expect(textarea).toHaveValue("from2");
352+
await expect(input).toHaveValue("from2");
353353
await expect(text1).toHaveText("Value: from2");
354354
await expect(text2).toHaveText("Value: from2");
355355

starters/e2e/e2e.streaming.e2e.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ test.describe("streaming", () => {
5252
await expect(count).toHaveText("Rerender: 1");
5353

5454
await rerender.click();
55-
expect(rerender).toHaveText("Client rerender: 1");
55+
await expect(rerender).toHaveText("Client rerender: 1");
5656
await expect(count).toHaveText("Rerender: 0");
5757
await count.click();
5858

starters/e2e/qwikrouter/actions.e2e.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,11 +148,13 @@ test.describe("actions", () => {
148148
await page.locator("#issue2644-submit").click();
149149

150150
await expect(page.locator("#issue2644-list > li")).toHaveText(["AAA"]);
151-
expect(page).toHaveURL("/qwikrouter-test/issue2644/other/");
151+
await expect(page).toHaveURL("/qwikrouter-test/issue2644/other/");
152152

153153
await page.locator("#issue2644-input").fill("BBB");
154154
await page.locator("#issue2644-submit").click();
155-
expect(page).toHaveURL(new RegExp("/qwikrouter-test/issue2644/other/"));
155+
await expect(page).toHaveURL(
156+
new RegExp("/qwikrouter-test/issue2644/other/"),
157+
);
156158

157159
await expect(page.locator("#issue2644-list > li")).toHaveText([
158160
"AAA",

starters/e2e/qwikrouter/error.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ test.describe("Qwik Router Error boundary", () => {
44
test("should catch error", async ({ page }) => {
55
await page.goto("/qwikrouter-test/error");
66

7-
page.getByRole("button", { name: "Throw error" }).click();
7+
await page.getByRole("button", { name: "Throw error" }).click();
88

99
await page.waitForSelector('div:has-text("Caught error: Boom!")');
1010
});

starters/e2e/qwikrouter/location.e2e.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect, test } from "@playwright/test";
22

33
test.describe("Qwik Router API: useLocation", () => {
44
test("should take x-forwarded headers into account", async ({ page }) => {
5-
page.setExtraHTTPHeaders({
5+
await page.setExtraHTTPHeaders({
66
"X-Forwarded-Host": "override-server",
77
"X-Forwarded-Proto": "http",
88
});
@@ -17,7 +17,7 @@ test.describe("Qwik Router API: useLocation", () => {
1717
test("should take x-forwarded headers into account with port", async ({
1818
page,
1919
}) => {
20-
page.setExtraHTTPHeaders({
20+
await page.setExtraHTTPHeaders({
2121
"X-Forwarded-Host": "override-server:9999",
2222
"X-Forwarded-Proto": "https",
2323
});

starters/e2e/qwikrouter/nav.e2e.ts

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ test.describe("nav", () => {
3232
await increment.click();
3333
await expect(increment).toHaveText("Click me 1");
3434
await link.click();
35-
await expect(new URL(page.url()).hash).toBe("#navigate");
35+
expect(new URL(page.url()).hash).toBe("#navigate");
3636
await expect(increment).toHaveText("Click me 1");
3737
});
3838

@@ -44,25 +44,31 @@ test.describe("nav", () => {
4444
const link = page.locator("#to-page-short");
4545
await link.click();
4646

47+
await expect(page).toHaveURL(
48+
"/qwikrouter-test/scroll-restoration/page-short/",
49+
);
4750
await expect(page.locator("h1")).toHaveText("Page Short");
4851

4952
await page.reload();
5053
await expect(page.locator("h1")).toHaveText("Page Short");
5154

5255
await page.goBack();
5356

57+
await expect(page).toHaveURL(
58+
"/qwikrouter-test/scroll-restoration/page-long/",
59+
);
5460
await expect(page.locator("h1")).toHaveText("Page Long");
5561
});
5662
test("should scroll on hash change", async ({ page }) => {
5763
await page.goto("/qwikrouter-test/scroll-restoration/hash/");
58-
expect(page).toHaveURL("/qwikrouter-test/scroll-restoration/hash/");
64+
await expect(page).toHaveURL(
65+
"/qwikrouter-test/scroll-restoration/hash/",
66+
);
5967

6068
const link = page.locator("#hash-1");
6169
await link.click();
62-
// Without this, sometimes the URL is #hash-1
63-
await page.waitForTimeout(100);
6470

65-
expect(page).toHaveURL(
71+
await expect(page).toHaveURL(
6672
"/qwikrouter-test/scroll-restoration/hash/#hash-2",
6773
);
6874
let scrollY1;
@@ -77,7 +83,7 @@ test.describe("nav", () => {
7783
await scrollTo(page, 0, 1000);
7884
await link2.click();
7985

80-
expect(page).toHaveURL(
86+
await expect(page).toHaveURL(
8187
"/qwikrouter-test/scroll-restoration/hash/#hash-1",
8288
);
8389
await page.waitForTimeout(50);
@@ -89,7 +95,9 @@ test.describe("nav", () => {
8995
await scrollTo(page, 0, 2000);
9096
await link3.click();
9197

92-
expect(page).toHaveURL("/qwikrouter-test/scroll-restoration/hash/");
98+
await expect(page).toHaveURL(
99+
"/qwikrouter-test/scroll-restoration/hash/",
100+
);
93101
await page.waitForTimeout(50);
94102
expect(await getWindowScrollXY(page)).toStrictEqual([0, 0]);
95103
});
@@ -270,7 +278,7 @@ test.describe("nav", () => {
270278
await expect(page.locator("#issue2829-context")).toHaveText(
271279
"context: __CONTEXT_VALUE__",
272280
);
273-
await expect(new URL(page.url()).pathname).toBe(
281+
expect(new URL(page.url()).pathname).toBe(
274282
"/qwikrouter-test/issue2829/b/",
275283
);
276284
});
@@ -422,7 +430,7 @@ test.describe("nav", () => {
422430

423431
test("issue4956", async ({ page }) => {
424432
await page.goto("/qwikrouter-test/issue4956?id=1");
425-
const textContent = await page.locator("#routeId");
433+
const textContent = page.locator("#routeId");
426434

427435
await expect(textContent).toHaveText("1");
428436
});
@@ -442,13 +450,13 @@ test.describe("nav", () => {
442450

443451
test("issue7182", async ({ page, javaScriptEnabled }) => {
444452
await page.goto("/qwikrouter-test/issue7182");
445-
const input1 = await page.locator("#input1");
453+
const input1 = page.locator("#input1");
446454
await input1.fill("4");
447455
await input1.dispatchEvent("change");
448-
const input2 = await page.locator("#input2");
456+
const input2 = page.locator("#input2");
449457
await input2.fill("4");
450458
await input2.dispatchEvent("change");
451-
const result = await page.locator("#result");
459+
const result = page.locator("#result");
452460
if (javaScriptEnabled) {
453461
await expect(result).toHaveText("8");
454462
} else {
@@ -579,8 +587,3 @@ test.describe("nav", () => {
579587
});
580588
}
581589
});
582-
583-
function toPath(href: string) {
584-
const url = new URL(href);
585-
return url.pathname + url.search + url.hash;
586-
}

starters/e2e/todo-old.e2e.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ test.describe("Todo", () => {
7474
await assertItemCount(page, 2);
7575
await page.waitForTimeout(100);
7676

77-
page.locator(".todo-list>li:last-child input").click();
77+
await page.locator(".todo-list>li:last-child input").click();
7878
await assertItemCount(page, 1, 2);
7979
});
8080

starters/e2e/todo.e2e.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ test.describe("Todo", () => {
7373
await assertItemCount(page, 2);
7474
await page.waitForTimeout(100);
7575

76-
page.locator(".todo-list>li:last-child input").click();
76+
await page.locator(".todo-list>li:last-child input").click();
7777
await assertItemCount(page, 1, 2);
7878
});
7979

0 commit comments

Comments
 (0)