Skip to content

Commit 6569984

Browse files
committed
test(popover): add placement tests
1 parent 33dc3e7 commit 6569984

File tree

2 files changed

+46
-1
lines changed
  • apps/component-tests/src/routes/[kit]/[component]/[example]
  • packages/kit-headless/src/components/popover

2 files changed

+46
-1
lines changed

apps/component-tests/src/routes/[kit]/[component]/[example]/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,13 @@ import { component$ } from '@builder.io/qwik';
22
import { ShowcaseTest } from '../../../../components/showcase-test/showcase-test';
33

44
export default component$(() => {
5-
return <ShowcaseTest />;
5+
// Need to center the content in the screen
6+
// so that tests like popover placement can
7+
// be placed on top and not get overridden by
8+
// lack of space
9+
return (
10+
<div class="flex h-screen items-center justify-center">
11+
<ShowcaseTest />
12+
</div>
13+
);
614
});

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,24 @@ test.describe('Mouse Behavior', () => {
110110
await expect(firstPopOver).toBeHidden();
111111
await expect(secondPopOver).toBeHidden();
112112
});
113+
114+
test(`GIVEN a combobox with placement set to top
115+
WHEN opening the combobox
116+
THEN the popover should appear above the trigger`, async ({ page }) => {
117+
const { driver: d } = await setup(page, 'placement');
118+
119+
const popover = d.getPopover();
120+
const trigger = d.getTrigger();
121+
122+
await trigger.click();
123+
124+
await expect(popover).toBeVisible();
125+
126+
const popoverBoundingBox = await popover.boundingBox();
127+
const triggerBoundingBox = await trigger.boundingBox();
128+
129+
expect(popoverBoundingBox?.y).toBeLessThan(triggerBoundingBox?.y ?? 0);
130+
});
113131
});
114132

115133
test.describe('Keyboard Behavior', () => {
@@ -234,4 +252,23 @@ test.describe('Keyboard Behavior', () => {
234252

235253
await expect(popover).toBeHidden();
236254
});
255+
256+
test(`GIVEN a combobox with placement set to top
257+
WHEN opening the combobox using the keyboard
258+
THEN the popover should appear above the trigger`, async ({ page }) => {
259+
const { driver: d } = await setup(page, 'placement');
260+
261+
const popover = d.getPopover();
262+
const trigger = d.getTrigger();
263+
264+
await trigger.focus();
265+
await trigger.press('Enter');
266+
267+
await expect(popover).toBeVisible();
268+
269+
const popoverBoundingBox = await popover.boundingBox();
270+
const triggerBoundingBox = await trigger.boundingBox();
271+
272+
expect(popoverBoundingBox?.y).toBeLessThan(triggerBoundingBox?.y ?? 0);
273+
});
237274
});

0 commit comments

Comments
 (0)