Jayakumar-lab/Enterprise-Playwright-Framework-TypeScript-
GitHub: Jayakumar-lab/Enterprise-Playwright-Framework-TypeScript-
一个基于 TypeScript 的生产级 Playwright 测试框架脚手架,提供覆盖 UI、API、无障碍及视觉回归的多维度自动化测试能力并深度适配 CI/CD 流水线。
Stars: 0 | Forks: 0
# 企业级 Playwright 框架 (TypeScript)
生产级、对 CI 友好的 Playwright Test 框架脚手架,包含 UI E2E、API 测试、组件测试(如适用)、无障碍检查(axe-core)以及视觉回归示例。
## 功能
- **多项目 Playwright 配置**:Chromium/Firefox/WebKit,并行 worker
- **可靠性**:
- 健壮的 locator + 确定性的导航
- 失败时输出 traces/截图/视频
- 重试策略(对 CI 友好)
- 全局 setup hooks
- **框架分层**:
- `src/config` — 环境加载 + 类型安全的 config
- `src/core` — fixtures、日志、correlation id、全局 setup/teardown
- `src/pages` — POM 抽象
- `src/api` — 类型安全的 API client 封装 + schema 校验
- `src/assertions`, `src/utils` — 可复用的 helper(如果存在)
- **测试分类**(通过诸如 `@smoke`、`@api` 等 tag 划分)
- **可观测性产物**:
- `playwright-report/`
- `test-results/`
- 每次测试运行的 trace/视频/截图产物
- **MCP 集成**:
- `/.vscode/mcp.json` 注册了 Playwright MCP server,以支持 Copilot Agent Mode
## 前置条件
- Node.js(推荐 LTS 版本)
- Playwright 浏览器
- (可选)Docker,用于类似网格的执行环境
### 安装浏览器
```
npx playwright install --with-deps
```
## 快速开始
### 1) 安装依赖
```
npm ci
```
### 2) 运行 UI 冒烟测试 (Chromium)
```
npx playwright test src/ui/automationExercise.spec.ts --project=chromium
```
### 3) 运行全套测试(所有项目中的所有测试)
```
npx playwright test
```
### 4) 打开 HTML 报告
```
npx playwright show-report
```
## 配置
### 环境变量
环境由 `src/config/env.ts` / `src/config/app.ts` 加载。
常用变量:
- `BASE_URL` — 覆盖示例测试使用的默认 base URL。
如果未设置 `BASE_URL`,框架将默认使用:
- `https://automationexercise.com/test_cases`
### 敏感信息处理(安全友好)
- Secret 必须通过环境变量提供。
- 不得将任何 secret 提交到代码仓库。
## 仓库结构
关键目录:
- `playwright.config.ts` — Playwright 项目 + reporter + 产物规则
- `src/core` — fixtures、全局 hooks、日志/correlation
- `src/config` — 环境 config + 类型安全的 config 加载器
- `src/pages` — 页面对象模型(selectors/actions/assertions 分离)
- `src/api` — request-context client 封装 + schema 校验
- `src/ui` — UI E2E 示例
- `src/api` — API 示例
- `src/component` — 组件测试示例(隔离 harness)
- `src/accessibility` — axe-core 检查
- `src/visual` — 视觉快照示例
- `/.vscode/mcp.json` — Playwright MCP 注册
## 运行子集
### 列出测试
```
npx playwright test --list
```
### 仅运行 Chromium
```
npx playwright test --project=chromium
```
### 分片执行(示例)
```
npx playwright test --shard=1/3
```
## 产物与调试
失败时,框架配置为输出以下内容:
- **HTML 报告**:`playwright-report/`
- **JUnit**:`test-results/junit/results.xml`
- **单次测试产物**:
- 截图
- 视频
- trace
### 产物位置
- `playwright-report/`
- `test-results/`
- `playwright-artifacts/`
## 添加新测试
### 1) UI E2E 测试 (POM)
模式:
- 在 `src/pages/**` 下创建/扩展页面对象
- 在 `src/ui/**` 下添加测试
- 使用 tag:
- `@smoke`, `@regression`, `@ui` 等
### 2) API 测试
使用 Playwright `request` fixture(通过框架 fixtures 提供)并保持:
- endpoint 封装位于 `src/api/**`
- 通过 `src/api/schemas.ts` 中的 schema 校验进行响应验证
### 3) 无障碍测试
在 `src/accessibility/**` 下添加测试并运行 axe-core 检查。
### 4) 视觉快照测试
使用 snapshot matcher 在 `src/visual/**` 下添加测试。
## 故障排除
### 常见问题
**1) 导航超时 / base URL 错误**
- 确认 `BASE_URL` 设置正确。
- 默认 base URL 为 `https://automationexercise.com/test_cases`。
**2) 缺少 storage state**
- 框架对 storageState 的使用进行了保护,这样在全新环境中如果不存在认证状态也不会失败。
**3) 不稳定的 locator**
- 优先使用稳定的属性(`data-testid`、语义化 role)
- 尽可能避免脆弱的 XPath
- 如果存在动态内容,请使用 Playwright 的确定性等待(例如 `locator.waitFor()`)
### 调试工作流
- 附带 trace 重新运行失败的测试:
```
npx playwright test --project=chromium --trace on
```
- 通过 Playwright 报告从测试输出中打开 trace。
## CI/CD
本仓库包含 CI 配置示例:
- **GitHub Actions**:`/.github/workflows/ci.yml`
- **Azure DevOps**:`/.azure-pipelines/`(如果存在)
- **Jenkins**:`./jenkins/`(如果存在)
### 预期的 CI 行为
- 使用 `npm ci`
- 缓存 `~/.cache/ms-playwright`(或等效的 Playwright 缓存)
- 上传 `test-results/` 和 `playwright-report/`
## MCP:Playwright MCP server (VS Code Copilot Agent Mode)
本仓库包含一个 VS Code MCP 注册文件:
- `/.vscode/mcp.json`
它使用 `@playwright/mcp` 注册了 Playwright MCP,以支持 agent 工作流。
### 如何使用带有 Playwright MCP 的 Copilot Agent Mode
Agent 提示示例:
1. **用户旅程 → 生成 Playwright 测试**
- “导航到 ,使用 登录,创建实体 ,验证 ,生成 Playwright 测试代码。”
2. **基于无障碍访问改进 locator**
- “使用 MCP 工具检查无障碍树 (accessibility tree),并提出稳定的 locator。”
3. **从清单生成冒烟测试套件**
- “根据用户旅程清单生成冒烟测试套件。”
## 合规 / 安全说明
- 切勿提交 secret。
- 如果您添加了请求/响应的日志记录,请确保掩盖敏感值(例如,Authorization header、cookie)。
## 命令参考
- 运行:`npx playwright test`
- 列出:`npx playwright test --list`
- 报告:`npx playwright show-report`
- 打开 JUnit:`test-results/junit/results.xml`
标签:API测试, LNA, MITM代理, Playwright, TypeScript, UI测试, 可访问性测试, 后端开发, 安全插件, 特征检测, 端到端测试, 请求拦截