Skip to content

Commit e0bfb8e

Browse files
tests: more programmatic tests
1 parent 0ddd631 commit e0bfb8e

File tree

6 files changed

+102
-4
lines changed

6 files changed

+102
-4
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import { Popover, PopoverTrigger } from '@qwik-ui/headless';
33
export default component$(() => {
44
return (
55
<>
6-
<PopoverTrigger popovertarget="hero-id" class="popover-trigger">
6+
<PopoverTrigger popovertarget="basic-id" class="popover-trigger">
77
Popover Trigger
88
</PopoverTrigger>
9-
<Popover id="hero-id" class="popover">
9+
<Popover id="basic-id" class="popover">
1010
My Hero!
1111
</Popover>
1212
</>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ export default component$(() => {
66

77
return (
88
<>
9-
<PopoverTrigger ref={triggerRef} popovertarget="popover-id" class="popover-trigger">
9+
<PopoverTrigger ref={triggerRef} popovertarget="hero-id" class="popover-trigger">
1010
Click me
1111
</PopoverTrigger>
1212
<Popover
1313
anchorRef={triggerRef}
1414
floating={true}
1515
gutter={4}
16-
id="popover-id"
16+
id="hero-id"
1717
class="popover"
1818
>
1919
I am anchored to the popover trigger!
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { component$ } from '@builder.io/qwik';
2+
import { Popover, PopoverTrigger, usePopover } from '@qwik-ui/headless';
3+
export default component$(() => {
4+
const { hidePopover } = usePopover(`hide-id`);
5+
6+
return (
7+
<>
8+
<button onClick$={() => hidePopover()}>hide popover</button>
9+
<PopoverTrigger popovertarget="hide-id" class="popover-trigger">
10+
Click me
11+
</PopoverTrigger>
12+
<Popover id="hide-id" class="popover">
13+
My Hero!
14+
</Popover>
15+
</>
16+
);
17+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { component$ } from '@builder.io/qwik';
2+
import { Popover, usePopover } from '@qwik-ui/headless';
3+
export default component$(() => {
4+
const { showPopover } = usePopover(`show-id`);
5+
6+
return (
7+
<>
8+
<button onClick$={() => showPopover()}>show popover</button>
9+
<Popover id="show-id" class="popover">
10+
My Hero!
11+
</Popover>
12+
</>
13+
);
14+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { component$ } from '@builder.io/qwik';
2+
import { Popover, usePopover } from '@qwik-ui/headless';
3+
export default component$(() => {
4+
const { togglePopover } = usePopover(`toggle-id`);
5+
6+
return (
7+
<>
8+
<button onClick$={() => togglePopover()}>toggle popover</button>
9+
<Popover id="toggle-id" class="popover">
10+
My Hero!
11+
</Popover>
12+
</>
13+
);
14+
});

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

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,19 @@ test.describe('Mouse Behavior', () => {
6262
await expect(secondPopover).toBeVisible();
6363
});
6464

65+
test(`GIVEN an open manual popover
66+
WHEN clicking elsewhere on the page
67+
THEN the popover should remain open`, async ({ page }) => {
68+
const { driver: d } = await setup(page, 'manual');
69+
70+
// initial open
71+
await d.openPopover('click', 0);
72+
73+
await page.mouse.click(0, 0);
74+
75+
await expect(d.getPopover().nth(0)).toBeVisible();
76+
});
77+
6578
test(`GIVEN a pair of manual popovers
6679
WHEN clicking the first trigger on the page
6780
AND then clicking the second trigger
@@ -319,3 +332,43 @@ test.describe('Keyboard Behavior', () => {
319332
);
320333
});
321334
});
335+
336+
test.describe('Programmatic', () => {
337+
// test(`GIVEN a programmatic popover
338+
// WHEN the showPopover function is called
339+
// THEN the popover should be open`, async ({ page }) => {
340+
// const { driver: d } = await setup(page, 'show');
341+
// await expect(d.getPopover()).toBeHidden();
342+
// const programmaticTrigger = page.getByRole('button', { name: 'show popover' });
343+
// await programmaticTrigger.click();
344+
// await expect(d.getPopover()).toBeVisible();
345+
// });
346+
// test(`GIVEN an open programmatic popover
347+
// WHEN the hidePopover function is called
348+
// THEN the popover should be hidden`, async ({ page }) => {
349+
// const { driver: d } = await setup(page, 'hide');
350+
// const programmaticTrigger = page.getByRole('button', { name: 'hide popover' });
351+
// // initial open
352+
// await d.openPopover('click');
353+
// await programmaticTrigger.click({ position: { x: 0, y: 0 } });
354+
// await expect(d.getPopover()).toBeHidden();
355+
// });
356+
// test(`GIVEN a programmatic popover
357+
// WHEN the togglePopover function is called
358+
// THEN the popover should be open`, async ({ page }) => {
359+
// const { driver: d } = await setup(page, 'toggle');
360+
// const programmaticTrigger = page.getByRole('button', { name: 'toggle popover' });
361+
// await programmaticTrigger.click();
362+
// await expect(d.getPopover()).toBeVisible();
363+
// });
364+
// test(`GIVEN an open programmatic popover
365+
// WHEN the togglePopover function is called
366+
// THEN the popover should be closed`, async ({ page }) => {
367+
// const { driver: d } = await setup(page, 'toggle');
368+
// const programmaticTrigger = page.getByRole('button', { name: 'toggle popover' });
369+
// await programmaticTrigger.click();
370+
// await expect(d.getPopover()).toBeVisible();
371+
// await programmaticTrigger.click();
372+
// await expect(d.getPopover()).toBeHidden();
373+
// });
374+
});

0 commit comments

Comments
 (0)