bb9c4b5582
* fix(tabs): clamp ListContainer chevron scrolling to the scrollable range (#6749) * chore(deps): bump react-aria dependencies (#6752) * chore(deps): bump tailwind-variants to v3.3.1 (#6760) * chore(docs): release note for 3.2.4 * test(react): behavioral testing infra (#6754) * fix(link): expose data-slot on link root * fix(react): put style export condition before default * test(react): behavioral testing infra and suites * chore(testing): own vitest-browser-react and clarify coverage gates * chore: remove pinned version * fix(autocomplete): prevent popover from clipping the last options (#6766) * chore(docs): update release note * fix(styles): prevent subpixel border overflow on badge (#6768) * chore(docs): update release note * fix(styles): allow backdrop click to dismiss modal with scroll outside (#6770) * chore(docs): update release note * fix(tooltip): restore exit animation when swapping between tooltips (#6772) * chore(docs): update release note --------- Co-authored-by: Tyler <56234978+runnerboy22@users.noreply.github.com> Co-authored-by: Tianen Pang <32772271+tianenpang@users.noreply.github.com>
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import {render} from "@heroui/testing/browser";
|
|
import {isDocumentScrollLocked} from "@heroui/testing/helpers";
|
|
import {page, userEvent} from "vitest/browser";
|
|
|
|
import {AlertDialogFixture} from "./fixtures";
|
|
|
|
const renderAlertDialog = () => render(<AlertDialogFixture />);
|
|
|
|
describe("AlertDialog (browser)", () => {
|
|
it("supports focus trap and scroll lock while open", async () => {
|
|
await renderAlertDialog();
|
|
|
|
await page.getByRole("button", {name: "Delete Project"}).click();
|
|
|
|
const dialog = page.getByRole("alertdialog");
|
|
|
|
await expect.element(dialog).toBeInTheDocument();
|
|
expect(isDocumentScrollLocked()).toBe(true);
|
|
expect(dialog.element().contains(document.activeElement)).toBe(true);
|
|
|
|
await userEvent.tab();
|
|
expect(dialog.element().contains(document.activeElement)).toBe(true);
|
|
});
|
|
|
|
it("supports blocked Escape and CloseTrigger with focus restore", async () => {
|
|
await renderAlertDialog();
|
|
|
|
const trigger = page.getByRole("button", {name: "Delete Project"});
|
|
|
|
await trigger.click();
|
|
|
|
const dialog = page.getByRole("alertdialog");
|
|
|
|
await expect.element(dialog).toBeInTheDocument();
|
|
|
|
await userEvent.keyboard("{Escape}");
|
|
await expect.element(dialog).toBeInTheDocument();
|
|
|
|
await page.getByRole("button", {name: "Close"}).click();
|
|
|
|
await expect.element(dialog).not.toBeInTheDocument();
|
|
expect(isDocumentScrollLocked()).toBe(false);
|
|
await expect.element(trigger).toHaveFocus();
|
|
});
|
|
});
|