Skip to content

Commit 428b057

Browse files
cwoolumTheMcnafaha
andcommitted
test: refactor and add manual popover tests
Co-authored-by: TheMcnafaha <[email protected]>
1 parent 7ab11e1 commit 428b057

File tree

3 files changed

+54
-2
lines changed

3 files changed

+54
-2
lines changed

apps/website/src/routes/docs/headless/popover/examples/hero.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export default component$(() => {
99
<Popover id="hero-id" class="popover">
1010
My Hero!
1111
</Popover>
12+
<div id="content-outside-of-popover"></div>
1213
</>
1314
);
1415
});

packages/kit-headless/src/components/popover/popover.driver.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,20 @@ export function createTestDriver<T extends DriverLocator>(rootLocator: T) {
1111
return rootLocator.locator('[popovertarget]');
1212
};
1313

14+
const getAllPopovers = () => {
15+
return getPopover().all();
16+
};
17+
18+
const getAllTriggers = () => {
19+
return getTrigger().all();
20+
};
21+
1422
return {
1523
...rootLocator,
1624
locator: rootLocator,
1725
getPopover,
26+
getAllPopovers,
1827
getTrigger,
28+
getAllTriggers,
1929
};
2030
}

packages/kit-headless/src/components/popover/popover.test.ts

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ test.describe('Mouse Behavior', () => {
5353
THEN the first popover should close and the second one appear`, async ({ page }) => {
5454
const { driver: d } = await setup(page, 'auto');
5555
//ask shai: is it good to use nth here???
56-
const firstPopOver = d.getPopover().nth(0);
56+
const [firstPopOver, secondPopOver] = await d.getAllPopovers();
57+
5758
const firstPopoverTrigger = d.getTrigger().nth(0);
5859

59-
const secondPopOver = d.getPopover().nth(1);
6060
const secondPopoverTrigger = d.getTrigger().nth(1);
6161

6262
await expect(firstPopOver).toBeHidden();
@@ -70,6 +70,47 @@ test.describe('Mouse Behavior', () => {
7070

7171
await expect(firstPopOver).toBeHidden();
7272
});
73+
74+
test(`GIVEN a pair of manual popovers
75+
WHEN clicking the first trigger on the page and then clicking the second trigger
76+
THEN then both popovers should be opened`, async ({ page }) => {
77+
const { driver: d } = await setup(page, 'manual');
78+
79+
//ask shai: is it good to use nth here???
80+
const [firstPopOver, secondPopOver] = await d.getAllPopovers();
81+
82+
const firstPopoverTrigger = d.getTrigger().nth(0);
83+
84+
const secondPopoverTrigger = d.getTrigger().nth(1);
85+
86+
await expect(firstPopOver).toBeHidden();
87+
await expect(secondPopOver).toBeHidden();
88+
89+
await firstPopoverTrigger.click();
90+
await secondPopoverTrigger.click();
91+
92+
await expect(firstPopOver).toBeVisible();
93+
await expect(secondPopOver).toBeVisible();
94+
});
95+
96+
test(`GIVEN a pair of manual opened popovers
97+
WHEN clicking the first trigger on the page and then clicking the second trigger
98+
THEN then both popovers should be opened`, async ({ page }) => {
99+
const { driver: d } = await setup(page, 'manual');
100+
101+
//ask shai: is it good to use nth here???
102+
const [firstPopOver, secondPopOver] = await d.getAllPopovers();
103+
const [firstPopoverTrigger, secondPopoverTrigger] = await d.getAllTriggers();
104+
105+
await expect(firstPopOver).toBeHidden();
106+
await expect(secondPopOver).toBeHidden();
107+
108+
await firstPopoverTrigger.click();
109+
await secondPopoverTrigger.click();
110+
111+
await expect(firstPopOver).toBeVisible();
112+
await expect(secondPopOver).toBeVisible();
113+
});
73114
});
74115

75116
test.describe('Keyboard Behavior', () => {

0 commit comments

Comments
 (0)