openspec-playwright 0.3.56 → 0.3.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -2
- package/README.zh-CN.md +20 -2
- package/dist/commands/doctor.js +112 -9
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/update.js +1 -1
- package/dist/commands/update.js.map +1 -1
- package/employee-standards.md +8 -0
- package/package.json +2 -2
- package/dist/commands/mcpSync.d.ts +0 -27
- package/dist/commands/mcpSync.js +0 -164
- package/dist/commands/mcpSync.js.map +0 -1
- package/dist/commands/run.d.ts +0 -34
- package/dist/commands/run.js +0 -270
- package/dist/commands/run.js.map +0 -1
- package/dist/utils/mcp-tools.d.ts +0 -23
- package/dist/utils/mcp-tools.js +0 -130
- package/dist/utils/mcp-tools.js.map +0 -1
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ The command id is hyphenated per the OpenSpec convention; the body is rewritten
|
|
|
45
45
|
```bash
|
|
46
46
|
openspec-pw init # Initialize integration (one-time setup)
|
|
47
47
|
openspec-pw update # Update CLI and commands to latest version
|
|
48
|
-
openspec-pw doctor # Check prerequisites + app server diagnostics
|
|
48
|
+
openspec-pw doctor # Check prerequisites (Node, Playwright, OpenSpec, config, tests) + app server diagnostics
|
|
49
49
|
openspec-pw audit # Audit tests for orphaned specs and issues
|
|
50
50
|
openspec-pw coverage # Analyze spec–test coverage for changes
|
|
51
51
|
openspec-pw flake # Detect static flake patterns in test files
|
|
@@ -135,6 +135,25 @@ Run through these steps in order when using the E2E workflow for the first time:
|
|
|
135
135
|
| 8. Configure auth (if needed) | See "Authentication" below | Debug with `npx playwright test --project=setup` |
|
|
136
136
|
| 9. Run first E2E | `/opsx:e2e <change-name>` (Claude) or `/opsx-e2e <change-name>` (OpenCode) | Check `openspec/reports/` for the report |
|
|
137
137
|
|
|
138
|
+
### What `openspec-pw doctor` checks
|
|
139
|
+
|
|
140
|
+
`openspec-pw doctor` verifies prerequisites across 8 categories and exits non-zero if any **required** check fails.
|
|
141
|
+
|
|
142
|
+
| Category | Required checks | Optional checks |
|
|
143
|
+
|---|---|---|
|
|
144
|
+
| **Node.js** | `node` version | `engines` compatibility (vs `package.json`) |
|
|
145
|
+
| **npm** | `npm` availability | — |
|
|
146
|
+
| **Playwright Config** | config file exists (`ts`/`js`/`mjs`/`mts`) | — |
|
|
147
|
+
| **OpenSpec** | directory initialized | `.spec.md` specs count |
|
|
148
|
+
| **Playwright Browsers** | CLI version, Chromium binary downloaded | — |
|
|
149
|
+
| **Playwright Test** | `@playwright/test` framework installed | — |
|
|
150
|
+
| **Playwright MCP** | configured for each detected editor | — |
|
|
151
|
+
| **Tests** | `tests/playwright/` directory exists | `auth.setup.ts` presence |
|
|
152
|
+
| **Seed Test** | — | `seed.spec.ts` presence |
|
|
153
|
+
| **App Server** | — | dev script, base URL, reachability |
|
|
154
|
+
|
|
155
|
+
Run with `--json` for machine-readable output.
|
|
156
|
+
|
|
138
157
|
**Optional — enhance your AI coding assistant with Superpowers methodology:**
|
|
139
158
|
|
|
140
159
|
| Step | Command | If it fails |
|
|
@@ -213,7 +232,6 @@ Templates (in npm package, installed to tests/playwright/)
|
|
|
213
232
|
CLI (openspec-pw)
|
|
214
233
|
├── init → Installs commands & templates
|
|
215
234
|
├── update → Syncs commands & templates from npm
|
|
216
|
-
├── run → Executes E2E tests with server lifecycle
|
|
217
235
|
├── migrate → Migrates old test files to new structure
|
|
218
236
|
├── audit → Audits tests for orphaned specs and issues
|
|
219
237
|
├── coverage → Analyzes spec–test coverage for changes
|
package/README.zh-CN.md
CHANGED
|
@@ -68,7 +68,7 @@ openspec-pw init # 安装 Playwright E2E 集成
|
|
|
68
68
|
```bash
|
|
69
69
|
openspec-pw init # 初始化集成(一次性设置)
|
|
70
70
|
openspec-pw update # 更新 CLI 和命令到最新版本
|
|
71
|
-
openspec-pw doctor # 检查前置条件 + 应用服务器诊断
|
|
71
|
+
openspec-pw doctor # 检查前置条件 (Node, Playwright, OpenSpec, 配置, 测试) + 应用服务器诊断
|
|
72
72
|
openspec-pw audit # 检查测试文件是否有孤儿文件和配置问题
|
|
73
73
|
openspec-pw coverage # 分析 spec 与测试之间的覆盖率
|
|
74
74
|
openspec-pw flake # 检测测试文件中的静态不稳定模式
|
|
@@ -134,6 +134,25 @@ openspec-pw uninstall # 移除项目中的集成
|
|
|
134
134
|
| 8. 配置认证(如需要) | 见下方"认证配置" | `npx playwright test --project=setup` 调试 |
|
|
135
135
|
| 9. 运行第一个 E2E | `/opsx:e2e <change-name>`(Claude)或 `/opsx-e2e <change-name>`(OpenCode) | 查看 `openspec/reports/` 中的报告 |
|
|
136
136
|
|
|
137
|
+
### `openspec-pw doctor` 检查清单
|
|
138
|
+
|
|
139
|
+
`openspec-pw doctor` 在 8 个类别中验证前置条件,**必需**项失败时退出码非零。
|
|
140
|
+
|
|
141
|
+
| 类别 | 必需检查项 | 可选检查项 |
|
|
142
|
+
|---|---|---|
|
|
143
|
+
| **Node.js** | `node` 版本 | `engines` 兼容性(对比 `package.json`) |
|
|
144
|
+
| **npm** | `npm` 可用性 | — |
|
|
145
|
+
| **Playwright 配置** | 配置文件存在(`ts`/`js`/`mjs`/`mts`) | — |
|
|
146
|
+
| **OpenSpec** | 目录已初始化 | `.spec.md` 规范文件数量 |
|
|
147
|
+
| **Playwright 浏览器** | CLI 版本、Chromium 二进制已下载 | — |
|
|
148
|
+
| **Playwright 测试框架** | `@playwright/test` 已安装 | — |
|
|
149
|
+
| **Playwright MCP** | 每个检测到的编辑器均已配置 | — |
|
|
150
|
+
| **测试目录** | `tests/playwright/` 目录存在 | `auth.setup.ts` 是否存在 |
|
|
151
|
+
| **种子测试** | — | `seed.spec.ts` 是否存在 |
|
|
152
|
+
| **应用服务器** | — | 开发脚本、基础 URL、可达性 |
|
|
153
|
+
|
|
154
|
+
加 `--json` 参数输出机器可读格式。
|
|
155
|
+
|
|
137
156
|
**可选 — 用 Superpowers 增强 AI 编码助手:**
|
|
138
157
|
|
|
139
158
|
| 步骤 | 命令 | 失败时快速修复 |
|
|
@@ -186,7 +205,6 @@ npx playwright test --project=setup
|
|
|
186
205
|
CLI (openspec-pw)
|
|
187
206
|
├── init → 安装命令和模板
|
|
188
207
|
├── update → 从 npm 同步命令和模板
|
|
189
|
-
├── run → 执行 E2E 测试并管理服务器生命周期
|
|
190
208
|
├── migrate → 迁移旧测试文件到新目录结构
|
|
191
209
|
├── audit → 检查测试文件是否有孤儿文件和配置问题
|
|
192
210
|
├── coverage → 分析 spec 与测试之间的覆盖率
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync } from "fs";
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "fs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { join } from "path";
|
|
4
4
|
import { execFileSync } from "child_process";
|
|
@@ -8,6 +8,8 @@ import { detectAppServer, isPlaywrightMcpInstalled, needsShell } from "../shared
|
|
|
8
8
|
export async function doctor(options = {}) {
|
|
9
9
|
const checks = [];
|
|
10
10
|
const projectRoot = process.cwd();
|
|
11
|
+
let nodeMajor = 0;
|
|
12
|
+
let nodeVersion = "";
|
|
11
13
|
// Node.js
|
|
12
14
|
try {
|
|
13
15
|
const node = execFileSync("node", ["--version"], {
|
|
@@ -15,8 +17,9 @@ export async function doctor(options = {}) {
|
|
|
15
17
|
shell: needsShell,
|
|
16
18
|
}).trim();
|
|
17
19
|
const majorMatch = node.match(/v?(\d+)\./);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
nodeMajor = majorMatch ? parseInt(majorMatch[1], 10) : 0;
|
|
21
|
+
nodeVersion = node;
|
|
22
|
+
const deprecated = nodeMajor > 0 && nodeMajor < 22;
|
|
20
23
|
checks.push({
|
|
21
24
|
category: "Node.js",
|
|
22
25
|
name: "node",
|
|
@@ -34,6 +37,33 @@ export async function doctor(options = {}) {
|
|
|
34
37
|
message: "not found",
|
|
35
38
|
});
|
|
36
39
|
}
|
|
40
|
+
// Node.js engines compatibility
|
|
41
|
+
let engineOk = true;
|
|
42
|
+
let engineMsg = "no engines.node requirement";
|
|
43
|
+
try {
|
|
44
|
+
const pkgPath = join(projectRoot, "package.json");
|
|
45
|
+
if (existsSync(pkgPath)) {
|
|
46
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
47
|
+
if (pkg.engines?.node) {
|
|
48
|
+
const req = pkg.engines.node;
|
|
49
|
+
engineMsg = `requires ${req}`;
|
|
50
|
+
const minMatch = req.match(/>=?\s*(\d+)/);
|
|
51
|
+
if (minMatch && nodeMajor > 0 && nodeMajor < parseInt(minMatch[1], 10)) {
|
|
52
|
+
engineOk = false;
|
|
53
|
+
engineMsg = `requires ${req}, current is ${nodeVersion}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// ignore parse errors
|
|
60
|
+
}
|
|
61
|
+
checks.push({
|
|
62
|
+
category: "Node.js",
|
|
63
|
+
name: "engines",
|
|
64
|
+
ok: engineOk,
|
|
65
|
+
message: engineMsg,
|
|
66
|
+
});
|
|
37
67
|
// npm
|
|
38
68
|
try {
|
|
39
69
|
const npm = execFileSync("npm", ["--version"], {
|
|
@@ -55,6 +85,15 @@ export async function doctor(options = {}) {
|
|
|
55
85
|
message: "not found",
|
|
56
86
|
});
|
|
57
87
|
}
|
|
88
|
+
// Playwright Config file
|
|
89
|
+
const configFiles = ["playwright.config.ts", "playwright.config.js", "playwright.config.mjs", "playwright.config.mts"];
|
|
90
|
+
const configPath = configFiles.find((f) => existsSync(join(projectRoot, f)));
|
|
91
|
+
checks.push({
|
|
92
|
+
category: "Playwright Config",
|
|
93
|
+
name: "config",
|
|
94
|
+
ok: Boolean(configPath),
|
|
95
|
+
message: configPath ? `found ${configPath}` : "not found",
|
|
96
|
+
});
|
|
58
97
|
// OpenSpec
|
|
59
98
|
const hasOpenSpec = existsSync(join(projectRoot, "openspec"));
|
|
60
99
|
checks.push({
|
|
@@ -63,7 +102,15 @@ export async function doctor(options = {}) {
|
|
|
63
102
|
ok: hasOpenSpec,
|
|
64
103
|
message: hasOpenSpec ? "initialized" : "not initialized",
|
|
65
104
|
});
|
|
66
|
-
//
|
|
105
|
+
// OpenSpec specs
|
|
106
|
+
const specCount = countSpecFiles(join(projectRoot, "openspec"));
|
|
107
|
+
checks.push({
|
|
108
|
+
category: "OpenSpec",
|
|
109
|
+
name: "specs",
|
|
110
|
+
ok: specCount > 0,
|
|
111
|
+
message: specCount > 0 ? `${specCount} spec(s) found` : "no .spec.md files",
|
|
112
|
+
});
|
|
113
|
+
// Playwright CLI (package installed)
|
|
67
114
|
try {
|
|
68
115
|
const pw = execFileSync("npx", ["playwright", "--version"], {
|
|
69
116
|
encoding: "utf-8",
|
|
@@ -71,7 +118,7 @@ export async function doctor(options = {}) {
|
|
|
71
118
|
}).trim();
|
|
72
119
|
checks.push({
|
|
73
120
|
category: "Playwright Browsers",
|
|
74
|
-
name: "
|
|
121
|
+
name: "cli",
|
|
75
122
|
ok: true,
|
|
76
123
|
message: pw,
|
|
77
124
|
});
|
|
@@ -79,11 +126,33 @@ export async function doctor(options = {}) {
|
|
|
79
126
|
catch {
|
|
80
127
|
checks.push({
|
|
81
128
|
category: "Playwright Browsers",
|
|
82
|
-
name: "
|
|
129
|
+
name: "cli",
|
|
83
130
|
ok: false,
|
|
84
131
|
message: "not installed",
|
|
85
132
|
});
|
|
86
133
|
}
|
|
134
|
+
// Playwright browser binaries installed
|
|
135
|
+
let hasBrowsers = false;
|
|
136
|
+
let browsersMsg = "not installed";
|
|
137
|
+
try {
|
|
138
|
+
execFileSync("node", ["-e", "const {chromium} = require('playwright'); chromium.executablePath()"], {
|
|
139
|
+
encoding: "utf-8",
|
|
140
|
+
shell: needsShell,
|
|
141
|
+
stdio: "pipe",
|
|
142
|
+
timeout: 5000,
|
|
143
|
+
});
|
|
144
|
+
hasBrowsers = true;
|
|
145
|
+
browsersMsg = "chromium installed";
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
browsersMsg = "not installed (run: npx playwright install chromium)";
|
|
149
|
+
}
|
|
150
|
+
checks.push({
|
|
151
|
+
category: "Playwright Browsers",
|
|
152
|
+
name: "browsers",
|
|
153
|
+
ok: hasBrowsers,
|
|
154
|
+
message: browsersMsg,
|
|
155
|
+
});
|
|
87
156
|
// Playwright Test framework (imported by spec files)
|
|
88
157
|
let hasPwTest = false;
|
|
89
158
|
let pwTestMsg = "not installed";
|
|
@@ -132,8 +201,24 @@ export async function doctor(options = {}) {
|
|
|
132
201
|
});
|
|
133
202
|
}
|
|
134
203
|
}
|
|
204
|
+
// Tests directory structure
|
|
205
|
+
const testsDir = join(projectRoot, "tests", "playwright");
|
|
206
|
+
const hasTestsDir = existsSync(testsDir);
|
|
207
|
+
checks.push({
|
|
208
|
+
category: "Tests",
|
|
209
|
+
name: "directory",
|
|
210
|
+
ok: hasTestsDir,
|
|
211
|
+
message: hasTestsDir ? "tests/playwright/ exists" : "not found",
|
|
212
|
+
});
|
|
213
|
+
const hasAuthSetup = existsSync(join(testsDir, "auth.setup.ts"));
|
|
214
|
+
checks.push({
|
|
215
|
+
category: "Tests",
|
|
216
|
+
name: "auth-setup",
|
|
217
|
+
ok: hasAuthSetup,
|
|
218
|
+
message: hasAuthSetup ? "found" : "not found (optional)",
|
|
219
|
+
});
|
|
135
220
|
// Seed test
|
|
136
|
-
const hasSeed = existsSync(join(
|
|
221
|
+
const hasSeed = existsSync(join(testsDir, "seed.spec.ts"));
|
|
137
222
|
checks.push({
|
|
138
223
|
category: "Seed Test",
|
|
139
224
|
name: "seed",
|
|
@@ -165,7 +250,16 @@ export async function doctor(options = {}) {
|
|
|
165
250
|
? `responded ${reachable.status ?? "ok"}`
|
|
166
251
|
: `${reachable.message} (diagnostic only; Playwright webServer may start it)`,
|
|
167
252
|
});
|
|
168
|
-
const
|
|
253
|
+
const OPTIONAL_NAMES = new Set([
|
|
254
|
+
"engines",
|
|
255
|
+
"specs",
|
|
256
|
+
"auth-setup",
|
|
257
|
+
"seed",
|
|
258
|
+
"dev-script",
|
|
259
|
+
"base-url",
|
|
260
|
+
"reachable",
|
|
261
|
+
]);
|
|
262
|
+
const allOk = checks.filter((c) => !c.ok && !OPTIONAL_NAMES.has(c.name)).length === 0;
|
|
169
263
|
if (options.json) {
|
|
170
264
|
console.log(JSON.stringify({ ok: allOk, checks }, null, 2));
|
|
171
265
|
if (!allOk)
|
|
@@ -183,7 +277,7 @@ export async function doctor(options = {}) {
|
|
|
183
277
|
if (check.ok) {
|
|
184
278
|
console.log(chalk.green(` ✓ ${check.name}: ${check.message}`));
|
|
185
279
|
}
|
|
186
|
-
else if (
|
|
280
|
+
else if (OPTIONAL_NAMES.has(check.name)) {
|
|
187
281
|
console.log(chalk.yellow(` ⚠ ${check.name}: ${check.message}`));
|
|
188
282
|
}
|
|
189
283
|
else {
|
|
@@ -227,4 +321,13 @@ async function checkUrl(url) {
|
|
|
227
321
|
};
|
|
228
322
|
}
|
|
229
323
|
}
|
|
324
|
+
function countSpecFiles(dir) {
|
|
325
|
+
try {
|
|
326
|
+
return readdirSync(dir, { recursive: true })
|
|
327
|
+
.filter((f) => String(f).endsWith(".spec.md")).length;
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
return 0;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
230
333
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/update.js
CHANGED
|
@@ -263,7 +263,7 @@ function syncProjectTemplates(tmpDir, projectRoot) {
|
|
|
263
263
|
const latest = readFileSync(seedSrc, "utf-8");
|
|
264
264
|
if (existing !== latest) {
|
|
265
265
|
console.log(chalk.yellow(" ⚠ tests/playwright/seed.spec.ts differs from latest template"));
|
|
266
|
-
console.log(chalk.gray("
|
|
266
|
+
console.log(chalk.gray(" Remove the file and run 'openspec-pw init' to regenerate."));
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
// 4. Sync credentials.yaml — preserve user credentials
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,MAAM,EACN,WAAW,EACX,QAAQ,GACT,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAe/F,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAIQ,CAAC;AAQjD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;IAErE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,6BAA6B;IAC7B,MAAM,UAAU,GACd,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtE,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAC1E,CAAC;QACF,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,aAAa,CACjB,KAAK,EACL,CAAC,SAAS,EAAE,IAAI,EAAE,4BAA4B,CAAC,EAC/C,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAC3E,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACpD,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CACxE,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,6EAA6E;QAC7E,wCAAwC;QACxC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC;gBACH,YAAY,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;oBAClD,KAAK,EAAE,SAAS;oBAChB,GAAG,EAAE,WAAW;oBAChB,KAAK,EAAE,UAAU;iBAClB,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,4DAA4D,CAC7D,CACF,CAAC;gBACF,4DAA4D;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,aAAiC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,aAAa,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,qBAAqB,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,oDAAoD,CACrD,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,oEAAoE,CACrE,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,8CAA8C,CAC/C,CACF,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,aAAa,CACjB,KAAK,EACL,CAAC,SAAS,EAAE,IAAI,EAAE,4BAA4B,CAAC,EAC/C,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAC3E,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,qCAAqC,GAAG,EAAE,CAAC,CACzD,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAC5E,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvC,kEAAkE;YAClE,iEAAiE;YACjE,oCAAoC;YACpC,MAAM,aAAa,CACjB,KAAK,EACL,CAAC,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAC7D,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CACtC,CAAC;YAEF,mCAAmC;YACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC;iBACjC,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAClE;iBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBACnE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEnD,kBAAkB;YAClB,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAEhE,yCAAyC;YACzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;YAC/D,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,qFAAqF,CACtF,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,qDAAqD;YACrD,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE1C,uDAAuD;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAC3D,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACtD,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC;gBACH,MAAM,aAAa,CACjB,KAAK,EACL,CAAC,SAAS,EAAE,IAAI,EAAE,4BAA4B,CAAC,EAC/C,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAC3E,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,IAAI,EAAE,CAAC;gBACd,MAAM,IAAI,GAAG,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;gBACjC,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,KAAK,oCAAoC,CAAC,CACtE,CAAC;oBACF,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC;oBACH,mBAAmB,CAAC,OAAO,CAAC,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC;gBACtE,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,KAAK,oCAAoC,CAAC,CACvE,CAAC;oBACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,6BAA6B,OAAO,CAAC,KAAK,SAAS,CACpD,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEjD,gEAAgE;IAChE,gEAAgE;IAChE,2DAA2D;IAC3D,gEAAgE;IAChE,gDAAgD;IAChD,MAAM,kBAAkB,EAAE,CAAC;IAE3B,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACnD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,+BAA+B,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,kBAAkB;IAC/B,IAAI,eAAmC,CAAC;IACxC,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACpE,YAAY,GAAG,OAAO,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAyB,CAAC;QAC/E,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,eAAe;QAAE,OAAO;IAE7B,IAAI,gBAAoC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CACpC,KAAK,EACL,CAAC,MAAM,EAAE,qBAAqB,EAAE,SAAS,CAAC,EAC1C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CACtC,CAAC;QACF,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;QACrD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,gBAAgB,IAAI,eAAe,KAAK,gBAAgB;QAAE,OAAO;IAEtE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,kCAAkC,eAAe,YAAY,gBAAgB,EAAE,CAChF,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,yCAAyC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,CAC3F,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,wFAAwF,CACzF,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,uEAAuE,CACxE,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,0FAA0F,CAC3F,CACF,CAAC;AACJ,CAAC;AAED,+BAA+B;AAC/B,SAAS,oBAAoB,CAAC,MAAc,EAAE,WAAmB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IAElC,yDAAyD;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAE5D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CACjE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAC/D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAE5D,IAAI,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjE,aAAa,CAAC,gBAAgB,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEhD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,gEAAgE,CACjE,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,wEAAwE,CACzE,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,WAAmB;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAE/E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IAElC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAChE,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO;IAEhC,8BAA8B;IAC9B,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACtC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC,CAAC;IAEnG,uCAAuC;IACvC,MAAM,KAAK,GAAgE,EAAE,CAAC;IAC9E,mEAAmE;IACnE,MAAM,KAAK,GAAG,4EAA4E,CAAC;IAC3F,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YACd,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACzB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,kCAAkC;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,kDAAkD;IAClD,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,KAAK;aACpB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,aAAa,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,QAAQ,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAClF;aACA,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,wCAAwC;QACxC,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,6DAA6D,EAC7D,WAAW,SAAS,MAAM,CAC3B,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,sEAAsE,CAAC,CACpF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/employee-standards.md
CHANGED
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
|
|
19
19
|
**DO**
|
|
20
20
|
- 🔴 **lint + typecheck 每次编辑后自动执行,通过才算成功**。扫源码扩展名判断主语言:.ts/.tsx→ESLint+tsc、.py→ruff+mypy、.go→gofmt+vet。工具不存在时告知用户,不假装跑过
|
|
21
|
+
- 🟡 不隐藏任何 gate 失败结果——lint / typecheck / test 任一失败时,完整输出错误日志并停止,不继续后续步骤
|
|
22
|
+
- ⚪ 未执行的检查步骤明确标注「未运行」,不暗示已通过
|
|
23
|
+
- 🟡 需求理解不清或存在可见风险时,先停下来提问,不直接执行。偏离标准实践需说明理由
|
|
21
24
|
- 🟡 动手前列假设 → 逐条验证。有不清→停下来,说出困惑,再提问
|
|
22
25
|
- 🟡 多解释则全列,更简单方案则提出并坚持
|
|
23
26
|
- 🟡 多步任务先列计划(`1. [Step] → verify: [check]`),循环验证直到成功
|
|
@@ -93,6 +96,11 @@
|
|
|
93
96
|
- 使用格式化工具(ruff fmt / prettier 除外——不改语义)
|
|
94
97
|
- 密钥与 .env 不入版本控制。示例用占位符(如 `YOUR_API_KEY`)。调试日志不打印凭据
|
|
95
98
|
|
|
99
|
+
**Agent 编排**
|
|
100
|
+
- 🔴 每个任务最多 spawn 3 个子 Agent
|
|
101
|
+
- 🔴 禁止嵌套子 Agent(子 Agent 不得再 spawn 子 Agent)
|
|
102
|
+
- 🟡 单文件读取/搜索不要用子 Agent,直接用 Read / Grep 工具
|
|
103
|
+
|
|
96
104
|
---
|
|
97
105
|
|
|
98
106
|
## 5. 大规模任务
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openspec-playwright",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.57",
|
|
4
4
|
"description": "OpenSpec + Playwright E2E verification setup tool for Claude Code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"openspec-pw": "bin/openspec-pw.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "tsc",
|
|
10
|
+
"build": "rm -rf dist/ && tsc",
|
|
11
11
|
"typecheck": "tsc --noEmit",
|
|
12
12
|
"lint": "eslint src/ tests/",
|
|
13
13
|
"lint:fix": "eslint src/ tests/ --fix",
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export declare const MCP_VERSION_MARKER = "<!-- MCP_VERSION:";
|
|
2
|
-
export declare const DEFAULT_HEALER_TOOLS: {
|
|
3
|
-
name: string;
|
|
4
|
-
purpose: string;
|
|
5
|
-
}[];
|
|
6
|
-
/** Extract MCP version from SKILL.md marker */
|
|
7
|
-
export declare function getStoredMcpVersion(skillContent: string): string | null;
|
|
8
|
-
/** Replace the Healer tools table in SKILL.md */
|
|
9
|
-
export declare function updateHealerTable(skillContent: string, version: string, tools: Array<{
|
|
10
|
-
name: string;
|
|
11
|
-
purpose: string;
|
|
12
|
-
}>): string;
|
|
13
|
-
/** Fetch latest @playwright/mcp version from npm registry */
|
|
14
|
-
export declare function getLatestMcpVersion(): Promise<string | null>;
|
|
15
|
-
/**
|
|
16
|
-
* Fetch @playwright/mcp tools from npm package.
|
|
17
|
-
* Downloads the tarball, extracts README, parses tool names.
|
|
18
|
-
*/
|
|
19
|
-
export declare function fetchMcpTools(version: string): Promise<Array<{
|
|
20
|
-
name: string;
|
|
21
|
-
purpose: string;
|
|
22
|
-
}>>;
|
|
23
|
-
/**
|
|
24
|
-
* Sync Healer tools table in SKILL.md with latest @playwright/mcp.
|
|
25
|
-
* Returns true if updated, false if already current or failed.
|
|
26
|
-
*/
|
|
27
|
-
export declare function syncMcpTools(skillDest: string, verbose?: boolean): Promise<boolean>;
|
package/dist/commands/mcpSync.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { exec } from "child_process";
|
|
2
|
-
import { existsSync, readdirSync, readFileSync, writeFileSync, mkdirSync, rmSync, } from "fs";
|
|
3
|
-
import { join } from "path";
|
|
4
|
-
import { tmpdir } from "os";
|
|
5
|
-
import { promisify } from "util";
|
|
6
|
-
import chalk from "chalk";
|
|
7
|
-
import * as tar from "tar";
|
|
8
|
-
export const MCP_VERSION_MARKER = "<!-- MCP_VERSION:";
|
|
9
|
-
export const DEFAULT_HEALER_TOOLS = [
|
|
10
|
-
{ name: "browser_navigate", purpose: "Go to the failing test's page" },
|
|
11
|
-
{
|
|
12
|
-
name: "browser_snapshot",
|
|
13
|
-
purpose: "Get page structure to find equivalent selectors",
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
name: "browser_console_messages",
|
|
17
|
-
purpose: "Diagnose JS errors that may cause failures",
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
name: "browser_take_screenshot",
|
|
21
|
-
purpose: "Visually compare before/after fixes",
|
|
22
|
-
},
|
|
23
|
-
{ name: "browser_run_code", purpose: "Execute custom fix logic (optional)" },
|
|
24
|
-
];
|
|
25
|
-
/** Extract MCP version from SKILL.md marker */
|
|
26
|
-
export function getStoredMcpVersion(skillContent) {
|
|
27
|
-
const idx = skillContent.indexOf(MCP_VERSION_MARKER);
|
|
28
|
-
if (idx === -1)
|
|
29
|
-
return null;
|
|
30
|
-
const end = skillContent.indexOf(" -->", idx);
|
|
31
|
-
return skillContent.slice(idx + MCP_VERSION_MARKER.length, end).trim();
|
|
32
|
-
}
|
|
33
|
-
/** Remove all existing MCP_VERSION comment lines from content */
|
|
34
|
-
function removeMcpVersionMarkers(content) {
|
|
35
|
-
return content
|
|
36
|
-
.split("\n")
|
|
37
|
-
.filter((line) => !line.trim().startsWith(MCP_VERSION_MARKER))
|
|
38
|
-
.join("\n");
|
|
39
|
-
}
|
|
40
|
-
/** Build the Healer tools table markdown */
|
|
41
|
-
function buildHealerTable(version, tools) {
|
|
42
|
-
const rows = tools.map((t) => `| \`${t.name}\` | ${t.purpose} |`).join("\n");
|
|
43
|
-
return `${MCP_VERSION_MARKER} ${version} -->\n\n| Tool | Purpose |\n|------|---------|\n${rows}`;
|
|
44
|
-
}
|
|
45
|
-
/** Replace the Healer tools table in SKILL.md */
|
|
46
|
-
export function updateHealerTable(skillContent, version, tools) {
|
|
47
|
-
const noMarkers = removeMcpVersionMarkers(skillContent);
|
|
48
|
-
const start = noMarkers.indexOf("| Tool | Purpose |");
|
|
49
|
-
if (start === -1)
|
|
50
|
-
return skillContent;
|
|
51
|
-
let end = noMarkers.indexOf("\n\n", start);
|
|
52
|
-
if (end === -1)
|
|
53
|
-
end = noMarkers.length;
|
|
54
|
-
const before = noMarkers.slice(0, start);
|
|
55
|
-
const after = noMarkers.slice(end);
|
|
56
|
-
return before + buildHealerTable(version, tools) + after;
|
|
57
|
-
}
|
|
58
|
-
/** Fetch latest @playwright/mcp version from npm registry */
|
|
59
|
-
export function getLatestMcpVersion() {
|
|
60
|
-
return new Promise((resolve) => {
|
|
61
|
-
exec("npm show @playwright/mcp version --json", { timeout: 15000 }, (err, stdout) => {
|
|
62
|
-
if (err) {
|
|
63
|
-
resolve(null);
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
try {
|
|
67
|
-
resolve(JSON.parse(stdout.trim()));
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
resolve(null);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
const execAsync = promisify(exec);
|
|
76
|
-
/** Extract a .tgz tarball to a destination directory (cross-platform) */
|
|
77
|
-
async function extractTarball(tarballPath, destDir) {
|
|
78
|
-
rmSync(destDir, { recursive: true, force: true });
|
|
79
|
-
mkdirSync(destDir, { recursive: true });
|
|
80
|
-
await tar.extract({ file: tarballPath, cwd: destDir, strip: 1 });
|
|
81
|
-
}
|
|
82
|
-
/** Parse README markdown to extract browser_* tool entries */
|
|
83
|
-
function parseMcpReadme(content) {
|
|
84
|
-
const tools = [];
|
|
85
|
-
const re = /-\s+\*\*`?([^`*\n]+)`?\*\*\s*-\s*Title:\s*([^\n]+)/g;
|
|
86
|
-
let m;
|
|
87
|
-
while ((m = re.exec(content)) !== null) {
|
|
88
|
-
const name = m[1].trim();
|
|
89
|
-
if (name.startsWith("browser_")) {
|
|
90
|
-
const purpose = m[2].trim().replace(/\.$/, "");
|
|
91
|
-
tools.push({ name, purpose });
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (tools.length === 0) {
|
|
95
|
-
console.error("[openspec-pw] Warning: @playwright/mcp README format changed, no tools parsed. Healer will use default tools.");
|
|
96
|
-
}
|
|
97
|
-
return tools;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Fetch @playwright/mcp tools from npm package.
|
|
101
|
-
* Downloads the tarball, extracts README, parses tool names.
|
|
102
|
-
*/
|
|
103
|
-
export async function fetchMcpTools(version) {
|
|
104
|
-
const tmpDir = join(tmpdir(), `openspec-pw-mcp-${version}`);
|
|
105
|
-
try {
|
|
106
|
-
await execAsync(`npm pack @playwright/mcp@${version} --pack-destination ${tmpDir}`, { timeout: 30000 });
|
|
107
|
-
const tgzFiles = readdirSync(tmpDir).filter((f) => f.startsWith("playwright-mcp-") && f.endsWith(".tgz"));
|
|
108
|
-
if (tgzFiles.length === 0)
|
|
109
|
-
return [];
|
|
110
|
-
const tarballPath = join(tmpDir, tgzFiles[0]);
|
|
111
|
-
const extractDir = join(tmpDir, "pkg");
|
|
112
|
-
await extractTarball(tarballPath, extractDir);
|
|
113
|
-
const readmePath = join(extractDir, "README.md");
|
|
114
|
-
const content = existsSync(readmePath)
|
|
115
|
-
? readFileSync(readmePath, "utf-8")
|
|
116
|
-
: "";
|
|
117
|
-
rmSync(tmpDir, { recursive: true, force: true });
|
|
118
|
-
return parseMcpReadme(content);
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
console.log(chalk.yellow(" ⚠ Failed to fetch MCP tools — using default set"));
|
|
122
|
-
return [];
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Sync Healer tools table in SKILL.md with latest @playwright/mcp.
|
|
127
|
-
* Returns true if updated, false if already current or failed.
|
|
128
|
-
*/
|
|
129
|
-
export async function syncMcpTools(skillDest, verbose = false) {
|
|
130
|
-
const latestVersion = await getLatestMcpVersion();
|
|
131
|
-
if (!latestVersion) {
|
|
132
|
-
if (verbose)
|
|
133
|
-
console.log(chalk.yellow(" ⚠ Could not fetch latest @playwright/mcp version"));
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
if (!existsSync(skillDest)) {
|
|
137
|
-
if (verbose)
|
|
138
|
-
console.log(chalk.gray(" - SKILL.md not found, skipping MCP sync"));
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
const skillContent = readFileSync(skillDest, "utf-8");
|
|
142
|
-
const storedVersion = getStoredMcpVersion(skillContent);
|
|
143
|
-
if (storedVersion === latestVersion) {
|
|
144
|
-
if (verbose)
|
|
145
|
-
console.log(chalk.gray(` - Healer tools current (${latestVersion})`));
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
if (verbose)
|
|
149
|
-
console.log(chalk.blue(` - Updating from ${storedVersion ?? "unknown"} → ${latestVersion}`));
|
|
150
|
-
const tools = await fetchMcpTools(latestVersion);
|
|
151
|
-
const toolSet = tools.length > 0 ? tools : DEFAULT_HEALER_TOOLS;
|
|
152
|
-
const updated = updateHealerTable(skillContent, latestVersion, toolSet);
|
|
153
|
-
writeFileSync(skillDest, updated);
|
|
154
|
-
if (verbose) {
|
|
155
|
-
if (tools.length > 0) {
|
|
156
|
-
console.log(chalk.green(` ✓ Healer tools synced to ${latestVersion} (${tools.length} tools)`));
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
console.log(chalk.green(` ✓ Healer tools synced to ${latestVersion} (default set)`));
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return true;
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=mcpSync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcpSync.js","sourceRoot":"","sources":["../../src/commands/mcpSync.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/run.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export interface RunOptions {
|
|
2
|
-
project?: string;
|
|
3
|
-
timeout?: number;
|
|
4
|
-
json?: boolean;
|
|
5
|
-
grep?: string;
|
|
6
|
-
smoke?: boolean;
|
|
7
|
-
workers?: number;
|
|
8
|
-
appBugs?: number;
|
|
9
|
-
healed?: number;
|
|
10
|
-
raft?: number;
|
|
11
|
-
escalated?: number;
|
|
12
|
-
headed?: boolean;
|
|
13
|
-
updateSnapshots?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export declare function run(changeName: string, options: RunOptions): Promise<void>;
|
|
16
|
-
interface TestResults {
|
|
17
|
-
total: number;
|
|
18
|
-
passed: number;
|
|
19
|
-
failed: number;
|
|
20
|
-
duration: string;
|
|
21
|
-
authRequired?: boolean;
|
|
22
|
-
appBugCount?: number;
|
|
23
|
-
healedCount?: number;
|
|
24
|
-
raftCount?: number;
|
|
25
|
-
escalatedCount?: number;
|
|
26
|
-
tests: Array<{
|
|
27
|
-
name: string;
|
|
28
|
-
status: "passed" | "failed";
|
|
29
|
-
screenshot?: string;
|
|
30
|
-
failureType?: string;
|
|
31
|
-
}>;
|
|
32
|
-
}
|
|
33
|
-
export declare function parsePlaywrightOutput(output: string): TestResults;
|
|
34
|
-
export {};
|
package/dist/commands/run.js
DELETED
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from "child_process";
|
|
2
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
3
|
-
import { join } from "path";
|
|
4
|
-
import chalk from "chalk";
|
|
5
|
-
import { needsShell } from "../shared/index.js";
|
|
6
|
-
import { detectAdapters } from "./editors.js";
|
|
7
|
-
const REPORTS_DIR = "openspec/reports";
|
|
8
|
-
export async function run(changeName, options) {
|
|
9
|
-
console.log(chalk.blue(`\n🔍 OpenSpec Playwright E2E: ${changeName}\n`));
|
|
10
|
-
const projectRoot = process.cwd();
|
|
11
|
-
// Validate changeName to prevent path traversal
|
|
12
|
-
if (changeName !== "all" && (changeName.includes("/") || changeName.includes("\\") || changeName.includes(".."))) {
|
|
13
|
-
console.log(chalk.red(` ✗ Invalid change name: ${changeName}`));
|
|
14
|
-
console.log(chalk.gray(" Change name cannot contain path separators or '..'.\n"));
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
// 1. Verify test file exists
|
|
18
|
-
const testFileName = changeName === "all"
|
|
19
|
-
? "app-all.spec.ts"
|
|
20
|
-
: `${changeName}.spec.ts`;
|
|
21
|
-
const testFile = join(projectRoot, "tests", "playwright", changeName === "all" ? testFileName : `changes/${changeName}/${testFileName}`);
|
|
22
|
-
if (!existsSync(testFile)) {
|
|
23
|
-
const testFileDisplayPath = changeName === "all"
|
|
24
|
-
? `tests/playwright/${testFileName}`
|
|
25
|
-
: `tests/playwright/changes/${changeName}/${testFileName}`;
|
|
26
|
-
console.log(chalk.red(` ✗ Test file not found: ${testFileDisplayPath}`));
|
|
27
|
-
const detected = detectAdapters(projectRoot);
|
|
28
|
-
const slashes = detected.length
|
|
29
|
-
? detected
|
|
30
|
-
.map((a) => (a.id === "claude" ? "/opsx:e2e" : "/opsx-e2e"))
|
|
31
|
-
.join(" or ")
|
|
32
|
-
: "/opsx:e2e (Claude) or /opsx-e2e (OpenCode)";
|
|
33
|
-
console.log(chalk.gray(` Run ${slashes} first to generate tests.\n`));
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
// 2. Setup reports dir
|
|
37
|
-
mkdirSync(join(projectRoot, REPORTS_DIR), { recursive: true });
|
|
38
|
-
// 3. Detect auth credentials
|
|
39
|
-
const credsPath = join(projectRoot, "tests", "playwright", "credentials.yaml");
|
|
40
|
-
const hasCredentials = existsSync(credsPath);
|
|
41
|
-
if (!hasCredentials) {
|
|
42
|
-
console.log(chalk.yellow(" ⚠ No credentials.yaml found — tests may fail if auth required"));
|
|
43
|
-
}
|
|
44
|
-
// 4. Run Playwright tests — JSON reporter for structured results + screenshot paths
|
|
45
|
-
console.log(chalk.blue("─── Running Tests ───"));
|
|
46
|
-
const testResultsDir = join(projectRoot, "test-results");
|
|
47
|
-
const jsonReportPath = join(testResultsDir, "results.json");
|
|
48
|
-
const args = [
|
|
49
|
-
"npx",
|
|
50
|
-
"playwright", "test", testFile,
|
|
51
|
-
"--reporter=json",
|
|
52
|
-
"--output=" + testResultsDir,
|
|
53
|
-
];
|
|
54
|
-
if (options.project) {
|
|
55
|
-
args.push("--project=" + options.project);
|
|
56
|
-
}
|
|
57
|
-
// Escape regex special chars in grep to prevent injection.
|
|
58
|
-
// Note: | is escaped too, so grep "a|b" matches the literal string "a|b",
|
|
59
|
-
// not "a OR b". For OR semantics, run two separate commands.
|
|
60
|
-
const escapeGrep = (s) => s.replace(/[.*+?()[\]{}|\\^$]/g, "\\$&");
|
|
61
|
-
if (options.grep && options.smoke) {
|
|
62
|
-
// Match tests containing both @smoke AND the grep pattern (order-flexible: @smoke or pattern may appear first)
|
|
63
|
-
const eg = escapeGrep(options.grep);
|
|
64
|
-
args.push("--grep", `@smoke.*${eg}|${eg}.*@smoke`);
|
|
65
|
-
}
|
|
66
|
-
else if (options.grep) {
|
|
67
|
-
args.push("--grep=" + options.grep);
|
|
68
|
-
}
|
|
69
|
-
else if (options.smoke) {
|
|
70
|
-
args.push("--grep", "@smoke");
|
|
71
|
-
}
|
|
72
|
-
if (options.workers) {
|
|
73
|
-
args.push("--workers=" + options.workers);
|
|
74
|
-
}
|
|
75
|
-
if (options.headed) {
|
|
76
|
-
args.push("--headed");
|
|
77
|
-
}
|
|
78
|
-
if (options.updateSnapshots) {
|
|
79
|
-
args.push("--update-snapshots");
|
|
80
|
-
}
|
|
81
|
-
let testOutput = "";
|
|
82
|
-
try {
|
|
83
|
-
const result = execFileSync(args[0], args.slice(1), { shell: needsShell,
|
|
84
|
-
cwd: projectRoot,
|
|
85
|
-
encoding: "utf-8",
|
|
86
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
87
|
-
timeout: (options.timeout ?? (process.env.OPENSPEC_TIMEOUT ? Number(process.env.OPENSPEC_TIMEOUT) : undefined) ?? 300) * 1000,
|
|
88
|
-
});
|
|
89
|
-
testOutput = result;
|
|
90
|
-
}
|
|
91
|
-
catch (err) {
|
|
92
|
-
const error = err;
|
|
93
|
-
testOutput = (error.stdout ?? "") + (error.stderr ?? "");
|
|
94
|
-
}
|
|
95
|
-
// 5. Parse results from JSON reporter output (authoritative) or fallback to stdout
|
|
96
|
-
const results = parsePlaywrightJsonReport(jsonReportPath) ?? parsePlaywrightOutput(testOutput);
|
|
97
|
-
// 6. Detect port mismatch
|
|
98
|
-
if (testOutput.includes("net::ERR_CONNECTION_REFUSED") ||
|
|
99
|
-
testOutput.includes("listen EADDRINUSE") ||
|
|
100
|
-
testOutput.includes("0.0.0.0:")) {
|
|
101
|
-
console.log(chalk.yellow(" ⚠ Port mismatch detected. Check BASE_URL and webServer port."));
|
|
102
|
-
}
|
|
103
|
-
// 7. Generate markdown report
|
|
104
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, "-").slice(0, 19);
|
|
105
|
-
const reportPath = join(projectRoot, REPORTS_DIR, `playwright-e2e-${changeName}-${timestamp}.md`);
|
|
106
|
-
const reportContent = generateReport(changeName, timestamp, results, options);
|
|
107
|
-
writeFileSync(reportPath, reportContent);
|
|
108
|
-
// 8. Summary
|
|
109
|
-
if (options.json) {
|
|
110
|
-
const output = JSON.stringify({
|
|
111
|
-
change: changeName,
|
|
112
|
-
total: results.total,
|
|
113
|
-
passed: results.passed,
|
|
114
|
-
failed: results.failed,
|
|
115
|
-
duration: results.duration,
|
|
116
|
-
report: reportPath,
|
|
117
|
-
tests: results.tests,
|
|
118
|
-
ok: results.failed === 0,
|
|
119
|
-
}, null, 2);
|
|
120
|
-
console.log(output);
|
|
121
|
-
if (results.failed > 0)
|
|
122
|
-
process.exit(1);
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
console.log(chalk.blue("\n─── Results ───"));
|
|
126
|
-
console.log(` Tests: ${results.total} ` +
|
|
127
|
-
chalk.green(`✓ ${results.passed}`) +
|
|
128
|
-
" " +
|
|
129
|
-
(results.failed > 0
|
|
130
|
-
? chalk.red(`✗ ${results.failed}`)
|
|
131
|
-
: chalk.gray(`✗ ${results.failed}`)) +
|
|
132
|
-
` Duration: ${results.duration}`);
|
|
133
|
-
console.log(chalk.blue("\n─── Report ───"));
|
|
134
|
-
console.log(chalk.green(` ✓ ${reportPath}\n`));
|
|
135
|
-
if (results.failed > 0) {
|
|
136
|
-
console.log(chalk.red(`✗ E2E verification FAILED (${results.failed} tests)`));
|
|
137
|
-
process.exit(1);
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
console.log(chalk.green("✓ E2E verification PASSED"));
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
function parsePlaywrightJsonReport(jsonPath) {
|
|
144
|
-
if (!existsSync(jsonPath))
|
|
145
|
-
return null;
|
|
146
|
-
let raw;
|
|
147
|
-
try {
|
|
148
|
-
raw = JSON.parse(readFileSync(jsonPath, "utf-8"));
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
const data = raw;
|
|
154
|
-
if (!data?.suites?.length)
|
|
155
|
-
return null;
|
|
156
|
-
const results = {
|
|
157
|
-
total: 0,
|
|
158
|
-
passed: 0,
|
|
159
|
-
failed: 0,
|
|
160
|
-
duration: "0s",
|
|
161
|
-
tests: [],
|
|
162
|
-
};
|
|
163
|
-
// Collect duration across all suites
|
|
164
|
-
let totalDurationMs = 0;
|
|
165
|
-
for (const suite of data.suites) {
|
|
166
|
-
for (const test of suite.tests) {
|
|
167
|
-
for (const result of test.results) {
|
|
168
|
-
const status = result.status === "passed" ? "passed" : "failed";
|
|
169
|
-
// Find first screenshot attachment (image/png) if any
|
|
170
|
-
const screenshotAtt = result.attachments.find((a) => a.contentType === "image/png" && a.path);
|
|
171
|
-
results.tests.push({
|
|
172
|
-
name: test.title,
|
|
173
|
-
status,
|
|
174
|
-
screenshot: screenshotAtt?.path ?? undefined,
|
|
175
|
-
});
|
|
176
|
-
results.total++;
|
|
177
|
-
if (status === "passed")
|
|
178
|
-
results.passed++;
|
|
179
|
-
else
|
|
180
|
-
results.failed++;
|
|
181
|
-
totalDurationMs += result.duration;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (results.total > 0 && totalDurationMs > 0) {
|
|
186
|
-
const secs = Math.round(totalDurationMs / 1000);
|
|
187
|
-
results.duration = secs < 60 ? `${secs}s` : `${Math.floor(secs / 60)}m ${secs % 60}s`;
|
|
188
|
-
}
|
|
189
|
-
return results;
|
|
190
|
-
}
|
|
191
|
-
// ─── Fallback: stdout parser ───────────────────────────────────────────────────
|
|
192
|
-
// Parses Playwright's --reporter=list stdout when JSON report is unavailable.
|
|
193
|
-
export function parsePlaywrightOutput(output) {
|
|
194
|
-
const results = {
|
|
195
|
-
total: 0,
|
|
196
|
-
passed: 0,
|
|
197
|
-
failed: 0,
|
|
198
|
-
duration: "0s",
|
|
199
|
-
tests: [],
|
|
200
|
-
};
|
|
201
|
-
// Parse: "✓ my-test (1.2s)" or "✗ my-test (0.5s)"
|
|
202
|
-
const testLineRegex = /([✓✗x]) (.+?) \((\d+(?:\.\d+)?[a-z]+)\)/g;
|
|
203
|
-
let match;
|
|
204
|
-
while ((match = testLineRegex.exec(output)) !== null) {
|
|
205
|
-
const status = match[1] === "✓" ? "passed" : "failed";
|
|
206
|
-
results.tests.push({ name: match[2], status });
|
|
207
|
-
results.total++;
|
|
208
|
-
if (status === "passed")
|
|
209
|
-
results.passed++;
|
|
210
|
-
else
|
|
211
|
-
results.failed++;
|
|
212
|
-
}
|
|
213
|
-
// Parse duration: "N tests ran (1m 30s)" or "1 test ran (5s)"
|
|
214
|
-
const durationMatch = output.match(/\d+ tests? ran \((\d+(?:m\s*\d+)?s?)\)/);
|
|
215
|
-
if (durationMatch)
|
|
216
|
-
results.duration = durationMatch[1];
|
|
217
|
-
return results;
|
|
218
|
-
}
|
|
219
|
-
function generateReport(changeName, timestamp, results, options) {
|
|
220
|
-
const duration = timestamp.replace("T", " ").slice(0, 16);
|
|
221
|
-
const status = results.failed === 0 ? "✅ PASS" : "❌ FAIL";
|
|
222
|
-
const lines = [
|
|
223
|
-
`# E2E Verify Report: ${changeName}`,
|
|
224
|
-
"",
|
|
225
|
-
`**Change**: \`${changeName}\` | **Generated**: ${duration} UTC | **Auth**: ${results.authRequired ? "required" : "none"}`,
|
|
226
|
-
"",
|
|
227
|
-
"## Summary",
|
|
228
|
-
"",
|
|
229
|
-
"| Metric | Value |",
|
|
230
|
-
"|--------|-------|",
|
|
231
|
-
`| Tests Run | ${results.total} |`,
|
|
232
|
-
`| Passed | ${results.passed} |`,
|
|
233
|
-
`| Failed | ${results.failed} |`,
|
|
234
|
-
`| Duration | ${results.duration} |`,
|
|
235
|
-
`| App Bugs (skipped) | ${options.appBugs ?? "—"} |`,
|
|
236
|
-
`| Test Bugs (healed) | ${options.healed ?? "—"} |`,
|
|
237
|
-
`| Flaky/RAFT | ${options.raft ?? "—"} |`,
|
|
238
|
-
`| Human Escalations | ${options.escalated ?? "—"} |`,
|
|
239
|
-
`| Final Status | ${status} |`,
|
|
240
|
-
"",
|
|
241
|
-
];
|
|
242
|
-
if (results.tests.length === 0) {
|
|
243
|
-
lines.push("_(No test output captured — check Playwright configuration)_", "");
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
lines.push("## Test Results", "");
|
|
247
|
-
lines.push("| Test | Status | Failure Type | Healed? | Screenshot |");
|
|
248
|
-
lines.push("|------|--------|------------|---------|-----------|");
|
|
249
|
-
for (const test of results.tests) {
|
|
250
|
-
const icon = test.status === "passed" ? "✅" : "❌";
|
|
251
|
-
const type = test.failureType ?? (test.status === "passed" ? "—" : "pending");
|
|
252
|
-
const healed = test.status === "passed" ? "—" : (test.failureType ? "pending" : "—");
|
|
253
|
-
const screenshot = test.screenshot
|
|
254
|
-
? `[screenshot](${test.screenshot})`
|
|
255
|
-
: "-";
|
|
256
|
-
lines.push(`| ${test.name} | ${icon} ${test.status} | ${type} | ${healed} | ${screenshot} |`);
|
|
257
|
-
}
|
|
258
|
-
lines.push("");
|
|
259
|
-
}
|
|
260
|
-
lines.push("## Failure Classification", "", "_(Populated by Healer after Phase 1/2/3 — see e2e-command.md Step 9)_", "", "| Test | Failure Type | Action | Healed? |", "|------|-------------|--------|---------|", "| ... | ... | ... | ... |", "", "## Auto-Heal Log", "", "_(Populated by Healer — see e2e-command.md Step 9 Phase 2)_", "", "## RAFT Summary", "", "_(If RAFTs detected: mark with test.skip() in suite, investigate infrastructure coupling)_", "", "## Human Escalations", "", "_(If Phase 3 escalations: present 4 options to user, wait for decision)_", "");
|
|
261
|
-
lines.push("## Recommendations", "");
|
|
262
|
-
if (results.failed > 0) {
|
|
263
|
-
lines.push("Review failed tests above.", "For Healer guidance: see e2e-command.md Step 9 — Phase 1 Triage → Phase 2 Repair → Phase 3 Escalate.", "For full interactive reports: `npx playwright show-report`", "");
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
lines.push("All tests passed. No action needed.", "");
|
|
267
|
-
}
|
|
268
|
-
return lines.join("\n");
|
|
269
|
-
}
|
|
270
|
-
//# sourceMappingURL=run.js.map
|
package/dist/commands/run.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/** Record of tool name -> purpose description */
|
|
2
|
-
export interface McpTool {
|
|
3
|
-
name: string;
|
|
4
|
-
title: string;
|
|
5
|
-
description: string;
|
|
6
|
-
purpose: string;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Download and parse the @playwright/mcp README to extract all browser_* tools.
|
|
10
|
-
*/
|
|
11
|
-
export declare function fetchMcpTools(): McpTool[];
|
|
12
|
-
/**
|
|
13
|
-
* Update the Healer MCP tools table in SKILL.md.
|
|
14
|
-
* Only syncs the 5 core Healer tools; all other MCP tools are
|
|
15
|
-
* general-purpose automation not specific to healing.
|
|
16
|
-
* Deduplicates by tool name.
|
|
17
|
-
*/
|
|
18
|
-
export declare function updateSkillHealerTable(skillPath: string, tools: McpTool[]): void;
|
|
19
|
-
/**
|
|
20
|
-
* Main entry point: fetch tools and update SKILL.md.
|
|
21
|
-
* Call this after installing the skill in init.ts and update.ts.
|
|
22
|
-
*/
|
|
23
|
-
export declare function syncMcpTools(skillPath: string): void;
|
package/dist/utils/mcp-tools.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utilities for Playwright MCP tool synchronization.
|
|
3
|
-
* Parses @playwright/mcp README to extract browser_* tool names and
|
|
4
|
-
* updates the Healer MCP tools table in SKILL.md.
|
|
5
|
-
*/
|
|
6
|
-
import { execSync } from 'child_process';
|
|
7
|
-
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
8
|
-
import { join } from 'path';
|
|
9
|
-
import chalk from 'chalk';
|
|
10
|
-
/** Cached directory for npm temp files */
|
|
11
|
-
const TMP_DIR = '/tmp/openspec-pw-mcp';
|
|
12
|
-
/**
|
|
13
|
-
* Get the latest @playwright/mcp version from npm registry.
|
|
14
|
-
* Falls back to cached README if network fails.
|
|
15
|
-
*/
|
|
16
|
-
function getLatestVersion() {
|
|
17
|
-
try {
|
|
18
|
-
const json = execSync('npm show @playwright/mcp version --json', { stdio: 'pipe', encoding: 'utf-8' }).trim();
|
|
19
|
-
return JSON.parse(json);
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
return '0.0.68'; // fallback to known version
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Download and parse the @playwright/mcp README to extract all browser_* tools.
|
|
27
|
-
*/
|
|
28
|
-
export function fetchMcpTools() {
|
|
29
|
-
const version = getLatestVersion();
|
|
30
|
-
const tmpPkg = join(TMP_DIR, 'package');
|
|
31
|
-
// Clean and prepare temp dir
|
|
32
|
-
execSync(`rm -rf ${TMP_DIR} && mkdir -p ${TMP_DIR}`, { stdio: 'pipe' });
|
|
33
|
-
// Download tarball
|
|
34
|
-
execSync(`cd ${TMP_DIR} && npm pack @playwright/mcp@${version} --pack-destination ${TMP_DIR}`, { stdio: 'pipe' });
|
|
35
|
-
const tarball = execSync(`ls -t ${TMP_DIR}/playwright-mcp-*.tgz | head -1`, { encoding: 'utf-8' }).trim();
|
|
36
|
-
execSync(`tar -xzf "${tarball}" -C ${TMP_DIR} --strip-components=1`, { stdio: 'pipe' });
|
|
37
|
-
const readme = readFileSync(join(TMP_DIR, 'README.md'), 'utf-8');
|
|
38
|
-
return parseToolsFromReadme(readme);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Parse browser_* tools from the MCP README markdown.
|
|
42
|
-
* Format:
|
|
43
|
-
* - **browser_navigate**
|
|
44
|
-
* - Title: Navigate to a URL
|
|
45
|
-
* - Description: Navigate to a URL
|
|
46
|
-
*/
|
|
47
|
-
function parseToolsFromReadme(readme) {
|
|
48
|
-
const tools = [];
|
|
49
|
-
// Match tool blocks: **browser_name** followed by Title and Description
|
|
50
|
-
const blockRegex = /- \*\*([a-z_]+)\*\*[\s\S]*?- Title: ([^\n]+)\n[\s\S]*?- Description: ([^\n]+)/g;
|
|
51
|
-
let match;
|
|
52
|
-
while ((match = blockRegex.exec(readme)) !== null) {
|
|
53
|
-
const name = match[1];
|
|
54
|
-
const title = match[2].trim();
|
|
55
|
-
const description = match[3].trim();
|
|
56
|
-
// Map tool name to Healer purpose
|
|
57
|
-
const purpose = mapToolToPurpose(name, title, description);
|
|
58
|
-
tools.push({ name, title, description, purpose });
|
|
59
|
-
}
|
|
60
|
-
return tools;
|
|
61
|
-
}
|
|
62
|
-
/** Map a browser_* tool to its Healer purpose in the SKILL */
|
|
63
|
-
function mapToolToPurpose(name, title, description) {
|
|
64
|
-
const map = {
|
|
65
|
-
browser_navigate: 'Go to the failing test\'s page',
|
|
66
|
-
browser_snapshot: 'Get page structure to find equivalent selectors',
|
|
67
|
-
browser_console_messages: 'Diagnose JS errors that may cause failures',
|
|
68
|
-
browser_take_screenshot: 'Visually compare before/after fixes',
|
|
69
|
-
browser_run_code: 'Execute custom fix logic (optional)',
|
|
70
|
-
};
|
|
71
|
-
return map[name] || title;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Update the Healer MCP tools table in SKILL.md.
|
|
75
|
-
* Only syncs the 5 core Healer tools; all other MCP tools are
|
|
76
|
-
* general-purpose automation not specific to healing.
|
|
77
|
-
* Deduplicates by tool name.
|
|
78
|
-
*/
|
|
79
|
-
export function updateSkillHealerTable(skillPath, tools) {
|
|
80
|
-
if (!existsSync(skillPath))
|
|
81
|
-
return;
|
|
82
|
-
const content = readFileSync(skillPath, 'utf-8');
|
|
83
|
-
// Only the 5 core Healer tools
|
|
84
|
-
const healerToolNames = [
|
|
85
|
-
'browser_navigate',
|
|
86
|
-
'browser_snapshot',
|
|
87
|
-
'browser_console_messages',
|
|
88
|
-
'browser_take_screenshot',
|
|
89
|
-
'browser_run_code',
|
|
90
|
-
];
|
|
91
|
-
// Filter to healer tools, deduplicate by name
|
|
92
|
-
const healerTools = tools.filter(t => healerToolNames.includes(t.name));
|
|
93
|
-
const seen = new Set();
|
|
94
|
-
const unique = healerTools.filter(t => {
|
|
95
|
-
if (seen.has(t.name))
|
|
96
|
-
return false;
|
|
97
|
-
seen.add(t.name);
|
|
98
|
-
return true;
|
|
99
|
-
});
|
|
100
|
-
// Build new table rows
|
|
101
|
-
const rows = unique.map(t => `| \`${t.name}\` | ${t.purpose} |`).join('\n');
|
|
102
|
-
// Replace the existing table
|
|
103
|
-
const tableHeader = '| Tool | Purpose |';
|
|
104
|
-
const tableSep = '|------|---------|';
|
|
105
|
-
const start = content.indexOf(tableHeader);
|
|
106
|
-
const end = content.indexOf(tableSep, start + 1);
|
|
107
|
-
if (start === -1 || end === -1)
|
|
108
|
-
return;
|
|
109
|
-
const newSection = tableHeader + '\n' + tableSep + '\n' + rows;
|
|
110
|
-
const newContent = content.substring(0, start) +
|
|
111
|
-
newSection +
|
|
112
|
-
content.substring(end + tableSep.length);
|
|
113
|
-
writeFileSync(skillPath, newContent, 'utf-8');
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Main entry point: fetch tools and update SKILL.md.
|
|
117
|
-
* Call this after installing the skill in init.ts and update.ts.
|
|
118
|
-
*/
|
|
119
|
-
export function syncMcpTools(skillPath) {
|
|
120
|
-
try {
|
|
121
|
-
const tools = fetchMcpTools();
|
|
122
|
-
updateSkillHealerTable(skillPath, tools);
|
|
123
|
-
console.log(chalk.green(` ✓ Healer tools synced from @playwright/mcp`));
|
|
124
|
-
}
|
|
125
|
-
catch (err) {
|
|
126
|
-
console.log(chalk.yellow(` ⚠ Failed to sync MCP tools: ${err}`));
|
|
127
|
-
console.log(chalk.gray(' SKILL.md MCP tools table may be stale'));
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=mcp-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../src/utils/mcp-tools.ts"],"names":[],"mappings":"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"}
|