contributing/e2e-suite

Running the E2E Suite: Playwright

MCPFlo's Playwright suite drives the real packaged app against a real test-fixture MCP server.

MCPFlo’s end-to-end tests drive the actual packaged Electron app using Playwright, exercising real user flows against a real MCP server rather than mocks.

Running it

npm run e2e

This builds the app and runs the full Playwright suite against it.

What it tests against

The suite connects to @mcpflo/server-everything (packages/server-everything) — MCPFlo’s own bundled test-fixture MCP server, which deterministically exercises the full protocol surface (tools, resources, prompts, elicitation, sampling, notifications). Using a real, purpose-built server instead of mocks means the e2e suite validates the actual MCP client/session/transport code path, not just the UI in isolation.

Structure (e2e/)

e2e/
├── app.spec.ts               General app-level flows
├── fixtures.ts                Shared Playwright fixtures/setup
├── servers/
│   └── manage.spec.ts        Adding/removing/managing servers
└── everything/                Specs per capability of server-everything
    ├── tools/                 One spec per tool (echo, get-sum, trigger-elicitation-request, trigger-sampling-request, gzip-file-as-resource, ...)
    ├── resources/              One spec per resource (architecture, features, how-it-works, ...)
    └── prompts/                One spec per prompt (simple, args, completable, resource)

The everything/ specs map roughly 1:1 to server-everything’s exposed capabilities — when the fixture server gains a new tool/resource/prompt, a corresponding spec is expected alongside it.

What this suite is good for

  • Regression coverage on core flows — connecting a server, invoking a tool, reading a resource, rendering a prompt, handling elicitation/sampling requests — all against a real MCP connection.
  • Verifying protocol-level features — since server-everything deliberately exercises things like elicitation and sampling, the e2e suite is where those flows get true end-to-end coverage (UI → IPC → main-process MCP client → real server → back).
  • See Dev Setup for other available scripts (npm test, npm run typecheck, etc.).
  • See Project Structure for where e2e/ sits relative to the rest of the repo.

Edit this page on GitHub