Skip to content

Commit 0457f60

Browse files
committed
test(headless/select): fix test
1 parent b49df2d commit 0457f60

File tree

3 files changed

+24
-21
lines changed

3 files changed

+24
-21
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ test('@Visual diff', async ({ page }) => {
2121
});
2222

2323
test.describe('Mouse Behavior', () => {
24-
test(`GIVEN a popover
24+
test(`GIVEN a closed popover
2525
WHEN clicking on the trigger
2626
THEN the popover should be opened `, async ({ page }) => {
2727
const { driver: d } = await setup(page, 'hero');
28-
2928
await expect(d.getPopover()).toBeHidden();
29+
3030
await d.getTrigger().click();
3131

3232
await expect(d.getPopover()).toBeVisible();

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import { expect, type Locator, type Page } from '@playwright/test';
22
type OpenKeys = 'ArrowUp' | 'Enter' | 'Space' | 'ArrowDown';
33
export type DriverLocator = Locator | Page;
44

5-
export function createTestDriver<T extends DriverLocator>(locator: T) {
5+
export function createTestDriver<T extends DriverLocator>(rootLocator: T) {
66
const getRoot = () => {
7-
return locator;
7+
return rootLocator;
88
};
99

1010
const getTrigger = () => {
@@ -15,12 +15,12 @@ export function createTestDriver<T extends DriverLocator>(locator: T) {
1515
return getRoot().getByRole('listbox');
1616
};
1717

18-
const getOptions = (evenIfHidden?: boolean) => {
19-
return getRoot().getByRole('option', { includeHidden: evenIfHidden });
18+
const getOptions = (options?: { evenIfHidden?: boolean }) => {
19+
return getRoot().getByRole('option', { includeHidden: options?.evenIfHidden });
2020
};
2121

22-
const getOptionsLength = () => {
23-
return getOptions().count();
22+
const getOptionsLength = async (options?: { evenIfHidden?: boolean }) => {
23+
return getOptions({ evenIfHidden: options?.evenIfHidden }).count();
2424
};
2525

2626
const getOptionAt = (index: number | 'last') => {
@@ -29,8 +29,8 @@ export function createTestDriver<T extends DriverLocator>(locator: T) {
2929
};
3030

3131
const getHiddenOptionAt = (index: number | 'last') => {
32-
if (index === 'last') return getOptions(true).last();
33-
return getOptions(true).nth(index);
32+
if (index === 'last') return getOptions({ evenIfHidden: true }).last();
33+
return getOptions({ evenIfHidden: true }).nth(index);
3434
};
3535

3636
const getValueElement = () => {
@@ -51,11 +51,12 @@ export function createTestDriver<T extends DriverLocator>(locator: T) {
5151
};
5252

5353
return {
54-
...locator,
55-
locator,
54+
...rootLocator,
55+
locator: rootLocator,
5656
getRoot,
5757
getTrigger,
5858
getListbox,
59+
getOptions,
5960
getOptionsLength,
6061
getOptionAt,
6162
getHiddenOptionAt,

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ test.describe('Mouse Behavior', () => {
3333
test(`GIVEN a hero select
3434
WHEN clicking on the trigger
3535
THEN open up the listbox AND aria-expanded should be true`, async ({ page }) => {
36-
const { getTrigger, getListbox } = await setup(page, 'hero');
36+
const { driver: d } = await setup(page, 'hero');
3737

38-
await getTrigger().click();
38+
await d.getTrigger().click();
3939

40-
await expect(getListbox()).toBeVisible();
41-
await expect(getTrigger()).toHaveAttribute('aria-expanded', 'true');
40+
await expect(d.getListbox()).toBeVisible();
41+
await expect(d.getTrigger()).toHaveAttribute('aria-expanded', 'true');
4242
});
4343

4444
test(`GIVEN a hero select with an open listbox
@@ -101,16 +101,18 @@ test.describe('Mouse Behavior', () => {
101101
test(`GIVEN a select
102102
WHEN adding new users and selecting a new user
103103
THEN the new user should be the selected value`, async ({ page }) => {
104-
const { getValueElement, getOptionAt, openListbox } = await setup(page, 'add-users');
104+
const { driver: d } = await setup(page, 'add-users');
105105

106106
await page.getByRole('button', { name: 'Add Users' }).click();
107107

108-
await openListbox('click');
108+
await expect(d.getOptions({ evenIfHidden: true })).toHaveCount(8);
109+
110+
await d.openListbox('click');
109111
const expectedValue = 'Bob';
110112

111-
await expect(getOptionAt(7)).toHaveText(expectedValue);
112-
await getOptionAt(7).click();
113-
await expect(getValueElement()).toHaveText(expectedValue);
113+
await expect(d.getOptionAt(7)).toHaveText(expectedValue);
114+
await d.getOptionAt(7).click();
115+
await expect(d.getValueElement()).toHaveText(expectedValue);
114116
});
115117

116118
// if we want to add focusing the trigger on blur

0 commit comments

Comments
 (0)