@browserflow-ai/generator 0.0.6
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/dist/config-emit.d.ts +41 -0
- package/dist/config-emit.d.ts.map +1 -0
- package/dist/config-emit.js +191 -0
- package/dist/config-emit.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/locator-emit.d.ts +76 -0
- package/dist/locator-emit.d.ts.map +1 -0
- package/dist/locator-emit.js +239 -0
- package/dist/locator-emit.js.map +1 -0
- package/dist/locator-emit.test.d.ts +6 -0
- package/dist/locator-emit.test.d.ts.map +1 -0
- package/dist/locator-emit.test.js +425 -0
- package/dist/locator-emit.test.js.map +1 -0
- package/dist/playwright-ts.d.ts +97 -0
- package/dist/playwright-ts.d.ts.map +1 -0
- package/dist/playwright-ts.js +373 -0
- package/dist/playwright-ts.js.map +1 -0
- package/dist/playwright-ts.test.d.ts +6 -0
- package/dist/playwright-ts.test.d.ts.map +1 -0
- package/dist/playwright-ts.test.js +548 -0
- package/dist/playwright-ts.test.js.map +1 -0
- package/dist/visual-checks.d.ts +76 -0
- package/dist/visual-checks.d.ts.map +1 -0
- package/dist/visual-checks.js +195 -0
- package/dist/visual-checks.js.map +1 -0
- package/dist/visual-checks.test.d.ts +6 -0
- package/dist/visual-checks.test.d.ts.map +1 -0
- package/dist/visual-checks.test.js +188 -0
- package/dist/visual-checks.test.js.map +1 -0
- package/package.json +34 -0
- package/src/config-emit.ts +253 -0
- package/src/index.ts +57 -0
- package/src/locator-emit.test.ts +533 -0
- package/src/locator-emit.ts +310 -0
- package/src/playwright-ts.test.ts +704 -0
- package/src/playwright-ts.ts +519 -0
- package/src/visual-checks.test.ts +232 -0
- package/src/visual-checks.ts +294 -0
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* playwright-ts.ts
|
|
3
|
+
* Main TypeScript test generator for Playwright.
|
|
4
|
+
*/
|
|
5
|
+
import Handlebars from 'handlebars';
|
|
6
|
+
import { resolveLocatorCode, escapeString } from './locator-emit.js';
|
|
7
|
+
import { generateScreenshotAssertion, generateWaitForAnimations, generateMaskSetupCode, } from './visual-checks.js';
|
|
8
|
+
/**
|
|
9
|
+
* Default test file template.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_TEST_TEMPLATE = `import { test, expect } from '@playwright/test';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* BrowserFlow Generated Test: {{specName}}
|
|
15
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
16
|
+
* Spec: {{specPath}}
|
|
17
|
+
* Exploration: {{explorationId}}
|
|
18
|
+
* {{#if reviewer}}Approved by: {{reviewer}} @ {{reviewedAt}}{{/if}}
|
|
19
|
+
* Generated: {{generatedAt}}
|
|
20
|
+
*
|
|
21
|
+
* This test was generated from an approved exploration. Do not edit manually.
|
|
22
|
+
* To update, re-run exploration and get new approval.
|
|
23
|
+
* ═══════════════════════════════════════════════════════════════════════════
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
test.describe('{{specName}}', () => {
|
|
27
|
+
test('{{testDescription}}', async ({ page }) => {
|
|
28
|
+
{{#each steps}}
|
|
29
|
+
{{{code}}}
|
|
30
|
+
|
|
31
|
+
{{/each}}
|
|
32
|
+
{{#if outcomeChecks}}
|
|
33
|
+
// Final outcome verifications
|
|
34
|
+
{{#each outcomeChecks}}
|
|
35
|
+
{{{code}}}
|
|
36
|
+
{{/each}}
|
|
37
|
+
{{/if}}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
`;
|
|
41
|
+
/**
|
|
42
|
+
* PlaywrightGenerator - Converts exploration lockfiles to Playwright tests.
|
|
43
|
+
*/
|
|
44
|
+
export class PlaywrightGenerator {
|
|
45
|
+
options;
|
|
46
|
+
template;
|
|
47
|
+
constructor(options = {}) {
|
|
48
|
+
this.options = {
|
|
49
|
+
includeVisualChecks: true,
|
|
50
|
+
includeComments: true,
|
|
51
|
+
timeout: 30000,
|
|
52
|
+
...options,
|
|
53
|
+
};
|
|
54
|
+
const templateSource = options.template ?? DEFAULT_TEST_TEMPLATE;
|
|
55
|
+
this.template = Handlebars.compile(templateSource);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Generates a Playwright test file from an exploration lockfile.
|
|
59
|
+
*/
|
|
60
|
+
generate(lockfile, review) {
|
|
61
|
+
const steps = this.generateSteps(lockfile);
|
|
62
|
+
const outcomeChecks = this.generateOutcomeChecks(lockfile);
|
|
63
|
+
const content = this.template({
|
|
64
|
+
specName: lockfile.spec,
|
|
65
|
+
specPath: lockfile.spec_path,
|
|
66
|
+
explorationId: lockfile.exploration_id,
|
|
67
|
+
reviewer: review?.reviewer,
|
|
68
|
+
reviewedAt: review?.submitted_at,
|
|
69
|
+
generatedAt: new Date().toISOString(),
|
|
70
|
+
testDescription: this.generateTestDescription(lockfile),
|
|
71
|
+
steps,
|
|
72
|
+
outcomeChecks: outcomeChecks.length > 0 ? outcomeChecks : undefined,
|
|
73
|
+
});
|
|
74
|
+
return {
|
|
75
|
+
path: `e2e/tests/${lockfile.spec}.spec.ts`,
|
|
76
|
+
content,
|
|
77
|
+
specName: lockfile.spec,
|
|
78
|
+
explorationId: lockfile.exploration_id,
|
|
79
|
+
generatedAt: new Date().toISOString(),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generates a test description from the spec name.
|
|
84
|
+
*/
|
|
85
|
+
generateTestDescription(lockfile) {
|
|
86
|
+
// Convert kebab-case to readable description
|
|
87
|
+
return lockfile.spec
|
|
88
|
+
.split('-')
|
|
89
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
90
|
+
.join(' ');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Generates code for all steps.
|
|
94
|
+
*/
|
|
95
|
+
generateSteps(lockfile) {
|
|
96
|
+
return lockfile.steps.map((step, index) => {
|
|
97
|
+
const code = this.generateStepCode(step, index);
|
|
98
|
+
return { code };
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Generates code for a single step wrapped in test.step().
|
|
103
|
+
*/
|
|
104
|
+
generateStepCode(step, index) {
|
|
105
|
+
const lines = [];
|
|
106
|
+
const indent = ' '; // 4 spaces for inside test block
|
|
107
|
+
const innerIndent = ' '; // 6 spaces for inside test.step block
|
|
108
|
+
// Determine step name: use description if available, otherwise step_{index}
|
|
109
|
+
const stepName = step.spec_action.description ?? `step_${index}`;
|
|
110
|
+
// Generate action-specific code
|
|
111
|
+
const actionCode = this.generateActionCode(step);
|
|
112
|
+
// Start test.step() wrapper
|
|
113
|
+
lines.push(`${indent}await test.step('${escapeString(stepName)}', async () => {`);
|
|
114
|
+
// Add step comment inside the test.step block
|
|
115
|
+
if (this.options.includeComments) {
|
|
116
|
+
lines.push(`${innerIndent}// ─────────────────────────────────────────────────────────────────────────`);
|
|
117
|
+
lines.push(`${innerIndent}// Step ${index}: ${this.describeAction(step.spec_action)}`);
|
|
118
|
+
if (step.execution.method) {
|
|
119
|
+
lines.push(`${innerIndent}// Found via: ${step.execution.method}`);
|
|
120
|
+
}
|
|
121
|
+
lines.push(`${innerIndent}// ─────────────────────────────────────────────────────────────────────────`);
|
|
122
|
+
}
|
|
123
|
+
// Add action code inside the test.step block
|
|
124
|
+
lines.push(...actionCode.map((line) => `${innerIndent}${line}`));
|
|
125
|
+
// Close test.step() wrapper
|
|
126
|
+
lines.push(`${indent}});`);
|
|
127
|
+
return lines.join('\n');
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Describes an action for comments.
|
|
131
|
+
*/
|
|
132
|
+
describeAction(action) {
|
|
133
|
+
switch (action.action) {
|
|
134
|
+
case 'click':
|
|
135
|
+
return `Click: ${action.query ?? action.selector ?? 'element'}`;
|
|
136
|
+
case 'navigate':
|
|
137
|
+
return `Navigate to: ${action.to}`;
|
|
138
|
+
case 'fill':
|
|
139
|
+
return `Fill: ${action.query ?? action.selector ?? 'input'}`;
|
|
140
|
+
case 'type':
|
|
141
|
+
return `Type: ${action.query ?? action.selector ?? 'input'}`;
|
|
142
|
+
case 'wait':
|
|
143
|
+
return `Wait for: ${action.for ?? 'condition'}`;
|
|
144
|
+
case 'screenshot':
|
|
145
|
+
return `Screenshot: ${action.name ?? 'unnamed'}`;
|
|
146
|
+
case 'verify_state':
|
|
147
|
+
return 'Verify state';
|
|
148
|
+
case 'select':
|
|
149
|
+
return `Select: ${action.option ?? 'option'}`;
|
|
150
|
+
case 'check':
|
|
151
|
+
return `Checkbox: ${action.checked ? 'check' : 'uncheck'}`;
|
|
152
|
+
default:
|
|
153
|
+
return action.action;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Generates code for a specific action.
|
|
158
|
+
*/
|
|
159
|
+
generateActionCode(step) {
|
|
160
|
+
const { spec_action: action, execution } = step;
|
|
161
|
+
const lines = [];
|
|
162
|
+
switch (action.action) {
|
|
163
|
+
case 'click':
|
|
164
|
+
lines.push(...this.generateClickCode(step));
|
|
165
|
+
break;
|
|
166
|
+
case 'navigate':
|
|
167
|
+
lines.push(...this.generateNavigateCode(action));
|
|
168
|
+
break;
|
|
169
|
+
case 'fill':
|
|
170
|
+
lines.push(...this.generateFillCode(step));
|
|
171
|
+
break;
|
|
172
|
+
case 'type':
|
|
173
|
+
lines.push(...this.generateTypeCode(step));
|
|
174
|
+
break;
|
|
175
|
+
case 'wait':
|
|
176
|
+
lines.push(...this.generateWaitCode(action, execution.duration_ms));
|
|
177
|
+
break;
|
|
178
|
+
case 'screenshot':
|
|
179
|
+
lines.push(...this.generateScreenshotCode(action));
|
|
180
|
+
break;
|
|
181
|
+
case 'verify_state':
|
|
182
|
+
lines.push(...this.generateVerifyCode(action));
|
|
183
|
+
break;
|
|
184
|
+
case 'select':
|
|
185
|
+
lines.push(...this.generateSelectCode(step));
|
|
186
|
+
break;
|
|
187
|
+
case 'check':
|
|
188
|
+
lines.push(...this.generateCheckCode(step));
|
|
189
|
+
break;
|
|
190
|
+
case 'back':
|
|
191
|
+
lines.push('await page.goBack();');
|
|
192
|
+
break;
|
|
193
|
+
case 'forward':
|
|
194
|
+
lines.push('await page.goForward();');
|
|
195
|
+
break;
|
|
196
|
+
case 'refresh':
|
|
197
|
+
lines.push('await page.reload();');
|
|
198
|
+
break;
|
|
199
|
+
default:
|
|
200
|
+
lines.push(`// TODO: Unsupported action: ${action.action}`);
|
|
201
|
+
}
|
|
202
|
+
return lines;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Generates click action code.
|
|
206
|
+
*/
|
|
207
|
+
generateClickCode(step) {
|
|
208
|
+
const locatorCode = resolveLocatorCode(step.execution.locator, step.execution.selector_used);
|
|
209
|
+
return [`await ${locatorCode}.click();`];
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Generates navigate action code.
|
|
213
|
+
*/
|
|
214
|
+
generateNavigateCode(action) {
|
|
215
|
+
// Support both v2 (url) and legacy (to) field names
|
|
216
|
+
const url = action.url ?? action.to ?? '/';
|
|
217
|
+
return [`await page.goto('${escapeString(url)}');`];
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Generates fill action code.
|
|
221
|
+
*/
|
|
222
|
+
generateFillCode(step) {
|
|
223
|
+
const locatorCode = resolveLocatorCode(step.execution.locator, step.execution.selector_used);
|
|
224
|
+
const value = step.execution.value_used ?? step.spec_action.value ?? '';
|
|
225
|
+
return [`await ${locatorCode}.fill('${escapeString(value)}');`];
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Generates type action code.
|
|
229
|
+
*/
|
|
230
|
+
generateTypeCode(step) {
|
|
231
|
+
const lines = [];
|
|
232
|
+
const locatorCode = resolveLocatorCode(step.execution.locator, step.execution.selector_used);
|
|
233
|
+
const value = step.execution.value_used ?? step.spec_action.value ?? '';
|
|
234
|
+
lines.push(`await ${locatorCode}.pressSequentially('${escapeString(value)}');`);
|
|
235
|
+
if (step.spec_action.pressEnter) {
|
|
236
|
+
lines.push(`await ${locatorCode}.press('Enter');`);
|
|
237
|
+
}
|
|
238
|
+
return lines;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Generates wait action code.
|
|
242
|
+
*/
|
|
243
|
+
generateWaitCode(action, actualDuration) {
|
|
244
|
+
const lines = [];
|
|
245
|
+
const timeout = action.timeout ?? this.options.timeout ?? 30000;
|
|
246
|
+
switch (action.for) {
|
|
247
|
+
case 'element':
|
|
248
|
+
if (action.selector) {
|
|
249
|
+
lines.push(`await page.locator('${escapeString(action.selector)}').waitFor({ timeout: ${timeout} });`);
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
case 'text':
|
|
253
|
+
if (action.text) {
|
|
254
|
+
lines.push(`await page.getByText('${escapeString(action.text)}').waitFor({ timeout: ${timeout} });`);
|
|
255
|
+
}
|
|
256
|
+
break;
|
|
257
|
+
case 'url':
|
|
258
|
+
if (action.contains) {
|
|
259
|
+
lines.push(`await page.waitForURL(url => url.href.includes('${escapeString(action.contains)}'), { timeout: ${timeout} });`);
|
|
260
|
+
}
|
|
261
|
+
break;
|
|
262
|
+
case 'time':
|
|
263
|
+
const duration = action.duration ?? actualDuration ?? 1000;
|
|
264
|
+
lines.push(`await page.waitForTimeout(${duration});`);
|
|
265
|
+
break;
|
|
266
|
+
default:
|
|
267
|
+
lines.push(`await page.waitForLoadState('networkidle');`);
|
|
268
|
+
}
|
|
269
|
+
return lines;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Generates screenshot action code.
|
|
273
|
+
*/
|
|
274
|
+
generateScreenshotCode(action) {
|
|
275
|
+
const lines = [];
|
|
276
|
+
const name = action.name ?? 'screenshot';
|
|
277
|
+
if (this.options.includeVisualChecks) {
|
|
278
|
+
// Add wait for animations before screenshot
|
|
279
|
+
lines.push(generateWaitForAnimations());
|
|
280
|
+
lines.push('');
|
|
281
|
+
// Inject mask overlay elements if there are region-based masks
|
|
282
|
+
if (action.mask && action.mask.length > 0) {
|
|
283
|
+
const maskSetupCode = generateMaskSetupCode(action.mask);
|
|
284
|
+
if (maskSetupCode) {
|
|
285
|
+
lines.push(maskSetupCode);
|
|
286
|
+
lines.push('');
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// Generate screenshot assertion
|
|
290
|
+
const assertion = generateScreenshotAssertion({
|
|
291
|
+
name,
|
|
292
|
+
mask: action.mask,
|
|
293
|
+
animations: 'disabled',
|
|
294
|
+
}, { includeComments: this.options.includeComments });
|
|
295
|
+
lines.push(assertion);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
// Just capture screenshot without assertion
|
|
299
|
+
lines.push(`await page.screenshot({ path: 'screenshots/${escapeString(name)}.png' });`);
|
|
300
|
+
}
|
|
301
|
+
return lines;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Generates verify_state action code.
|
|
305
|
+
*/
|
|
306
|
+
generateVerifyCode(action) {
|
|
307
|
+
const lines = [];
|
|
308
|
+
for (const check of action.checks ?? []) {
|
|
309
|
+
if (check.element_visible) {
|
|
310
|
+
lines.push(`await expect(page.locator('${escapeString(check.element_visible)}')).toBeVisible();`);
|
|
311
|
+
}
|
|
312
|
+
if (check.element_not_visible) {
|
|
313
|
+
lines.push(`await expect(page.locator('${escapeString(check.element_not_visible)}')).not.toBeVisible();`);
|
|
314
|
+
}
|
|
315
|
+
if (check.text_contains) {
|
|
316
|
+
lines.push(`await expect(page.getByText('${escapeString(check.text_contains)}')).toBeVisible();`);
|
|
317
|
+
}
|
|
318
|
+
if (check.text_not_contains) {
|
|
319
|
+
lines.push(`await expect(page.getByText('${escapeString(check.text_not_contains)}')).not.toBeVisible();`);
|
|
320
|
+
}
|
|
321
|
+
if (check.url_contains) {
|
|
322
|
+
lines.push(`await expect(page).toHaveURL(new RegExp('${escapeString(check.url_contains)}'));`);
|
|
323
|
+
}
|
|
324
|
+
if (check.element_count) {
|
|
325
|
+
lines.push(`await expect(page.locator('${escapeString(check.element_count.selector)}')).toHaveCount(${check.element_count.expected});`);
|
|
326
|
+
}
|
|
327
|
+
if (check.attribute) {
|
|
328
|
+
lines.push(`await expect(page.locator('${escapeString(check.attribute.selector)}')).toHaveAttribute('${escapeString(check.attribute.attribute)}', '${escapeString(check.attribute.equals)}');`);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return lines;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Generates select action code.
|
|
335
|
+
*/
|
|
336
|
+
generateSelectCode(step) {
|
|
337
|
+
const locatorCode = resolveLocatorCode(step.execution.locator, step.execution.selector_used);
|
|
338
|
+
const option = step.spec_action.option ?? '';
|
|
339
|
+
return [`await ${locatorCode}.selectOption('${escapeString(option)}');`];
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Generates check/uncheck action code.
|
|
343
|
+
*/
|
|
344
|
+
generateCheckCode(step) {
|
|
345
|
+
const locatorCode = resolveLocatorCode(step.execution.locator, step.execution.selector_used);
|
|
346
|
+
const checked = step.spec_action.checked ?? true;
|
|
347
|
+
if (checked) {
|
|
348
|
+
return [`await ${locatorCode}.check();`];
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
return [`await ${locatorCode}.uncheck();`];
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Generates code for outcome checks.
|
|
356
|
+
*/
|
|
357
|
+
generateOutcomeChecks(lockfile) {
|
|
358
|
+
return lockfile.outcome_checks
|
|
359
|
+
.filter((check) => check.passed)
|
|
360
|
+
.map((check) => {
|
|
361
|
+
const code = ` // Outcome: ${check.check} = ${String(check.expected)}`;
|
|
362
|
+
return { code };
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Convenience function to generate a test from a lockfile.
|
|
368
|
+
*/
|
|
369
|
+
export function generateTest(lockfile, options, review) {
|
|
370
|
+
const generator = new PlaywrightGenerator(options);
|
|
371
|
+
return generator.generate(lockfile, review);
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=playwright-ts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright-ts.js","sourceRoot":"","sources":["../src/playwright-ts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright-ts.test.d.ts","sourceRoot":"","sources":["../src/playwright-ts.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|