UNPKG

@vibe/testkit

Version:
72 lines (60 loc) 2.47 kB
import { test, expect, FrameLocator } from "@playwright/test"; import { Menu } from "../components/Menu"; import { menuStory } from "./utils/url-helper"; let frame: FrameLocator; let menu: Menu; const menuLocator = 'ul[data-testid="menu"]'; const frameLocator = "[id='storybook-preview-iframe']"; test.describe("Testkit - Unit Tests - Menu", () => { test.beforeEach(async ({ page }) => { await page.goto(menuStory); frame = page.frameLocator(frameLocator); menu = new Menu(page, frame.locator(menuLocator), "Menu"); await page.reload(); await menu.waitForElementToBeVisible(); }); test("should be enabled by default", async () => { await expect(menu.getLocator()).toBeEnabled(); }); test("should be visible by default", async () => { await expect(menu.getLocator()).toBeVisible(); }); test("should click menu item by name", async () => { await menu.selectItem("Item 1"); await expect(menu.getLocator()).toBeEnabled(); }); test("should handle clicking multiple menu items", async () => { await menu.selectItem("Item 1"); await menu.selectItem("Item 2"); await expect.soft(menu.getLocator()).toBeEnabled(); await expect(menu.getLocator()).toBeVisible(); }); test("should handle hover operations", async () => { await menu.hover(); await expect(menu.getLocator()).toBeVisible(); }); test("should count elements correctly", async () => { const count = await menu.count(); expect(count).toBeGreaterThanOrEqual(1); }); test("should handle attribute retrieval", async () => { const attributeValue = await menu.getAttributeValue("aria-label"); expect(attributeValue).toContain("Menu"); }); test("should check if menu items are enabled by default", async () => { const isDisabled = await menu.isMenuItemDisabled("Menu item 1"); expect.soft(isDisabled).toBe(false); const isDisabled2 = await menu.isMenuItemDisabled("Menu item 2"); expect.soft(isDisabled2).toBe(true); const isDisabled3 = await menu.isMenuItemDisabled("Menu item 3"); expect(isDisabled3).toBe(false); }); test("should get menu item name by index", async () => { const name = await menu.getMenuItemNameByIndex(0); expect.soft(name).toBe("Menu item 1"); const name2 = await menu.getMenuItemNameByIndex(1); expect.soft(name2).toBe("Menu item 2"); const name3 = await menu.getMenuItemNameByIndex(2); expect(name3).toBe("Menu item 3"); }); });