用途:为 RedisInsight 提供基于 Playwright 的端到端测试标准,统一测试结构、页面对象、fixtures 与导航方式,并减少不稳定测试。
主要能力与结构:所有 E2E 测试位于 tests/e2e-playwright/,是独立包,不导入 redisinsight/ui/ 或 redisinsight/api/。目录含 TEST_PLAN.md(覆盖状态与实现顺序)、config/、fixtures/、helpers/、pages/(页面对象,含 BasePage、InstancePage、components 与按功能划分的页面)、test-data/、tests/、types/。测试按项目组织:main/(默认并行)、auto-update/、electron/。
执行模式:文件夹决定执行方式。chromium-parallel 与 electron-parallel 对应 tests/parallel/;chromium-serial 与 electron-serial 对应 tests/serial/。串行项目通过 dependencies 依赖并行项目,先并行后串行。串行测试会对共享 RTE Redis 执行破坏性操作(如 FLUSHDB、deleteAllIndexes),Electron 因固定端口 5530 也不能并发运行两个项目。
运行命令:在 tests/e2e-playwright 下执行,如 npx playwright test、npx playwright test --project=chromium-parallel、npx playwright test --project=chromium-serial --no-deps、npx playwright test --project=electron-parallel、npx playwright test --project=electron-serial --no-deps,以及 ENV=ci npx playwright test、ENV=staging npx playwright test。
页面对象与测试写法:页面对象无状态,不保存数据库对象,导航方法传入 databaseId。BasePage 用于独立页面,InstancePage 用于数据库实例内页面。测试用 beforeAll 经 API 建库、afterAll 清理、beforeEach 用 goto(databaseId) 导航,测试签名中声明所需 fixtures。避免直接 page.goto(),否则 Electron 模式失败。
测试数据与清理:使用 fishery 与 faker 工厂,数据以 test- 前缀标识,但不可按前缀批量清理;用 createKeyTracker 跟踪并只删除本测试创建的数据。数据库由各 spec 在 afterAll 自行删除。
UI 探索与选择器:写测试前先用 Playwright MCP 探索 UI,发现 data-testid、角色、可访问名称、占位符等,再用于页面对象定位器。
限制与注意:不使用固定超时、动态内容 CSS 选择器、硬编码数据;不导入应用源码;测试需同时兼容浏览器与 Electron 模式。资料未提供具体收费、价格或平台信息。