关于 Assert
Assert 是供编码 Agent 使用的 MCP 服务,可根据自然语言流程生成并运行 Playwright 端到端测试。它在真实 Chromium 浏览器中执行测试,并返回逐步结果和失败截图。
主要功能
- 01生成 Markdown 测试场景
- 02在真实浏览器中运行场景
- 03查看逐步结果和截图
- 04列出已保存场景
适用场景
- 01根据用户流程描述编写测试
- 02运行已保存或临时 E2E 场景
- 03检查失败步骤和截图
MCP 相关
向 MCP 客户端提供四种工具:生成、运行、查看状态和列出 Assert 场景。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cursor | string | 否 | 可选。上一响应中的分页游标。 |
| limit | number | 否 | 可选。返回结果的最大数量。默认值为 20,最大值为 100。 |
| project_id | string | 否 | 可选。按项目 ID 筛选。 |
详细介绍
@assert-click/mcp
适用于 Assert 的 MCP 服务 — 让你的 AI 编码 Agent 无需离开聊天界面,即可生成、运行和检查端到端测试。
用通俗的英语描述用户流程。Assert 会生成 Playwright 测试,在真实浏览器中执行,并返回每个步骤的结果和失败截图 — 所有操作都能通过 Cursor、Claude、Windsurf 或任何兼容 MCP 的 Agent 中的一次工具调用完成。
使用此软件包前,请**在 assert.click 免费注册**,获取 API 密钥和项目 ID。
Agent 可以执行的操作
- 生成 — 描述一个流程,获取可保存并运行的 Markdown 场景
- 运行 — 在真实的 Chromium 浏览器中执行已保存的场景或临时 Markdown
- 检查 — 获取每个步骤的通过/失败状态、错误消息和失败截图 URL
- 列出 — 浏览 API 密钥可见的已保存场景
要求
- Node.js
>=18.17 - 项目专属的 Assert 密钥 — 在 assert.click 获取
设置
1. 在仓库中创建 assert.config.json:
{
"projectApiKey": "assert_project_key_here",
"projectId": "project_123"
}
2. 将 MCP 服务添加到 Agent 配置中:
{
"mcpServers": {
"assert": {
"command": "npx",
"args": ["-y", "@assert-click/mcp"],
"env": {
"ASSERT_CONFIG": "/absolute/path/to/assert.config.json"
}
}
}
}
就这样。现在你的 Agent 可以使用全部四种 Assert 工具。
私有 URL
默认情况下,会阻止 localhost、127.0.0.1 以及局域网或 VPN IP 地址等目标。
除非运行 Assert 的机器已专门配置为允许私有目标,否则请使用公共 URL:
ALLOW_PRIVATE_TARGETS=true
在运行 Assert 的机器或进程上设置此项。不要将其放入 assert.config.json。
环境变量
ASSERT_API_KEY:API 密钥(可替代将密钥存储在assert.config.json中)ASSERT_PROJECT_ID:可选的默认项目 IDASSERT_CONFIG:可选的配置文件或目录路径
配置文件
MCP 服务会从当前目录开始,逐级向上查找以下文件:
assert.config.jsonassert.config.local.json
assert.config.local.json 中的配置会合并到 assert.config.json 之上。
如果你更愿意使用基于环境变量的密钥,而不是提交密钥:
{
"projectApiKeyEnv": "ASSERT_API_KEY",
"projectId": "project_123"
}
工具
assert_generate
根据通俗英语描述生成 Markdown 场景。
输入:
description: string— 用户应能够执行的操作url: string— 起始 URLproject_id?: stringsave?: boolean— 保存到项目(默认为 false)
返回:
{
"scenario_id": "scenario_123",
"markdown": "URL: https://example.com/login\nSCENARIO: Login\nPROCESS:\n - Fill \"email\" with \"[email protected]\"\nEXPECT: Dashboard",
"saved": true
}
assert_run
在真实浏览器中执行已保存的场景或临时 Markdown。
输入:
scenario_id?: stringmarkdown?: stringproject_id?: stringrequest_id?: string
必须且只能提供 scenario_id 或 markdown 中的一个。
返回:
{
"run_id": "run_123",
"status": "queued",
"estimated_duration_seconds": null
}
assert_status
获取某次运行中每个步骤的结果。
输入:
run_id: string
返回:
{
"run_id": "run_123",
"status": "passed",
"duration_ms": 4200,
"steps": [
{
"description": "Fill email",
"status": "passed",
"error": null,
"screenshot_url": null
}
],
"failure_summary": null,
"full_log_url": null
}
assert_list
列出 API 密钥可见的已保存场景。
输入:
project_id?: stringcursor?: stringlimit?: number
project_id 目前保留用于未来支持筛选。当前 API 会列出 API 密钥可见的所有场景。
返回:
{
"scenarios": [
{
"id": "scenario_123",
"name": "Login flow",
"project_id": null,
"last_run_status": "passed",
"last_run_at": "2026-03-31T10:00:00.000Z",
"url": "https://example.com/login"
}
],
"next_cursor": null
}
错误
错误以结构化 JSON 的形式返回:
{
"error": {
"code": "INVALID_API_KEY",
"message": "The ASSERT_API_KEY is invalid or missing.",
"field": null
}
}
常见代码:
INVALID_API_KEYSCENARIO_NOT_FOUNDRUN_NOT_FOUNDVALIDATION_ERRORUPSTREAM_ERROR
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。