# How the TestDino Plugin Integrates with Playwright: MCP Architecture and Audit Workflows

> Discover how the TestDino plugin integrates with Playwright using MCP architecture and audit workflows. Learn about its backend APIs and Claude-Code plugin manifest.

- Repository: [Anthropic/claude-plugins-community](https://github.com/anthropics/claude-plugins-community)
- Tags: deep-dive
- Published: 2026-09-04

---

**The TestDino plugin integrates with Playwright through a remote MCP server at `https://mcp.testdino.com`, a Claude-Code plugin manifest, and a Playwright-specific audit skill that routes test analysis requests to TestDino's backend APIs.**

The TestDino plugin for Claude-Code enables automated auditing of Playwright test suites through the Model Context Protocol (MCP). According to the anthropics/claude-plugins-community repository, this integration bridges your Playwright specs with TestDino's analysis backend using three tightly-coupled architectural components that handle server discovery, skill registration, and Playwright-specific tool execution.

## Architecture of the TestDino-Playwright Integration

The integration relies on three core components that work together to expose TestDino's audit capabilities within Claude-Code.

### MCP Server Configuration

The **remote MCP endpoint** (`https://mcp.testdino.com`) brokers all tool calls between Claude-Code and the TestDino backend. This server presents Playwright-specific audit tools including `get_audit_report`, `submit_audit_report`, and the legacy `test_audit` function. As documented in [`testdino/README.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/README.md) (lines 14-22), users register this endpoint by adding a JSON snippet to their Claude-Code client configuration, establishing the communication channel required for all subsequent audit operations.

### Plugin Manifest Declaration

The plugin's [`plugin.json`](https://github.com/anthropics/claude-plugins-community/blob/main/plugin.json) file declares the "testdino" connector and registers the available skill files that become accessible to the AI agent. Located at [`testdino/.claude-plugin/plugin.json`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/.claude-plugin/plugin.json), this manifest lists the **testdino-audit** skill (and other TestDino-related skills) as part of the plugin's public API. This registration makes Playwright-specific audit calls reachable from chat interactions, allowing Claude to recognize when to invoke TestDino functionality.

### Skill Definition and Routing

The `testdino-audit` skill, defined in [`testdino/skills/testdino-audit/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/skills/testdino-audit/SKILL.md) (lines 2-34), contains the declarative logic that tells Claude *when* and *how* to invoke the Playwright audit flow. The skill's description explicitly restricts usage to Playwright test code and handles routing to the MCP-exposed audit tools. It supports both the modern split-tool approach (`get_audit_report` plus `submit_audit_report`) and the legacy single-tool fallback (`test_audit`), ensuring compatibility across different TestDino deployments.

## Step-by-Step Integration Workflow

The TestDino plugin processes Playwright audits through a four-stage pipeline:

1. **MCP Registration** – The user adds the remote MCP entry to their Claude-Code client. When the client initializes, Claude establishes a connection to `https://mcp.testdino.com`.

2. **Plugin Installation** – The user executes marketplace commands to load the TestDino skill set, making the Playwright-aware `testdino-audit` skill available to the agent.

3. **Audit Trigger** – When a user requests a "TestDino audit" on a Playwright spec file, Claude validates the request against the `testdino-audit` skill's Playwright-specific guard clauses. If the request matches, Claude invokes the appropriate MCP tools.

4. **Result Delivery** – The audit report (markdown or JSON) returns to the chat interface, displaying failures, flaky-test history, and remediation suggestions without requiring context switching.

## Configuration and Code Examples

### Configuring the MCP Server

Add the remote MCP server configuration to your Claude-Code client settings once per installation:

```json
{
  "mcpServers": {
    "testdino": {
      "url": "https://mcp.testdino.com"
    }
  }
}

```

*Source:* [`testdino/README.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/README.md), lines 14-22.

### Installing the Plugin

Install the TestDino plugin through Claude-Code's marketplace interface:

```text
/plugin marketplace add testdino-hq/TestDino-Plugins
/plugin install testdino@testdino-plugins

```

*Source:* [`testdino/README.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/README.md), lines 36-41.

### Triggering Playwright Audits

Invoke the audit functionality by referencing Playwright test code in your request:

```text
Run a TestDino audit on this Playwright spec:

// example Playwright test file (example.spec.ts)
import { test, expect } from '@playwright/test';

test('homepage has title', async ({ page }) => {
  await page.goto('https://example.com');
  await expect(page).toHaveTitle(/Example Domain/);
});

```

Claude recognizes the request, loads the `testdino-audit` skill, and calls the appropriate MCP audit tools based on the available API version.

*Source:* [`testdino/skills/testdino-audit/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/skills/testdino-audit/SKILL.md).

### Understanding the Tool Calls

The underlying MCP tool calls follow different patterns depending on server capabilities. For modern TestDino deployments supporting the split-tool API:

```json
{
  "tool": "get_audit_report",
  "action": "context",
  "params": { "projectId": "proj-123", "runId": "run-456" }
}

```

Followed by:

```json
{
  "tool": "submit_audit_report",
  "action": "analyze",
  "params": {
    "projectId": "proj-123",
    "runId": "run-456",
    "markdownReport": "<your analysis>"
  }
}

```

For legacy deployments, Claude falls back to the single-tool approach:

```json
{
  "tool": "test_audit",
  "action": "analyze",
  "params": { "projectId": "...", "runId": "...", "markdownReport": "…" }
}

```

*Source:* [`testdino/skills/testdino-audit/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/skills/testdino-audit/SKILL.md) (tool selection logic).

## Key Files and Their Roles

| File | Purpose |
|------|---------|
| [`testdino/README.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/README.md) | Documents the Playwright integration, MCP configuration JSON, and installation commands. |
| [`testdino/.claude-plugin/plugin.json`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/.claude-plugin/plugin.json) | Declares the plugin name (`testdino`) and registers the skill set including the Playwright-aware audit functionality. |
| [`testdino/skills/testdino-audit/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/skills/testdino-audit/SKILL.md) | Defines the audit skill logic, Playwright-specific guard clauses, and MCP tool invocation rules for both current and legacy APIs. |

## Summary

- The TestDino plugin connects to Playwright through a remote MCP server at `https://mcp.testdino.com` that exposes audit tools.
- Three architectural layers handle the integration: the MCP server configuration, the [`plugin.json`](https://github.com/anthropics/claude-plugins-community/blob/main/plugin.json) manifest, and the `testdino-audit` skill definition.
- The system supports both modern split-tool workflows (`get_audit_report` + `submit_audit_report`) and legacy single-tool (`test_audit`) fallbacks.
- Configuration requires adding the MCP server JSON to Claude-Code, installing the plugin via marketplace commands, and invoking audits through natural language requests containing Playwright code.
- All integration logic is defined in [`testdino/README.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/README.md), [`testdino/.claude-plugin/plugin.json`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/.claude-plugin/plugin.json), and [`testdino/skills/testdino-audit/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/skills/testdino-audit/SKILL.md).

## Frequently Asked Questions

### What is the MCP server URL for the TestDino plugin?

The TestDino plugin uses `https://mcp.testdino.com` as its remote MCP endpoint. This URL is configured in the Claude-Code client settings via the `mcpServers` JSON object, as specified in [`testdino/README.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/README.md) at lines 14-22.

### How does Claude determine if code is Playwright-specific when using TestDino?

The `testdino-audit` skill defined in [`testdino/skills/testdino-audit/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/skills/testdino-audit/SKILL.md) contains explicit guard clauses in its description that restrict the skill to Playwright test files. Claude checks the file content and context against these rules before invoking the audit tools.

### What is the difference between `get_audit_report` and the legacy `test_audit` tool?

The modern API uses a split-tool approach where `get_audit_report` fetches audit context with `action: "context"`, followed by `submit_audit_report` to send the analysis. The legacy `test_audit` tool combines these functions into a single call. The skill definition in [`testdino/skills/testdino-audit/SKILL.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/skills/testdino-audit/SKILL.md) automatically detects which tools are available and uses the appropriate workflow.

### Where do I configure the TestDino MCP server in Claude-Code?

Add the MCP server configuration to your Claude-Code client's settings file using the JSON structure shown in [`testdino/README.md`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/README.md). This registers the `https://mcp.testdino.com` endpoint under the `mcpServers.testdino` key, enabling Claude to establish the connection when starting new chat sessions.