@zhiweiliu/playwright-generator 1.0.45 → 1.0.47

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 CHANGED
@@ -15,6 +15,7 @@ This module streamlines the generation of Playwright test cases by integrating w
15
15
  - [Preset Test Framework](#preset-test-framework)
16
16
  - [Test Cases Written in Natural Language](#test-cases-written-in-natural-language)
17
17
  - [Generation](#generation)
18
+ - [Helper Generation](#helper-generation)
18
19
  - [Test Results & Reporting](#test-results--reporting)
19
20
  - [Execution and Debugging](#execution-and-debugging)
20
21
  - [Advanced Features](#advanced-features)
@@ -125,8 +126,12 @@ The installed module will have amazing features to facilitate your day-to-day te
125
126
  project-root/
126
127
  ├── tests/ # Natural language test cases (includes sample test cases)
127
128
  │ └── *.test.md
129
+ ├── helpers/ # Natural language helper definitions
130
+ │ └── *.md
128
131
  ├── generated/ # Generated Playwright test code
129
- └── generated.test.ts
132
+ ├── generated.test.ts
133
+ │ └── helpers/ # Generated helper classes
134
+ │ └── *.ts
130
135
  ├── page-objects/ # Page Object Models (optional)
131
136
  │ └── *.po.ts
132
137
  ├── utils/ # Helper utilities
@@ -250,6 +255,83 @@ npx playwright-generator generate --tc TC-0001 --output login.test.ts
250
255
  npx playwright-generator generate --tc TC-0001,TC-0002,TC-0003
251
256
  ```
252
257
 
258
+ ### Helper Generation
259
+
260
+ Helpers are reusable TypeScript classes that encapsulate common Playwright actions (e.g. login, navigation, form filling). They are defined in natural language in the `helpers/` folder and generated into `generated/helpers/` as TypeScript classes.
261
+
262
+ **Helper Definition Format (`helpers/LoginHelper.md`)**:
263
+
264
+ ```
265
+ [HELPER: LoginHelper]
266
+ # This is a helper class for login related actions
267
+
268
+ [HELPER-ACTION: login]
269
+ ## This action is for logging in a user
270
+ - go to https://somewebsite.com
271
+ - URL https://somewebsite.com/login should be loaded
272
+ - input username as "user1"
273
+ - input password as "password"
274
+ - click the button with text "Log in"
275
+ - URL https://somewebsite.com/home should be loaded
276
+
277
+ [HELPER-ACTION: logout]
278
+ ## This action is for logging out a user
279
+ - click the button with text "Logout"
280
+ - URL https://somewebsite.com/login should be loaded
281
+ ```
282
+
283
+ **Format Rules**:
284
+
285
+ - First non-empty line: `[HELPER: HelperName]` — name must start with a letter, contain only letters, numbers, and underscores
286
+ - Second non-empty line: `# Description` — description of the helper class
287
+ - Each action starts with `[HELPER-ACTION: actionName]` — same naming rules as helper name
288
+ - Action description: `## Description` on the next non-empty line
289
+ - Action details: bullet points describing the steps
290
+ - Each action is generated as a `static async` method on the helper class
291
+
292
+ **Generation Commands**:
293
+
294
+ ```bash
295
+ # Generate a helper class (default: claude)
296
+ npx playwright-generator generate-helper LoginHelper
297
+
298
+ # Generate with a specific model
299
+ npx playwright-generator generate-helper LoginHelper --model azure-openai
300
+ npx playwright-generator generate-helper LoginHelper --model chatgpt
301
+ npx playwright-generator generate-helper LoginHelper --model local
302
+ ```
303
+
304
+ **Output**: The generated helper class is written to `generated/helpers/LoginHelper.ts`:
305
+
306
+ ```typescript
307
+ import { Page } from '@playwright/test';
308
+
309
+ /**
310
+ * This is a helper class for login related actions
311
+ */
312
+ export class LoginHelper {
313
+ static async login(page: Page): Promise<void> {
314
+ // generated implementation
315
+ }
316
+
317
+ static async logout(page: Page): Promise<void> {
318
+ // generated implementation
319
+ }
320
+ }
321
+ ```
322
+
323
+ **Using helpers in test cases**: Reference the generated helper in your natural language test case descriptions, and the LLM will use it when generating test code:
324
+
325
+ ```
326
+ [TC-0001] [SMOKE] [LOGIN]
327
+
328
+ # User completes a purchase after logging in
329
+
330
+ - Use LoginHelper.login() to log in
331
+ - When the user adds an item to the cart
332
+ - Then the user completes checkout
333
+ ```
334
+
253
335
  ### Test Results & Reporting
254
336
 
255
337
  - Test execution produces detailed reports with pass/fail status
@@ -338,7 +420,7 @@ Workflow file location: `.github/workflows/playwright-tests.yml`
338
420
  4. **Code Review**: Always review generated code before committing
339
421
  5. **Page Objects**: Use POM for maintainability as your test suite grows
340
422
  6. **Assertions**: Be explicit about what you're asserting
341
- 7. **Wait Strategies**: Use Playwright's built-in auto-waiting; avoid hardcoded waits
423
+ 8. **Helper Classes**: Use `generate-helper` to create reusable helper classes for common actions, reducing duplication across test cases
342
424
 
343
425
  ### Troubleshooting
344
426
 
@@ -352,6 +434,8 @@ Workflow file location: `.github/workflows/playwright-tests.yml`
352
434
  | `Generated code doesn't compile` | Review the natural language description for clarity; regenerate with a refined prompt |
353
435
  | `Tests pass locally but fail in CI` | Check `BASE_URL` environment variable and add debugging with screenshots |
354
436
  | `Selector not found` | Ensure selectors are unique and reference current UI state |
437
+ | `Helper definition not found` | Ensure the helper file exists in `helpers/` and the `[HELPER: Name]` tag matches exactly |
438
+ | `No HELPER-ACTION sections found` | Add at least one `[HELPER-ACTION: actionName]` section to the helper definition file |
355
439
  | `ECONNREFUSED` (local LLM) | Ollama server is not running — run `ollama serve` |
356
440
  | `model not found` (local LLM) | Run `ollama pull <model>` first |
357
441
  | Slow local LLM generation | Local models are slower than cloud APIs; expect 30–120s; try `mistral` for speed |
package/dist/cli.js CHANGED
@@ -7,12 +7,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const commander_1 = require("commander");
8
8
  const init_1 = require("./commands/init");
9
9
  const generate_1 = require("./commands/generate");
10
+ const generate_helper_1 = require("./commands/generate-helper");
10
11
  const chalk_1 = __importDefault(require("chalk"));
11
12
  const program = new commander_1.Command();
12
13
  program
13
14
  .name("playwright-generator")
14
15
  .description("Generate Playwright test cases from natural language using LLM")
15
- .version("1.0.45");
16
+ .version("1.0.47");
16
17
  // Init command
17
18
  program
18
19
  .command("init [projectPath]")
@@ -53,6 +54,23 @@ program
53
54
  process.exit(1);
54
55
  }
55
56
  });
57
+ // Generate-helper command
58
+ program
59
+ .command("generate-helper <helperName>")
60
+ .description("Generate a Playwright helper class from a natural language definition in helpers/")
61
+ .option("-m, --model <model>", "LLM model to use (claude, azure-openai, chatgpt or local)")
62
+ .action(async (helperName, options) => {
63
+ try {
64
+ await (0, generate_helper_1.generateHelper)(process.cwd(), {
65
+ helperName,
66
+ model: options.model,
67
+ });
68
+ }
69
+ catch (error) {
70
+ console.error(chalk_1.default.red("Helper generation failed"), error instanceof Error ? error.message : error);
71
+ process.exit(1);
72
+ }
73
+ });
56
74
  // Help for test case format
57
75
  program
58
76
  .command("help:testcases")
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,0CAAoD;AACpD,kDAAuD;AACvD,kDAA0B;AAE1B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,sBAAsB,CAAC;KAC5B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;IAC5B,MAAM,UAAU,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,IAAA,wBAAiB,EAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,mBAAmB;AACnB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CACL,yBAAyB,EACzB,uDAAuD,CACxD;KACA,MAAM,CACL,qBAAqB,EACrB,2DAA2D,CAC5D;KACA,MAAM,CACL,2BAA2B,EAC3B,kDAAkD,CACnD;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CACT,sEAAsE,CACvE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAElC,MAAM,IAAA,2BAAgB,EAAC,WAAW,EAAE;YAClC,WAAW;YACX,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,MAAM;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAC9B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,4BAA4B;AAC5B,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4CZ,CAAC,CACD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface GenerateHelperOptions {
2
+ helperName: string;
3
+ model?: "claude" | "azure-openai" | "chatgpt" | "local";
4
+ }
5
+ export declare function generateHelper(projectRoot: string, options: GenerateHelperOptions): Promise<void>;
6
+ //# sourceMappingURL=generate-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-helper.d.ts","sourceRoot":"","sources":["../../src/commands/generate-helper.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;CACzD;AAwID,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgFf"}
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateHelper = generateHelper;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const llm_1 = require("../llm");
11
+ const config_1 = __importDefault(require("../config"));
12
+ // Recursively find all files matching a suffix under a directory
13
+ function findFiles(dir, suffix) {
14
+ const results = [];
15
+ if (!fs_extra_1.default.existsSync(dir)) {
16
+ return results;
17
+ }
18
+ for (const entry of fs_extra_1.default.readdirSync(dir, { withFileTypes: true })) {
19
+ const full = path_1.default.join(dir, entry.name);
20
+ if (entry.isDirectory()) {
21
+ results.push(...findFiles(full, suffix));
22
+ }
23
+ else if (entry.isFile() && entry.name.endsWith(suffix)) {
24
+ results.push(full);
25
+ }
26
+ }
27
+ return results;
28
+ }
29
+ async function findHelperFile(helpersDir, helperName) {
30
+ const files = findFiles(helpersDir, ".md");
31
+ for (const file of files) {
32
+ const content = await fs_extra_1.default.readFile(file, "utf-8");
33
+ if (content.includes(`[HELPER: ${helperName}]`)) {
34
+ return file;
35
+ }
36
+ }
37
+ return null;
38
+ }
39
+ function parseHelperDefinition(content, helperName) {
40
+ const lines = content.replace(/\r\n/g, "\n").split("\n");
41
+ // Find the HELPER tag line
42
+ const helperTagIndex = lines.findIndex(l => l.includes(`[HELPER: ${helperName}]`));
43
+ if (helperTagIndex === -1) {
44
+ throw new Error(`[HELPER: ${helperName}] not found in file`);
45
+ }
46
+ // Description is the next non-empty line starting with #
47
+ let description = "";
48
+ for (let i = helperTagIndex + 1; i < lines.length; i++) {
49
+ const trimmed = lines[i].trim();
50
+ if (trimmed.startsWith("#")) {
51
+ description = trimmed.replace(/^#+\s*/, "").trim();
52
+ break;
53
+ }
54
+ }
55
+ // Parse actions
56
+ const actions = [];
57
+ const actionRegex = /^\[HELPER-ACTION:\s*([A-Za-z][A-Za-z0-9_]*)\]/;
58
+ for (let i = 0; i < lines.length; i++) {
59
+ const match = lines[i].match(actionRegex);
60
+ if (!match) {
61
+ continue;
62
+ }
63
+ const actionName = match[1];
64
+ // Action description: next non-empty line starting with ##
65
+ let actionDescription = "";
66
+ let detailsStart = i + 1;
67
+ for (let j = i + 1; j < lines.length; j++) {
68
+ const trimmed = lines[j].trim();
69
+ if (trimmed.startsWith("##")) {
70
+ actionDescription = trimmed.replace(/^#+\s*/, "").trim();
71
+ detailsStart = j + 1;
72
+ break;
73
+ }
74
+ }
75
+ // Details: everything until next [HELPER-ACTION:] or end of file
76
+ let detailsEnd = lines.length;
77
+ for (let j = detailsStart; j < lines.length; j++) {
78
+ if (actionRegex.test(lines[j])) {
79
+ detailsEnd = j;
80
+ break;
81
+ }
82
+ }
83
+ const details = lines.slice(detailsStart, detailsEnd).join("\n").trim();
84
+ actions.push({ name: actionName, description: actionDescription, details });
85
+ }
86
+ return { name: helperName, description, actions };
87
+ }
88
+ function extractMethodCode(raw, actionName) {
89
+ // Try fenced code block first
90
+ const fenceRegex = /```(?:ts|typescript)?\s*\n([\s\S]*?)\n```/gi;
91
+ const fenceMatches = [...raw.matchAll(fenceRegex)];
92
+ if (fenceMatches.length > 0) {
93
+ const best = fenceMatches
94
+ .map(m => m[1]?.trim() || "")
95
+ .filter(Boolean)
96
+ .reduce((a, b) => (b.length > a.length ? b : a), "");
97
+ if (best) {
98
+ return best;
99
+ }
100
+ }
101
+ // Fall back to extracting the static method
102
+ const methodIndex = raw.indexOf(`static async ${actionName}`);
103
+ if (methodIndex === -1) {
104
+ return raw.trim();
105
+ }
106
+ const bodyStart = raw.indexOf("{", methodIndex);
107
+ if (bodyStart === -1) {
108
+ return raw.slice(methodIndex).trim();
109
+ }
110
+ let braceCount = 1;
111
+ let inString = false;
112
+ let stringChar = "";
113
+ let escaped = false;
114
+ for (let i = bodyStart + 1; i < raw.length; i++) {
115
+ const char = raw[i];
116
+ if (escaped) {
117
+ escaped = false;
118
+ continue;
119
+ }
120
+ if (char === "\\") {
121
+ escaped = true;
122
+ continue;
123
+ }
124
+ if (!inString && (char === '"' || char === "'" || char === "`")) {
125
+ inString = true;
126
+ stringChar = char;
127
+ continue;
128
+ }
129
+ if (inString && char === stringChar) {
130
+ inString = false;
131
+ continue;
132
+ }
133
+ if (!inString) {
134
+ if (char === "{") {
135
+ braceCount++;
136
+ }
137
+ else if (char === "}") {
138
+ braceCount--;
139
+ if (braceCount === 0) {
140
+ return raw.slice(methodIndex, i + 1).trim();
141
+ }
142
+ }
143
+ }
144
+ }
145
+ return raw.slice(methodIndex).trim();
146
+ }
147
+ async function generateHelper(projectRoot, options) {
148
+ try {
149
+ if (options.model) {
150
+ config_1.default.setModel(options.model);
151
+ }
152
+ const llmProvider = llm_1.LLMFactory.createProvider();
153
+ console.log(chalk_1.default.blue("Validating LLM connection..."));
154
+ const isConnected = await llmProvider.validateConnection();
155
+ if (!isConnected) {
156
+ console.warn(chalk_1.default.yellow("⚠ Warning: Could not validate LLM connection"));
157
+ }
158
+ else {
159
+ console.log(chalk_1.default.green("✓ LLM connection validated"));
160
+ }
161
+ const helpersDir = path_1.default.join(projectRoot, "helpers");
162
+ const outputDir = path_1.default.join(projectRoot, "generated", "helpers");
163
+ const helperFile = await findHelperFile(helpersDir, options.helperName);
164
+ if (!helperFile) {
165
+ throw new Error(`Helper definition file for "${options.helperName}" not found in helpers/ folder`);
166
+ }
167
+ console.log(chalk_1.default.gray(`Found: ${path_1.default.relative(projectRoot, helperFile)}`));
168
+ const content = await fs_extra_1.default.readFile(helperFile, "utf-8");
169
+ const definition = parseHelperDefinition(content, options.helperName);
170
+ if (definition.actions.length === 0) {
171
+ throw new Error(`No [HELPER-ACTION:] sections found in helper definition`);
172
+ }
173
+ console.log(chalk_1.default.blue(`\nGenerating helper class: ${definition.name}`));
174
+ console.log(chalk_1.default.gray(`Found ${definition.actions.length} action(s): ${definition.actions.map(a => a.name).join(", ")}`));
175
+ // Generate each action method individually
176
+ const methods = [];
177
+ for (const action of definition.actions) {
178
+ console.log(chalk_1.default.blue(` Generating action: ${action.name}...`));
179
+ const prompt = {
180
+ helperName: definition.name,
181
+ helperDescription: definition.description,
182
+ actionName: action.name,
183
+ actionDescription: action.description,
184
+ actionDetails: action.details,
185
+ };
186
+ const generated = await llmProvider.generateHelperAction(prompt);
187
+ const methodCode = extractMethodCode(generated.code, action.name);
188
+ methods.push(methodCode);
189
+ console.log(chalk_1.default.green(` ✓ Generated action: ${action.name}`));
190
+ }
191
+ // Assemble the full class
192
+ const indentedMethods = methods.map(m => m.split("\n").map(line => (line.trim() ? ` ${line}` : "")).join("\n")).join("\n\n");
193
+ const classCode = `import { Page } from '@playwright/test';
194
+
195
+ /**
196
+ * ${definition.description}
197
+ */
198
+ export class ${definition.name} {
199
+ ${indentedMethods}
200
+ }
201
+ `;
202
+ await fs_extra_1.default.ensureDir(outputDir);
203
+ const outputFile = path_1.default.join(outputDir, `${definition.name}.ts`);
204
+ await fs_extra_1.default.writeFile(outputFile, classCode);
205
+ console.log(chalk_1.default.green.bold(`\n✓ Helper class generated!`));
206
+ console.log(chalk_1.default.cyan(`Generated file: ${path_1.default.relative(projectRoot, outputFile)}`));
207
+ }
208
+ catch (error) {
209
+ console.error(chalk_1.default.red("Error generating helper:"), error);
210
+ throw error;
211
+ }
212
+ }
213
+ //# sourceMappingURL=generate-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-helper.js","sourceRoot":"","sources":["../../src/commands/generate-helper.ts"],"names":[],"mappings":"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"}
@@ -66,7 +66,7 @@ export default defineConfig({
66
66
  forbidOnly: !!process.env.CI,
67
67
  retries: process.env.CI ? 2 : 0,
68
68
  workers: process.env.CI ? 1 : 4,
69
- reporter: 'html',
69
+ reporter: [['html', { open: 'never' }]],
70
70
  use: {
71
71
  trace: 'on-first-retry',
72
72
  screenshot: 'only-on-failure',
@@ -97,12 +97,12 @@ export default defineConfig({
97
97
  version: "1.0.0",
98
98
  description: "Playwright tests generated by @zhiweiliu/playwright-generator",
99
99
  scripts: {
100
- test: "playwright test --reporter=list",
101
- "test:case": "playwright test --reporter=list --grep",
102
- "test:debug": "playwright test --reporter=list --debug --project=chromium --grep",
103
- "test:headed": "playwright test --reporter=list --headed --grep",
104
- "test:browser": "playwright test --reporter=list --grep",
105
- "test:video": "playwright test --reporter=list --grep",
100
+ test: "playwright test",
101
+ "test:case": "playwright test --grep",
102
+ "test:debug": "playwright test --debug --project=chromium --grep",
103
+ "test:headed": "playwright test --headed --grep",
104
+ "test:browser": "playwright test --grep",
105
+ "test:video": "playwright test --grep",
106
106
  report: "node report.js",
107
107
  },
108
108
  devDependencies: {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { LLMProvider, LLMPrompt, GeneratedCode } from "./provider";
1
+ import { LLMProvider, LLMPrompt, HelperPrompt, GeneratedCode } from "./provider";
2
2
  export declare class AzureOpenAIProvider extends LLMProvider {
3
3
  private apiKey;
4
4
  private endpoint;
@@ -8,5 +8,6 @@ export declare class AzureOpenAIProvider extends LLMProvider {
8
8
  private get url();
9
9
  validateConnection(): Promise<boolean>;
10
10
  generateTestCode(prompt: LLMPrompt): Promise<GeneratedCode>;
11
+ generateHelperAction(prompt: HelperPrompt): Promise<GeneratedCode>;
11
12
  }
12
13
  //# sourceMappingURL=azure-openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-openai.d.ts","sourceRoot":"","sources":["../../src/llm/azure-openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,SAAe;IAW/F,OAAO,KAAK,GAAG,GAEd;IAEK,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;CA+BlE"}
1
+ {"version":3,"file":"azure-openai.d.ts","sourceRoot":"","sources":["../../src/llm/azure-openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjF,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,SAAe;IAW/F,OAAO,KAAK,GAAG,GAEd;IAEK,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAgC3D,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAezE"}
@@ -60,6 +60,20 @@ class AzureOpenAIProvider extends provider_1.LLMProvider {
60
60
  throw new Error(`Failed to generate code with Azure OpenAI: ${errorMessage}`);
61
61
  }
62
62
  }
63
+ async generateHelperAction(prompt) {
64
+ try {
65
+ const response = await axios_1.default.post(this.url, { messages: [{ role: "user", content: this.buildHelperActionPrompt(prompt) }], max_tokens: 3500, temperature: 0.2 }, { headers: { "api-key": this.apiKey, "Content-Type": "application/json" }, timeout: 30000 });
66
+ const code = response.data.choices?.[0]?.message?.content || "";
67
+ if (!code.trim()) {
68
+ throw new Error("Empty response from Azure OpenAI");
69
+ }
70
+ return { code, timestamp: new Date(), model: "azure-openai", testCaseId: prompt.actionName };
71
+ }
72
+ catch (error) {
73
+ const msg = error.response ? `HTTP ${error.response.status}: ${error.response.data?.error?.message || error.response.data}` : error.message;
74
+ throw new Error(`Failed to generate helper action with Azure OpenAI: ${msg}`);
75
+ }
76
+ }
63
77
  }
64
78
  exports.AzureOpenAIProvider = AzureOpenAIProvider;
65
79
  //# sourceMappingURL=azure-openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"azure-openai.js","sourceRoot":"","sources":["../../src/llm/azure-openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"azure-openai.js","sourceRoot":"","sources":["../../src/llm/azure-openai.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { LLMProvider, LLMPrompt, GeneratedCode } from "./provider";
1
+ import { LLMProvider, LLMPrompt, HelperPrompt, GeneratedCode } from "./provider";
2
2
  export declare class ChatGPTProvider extends LLMProvider {
3
3
  private apiKey;
4
4
  private model;
@@ -6,5 +6,6 @@ export declare class ChatGPTProvider extends LLMProvider {
6
6
  constructor(apiKey: string, model?: string);
7
7
  validateConnection(): Promise<boolean>;
8
8
  generateTestCode(prompt: LLMPrompt): Promise<GeneratedCode>;
9
+ generateHelperAction(prompt: HelperPrompt): Promise<GeneratedCode>;
9
10
  }
10
11
  //# sourceMappingURL=chatgpt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatgpt.d.ts","sourceRoot":"","sources":["../../src/llm/chatgpt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAgD;gBAEnD,MAAM,EAAE,MAAM,EAAE,KAAK,SAAW;IAOtC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;CAgClE"}
1
+ {"version":3,"file":"chatgpt.d.ts","sourceRoot":"","sources":["../../src/llm/chatgpt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjF,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAgD;gBAEnD,MAAM,EAAE,MAAM,EAAE,KAAK,SAAW;IAOtC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAiC3D,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAezE"}
@@ -53,6 +53,20 @@ class ChatGPTProvider extends provider_1.LLMProvider {
53
53
  throw new Error(`Failed to generate code with ChatGPT: ${errorMessage}`);
54
54
  }
55
55
  }
56
+ async generateHelperAction(prompt) {
57
+ try {
58
+ const response = await axios_1.default.post(this.baseUrl, { model: this.model, messages: [{ role: "user", content: this.buildHelperActionPrompt(prompt) }], max_completion_tokens: 3500, temperature: 0.2 }, { headers: { Authorization: `Bearer ${this.apiKey}`, "Content-Type": "application/json" }, timeout: 30000 });
59
+ const code = response.data.choices?.[0]?.message?.content || "";
60
+ if (!code.trim()) {
61
+ throw new Error("Empty response from ChatGPT");
62
+ }
63
+ return { code, timestamp: new Date(), model: "chatgpt", testCaseId: prompt.actionName };
64
+ }
65
+ catch (error) {
66
+ const msg = error.response ? `HTTP ${error.response.status}: ${error.response.data?.error?.message || error.response.data}` : error.message;
67
+ throw new Error(`Failed to generate helper action with ChatGPT: ${msg}`);
68
+ }
69
+ }
56
70
  }
57
71
  exports.ChatGPTProvider = ChatGPTProvider;
58
72
  //# sourceMappingURL=chatgpt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatgpt.js","sourceRoot":"","sources":["../../src/llm/chatgpt.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yCAAmE;AAEnE,MAAa,eAAgB,SAAQ,sBAAW;IAK9C,YAAY,MAAc,EAAE,KAAK,GAAG,QAAQ;QAC1C,KAAK,EAAE,CAAC;QAHF,YAAO,GAAG,4CAA4C,CAAC;QAI7D,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAC/F,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAC5G,CAAC;YACF,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiB;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/D,qBAAqB,EAAE,IAAI;gBAC3B,WAAW,EAAE,GAAG;aACjB,EACD;gBACE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBACvF,OAAO,EAAE,KAAK;aACf,CACF,CAAC;YAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YACzE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAE1E,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ;gBACjC,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAChG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,YAAY,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;CACF;AA1DD,0CA0DC"}
1
+ {"version":3,"file":"chatgpt.js","sourceRoot":"","sources":["../../src/llm/chatgpt.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { LLMProvider, LLMPrompt, GeneratedCode } from "./provider";
1
+ import { LLMProvider, LLMPrompt, HelperPrompt, GeneratedCode } from "./provider";
2
2
  export declare class ClaudeProvider extends LLMProvider {
3
3
  private apiKey;
4
4
  private baseUrl;
5
5
  constructor(apiKey: string);
6
6
  validateConnection(): Promise<boolean>;
7
7
  generateTestCode(prompt: LLMPrompt): Promise<GeneratedCode>;
8
+ generateHelperAction(prompt: HelperPrompt): Promise<GeneratedCode>;
8
9
  }
9
10
  //# sourceMappingURL=claude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/llm/claude.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA2C;gBAE9C,MAAM,EAAE,MAAM;IAapB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IA8CtC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;CAyDlE"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/llm/claude.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjF,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA2C;gBAE9C,MAAM,EAAE,MAAM;IAapB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IA8CtC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IA0D3D,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAsBzE"}
@@ -99,6 +99,27 @@ class ClaudeProvider extends provider_1.LLMProvider {
99
99
  throw new Error(`Failed to generate code with Claude: ${errorMessage}`);
100
100
  }
101
101
  }
102
+ async generateHelperAction(prompt) {
103
+ try {
104
+ const response = await axios_1.default.post(this.baseUrl, {
105
+ model: "claude-haiku-4-5-20251001",
106
+ max_tokens: 3500,
107
+ messages: [{ role: "user", content: this.buildHelperActionPrompt(prompt) }],
108
+ }, {
109
+ headers: { "x-api-key": this.apiKey, "anthropic-version": "2023-06-01", "Content-Type": "application/json" },
110
+ timeout: 30000,
111
+ });
112
+ const code = response.data.content?.[0]?.text || "";
113
+ if (!code.trim()) {
114
+ throw new Error("Empty response from Claude");
115
+ }
116
+ return { code, timestamp: new Date(), model: "claude", testCaseId: prompt.actionName };
117
+ }
118
+ catch (error) {
119
+ const msg = error.response ? `HTTP ${error.response.status}: ${error.response.data?.error?.message || error.response.data}` : error.message;
120
+ throw new Error(`Failed to generate helper action with Claude: ${msg}`);
121
+ }
122
+ }
102
123
  }
103
124
  exports.ClaudeProvider = ClaudeProvider;
104
125
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/llm/claude.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yCAAmE;AAEnE,MAAa,cAAe,SAAQ,sBAAW;IAI7C,YAAY,MAAc;QACxB,KAAK,EAAE,CAAC;QAHF,YAAO,GAAG,uCAAuC,CAAC;QAIxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ;gBACE,KAAK,EAAE,2BAA2B;gBAClC,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAM;qBAChB;iBACF;aACF,EACD;gBACE,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI,CAAC,MAAM;oBACxB,mBAAmB,EAAE,YAAY;oBACjC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,OAAO,EAAE,KAAK;aACf,CACF,CAAC;YACF,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,IACE,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;oBAC7B,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,iBAAiB,EACtD,CAAC;oBACD,OAAO,CAAC,KAAK,CACX,oKAAoK,CACrK,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,mDAAmD,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAC3E,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpB,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiB;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ;gBACE,KAAK,EAAE,2BAA2B;gBAClC,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,YAAY;qBACtB;iBACF;aACF,EACD;gBACE,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI,CAAC,MAAM;oBACxB,mBAAmB,EAAE,YAAY;oBACjC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,OAAO,EAAE,KAAK;aACf,CACF,CAAC;YAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YAE7D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,QAAQ;gBACf,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ;gBACjC,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAChG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YAElB,IACE,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG;gBAC9B,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,iBAAiB,EACtD,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,4DAA4D;oBAC1D,+DAA+D;oBAC/D,uGAAuG,CAC1G,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;CACF;AAxHD,wCAwHC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/llm/claude.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { LLMProvider, LLMPrompt, GeneratedCode } from "./provider";
1
+ import { LLMProvider, LLMPrompt, HelperPrompt, GeneratedCode } from "./provider";
2
2
  export declare class LocalLLMProvider extends LLMProvider {
3
3
  private baseUrl;
4
4
  private model;
5
5
  constructor(baseUrl?: string, model?: string);
6
6
  validateConnection(): Promise<boolean>;
7
7
  generateTestCode(prompt: LLMPrompt): Promise<GeneratedCode>;
8
+ generateHelperAction(prompt: HelperPrompt): Promise<GeneratedCode>;
8
9
  }
9
10
  //# sourceMappingURL=local.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/llm/local.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,SAA2B,EAAE,KAAK,SAAW;IAM1D,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;CAgClE"}
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/llm/local.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjF,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;gBAEV,OAAO,SAA2B,EAAE,KAAK,SAAW;IAM1D,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAiC3D,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAezE"}
package/dist/llm/local.js CHANGED
@@ -50,6 +50,20 @@ class LocalLLMProvider extends provider_1.LLMProvider {
50
50
  throw new Error(`Failed to generate code with local LLM: ${errorMessage}`);
51
51
  }
52
52
  }
53
+ async generateHelperAction(prompt) {
54
+ try {
55
+ const response = await axios_1.default.post(`${this.baseUrl}/v1/chat/completions`, { model: this.model, messages: [{ role: "user", content: this.buildHelperActionPrompt(prompt) }], temperature: 0.2, stream: false }, { headers: { "Content-Type": "application/json" }, timeout: 120000 });
56
+ const code = response.data.choices?.[0]?.message?.content || "";
57
+ if (!code.trim()) {
58
+ throw new Error("Empty response from local LLM");
59
+ }
60
+ return { code, timestamp: new Date(), model: `local/${this.model}`, testCaseId: prompt.actionName };
61
+ }
62
+ catch (error) {
63
+ const msg = error.response ? `HTTP ${error.response.status}: ${JSON.stringify(error.response.data)}` : error.message;
64
+ throw new Error(`Failed to generate helper action with local LLM: ${msg}`);
65
+ }
66
+ }
53
67
  }
54
68
  exports.LocalLLMProvider = LocalLLMProvider;
55
69
  //# sourceMappingURL=local.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/llm/local.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yCAAmE;AAEnE,MAAa,gBAAiB,SAAQ,sBAAW;IAI/C,YAAY,OAAO,GAAG,wBAAwB,EAAE,KAAK,GAAG,QAAQ;QAC9D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,IAAI,CAAC,OAAO,sBAAsB,EACrC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EACpF,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CACpE,CAAC;YACF,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAChG,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiB;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,IAAI,CAAC,OAAO,sBAAsB,EACrC;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/D,WAAW,EAAE,GAAG;gBAChB,MAAM,EAAE,KAAK;aACd,EACD;gBACE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,OAAO,EAAE,MAAM;aAChB,CACF,CAAC;YAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YACzE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAE5E,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;gBAC5B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ;gBACjC,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,YAAY,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;CACF;AAxDD,4CAwDC"}
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/llm/local.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,13 @@ export interface LLMPrompt {
3
3
  testCaseId: string;
4
4
  tags: string[];
5
5
  }
6
+ export interface HelperPrompt {
7
+ helperName: string;
8
+ helperDescription: string;
9
+ actionName: string;
10
+ actionDescription: string;
11
+ actionDetails: string;
12
+ }
6
13
  export interface GeneratedCode {
7
14
  code: string;
8
15
  timestamp: Date;
@@ -11,7 +18,9 @@ export interface GeneratedCode {
11
18
  }
12
19
  export declare abstract class LLMProvider {
13
20
  abstract generateTestCode(prompt: LLMPrompt): Promise<GeneratedCode>;
21
+ abstract generateHelperAction(prompt: HelperPrompt): Promise<GeneratedCode>;
14
22
  abstract validateConnection(): Promise<boolean>;
15
23
  protected buildPrompt(prompt: LLMPrompt): string;
24
+ protected buildHelperActionPrompt(prompt: HelperPrompt): string;
16
25
  }
17
26
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IACpE,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAE/C,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;CAsBjD"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IACpE,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAC3E,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAE/C,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAwBhD,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;CAuBhE"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LLMProvider = void 0;
4
4
  class LLMProvider {
5
5
  buildPrompt(prompt) {
6
- const tagString = prompt.tags.map(t => `[${t}]`).join(' ');
6
+ const tagString = prompt.tags.map((t) => `[${t}]`).join(" ");
7
7
  return `You are an expert Playwright test automation engineer.
8
8
  Generate Playwright TypeScript test code based on the following natural language test case.
9
9
  The generated code should:
@@ -15,6 +15,7 @@ The generated code should:
15
15
  - The test title MUST begin with ALL of the following tags exactly as shown, preserving every tag: ${tagString}
16
16
  - Example of correct title format: test('${tagString} Your description here', ...)
17
17
  - Do NOT omit any tags. Do NOT add extra tags.
18
+ - Check the grammar and spelling of the test case and correct any errors in the generated code.
18
19
 
19
20
  Natural language test case:
20
21
  ${prompt.testCase}
@@ -24,6 +25,29 @@ test('${tagString} Test Description', async ({ page }) => {
24
25
  // Your test code here
25
26
  });`;
26
27
  }
28
+ buildHelperActionPrompt(prompt) {
29
+ return `You are an expert Playwright test automation engineer.
30
+ Generate a single static TypeScript method for a Playwright helper class based on the following natural language definition.
31
+
32
+ Helper class: ${prompt.helperName}
33
+ Helper description: ${prompt.helperDescription}
34
+
35
+ Action name: ${prompt.actionName}
36
+ Action description: ${prompt.actionDescription}
37
+ Action details:
38
+ ${prompt.actionDetails}
39
+
40
+ Requirements:
41
+ - Generate ONLY the static async method body, no class wrapper, no imports
42
+ - Method signature: static async ${prompt.actionName}(page: Page): Promise<void>
43
+ - Use Playwright best practices with auto-waiting
44
+ - Be readable and maintainable
45
+
46
+ Generate ONLY the method in this exact format:
47
+ static async ${prompt.actionName}(page: Page): Promise<void> {
48
+ // implementation
49
+ }`;
50
+ }
27
51
  }
28
52
  exports.LLMProvider = LLMProvider;
29
53
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":";;;AAaA,MAAsB,WAAW;IAIrB,WAAW,CAAC,MAAiB;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO;;;;;;;;qGAQ0F,SAAS;2CACnE,SAAS;;;;EAIlD,MAAM,CAAC,QAAQ;;;QAGT,SAAS;;IAEb,CAAC;IACH,CAAC;CACF;AA1BD,kCA0BC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":";;;AAqBA,MAAsB,WAAW;IAKrB,WAAW,CAAC,MAAiB;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO;;;;;;;;qGAQ0F,SAAS;2CACnE,SAAS;;;;;EAKlD,MAAM,CAAC,QAAQ;;;QAGT,SAAS;;IAEb,CAAC;IACH,CAAC;IAES,uBAAuB,CAAC,MAAoB;QACpD,OAAO;;;gBAGK,MAAM,CAAC,UAAU;sBACX,MAAM,CAAC,iBAAiB;;eAE/B,MAAM,CAAC,UAAU;sBACV,MAAM,CAAC,iBAAiB;;EAE5C,MAAM,CAAC,aAAa;;;;mCAIa,MAAM,CAAC,UAAU;;;;;iBAKnC,MAAM,CAAC,UAAU;;IAE9B,CAAC;IACH,CAAC;CACF;AApDD,kCAoDC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhiweiliu/playwright-generator",
3
- "version": "1.0.45",
3
+ "version": "1.0.47",
4
4
  "description": "Generate Playwright test cases from natural language using LLM",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1,9 +0,0 @@
1
- import { LLMProvider, LLMPrompt, GeneratedCode } from "./provider";
2
- export declare class CopilotProvider extends LLMProvider {
3
- private apiKey;
4
- private baseUrl;
5
- constructor(apiKey: string);
6
- validateConnection(): Promise<boolean>;
7
- generateTestCode(prompt: LLMPrompt): Promise<GeneratedCode>;
8
- }
9
- //# sourceMappingURL=copilot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/llm/copilot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA4D;gBAE/D,MAAM,EAAE,MAAM;IAQpB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAoBtC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;CAsClE"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CopilotProvider = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- const provider_1 = require("./provider");
9
- class CopilotProvider extends provider_1.LLMProvider {
10
- constructor(apiKey) {
11
- super();
12
- this.baseUrl = "https://api.github.com/copilot_internal/v2/completions";
13
- if (!apiKey) {
14
- throw new Error("Copilot API key is required");
15
- }
16
- this.apiKey = apiKey;
17
- }
18
- async validateConnection() {
19
- try {
20
- const response = await axios_1.default.post(this.baseUrl, { prompt: "test" }, {
21
- headers: {
22
- Authorization: `Bearer ${this.apiKey}`,
23
- "Content-Type": "application/json",
24
- },
25
- timeout: 5000,
26
- });
27
- return response.status === 200;
28
- }
29
- catch (error) {
30
- console.error("Copilot connection validation failed:", error);
31
- return false;
32
- }
33
- }
34
- async generateTestCode(prompt) {
35
- try {
36
- const systemPrompt = this.buildPrompt(prompt);
37
- const response = await axios_1.default.post(this.baseUrl, {
38
- prompt: systemPrompt,
39
- max_tokens: 2000,
40
- temperature: 0.7,
41
- }, {
42
- headers: {
43
- Authorization: `Bearer ${this.apiKey}`,
44
- "Content-Type": "application/json",
45
- },
46
- timeout: 30000,
47
- });
48
- const generatedCode = response.data.choices?.[0]?.text || "";
49
- if (!generatedCode.trim()) {
50
- throw new Error("Empty response from Copilot");
51
- }
52
- return {
53
- code: generatedCode,
54
- timestamp: new Date(),
55
- model: "copilot",
56
- testCaseId: prompt.testCaseId,
57
- };
58
- }
59
- catch (error) {
60
- throw new Error(`Failed to generate code with Copilot: ${error instanceof Error ? error.message : String(error)}`);
61
- }
62
- }
63
- }
64
- exports.CopilotProvider = CopilotProvider;
65
- //# sourceMappingURL=copilot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/llm/copilot.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yCAAmE;AAEnE,MAAa,eAAgB,SAAQ,sBAAW;IAI9C,YAAY,MAAc;QACxB,KAAK,EAAE,CAAC;QAHF,YAAO,GAAG,wDAAwD,CAAC;QAIzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,EAClB;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACtC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,OAAO,EAAE,IAAI;aACd,CACF,CAAC;YACF,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiB;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,GAAG;aACjB,EACD;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACtC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,OAAO,EAAE,KAAK;aACf,CACF,CAAC;YAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YAE7D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAtED,0CAsEC"}