diff --git a/packages/kilo-vscode/tests/skills-settings-responsive.spec.ts b/packages/kilo-vscode/tests/skills-settings-responsive.spec.ts index 6403880ced..5d0330e207 100644 --- a/packages/kilo-vscode/tests/skills-settings-responsive.spec.ts +++ b/packages/kilo-vscode/tests/skills-settings-responsive.spec.ts @@ -32,6 +32,16 @@ async function assertRowContained(row: Locator, card: Locator, label: string) { ) } +async function assertTooltipFitsViewport(content: Locator, label: string, page: Page) { + const tipBox = await content.boundingBox() + const viewport = page.viewportSize()! + expect(tipBox, `${label}: tooltip bounding box`).not.toBeNull() + expect(tipBox!.x, `${label}: tooltip left edge inside viewport`).toBeGreaterThanOrEqual(-1) + expect(tipBox!.x + tipBox!.width, `${label}: tooltip right edge inside viewport`).toBeLessThanOrEqual( + viewport.width + 1, + ) +} + test.describe("skills settings responsive layout", () => { test("folder-path and URL rows stay contained and the × button remains visible at a narrow viewport", async ({ page, @@ -73,12 +83,7 @@ test.describe("skills settings responsive layout", () => { await trigger.hover() const content = page.locator('[data-component="tooltip"]').filter({ hasText: seeded }) await expect(content, `Kilo Tooltip exposes full path on hover: ${seeded}`).toBeVisible() - const tipBox = await content.boundingBox() - const viewport = page.viewportSize()! - expect(tipBox, "path tooltip bounding box").not.toBeNull() - expect(tipBox!.x + tipBox!.width, `path tooltip stays inside viewport: ${seeded}`).toBeLessThanOrEqual( - viewport.width + 1, - ) + await assertTooltipFitsViewport(content, `path tooltip "${seeded}"`, page) } for (const seeded of [SEEDED_URL, SEEDED_URL_2]) { @@ -105,12 +110,7 @@ test.describe("skills settings responsive layout", () => { await trigger.hover() const content = page.locator('[data-component="tooltip"]').filter({ hasText: seeded }) await expect(content, `Kilo Tooltip exposes full URL on hover: ${seeded}`).toBeVisible() - const tipBox = await content.boundingBox() - const viewport = page.viewportSize()! - expect(tipBox, "URL tooltip bounding box").not.toBeNull() - expect(tipBox!.x + tipBox!.width, `URL tooltip stays inside viewport: ${seeded}`).toBeLessThanOrEqual( - viewport.width + 1, - ) + await assertTooltipFitsViewport(content, `URL tooltip "${seeded}"`, page) } for (const [label, card] of [