Skip to main content
Glama
create-server.spec.ts2.83 kB
import { test, expect } from "@playwright/test"; import { DashboardActions } from "./dashboard-actions"; import { setupMockedSystemState, mockSystemStates } from "../../../helpers"; import { DELAY_2_SEC, TIMEOUT_5_SEC } from "../../../constants/delays"; test.describe("Dashboard - Create Server from Catalog", () => { test.beforeEach(async ({ page }) => { await setupMockedSystemState(page, mockSystemStates.zero); await page.waitForTimeout(DELAY_2_SEC); }); test("should open Add Server modal when clicking Add Server button", async ({ page, }) => { const actions = new DashboardActions(page); await actions.clickAddServerButton(); await actions.waitForAddServerModal(); const modalTitle = page.locator("div").filter({ hasText: /^Add Server$/i }); await expect(modalTitle).toBeVisible({ timeout: TIMEOUT_5_SEC }); }); test("should display server catalog in modal", async ({ page }) => { const actions = new DashboardActions(page); await actions.clickAddServerButton(); await actions.waitForAddServerModal(); const memoryServer = page.locator("span").filter({ hasText: /^Memory$/i }); await expect(memoryServer).toBeVisible({ timeout: TIMEOUT_5_SEC }); const timeServer = page.locator("span").filter({ hasText: /^Time$/i }); await expect(timeServer).toBeVisible({ timeout: TIMEOUT_5_SEC }); }); test("should select server from catalog and show Add button for servers with env vars", async ({ page, }) => { const actions = new DashboardActions(page); await actions.clickAddServerButton(); await actions.waitForAddServerModal(); await actions.selectServerFromCatalog("Memory"); const addButton = page.locator("button").filter({ hasText: /^Add$/i }); await expect(addButton).toBeVisible({ timeout: TIMEOUT_5_SEC }); }); test("should select server without env vars and add immediately", async ({ page, }) => { const actions = new DashboardActions(page); await actions.clickAddServerButton(); await actions.waitForAddServerModal(); const timeServerSpan = page .locator("span") .filter({ hasText: /^Time$/i }) .first(); await expect(timeServerSpan).toBeVisible({ timeout: TIMEOUT_5_SEC }); const serverCard = timeServerSpan .locator( 'xpath=ancestor::div[contains(@class, "border") and contains(@class, "rounded-xl")]', ) .first(); const plusButton = serverCard .locator("button") .locator("svg") .locator("..") .first(); await plusButton.click(); await page.waitForTimeout(DELAY_2_SEC); const customTab = page.locator("button").filter({ hasText: /^Custom$/i }); const isCustomTabActive = await customTab.getAttribute("data-state"); expect(isCustomTabActive).not.toBe("active"); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheLunarCompany/lunar'

If you have feedback or need assistance with the MCP directory API, please join our Discord server