import 'vitest-browser-react';
import { configure } from 'vitest-browser-react/pure';
import { locators, userEvent, type Locator, type LocatorByRoleOptions } from 'vitest/browser';
Error.stackTraceLimit = 10;
configure({
reactStrictMode: true
});
declare module 'vitest/browser' {
interface LocatorSelectors {
getGrid: () => Locator;
getTreeGrid: () => Locator;
getHeaderRow: (opts?: LocatorByRoleOptions) => Locator;
getHeaderCell: (opts?: LocatorByRoleOptions) => Locator;
getRow: (opts?: LocatorByRoleOptions) => Locator;
getCell: (opts?: LocatorByRoleOptions) => Locator;
getSelectAllCheckbox: () => Locator;
getActiveCell: () => Locator;
getDragHandle: () => Locator;
getBySelector: (selector: string) => Locator;
}
}
locators.extend({
getGrid() {
return this.getByRole('grid');
},
getTreeGrid() {
return this.getByRole('treegrid');
},
getHeaderRow(opts?: LocatorByRoleOptions) {
return this.getByRole('row', opts).and(this.getBySelector('.rdg-header-row'));
},
getHeaderCell(opts?: LocatorByRoleOptions) {
return this.getByRole('columnheader', opts);
},
getRow(opts?: LocatorByRoleOptions) {
return this.getByRole('row', opts).and(this.getBySelector('.rdg-row'));
},
getCell(opts?: LocatorByRoleOptions) {
return this.getByRole('gridcell', opts);
},
getSelectAllCheckbox() {
return this.getByRole('checkbox', { name: 'Select All' });
},
getActiveCell() {
return this.getCell({ selected: true }).or(this.getHeaderCell({ selected: true }));
},
getDragHandle() {
return '.rdg-cell-drag-handle';
},
getBySelector(selector: string) {
return selector;
}
});
beforeEach(async () => {
await userEvent.click(document.body, { position: { x: 0, y: 0 } });
});
afterEach(() => {
vi.useRealTimers();
expect
.soft(
document.hasFocus(),
'Focus is set on a browser UI element at the end of a test. Use safeTab() to return focus to the page.'
)
.toBe(true);
});