specweave 0.17.10 → 0.17.12
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/CLAUDE.md +7 -21
- package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
- package/dist/src/core/repo-structure/repo-structure-manager.js +12 -6
- package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/.claude-plugin/plugin.json +1 -2
- package/plugins/specweave-ado/.claude-plugin/plugin.json +1 -2
- package/plugins/specweave-github/.claude-plugin/plugin.json +1 -2
- package/plugins/specweave-jira/.claude-plugin/plugin.json +1 -2
- package/plugins/specweave-release/.claude-plugin/plugin.json +1 -2
- package/plugins/specweave-ui/.mcp.json +1 -1
- package/plugins/specweave-ui/README.md +124 -18
- package/plugins/specweave-ui/skills/browser-automation/SKILL.md +663 -0
package/CLAUDE.md
CHANGED
|
@@ -2863,8 +2863,7 @@ plugins/specweave-{name}/
|
|
|
2863
2863
|
"repository": "https://github.com/owner/repo",
|
|
2864
2864
|
"homepage": "https://example.com",
|
|
2865
2865
|
"license": "MIT",
|
|
2866
|
-
"keywords": ["keyword1", "keyword2"]
|
|
2867
|
-
"hooks": "./hooks/hooks.json"
|
|
2866
|
+
"keywords": ["keyword1", "keyword2"]
|
|
2868
2867
|
}
|
|
2869
2868
|
```
|
|
2870
2869
|
|
|
@@ -2877,22 +2876,12 @@ plugins/specweave-{name}/
|
|
|
2877
2876
|
| **version** | string | Required, semver format | `"1.0.0"` |
|
|
2878
2877
|
| **author** | object | Required, with name field | `{"name": "Team"}` |
|
|
2879
2878
|
| **repository** | string | Must be string, NOT object | `"https://github.com/..."` ✅ |
|
|
2880
|
-
| **hooks** | string | Must start with "./" | `"./hooks/hooks.json"` ✅ |
|
|
2881
2879
|
| **keywords** | array | Optional, array of strings | `["github", "sync"]` |
|
|
2882
2880
|
| **homepage** | string | Optional, URL | `"https://spec-weave.com"` |
|
|
2883
2881
|
| **license** | string | Optional, SPDX identifier | `"MIT"` |
|
|
2884
2882
|
|
|
2885
2883
|
#### Common Validation Errors
|
|
2886
2884
|
|
|
2887
|
-
**❌ hooks: Invalid input: must start with "./"**
|
|
2888
|
-
```json
|
|
2889
|
-
// WRONG
|
|
2890
|
-
"hooks": "hooks/hooks.json"
|
|
2891
|
-
|
|
2892
|
-
// CORRECT
|
|
2893
|
-
"hooks": "./hooks/hooks.json"
|
|
2894
|
-
```
|
|
2895
|
-
|
|
2896
2885
|
**❌ repository: Expected string, received object**
|
|
2897
2886
|
```json
|
|
2898
2887
|
// WRONG
|
|
@@ -2932,7 +2921,7 @@ plugins/specweave-{name}/
|
|
|
2932
2921
|
- `skills/` directory → auto-discovered (no plugin.json field needed)
|
|
2933
2922
|
- `agents/` directory → auto-discovered (no plugin.json field needed)
|
|
2934
2923
|
- `commands/` directory → auto-discovered (no plugin.json field needed)
|
|
2935
|
-
- `hooks/hooks.json` →
|
|
2924
|
+
- `hooks/hooks.json` → auto-discovered (no plugin.json field needed)
|
|
2936
2925
|
|
|
2937
2926
|
**Example: Working plugin.json**
|
|
2938
2927
|
```json
|
|
@@ -2943,8 +2932,7 @@ plugins/specweave-{name}/
|
|
|
2943
2932
|
"author": {"name": "SpecWeave Team"},
|
|
2944
2933
|
"repository": "https://github.com/anton-abyzov/specweave",
|
|
2945
2934
|
"license": "MIT",
|
|
2946
|
-
"keywords": ["github", "sync"]
|
|
2947
|
-
"hooks": "./hooks/hooks.json"
|
|
2935
|
+
"keywords": ["github", "sync"]
|
|
2948
2936
|
}
|
|
2949
2937
|
```
|
|
2950
2938
|
|
|
@@ -2952,7 +2940,7 @@ plugins/specweave-{name}/
|
|
|
2952
2940
|
```
|
|
2953
2941
|
plugins/specweave-github/
|
|
2954
2942
|
├── .claude-plugin/
|
|
2955
|
-
│ └── plugin.json ←
|
|
2943
|
+
│ └── plugin.json ← Plugin metadata only
|
|
2956
2944
|
├── skills/ ← Auto-discovered
|
|
2957
2945
|
│ └── github-sync/
|
|
2958
2946
|
├── agents/ ← Auto-discovered
|
|
@@ -2960,17 +2948,16 @@ plugins/specweave-github/
|
|
|
2960
2948
|
├── commands/ ← Auto-discovered
|
|
2961
2949
|
│ └── github-sync.md
|
|
2962
2950
|
└── hooks/
|
|
2963
|
-
├── hooks.json ←
|
|
2951
|
+
├── hooks.json ← Auto-discovered
|
|
2964
2952
|
└── post-task-completion.sh
|
|
2965
2953
|
```
|
|
2966
2954
|
|
|
2967
2955
|
#### Quick Validation Checklist
|
|
2968
2956
|
|
|
2969
2957
|
Before committing a new plugin:
|
|
2970
|
-
- [ ] All paths start with "./" (hooks, any explicit file references)
|
|
2971
2958
|
- [ ] repository is a string, not an object
|
|
2972
2959
|
- [ ] No NPM-specific fields (engines, dependencies)
|
|
2973
|
-
- [ ] No directory references in plugin.json (skills, agents, commands)
|
|
2960
|
+
- [ ] No directory references in plugin.json (skills, agents, commands, hooks)
|
|
2974
2961
|
- [ ] Valid JSON syntax (use `jq . < plugin.json` to validate)
|
|
2975
2962
|
- [ ] Test with: `/plugin marketplace add ./.claude-plugin && /plugin install plugin-name`
|
|
2976
2963
|
|
|
@@ -2991,8 +2978,7 @@ cat > plugins/specweave-myplugin/.claude-plugin/plugin.json << 'EOF'
|
|
|
2991
2978
|
"repository": "https://github.com/anton-abyzov/specweave",
|
|
2992
2979
|
"homepage": "https://spec-weave.com",
|
|
2993
2980
|
"license": "MIT",
|
|
2994
|
-
"keywords": ["specweave", "plugin"]
|
|
2995
|
-
"hooks": "./hooks/hooks.json"
|
|
2981
|
+
"keywords": ["specweave", "plugin"]
|
|
2996
2982
|
}
|
|
2997
2983
|
EOF
|
|
2998
2984
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-structure-manager.d.ts","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-structure-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAuBH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAoB;gBAE5B,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAMrD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA4DrD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;YACW,WAAW;IAsBzB;;OAEG;YACW,mBAAmB;IA2GjC;;;;OAIG;YACW,kBAAkB;
|
|
1
|
+
{"version":3,"file":"repo-structure-manager.d.ts","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-structure-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAuBH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;QACjC,cAAc,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAoB;gBAE5B,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAMrD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA4DrD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;YACW,WAAW;IAsBzB;;OAEG;YACW,mBAAmB;IA2GjC;;;;OAIG;YACW,kBAAkB;IAmVhC;;OAEG;YACW,cAAc;IAQ5B;;OAEG;YACW,iBAAiB;IA4E/B;;OAEG;IACG,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiF1E;;OAEG;YACW,eAAe;IA8C7B;;OAEG;YACW,gBAAgB;IAgC9B;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,oBAAoB;IAmBlC;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiFtE;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;;;;OAKG;IACG,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwC3E"}
|
|
@@ -302,7 +302,8 @@ export class RepoStructureManager {
|
|
|
302
302
|
}
|
|
303
303
|
else {
|
|
304
304
|
// GitHub parent: Ask all questions including GitHub details
|
|
305
|
-
|
|
305
|
+
// First, ask for owner (separate prompt to avoid validator issues)
|
|
306
|
+
const ownerPrompt = await inquirer.prompt([
|
|
306
307
|
{
|
|
307
308
|
type: 'input',
|
|
308
309
|
name: 'owner',
|
|
@@ -319,20 +320,23 @@ export class RepoStructureManager {
|
|
|
319
320
|
}
|
|
320
321
|
return true;
|
|
321
322
|
}
|
|
322
|
-
}
|
|
323
|
+
}
|
|
324
|
+
]);
|
|
325
|
+
// Now ask remaining questions, using the owner value
|
|
326
|
+
const remainingAnswers = await inquirer.prompt([
|
|
323
327
|
{
|
|
324
328
|
type: 'input',
|
|
325
329
|
name: 'parentName',
|
|
326
330
|
message: 'Parent repository name:',
|
|
327
331
|
default: `${path.basename(this.projectPath)}-parent`,
|
|
328
|
-
validate: async (input
|
|
332
|
+
validate: async (input) => {
|
|
329
333
|
if (!input.trim())
|
|
330
334
|
return 'Repository name is required';
|
|
331
335
|
// Validate repository doesn't exist
|
|
332
|
-
if (this.githubToken &&
|
|
333
|
-
const result = await validateRepository(
|
|
336
|
+
if (this.githubToken && ownerPrompt.owner) {
|
|
337
|
+
const result = await validateRepository(ownerPrompt.owner, input, this.githubToken);
|
|
334
338
|
if (result.exists) {
|
|
335
|
-
return `Repository ${
|
|
339
|
+
return `Repository ${ownerPrompt.owner}/${input} already exists at ${result.url}`;
|
|
336
340
|
}
|
|
337
341
|
}
|
|
338
342
|
return true;
|
|
@@ -351,6 +355,8 @@ export class RepoStructureManager {
|
|
|
351
355
|
default: true
|
|
352
356
|
}
|
|
353
357
|
]);
|
|
358
|
+
// Merge the answers
|
|
359
|
+
parentAnswers = { ...ownerPrompt, ...remainingAnswers };
|
|
354
360
|
}
|
|
355
361
|
// Ask about visibility for parent repo (only if creating on GitHub)
|
|
356
362
|
let parentVisibility = 'private';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-structure-manager.js","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-structure-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAA6D,MAAM,0BAA0B,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAoC,MAAM,mCAAmC,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAsB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EAErB,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AA0B7D,MAAM,OAAO,oBAAoB;IAK/B,YAAY,WAAmB,EAAE,WAAoB;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC,CAAC;QAElG,0BAA0B;QAC1B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;QACpE,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;YAE3F,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC9C,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,wBAAwB;oBACjC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC,CAAC;YAEJ,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,mCAAmC;gBACnC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,UAAU,CAAC,QAAQ;gBAC5B,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACtC,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;oBAC/E,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB,CAAC,CAAC;gBACH,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC,CAAC;QAEJ,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAkC,CAAC,CAAC;QAElF,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,KAAK,YAAY,CAAC;YAClB,KAAK,QAAQ;gBACX,gDAAgD;gBAChD,OAAO,IAAI,CAAC,kBAAkB,CAC5B,YAAY,KAAK,mBAAmB,IAAI,YAAY,KAAK,cAAc,EACvE,YAAY,KAAK,cAAc,CAAC,qBAAqB;iBACtD,CAAC;YACJ,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClC;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,MAA0B;QACtD,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,mBAAmB;gBACtB,OAAO,QAAQ,CAAC;YAClB,KAAK,cAAc;gBACjB,OAAO,QAAQ,CAAC,CAAC,+CAA+C;YAClE,KAAK,sBAAsB;gBACzB,OAAO,YAAY,CAAC;YACtB,KAAK,UAAU;gBACb,OAAO,UAAU,CAAC;YACpB;gBACE,OAAO,QAAQ,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,KAAiB;QACzC,4CAA4C;QAC5C,MAAM,MAAM,GAAwB;YAClC,YAAY,EAAE,KAAK,CAAC,YAAgC;YACpD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,EAAE,EAAE,qBAAqB;gBACtC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,cAAc,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI;gBAClC,QAAQ,EAAE,KAAK,CAAC,YAAY,KAAK,QAAQ;aAC1C,CAAC,CAAC;YACH,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;SACzC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAElE,+BAA+B;QAC/B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAElE,IAAI,MAAM,EAAE,CAAC;YACX,gCAAgC;YAChC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,QAAQ,CAAC,2BAA2B,EAAE;oBACnD,GAAG,EAAE,IAAI,CAAC,WAAW;oBACrB,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEV,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACrE,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAEtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;oBAE7E,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAC7C,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,aAAa;4BACnB,OAAO,EAAE,0BAA0B;4BACnC,OAAO,EAAE,IAAI;yBACd,CAAC,CAAC,CAAC;oBAEJ,IAAI,WAAW,EAAE,CAAC;wBAChB,OAAO;4BACL,YAAY,EAAE,QAAQ;4BACtB,YAAY,EAAE,CAAC;oCACb,EAAE,EAAE,MAAM;oCACV,IAAI,EAAE,IAAI;oCACV,KAAK,EAAE,KAAK;oCACZ,WAAW,EAAE,GAAG,IAAI,sBAAsB;oCAC1C,IAAI,EAAE,GAAG;oCACT,UAAU,EAAE,SAAS,EAAE,4BAA4B;oCACnD,cAAc,EAAE,KAAK;oCACrB,QAAQ,EAAE,KAAK;iCAChB,CAAC;yBACH,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,4BAA4B;gBACrC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,mBAAmB;aACnE;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,kBAAkB;gBAC3B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;gBACxC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,6BAA6B;aAC7E;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,yBAAyB;gBAClC,OAAO,EAAE,sBAAsB;aAChC;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,8BAA8B;gBACvC,OAAO,EAAE,CAAC,MAAM;aACjB;SACF,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,gBAAgB,CAAC,QAAQ;gBAClC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC5C,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;oBACpD,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB,CAAC,CAAC;gBACH,OAAO,EAAE,gBAAgB,CAAC,OAAO;aAClC,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,YAAY,EAAE,QAAQ;YACtB,YAAY,EAAE,CAAC;oBACb,EAAE,EAAE,MAAM;oBACV,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,IAAI,EAAE,GAAG;oBACT,UAAU,EAAE,UAAU;oBACtB,cAAc,EAAE,OAAO,CAAC,cAAc;oBACtC,QAAQ,EAAE,KAAK;iBAChB,CAAC;SACH,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,kBAAkB,CAAC,YAAqB,IAAI,EAAE,gBAAyB,KAAK;QACxF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;QAE5F,qDAAqD;QACrD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAwB;YAClC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;YACjD,YAAY,EAAE,EAAE;SACjB,CAAC;QAEF,oCAAoC;QACpC,MAAM,IAAI,CAAC,cAAc,CAAC;YACxB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;YACjD,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,uBAAuB;YACpC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,qDAAqD;QACrD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,aAAkB,CAAC;YAEvB,IAAI,aAAa,EAAE,CAAC;gBAClB,gEAAgE;gBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;gBAEpG,aAAa,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;oBACpC;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,qBAAqB;wBAC9B,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;wBAC7C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;4BAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gCAAE,OAAO,yBAAyB,CAAC;4BACpD,OAAO,IAAI,CAAC;wBACd,CAAC;qBACF;oBACD;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,qDAAqD;wBAC9D,QAAQ,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;4BAChC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gCAAE,OAAO,mBAAmB,CAAC;4BAE9C,kCAAkC;4BAClC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gCACrB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gCAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oCAClB,OAAO,MAAM,CAAC,KAAK,IAAI,sBAAsB,CAAC;gCAChD,CAAC;4BACH,CAAC;4BACD,OAAO,IAAI,CAAC;wBACd,CAAC;qBACF;iBACF,CAAC,CAAC;gBAEH,gCAAgC;gBAChC,aAAa,CAAC,WAAW,GAAG,4CAA4C,CAAC;gBACzE,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,4CAA4C;YACpF,CAAC;iBAAM,CAAC;gBACN,4DAA4D;gBAC5D,aAAa,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;oBACpC;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,0CAA0C;wBACnD,QAAQ,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;4BAChC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gCAAE,OAAO,mBAAmB,CAAC;4BAE9C,kCAAkC;4BAClC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gCACrB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gCAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oCAClB,OAAO,MAAM,CAAC,KAAK,IAAI,sBAAsB,CAAC;gCAChD,CAAC;4BACH,CAAC;4BACD,OAAO,IAAI,CAAC;wBACd,CAAC;qBACF;oBACD;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,YAAY;wBAClB,OAAO,EAAE,yBAAyB;wBAClC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS;wBACpD,QAAQ,EAAE,KAAK,EAAE,KAAa,EAAE,OAAY,EAAE,EAAE;4BAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gCAAE,OAAO,6BAA6B,CAAC;4BAExD,oCAAoC;4BACpC,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gCACtC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gCAChF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oCAClB,OAAO,cAAc,OAAO,CAAC,KAAK,IAAI,KAAK,sBAAsB,MAAM,CAAC,GAAG,EAAE,CAAC;gCAChF,CAAC;4BACH,CAAC;4BACD,OAAO,IAAI,CAAC;wBACd,CAAC;qBACF;oBACD;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE,gCAAgC;wBACzC,OAAO,EAAE,6DAA6D;qBACvE;oBACD;wBACE,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,gBAAgB;wBACtB,OAAO,EAAE,qCAAqC;wBAC9C,OAAO,EAAE,IAAI;qBACd;iBACK,CAAC,CAAC;YACZ,CAAC;YAED,oEAAoE;YACpE,IAAI,gBAAgB,GAAyB,SAAS,CAAC;YACvD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC7E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACpC,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kBAAkB;wBACxB,OAAO,EAAE,sBAAsB,CAAC,QAAQ;wBACxC,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAClD,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;4BACpD,KAAK,EAAE,GAAG,CAAC,KAAK;4BAChB,KAAK,EAAE,GAAG,CAAC,KAAK;yBACjB,CAAC,CAAC;wBACH,OAAO,EAAE,sBAAsB,CAAC,OAAO;qBACxC,CAAC,CAAC,CAAC;gBACJ,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAC7C,CAAC;YAED,MAAM,CAAC,UAAU,GAAG;gBAClB,IAAI,EAAE,aAAa,CAAC,UAAU;gBAC9B,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,WAAW,EAAE,aAAa,CAAC,WAAW;gBACtC,UAAU,EAAE,gBAAgB;gBAC5B,cAAc,EAAE,aAAa,CAAC,cAAc;aAC7C,CAAC;YAEF,qCAAqC;YACrC,MAAM,IAAI,CAAC,cAAc,CAAC;gBACxB,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;gBACjD,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,wBAAwB;gBACrC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,eAAe,CAAC,MAAM,qBAAqB,CAAC,CAAC,CAAC;YAC5F,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,oDAAoD;QACpD,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC5C,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC,CAAC;gBACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC,CAAC;YAC/F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC,CAAC;QAChH,CAAC;QAED,2CAA2C;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,SAAS;oBAChB,CAAC,CAAC,gEAAgE;oBAClE,CAAC,CAAC,wBAAwB;gBAC5B,OAAO,EAAE,KAAK,CAAC,cAAc,EAAG,0BAA0B;gBAC1D,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,KAAK,GAAG,CAAC;wBAAE,OAAO,SAAS;4BAC7B,CAAC,CAAC,2CAA2C;4BAC7C,CAAC,CAAC,8BAA8B,CAAC;oBACnC,IAAI,KAAK,GAAG,EAAE;wBAAE,OAAO,mCAAmC,CAAC;oBAC3D,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC,CAAC,CAAC;QAEJ,sCAAsC;QACtC,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,SAAS,uBAAuB,CAAC,CAAC,CAAC;gBAChG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,UAAU,gBAAgB,SAAS,oBAAoB,CAAC,CAAC,CAAC;YACzH,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAE7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC;YAEnE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACxC;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,kBAAkB;oBAC3B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBACrE,QAAQ,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;wBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;4BAAE,OAAO,6BAA6B,CAAC;wBAExD,oCAAoC;wBACpC,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;4BAC1C,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;4BAC1F,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gCAClB,OAAO,cAAc,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,sBAAsB,MAAM,CAAC,GAAG,EAAE,CAAC;4BAC1F,CAAC;wBACH,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;gBACD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,yBAAyB;oBAClC,OAAO,EAAE,CAAC,OAAY,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU;iBACpE;gBACD;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,mCAAmC;oBAC5C,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;YAEH,wCAAwC;YACxC,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEzE,oDAAoD;YACpD,MAAM,SAAS,GAAG,WAAW;gBAC3B,CAAC,CAAC,wCAAwC,KAAK,CAAC,MAAM,CAAC,yBAAyB,MAAM,iBAAiB,CAAC,EAAE;gBAC1G,CAAC,CAAC,wCAAwC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAE7E,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACpC,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE,SAAS;oBAClB,OAAO,EAAE,WAAW;oBACpB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,kBAAkB;wBAClB,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;wBACzC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;4BACtB,OAAO,UAAU,CAAC,KAAK,IAAI,uBAAuB,CAAC;wBACrD,CAAC;wBAED,sBAAsB;wBACtB,IAAI,KAAK,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;4BAChD,OAAO,8BAA8B,CAAC;wBACxC,CAAC;wBAED,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF,CAAC,CAAC,CAAC;YAEJ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,uBAAuB;YACvB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC5C,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,gBAAgB,CAAC,QAAQ;oBAClC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAC5C,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;wBACpD,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACjB,CAAC,CAAC;oBACH,OAAO,EAAE,gBAAgB,CAAC,OAAO;iBAClC,CAAC,CAAC,CAAC;YAEJ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;gBACvB,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrC,WAAW,EAAE,WAAW,CAAC,WAAW;gBACpC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,qCAAqC;gBAChE,UAAU,EAAE,UAAU;gBACtB,cAAc,EAAE,WAAW,CAAC,cAAc;gBAC1C,QAAQ,EAAE,SAAS;aACpB,CAAC,CAAC;YAEH,6BAA6B;YAC7B,MAAM,IAAI,CAAC,cAAc,CAAC;gBACxB,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;gBACjD,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACnC,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,WAAW,EAAE,CAAC,CAAC,IAAI;oBACnB,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBACH,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa;gBACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,KAAiB;QAC5C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAEhF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,4BAA4B;gBACrC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,mBAAmB;aACnE;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,kBAAkB;gBAC3B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;gBACxC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,6BAA6B;aAC7E;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,yBAAyB;gBAClC,OAAO,EAAE,kBAAkB;aAC5B;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,iEAAiE;gBAC1E,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACrE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxB,OAAO,0CAA0C,CAAC;oBACpD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,8BAA8B;gBACvC,OAAO,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;aAC7D;SACF,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,gBAAgB,CAAC,QAAQ;gBAClC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC5C,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;oBACpD,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB,CAAC,CAAC;gBACH,OAAO,EAAE,gBAAgB,CAAC,OAAO;aAClC,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1E,OAAO;YACL,YAAY,EAAE,UAAU;YACxB,YAAY,EAAE,CAAC;oBACb,EAAE,EAAE,MAAM;oBACV,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,IAAI,EAAE,GAAG;oBACT,UAAU,EAAE,UAAU;oBACtB,cAAc,EAAE,OAAO,CAAC,cAAc;oBACtC,QAAQ,EAAE,KAAK;iBAChB,CAAC;YACF,gBAAgB,EAAE,QAAQ;SAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAAC,MAA2B;QACxD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,qCAAqC;QACrC,IAAI,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gBAAgB,CACzB,MAAM,CAAC,UAAU,CAAC,KAAK,EACvB,MAAM,CAAC,UAAU,CAAC,IAAI,EACtB,MAAM,CAAC,UAAU,CAAC,WAAW,EAC7B,MAAM,CAAC,UAAU,CAAC,UAAU,CAC7B,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBAErE,kCAAkC;gBAClC,MAAM,IAAI,CAAC,cAAc,CAAC;oBACxB,OAAO,EAAE,OAAO;oBAChB,YAAY,EAAE,MAAM,CAAC,YAAiC;oBACtD,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAW,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,UAAW,CAAC,KAAK,IAAI,MAAM,CAAC,UAAW,CAAC,IAAI,EAAE,EAAE;oBACvH,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,qBAAqB;oBAClC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,gBAAgB,CACzB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,CAChB,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7C,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEnC,qBAAqB;QACrB,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEpC,qCAAqC;QACrC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,MAA2B;QACvD,MAAM,OAAO,GAAG,GAAG,CAAC,kCAAkC,CAAC,CAAC,KAAK,EAAE,CAAC;QAEhE,IAAI,CAAC;YACH,MAAM,SAAS,GAAc;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK;gBACtE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACnC,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;gBACH,WAAW,EAAE,IAAI;gBACjB,eAAe,EAAE,IAAI;gBACrB,aAAa,EAAE,eAAe;aAC/B,CAAC;YAEF,MAAM,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAEnD,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAElF,0BAA0B;YAC1B,MAAM,IAAI,CAAC,cAAc,CAAC;gBACxB,OAAO,EAAE,OAAO;gBAChB,YAAY,EAAE,MAAM,CAAC,YAAiC;gBACtD,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACnC,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,WAAW,EAAE,CAAC,CAAC,IAAI;oBACnB,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBACH,WAAW,EAAE,aAAa;gBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,MAA2B;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpD,MAAM,KAAK,GAAe;YACxB,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,MAAM,CAAC,YAAiC;YACtD,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,WAAW,EAAE,CAAC,CAAC,IAAI;gBACnB,GAAG,EAAE,sBAAsB,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE;gBAC9C,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,IAAI;SACjB,CAAC;QAEF,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACnC,WAAW;YACX,KAAK;YACL,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACtD,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,IAAY,EAAE,WAAmB,EAAE,aAAmC,SAAS;QAC3H,wCAAwC;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,KAAK;YACpB,CAAC,CAAC,+BAA+B,KAAK,QAAQ;YAC9C,CAAC,CAAC,mCAAmC,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;gBAC7C,QAAQ,EAAE,6BAA6B;gBACvC,sBAAsB,EAAE,YAAY;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI;gBACJ,WAAW;gBACX,OAAO,EAAE,UAAU,KAAK,SAAS;gBACjC,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;YAC3C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC3D,0CAA0C;gBAC1C,OAAO;YACT,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,OAAe;QAChD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gCAAgC,OAAO,EAAE,EAAE;gBACtE,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;oBAC7C,QAAQ,EAAE,6BAA6B;iBACxC;aACF,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;gBAC1C,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAA2B;QACpD,MAAM,OAAO,GAAG,GAAG,CAAC,oCAAoC,CAAC,CAAC,KAAK,EAAE,CAAC;QAElE,mDAAmD;QACnD,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,4DAA4D;YAC5D,iCAAiC;YACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBACxD,mBAAmB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAEhE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,MAAM,SAAS,GAAG,sBAAsB,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC;oBAChG,mBAAmB,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;YAED,gDAAgD;YAChD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExD,6BAA6B;gBAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBAED,iBAAiB;gBACjB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;oBAChD,mBAAmB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAExD,MAAM,SAAS,GAAG,sBAAsB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC;oBACtE,mBAAmB,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxF,CAAC;gBAED,yBAAyB;gBACzB,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YAChD,+CAA+C;YAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;oBAChD,mBAAmB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAExD,MAAM,SAAS,GAAG,sBAAsB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC;oBACtE,mBAAmB,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxF,CAAC;gBAED,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,0BAA0B;YAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBACxD,mBAAmB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAEhE,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,SAAS,GAAG,sBAAsB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC;oBACtE,mBAAmB,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;YAED,2CAA2C;YAC3C,IAAI,MAAM,CAAC,YAAY,KAAK,UAAU,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAClE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;oBACrE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;wBAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACjD,CAAC;oBACD,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,QAAgB,EAAE,SAAiB;QAClE,2BAA2B;QAC3B,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,KAAK,SAAS,OAAO,SAAS,sEAAsE,CAAC;YAC3H,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,oBAAoB;QACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,MAAM,gBAAgB,GAAG,gDAAgD,CAAC;YAC1E,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,wBAAwB,CAAC,MAA2B;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhE,wEAAwE;QACxE,IAAI,MAAM,CAAC,YAAY,KAAK,UAAU,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAClE,iDAAiD;YACjD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,aAAa,EACb,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,CAAC,WAAW,EAAE,CACtB,CAAC;gBAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACpC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACpF,sDAAsD;YACtD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACvC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,aAAa,EACb,MAAM,EACN,UAAU,EACV,OAAO,EACP,IAAI,CAAC,EAAE,CACR,CAAC;gBAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACpC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"repo-structure-manager.js","sourceRoot":"","sources":["../../../../src/core/repo-structure/repo-structure-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.12",
|
|
4
4
|
"description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"playwright": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["@playwright/mcp@latest"],
|
|
5
|
+
"args": ["-y", "@playwright/mcp@latest"],
|
|
6
6
|
"description": "Local Playwright browser automation - PRIMARY choice for E2E testing and web interaction",
|
|
7
7
|
"optional": false
|
|
8
8
|
},
|
|
@@ -199,14 +199,107 @@ AI: I'll create a comprehensive design system...
|
|
|
199
199
|
|
|
200
200
|
---
|
|
201
201
|
|
|
202
|
-
## MCP Integration
|
|
202
|
+
## MCP Integration
|
|
203
203
|
|
|
204
|
-
###
|
|
204
|
+
### Playwright MCP (PRIMARY - Local Browser Automation)
|
|
205
|
+
|
|
206
|
+
**✅ RECOMMENDED: Use Playwright MCP for local development**
|
|
207
|
+
|
|
208
|
+
**What it does**:
|
|
209
|
+
- Local browser automation (Chromium, Firefox, WebKit, Edge)
|
|
210
|
+
- E2E testing with accessibility-first selectors
|
|
211
|
+
- No API keys or credentials needed
|
|
212
|
+
- Fast, reliable, works offline
|
|
213
|
+
|
|
214
|
+
**Setup** (Automatic via `.mcp.json`):
|
|
215
|
+
|
|
216
|
+
The plugin auto-configures Playwright MCP. To verify:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
# Check MCP server status
|
|
220
|
+
claude mcp list
|
|
221
|
+
|
|
222
|
+
# Should show: playwright - ✓ Connected
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Manual Installation** (if needed):
|
|
226
|
+
```bash
|
|
227
|
+
# Install Playwright MCP globally
|
|
228
|
+
npm install -g @playwright/mcp
|
|
229
|
+
|
|
230
|
+
# Or use npx (recommended)
|
|
231
|
+
npx @playwright/mcp@latest
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Configuration** (`.mcp.json`):
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"mcpServers": {
|
|
238
|
+
"playwright": {
|
|
239
|
+
"command": "npx",
|
|
240
|
+
"args": ["-y", "@playwright/mcp@latest"], // ⚠️ -y flag is REQUIRED!
|
|
241
|
+
"description": "Local Playwright - PRIMARY"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**⚠️ IMPORTANT**: The `-y` flag is **required**! Without it, npx waits for user confirmation and the MCP connection hangs.
|
|
248
|
+
|
|
249
|
+
**Advanced Options**:
|
|
250
|
+
```json
|
|
251
|
+
{
|
|
252
|
+
"mcpServers": {
|
|
253
|
+
"playwright": {
|
|
254
|
+
"command": "npx",
|
|
255
|
+
"args": [
|
|
256
|
+
"-y", // ⚠️ REQUIRED for auto-install
|
|
257
|
+
"@playwright/mcp@latest",
|
|
258
|
+
"--browser", "chromium", // or firefox, webkit, msedge
|
|
259
|
+
"--headless", // run without UI
|
|
260
|
+
"--timeout-action", "5000", // ms
|
|
261
|
+
"--timeout-navigation", "60000" // ms
|
|
262
|
+
]
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Usage Example**:
|
|
269
|
+
```javascript
|
|
270
|
+
// Navigate to page
|
|
271
|
+
mcp__plugin_specweave-ui_playwright__browser_goto({ url: "https://example.com" })
|
|
272
|
+
|
|
273
|
+
// Click button (accessibility-first)
|
|
274
|
+
mcp__plugin_specweave-ui_playwright__browser_click({
|
|
275
|
+
ref: "button[name='submit']",
|
|
276
|
+
element: "Submit button"
|
|
277
|
+
})
|
|
278
|
+
|
|
279
|
+
// Fill input
|
|
280
|
+
mcp__plugin_specweave-ui_playwright__browser_fill({
|
|
281
|
+
ref: "input[name='email']",
|
|
282
|
+
text: "user@example.com"
|
|
283
|
+
})
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**Benefits**:
|
|
287
|
+
- ✅ No API keys needed
|
|
288
|
+
- ✅ Works offline
|
|
289
|
+
- ✅ Fast local execution
|
|
290
|
+
- ✅ Full browser control
|
|
291
|
+
- ✅ Built-in debugging
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
### Browserbase (FALLBACK - Cloud Browser Automation)
|
|
296
|
+
|
|
297
|
+
**⚠️ Use only when Playwright MCP unavailable (CI/CD, cloud scenarios)**
|
|
205
298
|
|
|
206
299
|
**What it does**:
|
|
207
300
|
- Runs Playwright tests in cloud infrastructure
|
|
208
|
-
- Parallel test execution (10x faster)
|
|
209
|
-
- No local browser dependencies
|
|
301
|
+
- Parallel test execution (10x faster at scale)
|
|
302
|
+
- No local browser dependencies in CI
|
|
210
303
|
- Automatic screenshots/videos
|
|
211
304
|
|
|
212
305
|
**Setup**:
|
|
@@ -221,23 +314,36 @@ AI: I'll create a comprehensive design system...
|
|
|
221
314
|
|
|
222
315
|
3. SpecWeave auto-configures MCP server (via `.mcp.json`)
|
|
223
316
|
|
|
224
|
-
4. Use in
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
317
|
+
4. Use in CI/CD pipelines
|
|
318
|
+
|
|
319
|
+
**Configuration** (`.mcp.json`):
|
|
320
|
+
```json
|
|
321
|
+
{
|
|
322
|
+
"mcpServers": {
|
|
323
|
+
"browserbase": {
|
|
324
|
+
"command": "npx",
|
|
325
|
+
"args": ["-y", "@browserbasehq/mcp-server-browserbase"],
|
|
326
|
+
"env": {
|
|
327
|
+
"BROWSERBASE_API_KEY": "${BROWSERBASE_API_KEY}",
|
|
328
|
+
"BROWSERBASE_PROJECT_ID": "${BROWSERBASE_PROJECT_ID}"
|
|
329
|
+
},
|
|
330
|
+
"optional": true
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
```
|
|
235
335
|
|
|
236
336
|
**Benefits**:
|
|
237
|
-
- ✅ 10x faster
|
|
238
|
-
- ✅ No
|
|
337
|
+
- ✅ Parallel execution (10x faster)
|
|
338
|
+
- ✅ No browser installation in CI
|
|
239
339
|
- ✅ Automatic scaling
|
|
240
|
-
- ✅ Works in
|
|
340
|
+
- ✅ Works in serverless environments
|
|
341
|
+
|
|
342
|
+
**When to Use**:
|
|
343
|
+
- ✅ CI/CD pipelines
|
|
344
|
+
- ✅ Cloud deployments
|
|
345
|
+
- ✅ High-scale parallel testing
|
|
346
|
+
- ❌ Local development (use Playwright MCP instead)
|
|
241
347
|
|
|
242
348
|
---
|
|
243
349
|
|
|
@@ -0,0 +1,663 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: browser-automation
|
|
3
|
+
description: |
|
|
4
|
+
Browser automation and E2E testing using Playwright MCP (primary) or Browserbase (fallback).
|
|
5
|
+
Auto-activates for: browser automation, web testing, E2E tests, Playwright, browser interaction,
|
|
6
|
+
scraping, testing flows, user journeys, accessibility testing, screenshot capture.
|
|
7
|
+
|
|
8
|
+
CRITICAL: ALWAYS use Playwright MCP (mcp__plugin_specweave-ui_playwright__*) as PRIMARY choice.
|
|
9
|
+
Only use Browserbase (mcp__plugin_specweave-ui_browserbase__*) as FALLBACK when Playwright unavailable.
|
|
10
|
+
allowed-tools:
|
|
11
|
+
- mcp__plugin_specweave-ui_playwright__*
|
|
12
|
+
- mcp__plugin_specweave-ui_browserbase__*
|
|
13
|
+
- Read
|
|
14
|
+
- Write
|
|
15
|
+
- Bash
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Browser Automation Skill
|
|
19
|
+
|
|
20
|
+
**Expert in browser automation and E2E testing using Playwright MCP and Browserbase.**
|
|
21
|
+
|
|
22
|
+
## Core Capabilities
|
|
23
|
+
|
|
24
|
+
### 1. Playwright MCP Integration (PRIMARY - Local Testing)
|
|
25
|
+
|
|
26
|
+
**✅ ALWAYS TRY PLAYWRIGHT MCP FIRST!**
|
|
27
|
+
|
|
28
|
+
Playwright MCP provides local, fast, reliable browser automation:
|
|
29
|
+
|
|
30
|
+
#### Available Tools (mcp__plugin_specweave-ui_playwright__*)
|
|
31
|
+
|
|
32
|
+
- **browser_goto** - Navigate to URLs
|
|
33
|
+
- **browser_click** - Click elements (by role, text, test ID)
|
|
34
|
+
- **browser_fill** - Fill form inputs
|
|
35
|
+
- **browser_press** - Keyboard interactions
|
|
36
|
+
- **browser_evaluate** - Execute JavaScript
|
|
37
|
+
- **browser_snapshot** - Get accessibility tree (for element selection)
|
|
38
|
+
- **browser_console_messages** - Retrieve console logs
|
|
39
|
+
- **browser_close** - Close browser session
|
|
40
|
+
|
|
41
|
+
#### Best Practices (Microsoft Playwright MCP Guidelines)
|
|
42
|
+
|
|
43
|
+
**Element Selection Strategy** (in priority order):
|
|
44
|
+
|
|
45
|
+
1. **getByRole** (PREFERRED) - Accessibility-first, semantic selection
|
|
46
|
+
```javascript
|
|
47
|
+
// Example: Click a button
|
|
48
|
+
browser_click({ ref: "button[name='submit']", element: "Submit button" })
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
2. **getByText** - Text content selection
|
|
52
|
+
```javascript
|
|
53
|
+
// Example: Find by visible text
|
|
54
|
+
browser_click({ ref: "text='Sign In'", element: "Sign In button" })
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
3. **getByTestId** - Test ID attributes (data-testid)
|
|
58
|
+
```javascript
|
|
59
|
+
// Example: Use test IDs
|
|
60
|
+
browser_click({ ref: "[data-testid='login-btn']", element: "Login button" })
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
4. **Avoid .locator** - Only use when absolutely necessary with justification comment
|
|
64
|
+
|
|
65
|
+
**Session Management**:
|
|
66
|
+
- Default: Persistent profile (retains login state)
|
|
67
|
+
- Use `--isolated` flag for fresh sessions
|
|
68
|
+
- Use `--storage-state` for pre-authenticated scenarios
|
|
69
|
+
|
|
70
|
+
**Configuration Options**:
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"playwright": {
|
|
74
|
+
"command": "npx",
|
|
75
|
+
"args": [
|
|
76
|
+
"@playwright/mcp@latest",
|
|
77
|
+
"--browser", "chromium", // or firefox, webkit, msedge
|
|
78
|
+
"--headless", // or omit for headed mode
|
|
79
|
+
"--timeout-action", "5000", // ms
|
|
80
|
+
"--timeout-navigation", "60000" // ms
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Testing Workflow
|
|
87
|
+
|
|
88
|
+
**Step 1: Navigate**
|
|
89
|
+
```javascript
|
|
90
|
+
browser_goto({ url: "https://example.com" })
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Step 2: Get Snapshot (for element discovery)**
|
|
94
|
+
```javascript
|
|
95
|
+
browser_snapshot({ fullPage: true })
|
|
96
|
+
// Returns accessibility tree with element refs
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Step 3: Interact with Elements**
|
|
100
|
+
```javascript
|
|
101
|
+
// Click button (by role)
|
|
102
|
+
browser_click({
|
|
103
|
+
ref: "button[name='login']",
|
|
104
|
+
element: "Login button"
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
// Fill input (by role)
|
|
108
|
+
browser_fill({
|
|
109
|
+
ref: "input[name='email']",
|
|
110
|
+
text: "user@example.com"
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
// Press Enter
|
|
114
|
+
browser_press({
|
|
115
|
+
ref: "input[name='email']",
|
|
116
|
+
key: "Enter"
|
|
117
|
+
})
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Step 4: Verify Results**
|
|
121
|
+
```javascript
|
|
122
|
+
// Execute JavaScript to check state
|
|
123
|
+
browser_evaluate({
|
|
124
|
+
code: "document.querySelector('.success-message').textContent"
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
// Get console messages
|
|
128
|
+
browser_console_messages()
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Step 5: Clean Up**
|
|
132
|
+
```javascript
|
|
133
|
+
browser_close()
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 2. Browserbase Integration (FALLBACK - Cloud Testing)
|
|
137
|
+
|
|
138
|
+
**⚠️ ONLY USE AS FALLBACK when Playwright MCP unavailable!**
|
|
139
|
+
|
|
140
|
+
Browserbase provides cloud-based browser automation:
|
|
141
|
+
|
|
142
|
+
#### When to Use Browserbase
|
|
143
|
+
|
|
144
|
+
- ✅ CI/CD pipelines without local browsers
|
|
145
|
+
- ✅ Parallel test execution (10x faster)
|
|
146
|
+
- ✅ Cross-browser testing at scale
|
|
147
|
+
- ❌ **NOT for local development** (use Playwright MCP!)
|
|
148
|
+
|
|
149
|
+
#### Available Tools (mcp__plugin_specweave-ui_browserbase__*)
|
|
150
|
+
|
|
151
|
+
- **browserbase_session_create** - Create cloud session
|
|
152
|
+
- **browserbase_session_close** - Close session
|
|
153
|
+
- **browserbase_stagehand_navigate** - Navigate to URL
|
|
154
|
+
- **browserbase_stagehand_act** - Perform action (click, type, etc.)
|
|
155
|
+
- **browserbase_stagehand_extract** - Extract data from page
|
|
156
|
+
- **browserbase_stagehand_observe** - Find elements
|
|
157
|
+
- **browserbase_screenshot** - Capture screenshot
|
|
158
|
+
- **browserbase_stagehand_get_url** - Get current URL
|
|
159
|
+
- **browserbase_stagehand_agent** - Run autonomous task
|
|
160
|
+
|
|
161
|
+
#### Setup Requirements
|
|
162
|
+
|
|
163
|
+
1. Get API credentials from [Browserbase](https://www.browserbase.com/)
|
|
164
|
+
2. Set environment variables:
|
|
165
|
+
```bash
|
|
166
|
+
export BROWSERBASE_API_KEY="bb_xxx"
|
|
167
|
+
export BROWSERBASE_PROJECT_ID="proj_xxx"
|
|
168
|
+
```
|
|
169
|
+
3. Configuration is in `.mcp.json`
|
|
170
|
+
|
|
171
|
+
#### Testing Workflow (Browserbase)
|
|
172
|
+
|
|
173
|
+
**Step 1: Create Session**
|
|
174
|
+
```javascript
|
|
175
|
+
browserbase_session_create()
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Step 2: Navigate**
|
|
179
|
+
```javascript
|
|
180
|
+
browserbase_stagehand_navigate({ url: "https://example.com" })
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Step 3: Interact**
|
|
184
|
+
```javascript
|
|
185
|
+
// Click button (natural language)
|
|
186
|
+
browserbase_stagehand_act({
|
|
187
|
+
action: "Click the login button"
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
// Fill form (natural language)
|
|
191
|
+
browserbase_stagehand_act({
|
|
192
|
+
action: "Type 'user@example.com' into the email field"
|
|
193
|
+
})
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Step 4: Extract Data**
|
|
197
|
+
```javascript
|
|
198
|
+
browserbase_stagehand_extract({
|
|
199
|
+
instruction: "Extract all product names and prices"
|
|
200
|
+
})
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Step 5: Close Session**
|
|
204
|
+
```javascript
|
|
205
|
+
browserbase_session_close()
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### 3. E2E Test Writing Best Practices
|
|
209
|
+
|
|
210
|
+
#### Test Structure
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
import { test, expect } from '@playwright/test';
|
|
214
|
+
|
|
215
|
+
test.describe('User Login Flow', () => {
|
|
216
|
+
test('should login successfully with valid credentials', async ({ page }) => {
|
|
217
|
+
// ✅ Use accessibility-first selectors
|
|
218
|
+
await page.goto('https://example.com/login');
|
|
219
|
+
|
|
220
|
+
// ✅ getByRole (PREFERRED)
|
|
221
|
+
await page.getByRole('textbox', { name: 'Email' }).fill('user@example.com');
|
|
222
|
+
await page.getByRole('textbox', { name: 'Password' }).fill('password123');
|
|
223
|
+
await page.getByRole('button', { name: 'Sign In' }).click();
|
|
224
|
+
|
|
225
|
+
// ✅ Verify outcome
|
|
226
|
+
await expect(page.getByText('Welcome back!')).toBeVisible();
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
test('should show error with invalid credentials', async ({ page }) => {
|
|
230
|
+
await page.goto('https://example.com/login');
|
|
231
|
+
|
|
232
|
+
// ✅ getByTestId for stable selectors
|
|
233
|
+
await page.getByTestId('email-input').fill('invalid@example.com');
|
|
234
|
+
await page.getByTestId('password-input').fill('wrong');
|
|
235
|
+
await page.getByTestId('login-button').click();
|
|
236
|
+
|
|
237
|
+
// ✅ Verify error message
|
|
238
|
+
await expect(page.getByText('Invalid credentials')).toBeVisible();
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
#### Selector Guidelines (Priority Order)
|
|
244
|
+
|
|
245
|
+
1. **getByRole** - Accessibility-first (BEST)
|
|
246
|
+
- `getByRole('button', { name: 'Submit' })`
|
|
247
|
+
- `getByRole('textbox', { name: 'Email' })`
|
|
248
|
+
- `getByRole('link', { name: 'Home' })`
|
|
249
|
+
|
|
250
|
+
2. **getByText** - Visible text (GOOD)
|
|
251
|
+
- `getByText('Sign In')`
|
|
252
|
+
- `getByText(/welcome/i)` (regex)
|
|
253
|
+
|
|
254
|
+
3. **getByTestId** - Test attributes (OK)
|
|
255
|
+
- `getByTestId('login-form')`
|
|
256
|
+
- Requires: `<form data-testid="login-form">`
|
|
257
|
+
|
|
258
|
+
4. **getByLabel** - Form labels (OK)
|
|
259
|
+
- `getByLabel('Email')`
|
|
260
|
+
|
|
261
|
+
5. **.locator** - CSS/XPath (AVOID)
|
|
262
|
+
- Only use with clear justification comment
|
|
263
|
+
- Example: `// JUSTIFICATION: Complex table structure requires XPath`
|
|
264
|
+
|
|
265
|
+
#### Test Organization
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
// ✅ Use .serial for dependent tests
|
|
269
|
+
test.describe.serial('User Journey', () => {
|
|
270
|
+
test('step 1: register', async ({ page }) => {
|
|
271
|
+
// Registration flow
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
test('step 2: verify email', async ({ page }) => {
|
|
275
|
+
// Email verification (depends on step 1)
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
test('step 3: complete profile', async ({ page }) => {
|
|
279
|
+
// Profile completion (depends on step 2)
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
// ✅ Re-use auth state
|
|
284
|
+
test.use({ storageState: 'auth.json' });
|
|
285
|
+
|
|
286
|
+
test('authenticated action', async ({ page }) => {
|
|
287
|
+
// Already logged in via storageState
|
|
288
|
+
await page.goto('https://example.com/dashboard');
|
|
289
|
+
});
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### 4. Common Patterns
|
|
293
|
+
|
|
294
|
+
#### Pattern: Form Submission
|
|
295
|
+
```javascript
|
|
296
|
+
// Playwright MCP
|
|
297
|
+
browser_goto({ url: "https://example.com/contact" })
|
|
298
|
+
browser_fill({ ref: "input[name='email']", text: "user@example.com" })
|
|
299
|
+
browser_fill({ ref: "textarea[name='message']", text: "Hello!" })
|
|
300
|
+
browser_click({ ref: "button[type='submit']", element: "Submit button" })
|
|
301
|
+
|
|
302
|
+
// Browserbase (fallback)
|
|
303
|
+
browserbase_stagehand_act({ action: "Fill email with user@example.com" })
|
|
304
|
+
browserbase_stagehand_act({ action: "Fill message with Hello!" })
|
|
305
|
+
browserbase_stagehand_act({ action: "Click the Submit button" })
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
#### Pattern: Data Extraction
|
|
309
|
+
```javascript
|
|
310
|
+
// Playwright MCP
|
|
311
|
+
browser_snapshot() // Get page structure
|
|
312
|
+
browser_evaluate({
|
|
313
|
+
code: `
|
|
314
|
+
Array.from(document.querySelectorAll('.product')).map(el => ({
|
|
315
|
+
name: el.querySelector('.name').textContent,
|
|
316
|
+
price: el.querySelector('.price').textContent
|
|
317
|
+
}))
|
|
318
|
+
`
|
|
319
|
+
})
|
|
320
|
+
|
|
321
|
+
// Browserbase (fallback)
|
|
322
|
+
browserbase_stagehand_extract({
|
|
323
|
+
instruction: "Extract all product names and prices from the page"
|
|
324
|
+
})
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
#### Pattern: Screenshot Capture
|
|
328
|
+
```javascript
|
|
329
|
+
// Playwright MCP
|
|
330
|
+
browser_evaluate({
|
|
331
|
+
code: `
|
|
332
|
+
const canvas = await page.screenshot({ fullPage: true });
|
|
333
|
+
canvas.toDataURL('image/png')
|
|
334
|
+
`
|
|
335
|
+
})
|
|
336
|
+
|
|
337
|
+
// Browserbase (fallback)
|
|
338
|
+
browserbase_screenshot({ name: "page-capture" })
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### 5. Debugging E2E Tests
|
|
342
|
+
|
|
343
|
+
#### Test Output Analysis
|
|
344
|
+
|
|
345
|
+
When tests fail, check `test-output/` for:
|
|
346
|
+
- **Error context** (.md files) - What went wrong
|
|
347
|
+
- **Screenshots** (.png files) - End state visualization
|
|
348
|
+
- **Traces** (.zip files) - Full execution trace
|
|
349
|
+
|
|
350
|
+
#### Common Issues
|
|
351
|
+
|
|
352
|
+
**Issue: Element not found**
|
|
353
|
+
```javascript
|
|
354
|
+
// ❌ BAD: Fragile selector
|
|
355
|
+
await page.locator('.btn-primary').click()
|
|
356
|
+
|
|
357
|
+
// ✅ GOOD: Accessibility-first
|
|
358
|
+
await page.getByRole('button', { name: 'Submit' }).click()
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
**Issue: Timing issues**
|
|
362
|
+
```javascript
|
|
363
|
+
// ❌ BAD: Arbitrary wait
|
|
364
|
+
await page.waitForTimeout(5000)
|
|
365
|
+
|
|
366
|
+
// ✅ GOOD: Wait for specific condition
|
|
367
|
+
await page.waitForSelector('[data-testid="success-message"]')
|
|
368
|
+
await expect(page.getByText('Success')).toBeVisible()
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**Issue: Flaky tests**
|
|
372
|
+
```javascript
|
|
373
|
+
// ✅ Use test-only API endpoints
|
|
374
|
+
await request.post('/api/test/seed', { data: testData })
|
|
375
|
+
|
|
376
|
+
// ✅ Re-use auth storage state
|
|
377
|
+
test.use({ storageState: 'auth.json' })
|
|
378
|
+
|
|
379
|
+
// ✅ Explicit waits
|
|
380
|
+
await page.waitForLoadState('networkidle')
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## Decision Tree: Which Tool to Use?
|
|
384
|
+
|
|
385
|
+
```
|
|
386
|
+
Are you running locally (dev machine or VM)?
|
|
387
|
+
├─ YES → Use Playwright MCP (PRIMARY)
|
|
388
|
+
│ ├─ Tools: mcp__plugin_specweave-ui_playwright__*
|
|
389
|
+
│ ├─ Fast, reliable, local execution
|
|
390
|
+
│ └─ No API keys needed
|
|
391
|
+
│
|
|
392
|
+
└─ NO → Running in CI/CD or need cloud infrastructure?
|
|
393
|
+
└─ YES → Use Browserbase (FALLBACK)
|
|
394
|
+
├─ Tools: mcp__plugin_specweave-ui_browserbase__*
|
|
395
|
+
├─ Requires: BROWSERBASE_API_KEY, BROWSERBASE_PROJECT_ID
|
|
396
|
+
└─ Benefits: Parallel execution, no browser install
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## Configuration Files
|
|
400
|
+
|
|
401
|
+
### .mcp.json (Plugin-Level)
|
|
402
|
+
```json
|
|
403
|
+
{
|
|
404
|
+
"mcpServers": {
|
|
405
|
+
"playwright": {
|
|
406
|
+
"command": "npx",
|
|
407
|
+
"args": ["@playwright/mcp@latest"],
|
|
408
|
+
"description": "Local Playwright - PRIMARY",
|
|
409
|
+
"optional": false
|
|
410
|
+
},
|
|
411
|
+
"browserbase": {
|
|
412
|
+
"command": "npx",
|
|
413
|
+
"args": ["-y", "@browserbasehq/mcp-server-browserbase"],
|
|
414
|
+
"env": {
|
|
415
|
+
"BROWSERBASE_API_KEY": "${BROWSERBASE_API_KEY}",
|
|
416
|
+
"BROWSERBASE_PROJECT_ID": "${BROWSERBASE_PROJECT_ID}"
|
|
417
|
+
},
|
|
418
|
+
"description": "Cloud Browserbase - FALLBACK",
|
|
419
|
+
"optional": true
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### playwright.config.ts (Project-Level)
|
|
426
|
+
```typescript
|
|
427
|
+
import { defineConfig } from '@playwright/test';
|
|
428
|
+
|
|
429
|
+
export default defineConfig({
|
|
430
|
+
testDir: './tests/e2e',
|
|
431
|
+
timeout: 30000,
|
|
432
|
+
expect: {
|
|
433
|
+
timeout: 5000
|
|
434
|
+
},
|
|
435
|
+
use: {
|
|
436
|
+
// ✅ Accessibility-first testing
|
|
437
|
+
actionTimeout: 5000,
|
|
438
|
+
navigationTimeout: 60000,
|
|
439
|
+
|
|
440
|
+
// ✅ Screenshots on failure
|
|
441
|
+
screenshot: 'only-on-failure',
|
|
442
|
+
|
|
443
|
+
// ✅ Traces for debugging
|
|
444
|
+
trace: 'retain-on-failure',
|
|
445
|
+
},
|
|
446
|
+
projects: [
|
|
447
|
+
{
|
|
448
|
+
name: 'chromium',
|
|
449
|
+
use: { browserName: 'chromium' }
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
name: 'firefox',
|
|
453
|
+
use: { browserName: 'firefox' }
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
name: 'webkit',
|
|
457
|
+
use: { browserName: 'webkit' }
|
|
458
|
+
}
|
|
459
|
+
]
|
|
460
|
+
});
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
## Quick Reference
|
|
464
|
+
|
|
465
|
+
### Playwright MCP Commands
|
|
466
|
+
```bash
|
|
467
|
+
# Install MCP server
|
|
468
|
+
npx @playwright/mcp@latest
|
|
469
|
+
|
|
470
|
+
# Run with options
|
|
471
|
+
npx @playwright/mcp@latest --browser chromium --headless
|
|
472
|
+
|
|
473
|
+
# Run with config
|
|
474
|
+
npx @playwright/mcp@latest --config playwright-mcp.json
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
### Browserbase Setup
|
|
478
|
+
```bash
|
|
479
|
+
# Get API keys
|
|
480
|
+
# 1. Sign up at https://www.browserbase.com/
|
|
481
|
+
# 2. Create project
|
|
482
|
+
# 3. Get API key and project ID
|
|
483
|
+
|
|
484
|
+
# Set environment
|
|
485
|
+
export BROWSERBASE_API_KEY="bb_xxx"
|
|
486
|
+
export BROWSERBASE_PROJECT_ID="proj_xxx"
|
|
487
|
+
|
|
488
|
+
# Test connection
|
|
489
|
+
npx -y @browserbasehq/mcp-server-browserbase
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
## Examples
|
|
493
|
+
|
|
494
|
+
### Example 1: Login Flow (Playwright MCP)
|
|
495
|
+
```javascript
|
|
496
|
+
// Step 1: Navigate
|
|
497
|
+
browser_goto({ url: "https://app.example.com/login" })
|
|
498
|
+
|
|
499
|
+
// Step 2: Fill form
|
|
500
|
+
browser_fill({ ref: "input[name='email']", text: "user@example.com" })
|
|
501
|
+
browser_fill({ ref: "input[name='password']", text: "secure123" })
|
|
502
|
+
|
|
503
|
+
// Step 3: Submit
|
|
504
|
+
browser_click({ ref: "button[type='submit']", element: "Login button" })
|
|
505
|
+
|
|
506
|
+
// Step 4: Verify
|
|
507
|
+
browser_evaluate({ code: "document.querySelector('.welcome').textContent" })
|
|
508
|
+
// Returns: "Welcome back, User!"
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
### Example 2: E2E Test Generation
|
|
512
|
+
```typescript
|
|
513
|
+
import { test, expect } from '@playwright/test';
|
|
514
|
+
|
|
515
|
+
test('complete user registration flow', async ({ page }) => {
|
|
516
|
+
// Navigate
|
|
517
|
+
await page.goto('https://app.example.com/signup');
|
|
518
|
+
|
|
519
|
+
// ✅ MUST use getByRole (accessibility-first)
|
|
520
|
+
await page.getByRole('textbox', { name: 'Email' })
|
|
521
|
+
.fill('newuser@example.com');
|
|
522
|
+
await page.getByRole('textbox', { name: 'Password' })
|
|
523
|
+
.fill('secure123');
|
|
524
|
+
await page.getByRole('textbox', { name: 'Confirm Password' })
|
|
525
|
+
.fill('secure123');
|
|
526
|
+
|
|
527
|
+
// ✅ MUST use getByRole for button
|
|
528
|
+
await page.getByRole('button', { name: 'Create Account' }).click();
|
|
529
|
+
|
|
530
|
+
// ✅ Verify success
|
|
531
|
+
await expect(page.getByText('Account created successfully'))
|
|
532
|
+
.toBeVisible();
|
|
533
|
+
});
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
### Example 3: Data Extraction (Browserbase Fallback)
|
|
537
|
+
```javascript
|
|
538
|
+
// Create session
|
|
539
|
+
browserbase_session_create()
|
|
540
|
+
|
|
541
|
+
// Navigate
|
|
542
|
+
browserbase_stagehand_navigate({ url: "https://products.example.com" })
|
|
543
|
+
|
|
544
|
+
// Extract products
|
|
545
|
+
browserbase_stagehand_extract({
|
|
546
|
+
instruction: "Extract all product names, prices, and availability status"
|
|
547
|
+
})
|
|
548
|
+
// Returns: [
|
|
549
|
+
// { name: "Product A", price: "$99", available: true },
|
|
550
|
+
// { name: "Product B", price: "$149", available: false }
|
|
551
|
+
// ]
|
|
552
|
+
|
|
553
|
+
// Close session
|
|
554
|
+
browserbase_session_close()
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
## Troubleshooting
|
|
558
|
+
|
|
559
|
+
### Playwright MCP Issues
|
|
560
|
+
|
|
561
|
+
**Issue: MCP server not found**
|
|
562
|
+
```bash
|
|
563
|
+
# Install globally
|
|
564
|
+
npm install -g @playwright/mcp
|
|
565
|
+
|
|
566
|
+
# Or use npx (recommended)
|
|
567
|
+
npx @playwright/mcp@latest
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
**Issue: Browser not installed**
|
|
571
|
+
```bash
|
|
572
|
+
# Install Playwright browsers
|
|
573
|
+
npx playwright install chromium
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
**Issue: Timeout errors**
|
|
577
|
+
```json
|
|
578
|
+
{
|
|
579
|
+
"args": [
|
|
580
|
+
"@playwright/mcp@latest",
|
|
581
|
+
"--timeout-action", "10000",
|
|
582
|
+
"--timeout-navigation", "120000"
|
|
583
|
+
]
|
|
584
|
+
}
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
### Browserbase Issues
|
|
588
|
+
|
|
589
|
+
**Issue: Authentication failed**
|
|
590
|
+
```bash
|
|
591
|
+
# Check environment variables
|
|
592
|
+
echo $BROWSERBASE_API_KEY
|
|
593
|
+
echo $BROWSERBASE_PROJECT_ID
|
|
594
|
+
|
|
595
|
+
# Re-set if missing
|
|
596
|
+
export BROWSERBASE_API_KEY="bb_xxx"
|
|
597
|
+
export BROWSERBASE_PROJECT_ID="proj_xxx"
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
**Issue: Session creation timeout**
|
|
601
|
+
- Check Browserbase dashboard for quota limits
|
|
602
|
+
- Verify API key has correct permissions
|
|
603
|
+
- Try reducing parallel session count
|
|
604
|
+
|
|
605
|
+
## Verification Steps
|
|
606
|
+
|
|
607
|
+
### Quick Check: Is Playwright MCP Connected?
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
# Check MCP server status
|
|
611
|
+
claude mcp list
|
|
612
|
+
|
|
613
|
+
# Should show:
|
|
614
|
+
# plugin:specweave-ui:playwright - ✓ Connected
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### Test Playwright MCP (5-Second Test)
|
|
618
|
+
|
|
619
|
+
```javascript
|
|
620
|
+
// 1. Navigate
|
|
621
|
+
mcp__plugin_specweave-ui_playwright__browser_goto({ url: "https://example.com" })
|
|
622
|
+
|
|
623
|
+
// 2. Get title
|
|
624
|
+
mcp__plugin_specweave-ui_playwright__browser_evaluate({ code: "document.title" })
|
|
625
|
+
// Expected: "Example Domain"
|
|
626
|
+
|
|
627
|
+
// 3. Close
|
|
628
|
+
mcp__plugin_specweave-ui_playwright__browser_close()
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
✅ **If this works**: Playwright MCP is properly configured!
|
|
632
|
+
|
|
633
|
+
❌ **If this fails**: See troubleshooting section below.
|
|
634
|
+
|
|
635
|
+
### Common Setup Issue: Missing `-y` Flag
|
|
636
|
+
|
|
637
|
+
**Problem**: Playwright MCP shows as not connected in `claude mcp list`
|
|
638
|
+
|
|
639
|
+
**Solution**: Check `.mcp.json` has the `-y` flag:
|
|
640
|
+
|
|
641
|
+
```json
|
|
642
|
+
{
|
|
643
|
+
"playwright": {
|
|
644
|
+
"args": ["-y", "@playwright/mcp@latest"] // ✅ Has -y
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
Without `-y`, npx waits for user confirmation and MCP connection hangs!
|
|
650
|
+
|
|
651
|
+
**After fixing**: Restart Claude Code for changes to take effect.
|
|
652
|
+
|
|
653
|
+
## Resources
|
|
654
|
+
|
|
655
|
+
- **Playwright MCP**: https://github.com/microsoft/playwright-mcp
|
|
656
|
+
- **Browserbase**: https://www.browserbase.com/docs
|
|
657
|
+
- **Playwright Docs**: https://playwright.dev/
|
|
658
|
+
- **E2E Best Practices**: https://playwright.dev/docs/best-practices
|
|
659
|
+
- **Verification Guide**: See `.specweave/increments/0029-cicd-failure-detection-auto-fix/reports/MCP-PLAYWRIGHT-VERIFICATION-GUIDE.md`
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
**Remember**: ALWAYS try Playwright MCP first! Only use Browserbase as fallback for cloud/CI scenarios.
|