Skip to content

Commit 326f8f9

Browse files
Reduce test flakyness
1 parent b41c307 commit 326f8f9

File tree

3 files changed

+73
-24
lines changed

3 files changed

+73
-24
lines changed
Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { newTestPage, getHooks, waitForSelector } from "../../test-utils";
22
import { expect } from "chai";
33
import { clickNestedText, clickSelector } from "pentf/browser_utils";
4+
import { assertEventually } from "pentf/assert_utils";
45

56
export const description = "Show custom hook name";
67

@@ -24,47 +25,93 @@ export async function run(config: any) {
2425
// Callback (Mixed)
2526
await clickNestedText(devtools, /CounterCallback$/);
2627
await waitForSelector(devtools, hooksPanel);
27-
expect(await getHooks(devtools)).to.deep.equal([
28-
["useState counterState", "0"],
29-
["useCallback", "ƒ ()"],
30-
]);
28+
await assertEventually(
29+
async () => {
30+
expect(await getHooks(devtools)).to.deep.equal([
31+
["useState counterState", "0"],
32+
["useCallback", "ƒ ()"],
33+
]);
34+
},
35+
{ crashOnError: false },
36+
);
3137

3238
// Reducer
3339
await clickNestedText(devtools, /ReducerComponent$/);
3440
await waitForSelector(devtools, hooksPanel);
35-
expect(await getHooks(devtools)).to.deep.equal([
36-
["useReducer customReducer", '"foo"'],
37-
]);
41+
await assertEventually(
42+
async () => {
43+
expect(await getHooks(devtools)).to.deep.equal([
44+
["useReducer customReducer", '"foo"'],
45+
]);
46+
},
47+
{ crashOnError: false },
48+
);
3849

3950
// Ref
4051
await clickNestedText(devtools, /RefComponent$/);
4152
await waitForSelector(devtools, hooksPanel);
42-
expect(await getHooks(devtools)).to.deep.equal([["useRef customRef", "0"]]);
53+
await assertEventually(
54+
async () => {
55+
expect(await getHooks(devtools)).to.deep.equal([
56+
["useRef customRef", "0"],
57+
]);
58+
},
59+
{ crashOnError: false },
60+
);
4361

4462
// useMemo
4563
await clickNestedText(devtools, /MemoComponent$/);
4664
await waitForSelector(devtools, hooksPanel);
47-
expect(await getHooks(devtools)).to.deep.equal([["useMemo customMemo", "0"]]);
65+
await assertEventually(
66+
async () => {
67+
expect(await getHooks(devtools)).to.deep.equal([
68+
["useMemo customMemo", "0"],
69+
]);
70+
},
71+
{ crashOnError: false },
72+
);
4873

4974
// Multiple (test ordering)
5075
await clickNestedText(devtools, /^Multiple$/);
5176
await waitForSelector(devtools, hooksPanel);
52-
expect(await getHooks(devtools)).to.deep.equal([
53-
["useState foo", "0"],
54-
["useState bar", "0"],
55-
["useState baz", "0"],
56-
]);
77+
await assertEventually(
78+
async () => {
79+
expect(await getHooks(devtools)).to.deep.equal([
80+
["useState foo", "0"],
81+
["useState bar", "0"],
82+
["useState baz", "0"],
83+
]);
84+
},
85+
{ crashOnError: false },
86+
);
5787

5888
// Do nothing for invalid callsites
5989
await clickNestedText(devtools, /CallbackOnly$/);
6090
await waitForSelector(devtools, hooksPanel);
61-
expect(await getHooks(devtools)).to.deep.equal([["useCallback", "ƒ ()"]]);
91+
await assertEventually(
92+
async () => {
93+
expect(await getHooks(devtools)).to.deep.equal([["useCallback", "ƒ ()"]]);
94+
},
95+
{ crashOnError: false },
96+
);
6297

6398
await clickNestedText(devtools, /LayoutEffect$/);
6499
await waitForSelector(devtools, hooksPanel);
65-
expect(await getHooks(devtools)).to.deep.equal([["useLayoutEffect", "ƒ ()"]]);
100+
await assertEventually(
101+
async () => {
102+
expect(await getHooks(devtools)).to.deep.equal([
103+
["useLayoutEffect", "ƒ ()"],
104+
]);
105+
},
106+
{ crashOnError: false },
107+
);
66108

67109
await clickNestedText(devtools, /^Effect$/);
68110
await waitForSelector(devtools, hooksPanel);
69-
expect(await getHooks(devtools)).to.deep.equal([["useEffect", "ƒ ()"]]);
111+
await assertEventually(
112+
async () => {
113+
expect(await getHooks(devtools)).to.deep.equal([["useEffect", "ƒ ()"]]);
114+
},
115+
{ crashOnError: false },
116+
);
70117
}

test-e2e/tests/profiler/flamegraph/memo-sibling.test.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,14 @@ export async function run(config: any) {
4141
await clickRecordButton(devtools);
4242

4343
const nodes = await getFlameNodes(devtools);
44-
expect(nodes).to.deep.equal([
45-
{ maximized: true, name: "Fragment", visible: true },
46-
{ maximized: false, name: "Counter", visible: true },
47-
{ maximized: false, name: "Value1", visible: true },
48-
{ maximized: false, name: "Value2", visible: true },
49-
]);
44+
expect(nodes.sort((a, b) => a.name.localeCompare(b.name))).to.deep.equal(
45+
[
46+
{ maximized: true, name: "Fragment", visible: true },
47+
{ maximized: false, name: "Counter", visible: true },
48+
{ maximized: false, name: "Value1", visible: true },
49+
{ maximized: false, name: "Value2", visible: true },
50+
].sort((a, b) => a.name.localeCompare(b.name)),
51+
);
5052

5153
const memoSize = await getSize(
5254
devtools,

test-e2e/tests/profiler/flamegraph/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export async function getFlameNodes(page: Page) {
55
return els.map(el => {
66
return {
77
maximized: el.hasAttribute("data-maximized"),
8-
name: el.querySelector('[data-testid="node-name"]')!.textContent,
8+
name: el.querySelector('[data-testid="node-name"]')!.textContent || "",
99
visible: el.hasAttribute("data-visible"),
1010
};
1111
});

0 commit comments

Comments
 (0)