95 lines
3.1 KiB
TypeScript
95 lines
3.1 KiB
TypeScript
import { test, expect } from "../fixtures"
|
|
import { openStatusPopover } from "../actions"
|
|
|
|
test("status popover opens and shows tabs", async ({ page, gotoSession }) => {
|
|
await gotoSession()
|
|
|
|
const { popoverBody } = await openStatusPopover(page)
|
|
|
|
await expect(popoverBody.getByRole("tab", { name: /servers/i })).toBeVisible()
|
|
await expect(popoverBody.getByRole("tab", { name: /mcp/i })).toBeVisible()
|
|
await expect(popoverBody.getByRole("tab", { name: /lsp/i })).toBeVisible()
|
|
await expect(popoverBody.getByRole("tab", { name: /plugins/i })).toBeVisible()
|
|
|
|
await page.keyboard.press("Escape")
|
|
await expect(popoverBody).toHaveCount(0)
|
|
})
|
|
|
|
test("status popover servers tab shows current server", async ({ page, gotoSession }) => {
|
|
await gotoSession()
|
|
|
|
const { popoverBody } = await openStatusPopover(page)
|
|
|
|
const serversTab = popoverBody.getByRole("tab", { name: /servers/i })
|
|
await expect(serversTab).toHaveAttribute("aria-selected", "true")
|
|
|
|
const serverList = popoverBody.locator('[role="tabpanel"]').first()
|
|
await expect(serverList.locator("button").first()).toBeVisible()
|
|
})
|
|
|
|
test("status popover can switch to mcp tab", async ({ page, gotoSession }) => {
|
|
await gotoSession()
|
|
|
|
const { popoverBody } = await openStatusPopover(page)
|
|
|
|
const mcpTab = popoverBody.getByRole("tab", { name: /mcp/i })
|
|
await mcpTab.click()
|
|
|
|
const ariaSelected = await mcpTab.getAttribute("aria-selected")
|
|
expect(ariaSelected).toBe("true")
|
|
|
|
const mcpContent = popoverBody.locator('[role="tabpanel"]:visible').first()
|
|
await expect(mcpContent).toBeVisible()
|
|
})
|
|
|
|
test("status popover can switch to lsp tab", async ({ page, gotoSession }) => {
|
|
await gotoSession()
|
|
|
|
const { popoverBody } = await openStatusPopover(page)
|
|
|
|
const lspTab = popoverBody.getByRole("tab", { name: /lsp/i })
|
|
await lspTab.click()
|
|
|
|
const ariaSelected = await lspTab.getAttribute("aria-selected")
|
|
expect(ariaSelected).toBe("true")
|
|
|
|
const lspContent = popoverBody.locator('[role="tabpanel"]:visible').first()
|
|
await expect(lspContent).toBeVisible()
|
|
})
|
|
|
|
test("status popover can switch to plugins tab", async ({ page, gotoSession }) => {
|
|
await gotoSession()
|
|
|
|
const { popoverBody } = await openStatusPopover(page)
|
|
|
|
const pluginsTab = popoverBody.getByRole("tab", { name: /plugins/i })
|
|
await pluginsTab.click()
|
|
|
|
const ariaSelected = await pluginsTab.getAttribute("aria-selected")
|
|
expect(ariaSelected).toBe("true")
|
|
|
|
const pluginsContent = popoverBody.locator('[role="tabpanel"]:visible').first()
|
|
await expect(pluginsContent).toBeVisible()
|
|
})
|
|
|
|
test("status popover closes on escape", async ({ page, gotoSession }) => {
|
|
await gotoSession()
|
|
|
|
const { popoverBody } = await openStatusPopover(page)
|
|
await expect(popoverBody).toBeVisible()
|
|
|
|
await page.keyboard.press("Escape")
|
|
await expect(popoverBody).toHaveCount(0)
|
|
})
|
|
|
|
test("status popover closes when clicking outside", async ({ page, gotoSession }) => {
|
|
await gotoSession()
|
|
|
|
const { popoverBody } = await openStatusPopover(page)
|
|
await expect(popoverBody).toBeVisible()
|
|
|
|
await page.getByRole("main").click({ position: { x: 5, y: 5 } })
|
|
|
|
await expect(popoverBody).toHaveCount(0)
|
|
})
|