Skip to main content
Glama

@arizeai/phoenix-mcp

Official
by Arize-ai
getExperimentRuns.test.ts2.02 kB
import { beforeEach, describe, expect, it, vi } from "vitest"; import { getExperimentRuns } from "../../src/experiments"; import { components } from "../../src/__generated__/api/v1"; const mockGet = vi.fn(); // Mock the fetch module vi.mock("openapi-fetch", () => ({ default: () => ({ GET: mockGet, use: () => {}, }), })); const mockExperimentRuns: components["schemas"]["ListExperimentRunsResponseBody"]["data"] = [ { id: "id", experiment_id: "exp_id", dataset_example_id: "example_id", output: { response: "res" }, repetition_number: 1, start_time: "2025-09-20T02:54:17.638Z", end_time: "2025-09-20T02:54:17.638Z", }, ]; describe("getExperimentRuns", () => { beforeEach(() => { vi.clearAllMocks(); mockGet.mockReset(); }); it("should not paginate if the API doesn't provide a next cursor", async () => { mockGet.mockResolvedValueOnce({ data: { data: mockExperimentRuns, }, }); await getExperimentRuns({ experimentId: "fake" }); expect(mockGet).toHaveBeenCalledOnce(); expect(mockGet).toHaveBeenCalledWith( "/v1/experiments/{experiment_id}/runs", { params: { path: { experiment_id: "fake", }, query: { cursor: null, limit: 100, }, }, } ); }); it("should paginate through records and fetch all", async () => { mockGet .mockResolvedValueOnce({ data: { data: mockExperimentRuns, next_cursor: "c1", }, }) .mockResolvedValueOnce({ data: { data: mockExperimentRuns, next_cursor: "c2", }, }) .mockResolvedValueOnce({ data: { data: mockExperimentRuns, next_cursor: null, }, }); const { runs } = await getExperimentRuns({ experimentId: "fake" }); expect(mockGet).toHaveBeenCalledTimes(3); expect(runs.length).toEqual(3); }); });

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/Arize-ai/phoenix'

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