用途
e2e-tester 用于为 Redpanda Console 编写和运行基于 Playwright 的端到端(E2E)测试。测试针对通过 testcontainers 在 Docker 容器中运行的完整 Redpanda Console 技术栈执行。
适用场景包括:
- 测试包含两个及以上步骤的用户旅程(例如登录 → 操作 → 验证)
- 多页面工作流
- 使用 Playwright 进行浏览器自动化
不适用场景:组件单元测试应使用 testing 技能。
主要能力
- 使用 Playwright 编写 E2E 测试,覆盖多步骤、多页面用户流程
- 通过 testcontainers 管理容器,启动完整 Redpanda Console 技术栈
- 分析测试失败,并借助 Task 工具与 MCP Playwright 代理进行调试
- 在缺少语义化选择器时,为组件补充 data-testid 属性
- 提升测试稳定性,避免脆弱选择器与硬编码等待
- 通过 afterEach 调用清理 API 端点,清理测试数据
使用方式
关键规则
始终(ALWAYS):
- 在运行 E2E 测试前执行
bun run build(前端资源为必需) - 使用 testcontainers API 管理容器(测试中绝不使用手动 docker 命令)
- 使用
page.getByRole()和page.getByLabel()选择器(避免 CSS 选择器) - 当语义化选择器不可用时,添加 data-testid 属性
- 使用 Task 工具配合 MCP Playwright 代理分析失败
- 使用 afterEach 调用清理 API 端点来清理测试数据
绝不(NEVER):
- 测试 UI 组件渲染(应使用单元/集成测试)
- 使用脆弱的 CSS 选择器,如
.class-name或#id - 在
.click()上使用force:true,或使用waitForTimeout - 硬编码等待时间(应使用带条件的
waitFor) - 测试失败后遗留运行中的容器
- 将测试截图提交到 git
命令
bun run build # 构建前端(必须先执行!)
bun run e2e-test # 运行 OSS E2E 测试
bun run e2e-test-enterprise # 运行 Enterprise E2E 测试
bun run e2e-test:ui # Playwright UI 模式(调试)
bun run e2e-test tests/topics/create-topic.spec.ts # 运行指定文件
测试架构
- OSS 模式(
bun run e2e-test):Redpanda + Backend + OwlShop 容器 - Enterprise 模式(
bun run e2e-test-enterprise):在 OSS 基础上增加 RBAC、SSO(需要 console-enterprise 仓库) - 文件位置:
tests/<feature>/*.spec.ts
选择器优先级
getByRole()—— 最适合可访问性getByLabel()—— 用于表单输入getByText()—— 用于内容验证getByTestId()—— 当语义化选择器不清晰时- CSS 选择器 —— 尽可能避免
测试 ID 命名
- 使用 kebab-case:
data-testid="feature-action-element" - 具体化:包含功能名 + 动作 + 元素类型
- 动态:
data-testid={item-delete-${id}}
参考资料
- Container Setup —— Testcontainer 生命周期、配置、CI 设置
- Test Patterns —— 多步骤工作流、表单、表格、API 测试
- Failure Analysis —— 错误模式、调试、MCP Playwright 代理
输出
完成工作后:
- 确认前端构建成功
- 验证所有 E2E 测试通过
- 记录添加到组件中的任何新测试 ID
- 说明测试容器的清理情况
限制
- 不用于测试 UI 组件渲染,此类测试应使用单元/集成测试
- Enterprise 模式需要 console-enterprise 仓库
- 运行 E2E 测试前必须先构建前端资源
- 关于收费、价格、平台支持范围等信息,资料中暂未提供