packages/app/component-tests/tooltip.spec.ts
Rama dev · réplica de lectura del repositorio original.
import { expect, story } from "../../stories/playwright/story"
story("opens a neighbouring tooltip without the open delay", async ({ mount, page }) => {
const root = await mount("ui-tooltip--appearances")
await root.getByText("Standard", { exact: true }).hover()
await expect(page.getByRole("tooltip", { name: "Standard tooltip" })).toBeVisible()
// With timers frozen, the next tooltip can only open through the skip-delay window that closing this one starts.
await page.clock.install({ time: new Date("2026-01-01T00:00:00Z") })
await page.clock.pauseAt(new Date("2026-01-01T00:00:01Z"))
await root.getByText("Compact", { exact: true }).hover()
await expect(page.getByRole("tooltip", { name: "Compact tooltip" })).toBeVisible()
})
story("keeps a menu trigger's tooltip hidden when the menu closes under a still pointer", async ({ mount, page }) => {
const root = await mount("ui-tooltip--with-menu")
await page.clock.install()
const trigger = root.getByRole("button", { name: "Actions" })
const tooltip = page.getByRole("tooltip", { name: "More actions" })
await trigger.hover()
await expect(tooltip).toBeVisible()
await trigger.click()
await expect(page.getByRole("menu")).toBeVisible()
await expect(tooltip).toBeHidden()
await page.keyboard.press("Escape")
await expect(page.getByRole("menu")).toBeHidden()
await expect(trigger).toBeFocused()
// The menu's closing layer hands the still pointer a fresh pointerenter, which would open the tooltip 400 ms later.
await page.clock.runFor(1000)
await expect(tooltip).toBeHidden()
await page.mouse.move(0, 0)
await trigger.hover()
await expect(tooltip).toBeVisible()
})
story("opens a menu trigger's tooltip on the next hover after the menu closes", async ({ mount, page }) => {
const root = await mount("ui-tooltip--with-menu")
const trigger = root.getByRole("button", { name: "Actions" })
const tooltip = page.getByRole("tooltip", { name: "More actions" })
await trigger.hover()
await expect(tooltip).toBeVisible()
await trigger.click()
await expect(page.getByRole("menu")).toBeVisible()
await page.mouse.move(0, 0)
await page.keyboard.press("Escape")
await expect(page.getByRole("menu")).toBeHidden()
await expect(trigger).toBeFocused()
await trigger.hover()
await expect(tooltip).toBeVisible()
})