diff --git a/.changeset/hungry-beers-admire.md b/.changeset/hungry-beers-admire.md new file mode 100644 index 0000000000..f59bc5db0f --- /dev/null +++ b/.changeset/hungry-beers-admire.md @@ -0,0 +1,5 @@ +--- +"sit-onyx": minor +--- + +Add new OnyxNavButton component diff --git a/.changeset/six-llamas-provide.md b/.changeset/six-llamas-provide.md new file mode 100644 index 0000000000..4357e3da74 --- /dev/null +++ b/.changeset/six-llamas-provide.md @@ -0,0 +1,5 @@ +--- +"@sit-onyx/headless": minor +--- + +Add new createMenuButton composable diff --git a/packages/headless/src/composables/menuButton/TestMenuButton.ct.tsx b/packages/headless/src/composables/menuButton/TestMenuButton.ct.tsx new file mode 100644 index 0000000000..b6e664c03c --- /dev/null +++ b/packages/headless/src/composables/menuButton/TestMenuButton.ct.tsx @@ -0,0 +1,14 @@ +import { test } from "@playwright/experimental-ct-vue"; +import { menuButtonTesting } from "./createMenuButton.ct"; +import TestMenuButton from "./TestMenuButton.vue"; + +test("menuButton", async ({ mount, page }) => { + await mount(); + + await menuButtonTesting({ + page, + button: page.getByRole("button"), + menu: page.locator("ul"), + menuItems: await page.locator("li").all(), + }); +}); diff --git a/packages/headless/src/composables/menuButton/TestMenuButton.vue b/packages/headless/src/composables/menuButton/TestMenuButton.vue new file mode 100644 index 0000000000..cbee4e3a0b --- /dev/null +++ b/packages/headless/src/composables/menuButton/TestMenuButton.vue @@ -0,0 +1,33 @@ + + + diff --git a/packages/headless/src/composables/menuButton/createMenuButton.ct.ts b/packages/headless/src/composables/menuButton/createMenuButton.ct.ts new file mode 100644 index 0000000000..ae77e39da0 --- /dev/null +++ b/packages/headless/src/composables/menuButton/createMenuButton.ct.ts @@ -0,0 +1,54 @@ +import { expect } from "@playwright/experimental-ct-vue"; +import type { Locator, Page } from "@playwright/test"; + +export type MenuButtonTestingOptions = { + /** + * Playwright page. + */ + page: Page; + /** + * Locator for the button element. + */ + button: Locator; + /** + * Menu, e.g. a `