status-popover.spec.ts 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { test, expect } from "../fixtures"
  2. import { openStatusPopover } from "../actions"
  3. test("status popover opens and shows tabs", async ({ page, gotoSession }) => {
  4. await gotoSession()
  5. const { popoverBody } = await openStatusPopover(page)
  6. await expect(popoverBody.getByRole("tab", { name: /servers/i })).toBeVisible()
  7. await expect(popoverBody.getByRole("tab", { name: /mcp/i })).toBeVisible()
  8. await expect(popoverBody.getByRole("tab", { name: /lsp/i })).toBeVisible()
  9. await expect(popoverBody.getByRole("tab", { name: /plugins/i })).toBeVisible()
  10. await page.keyboard.press("Escape")
  11. await expect(popoverBody).toHaveCount(0)
  12. })
  13. test("status popover servers tab shows current server", async ({ page, gotoSession }) => {
  14. await gotoSession()
  15. const { popoverBody } = await openStatusPopover(page)
  16. const serversTab = popoverBody.getByRole("tab", { name: /servers/i })
  17. await expect(serversTab).toHaveAttribute("aria-selected", "true")
  18. const serverList = popoverBody.locator('[role="tabpanel"]').first()
  19. await expect(serverList.locator("button").first()).toBeVisible()
  20. })
  21. test("status popover can switch to mcp tab", async ({ page, gotoSession }) => {
  22. await gotoSession()
  23. const { popoverBody } = await openStatusPopover(page)
  24. const mcpTab = popoverBody.getByRole("tab", { name: /mcp/i })
  25. await mcpTab.click()
  26. const ariaSelected = await mcpTab.getAttribute("aria-selected")
  27. expect(ariaSelected).toBe("true")
  28. const mcpContent = popoverBody.locator('[role="tabpanel"]:visible').first()
  29. await expect(mcpContent).toBeVisible()
  30. })
  31. test("status popover can switch to lsp tab", async ({ page, gotoSession }) => {
  32. await gotoSession()
  33. const { popoverBody } = await openStatusPopover(page)
  34. const lspTab = popoverBody.getByRole("tab", { name: /lsp/i })
  35. await lspTab.click()
  36. const ariaSelected = await lspTab.getAttribute("aria-selected")
  37. expect(ariaSelected).toBe("true")
  38. const lspContent = popoverBody.locator('[role="tabpanel"]:visible').first()
  39. await expect(lspContent).toBeVisible()
  40. })
  41. test("status popover can switch to plugins tab", async ({ page, gotoSession }) => {
  42. await gotoSession()
  43. const { popoverBody } = await openStatusPopover(page)
  44. const pluginsTab = popoverBody.getByRole("tab", { name: /plugins/i })
  45. await pluginsTab.click()
  46. const ariaSelected = await pluginsTab.getAttribute("aria-selected")
  47. expect(ariaSelected).toBe("true")
  48. const pluginsContent = popoverBody.locator('[role="tabpanel"]:visible').first()
  49. await expect(pluginsContent).toBeVisible()
  50. })
  51. test("status popover closes on escape", async ({ page, gotoSession }) => {
  52. await gotoSession()
  53. const { popoverBody } = await openStatusPopover(page)
  54. await expect(popoverBody).toBeVisible()
  55. await page.keyboard.press("Escape")
  56. await expect(popoverBody).toHaveCount(0)
  57. })
  58. test("status popover closes when clicking outside", async ({ page, gotoSession }) => {
  59. await gotoSession()
  60. const { popoverBody } = await openStatusPopover(page)
  61. await expect(popoverBody).toBeVisible()
  62. await page.getByRole("main").click({ position: { x: 5, y: 5 } })
  63. await expect(popoverBody).toHaveCount(0)
  64. })