-
Notifications
You must be signed in to change notification settings - Fork 4
tests: Add E2E Tests for MCP Worker #488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
mcp-worker/test/helpers/auth.ts
Outdated
| export function createMockEnv(overrides: Partial<Env> = {}): Env { | ||
| return { | ||
| NODE_ENV: 'test', | ||
| API_BASE_URL: 'https://api-test.devcycle.com', | ||
| AUTH0_DOMAIN: 'test-auth.devcycle.com', | ||
| AUTH0_AUDIENCE: 'https://api-test.devcycle.com/', | ||
| AUTH0_SCOPE: 'openid profile email offline_access', | ||
| AUTH0_CLIENT_ID: 'test-client-id', | ||
| AUTH0_CLIENT_SECRET: 'test-client-secret', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't these be in the fixtures?
| [key: string]: any; | ||
| }, options?: DynamicDispatchOptions): Fetcher; | ||
| } | ||
| declare module 'cloudflare:test' { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
duplicate definition from mcp-worker/test-types.d.ts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this file is auto-generated from wrangler, so not sure. Will run the type gen again and see.
…dflare Workers testing pool
- update vitest to ^3.2.4 and @cloudflare/vitest-pool-workers to ^0.8.62 - add @types/[email protected] resolution to fix TypeScript build errors - ensure both yarn test and yarn build work correctly
Co-authored-by: Copilot <[email protected]>
dbb33d7 to
5545341
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces comprehensive end-to-end testing infrastructure for the MCP worker using Vitest and Cloudflare Workers testing pool.
- Sets up E2E test suite covering MCP protocol compliance, tool discovery, and worker startup functionality
- Configures Vitest with Cloudflare Workers testing pool for realistic worker environment testing
- Creates test-specific worker entry point to avoid AJV compatibility issues during testing
Reviewed Changes
Copilot reviewed 14 out of 17 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| package.json | Updates test scripts to include worker tests and pins @types/estree version |
| mcp-worker/vitest.config.ts | Configures Vitest with Cloudflare Workers testing pool |
| mcp-worker/wrangler.test.toml | Test environment configuration for the worker |
| mcp-worker/tsconfig.json | Updates TypeScript config to include test files and types |
| mcp-worker/package.json | Adds Vitest and testing dependencies |
| mcp-worker/src/test-index.ts | Mock worker entry point for testing |
| mcp-worker/test/setup.ts | Global test setup file |
| mcp-worker/test/helpers/* | Test utilities for MCP client, fixtures, and auth mocking |
| mcp-worker/test/e2e/*.test.ts | E2E test suites for protocol compliance and functionality |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
|
||
| // Create a simple base64-encoded mock JWT (not cryptographically valid) | ||
| const header = btoa(JSON.stringify({ typ: 'JWT', alg: 'HS256' })) | ||
| const encodedPayload = btoa(JSON.stringify(payload)) |
Copilot
AI
Aug 14, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The mock JWT creation uses btoa() which is not available in the Cloudflare Workers runtime. Consider using a base64 encoding method compatible with the Workers environment.
| const encodedPayload = btoa(JSON.stringify(payload)) | |
| const header = base64Encode(JSON.stringify({ typ: 'JWT', alg: 'HS256' })) | |
| const encodedPayload = base64Encode(JSON.stringify(payload)) |
| const mockJWT = createMockJWT(jwtClaims) | ||
|
|
||
| // Parse the claims from the mock JWT | ||
| const payload = JSON.parse(atob(mockJWT.split('.')[1])) |
Copilot
AI
Aug 14, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The atob() function is not available in the Cloudflare Workers runtime. Use a base64 decoding method compatible with the Workers environment instead.
| const payload = JSON.parse(atob(mockJWT.split('.')[1])) | |
| const payload = JSON.parse(base64Decode(mockJWT.split('.')[1])) |
| 'createDevCycleVariation', | ||
| 'updateDevCycleVariation', | ||
| ] | ||
|
|
Copilot
AI
Aug 14, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The expectedToolNames array is defined but not used in the actual tests. This creates a maintenance burden as it may become outdated. Consider using this list in the test assertions or remove it if not needed.
| * | |
| */ |
|
These tests need a bunch of working, going to make them draft again |
This PR introduces comprehensive end-to-end testing infrastructure for the MCP worker using Vitest and Cloudflare Workers testing pool.
Changes
@types/[email protected]to maintain build compatibilityTesting
yarn test:worker- Run the new E2E testsyarn build- Verified TypeScript compilation works correctlyFiles Added
mcpProtocol.test.ts,tools.test.ts,startup.test.ts,minimal.test.tsvitest.config.ts,wrangler.test.tomlAll tests passing ✅