@sun-asterisk/sungen 1.0.14 → 1.0.15

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.
Files changed (94) hide show
  1. package/dist/generators/cli.js +1 -1
  2. package/dist/generators/gherkin-parser/index.d.ts +1 -0
  3. package/dist/generators/gherkin-parser/index.d.ts.map +1 -1
  4. package/dist/generators/gherkin-parser/index.js +8 -0
  5. package/dist/generators/gherkin-parser/index.js.map +1 -1
  6. package/dist/generators/scaffold-generator/index.d.ts +4 -1
  7. package/dist/generators/scaffold-generator/index.d.ts.map +1 -1
  8. package/dist/generators/scaffold-generator/index.js +39 -16
  9. package/dist/generators/scaffold-generator/index.js.map +1 -1
  10. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/click-element-with-text.hbs +1 -1
  11. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/upload-action.hbs +1 -0
  12. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-filter-assertion.hbs +1 -0
  13. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-role-variable-assertion.hbs +1 -0
  14. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-variable-assertion.hbs +1 -0
  15. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-filter-assertion.hbs +1 -0
  16. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-role-variable-assertion.hbs +1 -0
  17. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-variable-assertion.hbs +1 -0
  18. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-filter-assertion.hbs +1 -1
  19. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-locator-variable-assertion.hbs +1 -1
  20. package/dist/generators/test-generator/adapters/playwright/templates/steps/navigation/wait-for-element-with-text.hbs +1 -0
  21. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-base.hbs +10 -0
  22. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-nth.hbs +1 -0
  23. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/default.hbs +1 -0
  24. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/id.hbs +1 -0
  25. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/label.hbs +1 -0
  26. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/locator.hbs +1 -0
  27. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/placeholder.hbs +1 -0
  28. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/role.hbs +1 -0
  29. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/testid.hbs +1 -0
  30. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/text.hbs +1 -0
  31. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator.hbs +10 -1
  32. package/dist/generators/test-generator/patterns/assertion-patterns.d.ts.map +1 -1
  33. package/dist/generators/test-generator/patterns/assertion-patterns.js +119 -16
  34. package/dist/generators/test-generator/patterns/assertion-patterns.js.map +1 -1
  35. package/dist/generators/test-generator/patterns/form-patterns.d.ts.map +1 -1
  36. package/dist/generators/test-generator/patterns/form-patterns.js +37 -5
  37. package/dist/generators/test-generator/patterns/form-patterns.js.map +1 -1
  38. package/dist/generators/test-generator/patterns/interaction-patterns.d.ts.map +1 -1
  39. package/dist/generators/test-generator/patterns/interaction-patterns.js +108 -9
  40. package/dist/generators/test-generator/patterns/interaction-patterns.js.map +1 -1
  41. package/dist/generators/test-generator/patterns/navigation-patterns.d.ts.map +1 -1
  42. package/dist/generators/test-generator/patterns/navigation-patterns.js +1 -1
  43. package/dist/generators/test-generator/patterns/navigation-patterns.js.map +1 -1
  44. package/dist/generators/test-generator/step-mapper.d.ts +1 -0
  45. package/dist/generators/test-generator/step-mapper.d.ts.map +1 -1
  46. package/dist/generators/test-generator/step-mapper.js +15 -0
  47. package/dist/generators/test-generator/step-mapper.js.map +1 -1
  48. package/dist/generators/test-generator/template-engine.d.ts +5 -0
  49. package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
  50. package/dist/generators/test-generator/template-engine.js +61 -1
  51. package/dist/generators/test-generator/template-engine.js.map +1 -1
  52. package/dist/generators/test-generator/utils/selector-resolver.d.ts +14 -1
  53. package/dist/generators/test-generator/utils/selector-resolver.d.ts.map +1 -1
  54. package/dist/generators/test-generator/utils/selector-resolver.js +28 -3
  55. package/dist/generators/test-generator/utils/selector-resolver.js.map +1 -1
  56. package/dist/input/cli-adapter.js +1 -1
  57. package/dist/orchestrator/project-initializer.d.ts.map +1 -1
  58. package/dist/orchestrator/project-initializer.js +2 -1
  59. package/dist/orchestrator/project-initializer.js.map +1 -1
  60. package/package.json +1 -1
  61. package/src/generators/cli.ts +1 -1
  62. package/src/generators/gherkin-parser/index.ts +10 -0
  63. package/src/generators/scaffold-generator/index.ts +43 -20
  64. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/click-element-with-text.hbs +1 -1
  65. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/upload-action.hbs +1 -0
  66. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-filter-assertion.hbs +1 -0
  67. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-role-variable-assertion.hbs +1 -0
  68. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-variable-assertion.hbs +1 -0
  69. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-filter-assertion.hbs +1 -0
  70. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-role-variable-assertion.hbs +1 -0
  71. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-variable-assertion.hbs +1 -0
  72. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-filter-assertion.hbs +1 -1
  73. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-locator-variable-assertion.hbs +1 -1
  74. package/src/generators/test-generator/adapters/playwright/templates/steps/navigation/wait-for-element-with-text.hbs +1 -0
  75. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-base.hbs +10 -0
  76. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-nth.hbs +1 -0
  77. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/default.hbs +1 -0
  78. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/id.hbs +1 -0
  79. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/label.hbs +1 -0
  80. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/locator.hbs +1 -0
  81. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/placeholder.hbs +1 -0
  82. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/role.hbs +1 -0
  83. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/testid.hbs +1 -0
  84. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-strategies/text.hbs +1 -0
  85. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator.hbs +10 -1
  86. package/src/generators/test-generator/patterns/assertion-patterns.ts +142 -16
  87. package/src/generators/test-generator/patterns/form-patterns.ts +39 -5
  88. package/src/generators/test-generator/patterns/interaction-patterns.ts +118 -11
  89. package/src/generators/test-generator/patterns/navigation-patterns.ts +2 -1
  90. package/src/generators/test-generator/step-mapper.ts +18 -2
  91. package/src/generators/test-generator/template-engine.ts +70 -1
  92. package/src/generators/test-generator/utils/selector-resolver.ts +30 -3
  93. package/src/input/cli-adapter.ts +1 -1
  94. package/src/orchestrator/project-initializer.ts +2 -1
@@ -18,7 +18,7 @@ exports.assertionPatterns = [
18
18
  // If selector is present, extract path from selector's value attribute
19
19
  if (step.selectorRef) {
20
20
  try {
21
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType);
21
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
22
22
  // Use selector's value as the path for URL assertion
23
23
  path = resolved.value || path;
24
24
  }
@@ -37,6 +37,110 @@ exports.assertionPatterns = [
37
37
  },
38
38
  priority: 13, // Higher priority than general visibility
39
39
  },
40
+ // Pattern: Then User see [panel] dialog with {{kudo.title}} hidden -> toBeHidden()
41
+ {
42
+ name: 'see-with-variable-hidden',
43
+ matcher: (step) => (step.text.includes('should see') || step.text.match(/\b(see|sees)\s+\[/)) &&
44
+ !!step.selectorRef &&
45
+ !!step.dataRef &&
46
+ step.text.includes('with') &&
47
+ /\bhidden\b/.test(step.text),
48
+ generator: (step, context) => {
49
+ let resolved = {};
50
+ try {
51
+ resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
52
+ }
53
+ catch (error) { }
54
+ let dataValue;
55
+ try {
56
+ dataValue = context.dataResolver.resolveData(step.dataRef, context.featureName);
57
+ }
58
+ catch (error) {
59
+ dataValue = `\${${step.dataRef}}`;
60
+ }
61
+ const escapedVariable = dataValue.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&');
62
+ if (resolved.strategy === 'locator') {
63
+ const code = context.templateEngine.renderStep('hidden-with-filter-assertion', {
64
+ ...resolved, dataValue, nth: resolved.nth || 0,
65
+ });
66
+ return { code, comment: `Assert ${step.selectorRef} hidden with ${step.dataRef}` };
67
+ }
68
+ if (resolved.strategy === 'role' && resolved.role) {
69
+ const code = context.templateEngine.renderStep('hidden-with-role-variable-assertion', {
70
+ role: resolved.role,
71
+ name: resolved.name && resolved.name.trim() ? resolved.name : undefined,
72
+ dataValue,
73
+ nth: resolved.nth || 0,
74
+ });
75
+ return { code, comment: `Assert ${step.selectorRef} hidden with ${step.dataRef}` };
76
+ }
77
+ const selectorValue = resolved.value || '';
78
+ if (selectorValue && selectorValue.trim()) {
79
+ const code = context.templateEngine.renderStep('hidden-with-filter-assertion', {
80
+ ...resolved, dataValue, nth: resolved.nth || 0,
81
+ });
82
+ return { code, comment: `Assert ${step.selectorRef} hidden with ${step.dataRef}` };
83
+ }
84
+ const code = context.templateEngine.renderStep('hidden-with-variable-assertion', {
85
+ variable: escapedVariable,
86
+ selectorRef: step.selectorRef,
87
+ });
88
+ return { code, comment: `Assert ${step.selectorRef} hidden with ${step.dataRef}` };
89
+ },
90
+ priority: 14,
91
+ },
92
+ // Pattern: Then User see [submit] button with {{label}} disabled -> toBeDisabled()
93
+ {
94
+ name: 'see-with-variable-disabled',
95
+ matcher: (step) => (step.text.includes('should see') || step.text.match(/\b(see|sees)\s+\[/)) &&
96
+ !!step.selectorRef &&
97
+ !!step.dataRef &&
98
+ step.text.includes('with') &&
99
+ /\bdisabled\b/.test(step.text),
100
+ generator: (step, context) => {
101
+ let resolved = {};
102
+ try {
103
+ resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
104
+ }
105
+ catch (error) { }
106
+ let dataValue;
107
+ try {
108
+ dataValue = context.dataResolver.resolveData(step.dataRef, context.featureName);
109
+ }
110
+ catch (error) {
111
+ dataValue = `\${${step.dataRef}}`;
112
+ }
113
+ const escapedVariable = dataValue.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&');
114
+ if (resolved.strategy === 'locator') {
115
+ const code = context.templateEngine.renderStep('disabled-with-filter-assertion', {
116
+ ...resolved, dataValue, nth: resolved.nth || 0,
117
+ });
118
+ return { code, comment: `Assert ${step.selectorRef} disabled with ${step.dataRef}` };
119
+ }
120
+ if (resolved.strategy === 'role' && resolved.role) {
121
+ const code = context.templateEngine.renderStep('disabled-with-role-variable-assertion', {
122
+ role: resolved.role,
123
+ name: resolved.name && resolved.name.trim() ? resolved.name : undefined,
124
+ dataValue,
125
+ nth: resolved.nth || 0,
126
+ });
127
+ return { code, comment: `Assert ${step.selectorRef} disabled with ${step.dataRef}` };
128
+ }
129
+ const selectorValue = resolved.value || '';
130
+ if (selectorValue && selectorValue.trim()) {
131
+ const code = context.templateEngine.renderStep('disabled-with-filter-assertion', {
132
+ ...resolved, dataValue, nth: resolved.nth || 0,
133
+ });
134
+ return { code, comment: `Assert ${step.selectorRef} disabled with ${step.dataRef}` };
135
+ }
136
+ const code = context.templateEngine.renderStep('disabled-with-variable-assertion', {
137
+ variable: escapedVariable,
138
+ selectorRef: step.selectorRef,
139
+ });
140
+ return { code, comment: `Assert ${step.selectorRef} disabled with ${step.dataRef}` };
141
+ },
142
+ priority: 14,
143
+ },
40
144
  // NEW: Assertion with variable (handles both empty selector and static + variable)
41
145
  // Pattern: Then User see [error] message with {{fail_message}}
42
146
  // If selector YAML has empty value, uses variable-only matching
@@ -52,8 +156,7 @@ exports.assertionPatterns = [
52
156
  // Resolve selector from YAML with feature context
53
157
  let resolved = {};
54
158
  try {
55
- resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, // Pass feature context from step context
56
- step.elementType);
159
+ resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
57
160
  }
58
161
  catch (error) {
59
162
  // Selector not in YAML or context issue - will use variable-only
@@ -129,7 +232,7 @@ exports.assertionPatterns = [
129
232
  !!step.dataRef &&
130
233
  step.text.includes('with'),
131
234
  generator: (step, context) => {
132
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
235
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
133
236
  // Resolve the data value
134
237
  let dataValue;
135
238
  try {
@@ -163,7 +266,7 @@ exports.assertionPatterns = [
163
266
  step.text.match(/\b(see|sees)\s+\[/)) &&
164
267
  !!step.selectorRef,
165
268
  generator: (step, context) => {
166
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
269
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
167
270
  const code = context.templateEngine.renderStep('visible-assertion', { ...resolved, selectorRef: step.selectorRef });
168
271
  return {
169
272
  code,
@@ -179,7 +282,7 @@ exports.assertionPatterns = [
179
282
  step.text.includes('should not see')) &&
180
283
  !!step.selectorRef,
181
284
  generator: (step, context) => {
182
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
285
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
183
286
  const code = context.templateEngine.renderStep('not-visible-assertion', { ...resolved, selectorRef: step.selectorRef });
184
287
  return {
185
288
  code,
@@ -192,7 +295,7 @@ exports.assertionPatterns = [
192
295
  name: 'should-be-enabled',
193
296
  matcher: (step) => step.text.includes('should be enabled') && !!step.selectorRef,
194
297
  generator: (step, context) => {
195
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
298
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
196
299
  const code = context.templateEngine.renderStep('enabled-assertion', { ...resolved, selectorRef: step.selectorRef });
197
300
  return {
198
301
  code,
@@ -205,7 +308,7 @@ exports.assertionPatterns = [
205
308
  name: 'should-be-disabled',
206
309
  matcher: (step) => step.text.includes('should be disabled') && !!step.selectorRef,
207
310
  generator: (step, context) => {
208
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
311
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
209
312
  const code = context.templateEngine.renderStep('disabled-assertion', { ...resolved, selectorRef: step.selectorRef });
210
313
  return {
211
314
  code,
@@ -218,7 +321,7 @@ exports.assertionPatterns = [
218
321
  name: 'should-contain-text',
219
322
  matcher: (step) => step.text.includes('should contain') && !!step.selectorRef && !!(step.value || step.dataRef),
220
323
  generator: (step, context) => {
221
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
324
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
222
325
  const expectedText = step.value || `\${${step.dataRef}}`;
223
326
  const code = context.templateEngine.renderStep('contain-text-assertion', {
224
327
  ...resolved,
@@ -235,7 +338,7 @@ exports.assertionPatterns = [
235
338
  name: 'should-have-text',
236
339
  matcher: (step) => step.text.includes('should have text') && !!step.selectorRef && !!(step.value || step.dataRef),
237
340
  generator: (step, context) => {
238
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
341
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
239
342
  const expectedText = step.value || `\${${step.dataRef}}`;
240
343
  const code = context.templateEngine.renderStep('have-text-assertion', {
241
344
  ...resolved,
@@ -252,7 +355,7 @@ exports.assertionPatterns = [
252
355
  name: 'should-be-empty',
253
356
  matcher: (step) => step.text.includes('should be empty') && !!step.selectorRef,
254
357
  generator: (step, context) => {
255
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
358
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
256
359
  const code = context.templateEngine.renderStep('empty-assertion', { ...resolved, selectorRef: step.selectorRef });
257
360
  return {
258
361
  code,
@@ -265,7 +368,7 @@ exports.assertionPatterns = [
265
368
  name: 'should-be-checked',
266
369
  matcher: (step) => step.text.includes('should be checked') && !!step.selectorRef,
267
370
  generator: (step, context) => {
268
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
371
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
269
372
  const code = context.templateEngine.renderStep('checked-assertion', { ...resolved, selectorRef: step.selectorRef });
270
373
  return {
271
374
  code,
@@ -278,7 +381,7 @@ exports.assertionPatterns = [
278
381
  name: 'should-be-unchecked',
279
382
  matcher: (step) => step.text.includes('should be unchecked') && !!step.selectorRef,
280
383
  generator: (step, context) => {
281
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
384
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
282
385
  const code = context.templateEngine.renderStep('not-checked-assertion', { ...resolved, selectorRef: step.selectorRef });
283
386
  return {
284
387
  code,
@@ -291,7 +394,7 @@ exports.assertionPatterns = [
291
394
  name: 'should-be-focused',
292
395
  matcher: (step) => step.text.includes('should be focused') && !!step.selectorRef,
293
396
  generator: (step, context) => {
294
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
397
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
295
398
  const code = context.templateEngine.renderStep('focused-assertion', { ...resolved, selectorRef: step.selectorRef });
296
399
  return {
297
400
  code,
@@ -348,7 +451,7 @@ exports.assertionPatterns = [
348
451
  expectedCount = `\${${step.dataRef}}`;
349
452
  }
350
453
  }
351
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
454
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
352
455
  const code = context.templateEngine.renderStep('list-item-count-assertion', {
353
456
  ...resolved,
354
457
  expectedCount,
@@ -381,7 +484,7 @@ exports.assertionPatterns = [
381
484
  expectedCount = `\${${step.dataRef}}`;
382
485
  }
383
486
  }
384
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
487
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
385
488
  const code = context.templateEngine.renderStep('count-assertion', {
386
489
  ...resolved,
387
490
  expectedCount,
@@ -1 +1 @@
1
- {"version":3,"file":"assertion-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/assertion-patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assertion-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/assertion-patterns.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"form-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/form-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,EAuIrC,CAAC"}
1
+ {"version":3,"file":"form-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/form-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,EAyKrC,CAAC"}
@@ -7,11 +7,43 @@ exports.formPatterns = void 0;
7
7
  * Resolvers return metadata, templates handle framework syntax
8
8
  */
9
9
  exports.formPatterns = [
10
+ {
11
+ name: 'upload-file',
12
+ matcher: (step) => (step.text.includes('fill') || step.text.includes('fills')) &&
13
+ step.elementType === 'uploader' &&
14
+ !!step.selectorRef &&
15
+ !!(step.dataRef || step.value),
16
+ generator: (step, context) => {
17
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
18
+ let fileName;
19
+ if (step.dataRef) {
20
+ try {
21
+ fileName = context.dataResolver.resolveData(step.dataRef, context.featureName);
22
+ }
23
+ catch (error) {
24
+ fileName = `\${${step.dataRef}}`;
25
+ }
26
+ }
27
+ else {
28
+ fileName = step.value;
29
+ }
30
+ const code = context.templateEngine.renderStep('upload-action', {
31
+ ...resolved,
32
+ selectorRef: step.selectorRef,
33
+ fileName,
34
+ });
35
+ return {
36
+ code,
37
+ comment: `Upload file ${fileName} via ${step.selectorRef}`,
38
+ };
39
+ },
40
+ priority: 12,
41
+ },
10
42
  {
11
43
  name: 'fill-input',
12
44
  matcher: (step) => (step.text.includes('fills') || step.text.includes('fill') || step.text.includes('inputs') || step.text.includes('input')) && !!step.selectorRef && !!(step.dataRef || step.value),
13
45
  generator: (step, context) => {
14
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
46
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
15
47
  // Resolve data reference to actual value
16
48
  let value;
17
49
  if (step.dataRef) {
@@ -43,7 +75,7 @@ exports.formPatterns = [
43
75
  name: 'check-checkbox',
44
76
  matcher: (step) => step.text.includes('checks') && !!step.selectorRef,
45
77
  generator: (step, context) => {
46
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
78
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
47
79
  const code = context.templateEngine.renderStep('check-action', { ...resolved, selectorRef: step.selectorRef });
48
80
  return {
49
81
  code,
@@ -56,7 +88,7 @@ exports.formPatterns = [
56
88
  name: 'uncheck-checkbox',
57
89
  matcher: (step) => step.text.includes('unchecks') && !!step.selectorRef,
58
90
  generator: (step, context) => {
59
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
91
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
60
92
  const code = context.templateEngine.renderStep('uncheck-action', { ...resolved, selectorRef: step.selectorRef });
61
93
  return {
62
94
  code,
@@ -71,7 +103,7 @@ exports.formPatterns = [
71
103
  !!step.selectorRef &&
72
104
  !!(step.dataRef || step.value),
73
105
  generator: (step, context) => {
74
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
106
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
75
107
  // Resolve data reference to actual value
76
108
  let value;
77
109
  if (step.dataRef) {
@@ -120,7 +152,7 @@ exports.formPatterns = [
120
152
  name: 'clear-input',
121
153
  matcher: (step) => step.text.includes('clears') && !!step.selectorRef,
122
154
  generator: (step, context) => {
123
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
155
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
124
156
  const code = context.templateEngine.renderStep('clear-action', { ...resolved, selectorRef: step.selectorRef });
125
157
  return {
126
158
  code,
@@ -1 +1 @@
1
- {"version":3,"file":"form-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/form-patterns.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACU,QAAA,YAAY,GAAkB;IACzC;QACE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;QACpL,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAY,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE1G,yCAAyC;YACzC,IAAI,KAAa,CAAC;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC9E,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,8DAA8D;oBAC9D,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC;gBAChC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;YACtB,CAAC;YAED,wDAAwD;YACxD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,EAAE;gBAC5D,GAAG,QAAQ,EAAG,wCAAwC;gBACtD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YAEH,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,QAAQ,IAAI,CAAC,WAAW,SAAS,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;aACvE,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,EAAE;KACb;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW;QACpD,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAY,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE1G,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAE/G,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE;aACrC,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW;QACtD,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAY,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE1G,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAEjH,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,WAAW,IAAI,CAAC,WAAW,EAAE;aACvC,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAChE,CAAC,CAAC,IAAI,CAAC,WAAW;YAClB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;QAChC,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAY,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE1G,yCAAyC;YACzC,IAAI,KAAa,CAAC;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC9E,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC;gBAChC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;YACtB,CAAC;YAED,sCAAsC;YACtC,0DAA0D;YAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAElF,IAAI,IAAY,CAAC;YACjB,IAAI,OAAO,EAAE,CAAC;gBACZ,uEAAuE;gBACvE,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,qBAAqB,EAAE;oBAC9D,GAAG,QAAQ;oBACX,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,UAAU,EAAE,CAAC;gBACtB,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3G,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,EAAE;oBACxD,GAAG,QAAQ;oBACX,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,UAAU,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,WAAW,EAAE;aACvE,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW;QACpD,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAY,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE1G,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAE/G,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE;aACrC,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC"}
1
+ {"version":3,"file":"form-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/form-patterns.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/interaction-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAiQ5C,CAAC"}
1
+ {"version":3,"file":"interaction-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/interaction-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA4BtC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAkV5C,CAAC"}
@@ -1,6 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.interactionPatterns = void 0;
4
+ /**
5
+ * Extract Playwright waitFor state from step text.
6
+ * Defaults to 'visible' if no known state keyword is found.
7
+ */
8
+ function extractWaitState(text) {
9
+ if (/\bhidden\b/.test(text))
10
+ return 'hidden';
11
+ if (/\bdetached\b/.test(text))
12
+ return 'detached';
13
+ if (/\bvisible\b/.test(text))
14
+ return 'visible';
15
+ return 'visible';
16
+ }
17
+ /**
18
+ * Map a plain element keyword (no brackets) to a Playwright ARIA role.
19
+ * e.g. "dialog" → "dialog", "modal" → "dialog", "alert" → "alertdialog"
20
+ */
21
+ function elementKeywordToRole(text) {
22
+ const match = text.match(/\bwait(?:s)?\s+for\s+(dialog|modal|alert|alertdialog|tooltip|menu|listbox|combobox|grid|table|status|banner|navigation|main|region)\b/i);
23
+ if (!match)
24
+ return null;
25
+ const keyword = match[1].toLowerCase();
26
+ const roleMap = {
27
+ modal: 'dialog',
28
+ alert: 'alertdialog',
29
+ };
30
+ return roleMap[keyword] || keyword;
31
+ }
4
32
  /**
5
33
  * Interaction patterns: click, hover, press, wait
6
34
  * Uses template engine for framework-agnostic code generation
@@ -24,7 +52,7 @@ exports.interactionPatterns = [
24
52
  let selectorValue = '';
25
53
  let nth = 0;
26
54
  try {
27
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType);
55
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
28
56
  selectorValue = resolved.value || '';
29
57
  nth = resolved.nth || 0;
30
58
  }
@@ -72,7 +100,7 @@ exports.interactionPatterns = [
72
100
  && !!(step.dataRef || step.value)
73
101
  && step.text.includes('with'),
74
102
  generator: (step, context) => {
75
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
103
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
76
104
  let dataValue;
77
105
  if (step.value) {
78
106
  dataValue = step.value;
@@ -102,7 +130,7 @@ exports.interactionPatterns = [
102
130
  name: 'click-element',
103
131
  matcher: (step) => (step.text.includes('clicks') || step.text.includes('click')) && !!step.selectorRef,
104
132
  generator: (step, context) => {
105
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
133
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
106
134
  const code = context.templateEngine.renderStep('click-action', { ...resolved, selectorRef: step.selectorRef });
107
135
  return {
108
136
  code,
@@ -115,7 +143,7 @@ exports.interactionPatterns = [
115
143
  name: 'double-click',
116
144
  matcher: (step) => step.text.includes('double') && step.text.includes('clicks') && !!step.selectorRef,
117
145
  generator: (step, context) => {
118
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
146
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
119
147
  const code = context.templateEngine.renderStep('double-click-action', { ...resolved, selectorRef: step.selectorRef });
120
148
  return {
121
149
  code,
@@ -128,7 +156,7 @@ exports.interactionPatterns = [
128
156
  name: 'hover-element',
129
157
  matcher: (step) => step.text.includes('hovers') && !!step.selectorRef,
130
158
  generator: (step, context) => {
131
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
159
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
132
160
  const code = context.templateEngine.renderStep('hover-action', { ...resolved, selectorRef: step.selectorRef });
133
161
  return {
134
162
  code,
@@ -141,7 +169,7 @@ exports.interactionPatterns = [
141
169
  name: 'press-enter',
142
170
  matcher: (step) => step.text.includes('presses') && step.text.includes('Enter') && !!step.selectorRef,
143
171
  generator: (step, context) => {
144
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
172
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
145
173
  const code = context.templateEngine.renderStep('press-action', {
146
174
  ...resolved,
147
175
  key: 'Enter',
@@ -196,6 +224,48 @@ exports.interactionPatterns = [
196
224
  },
197
225
  priority: 7,
198
226
  },
227
+ // "wait for dialog with {{kudo.title}} hidden" - role keyword inline, no selector brackets, with data filter
228
+ {
229
+ name: 'wait-for-role-with-text',
230
+ matcher: (step) => (step.text.includes('wait for') || step.text.includes('waits for')) &&
231
+ !step.selectorRef &&
232
+ !!step.dataRef &&
233
+ !!elementKeywordToRole(step.text),
234
+ generator: (step, context) => {
235
+ const role = elementKeywordToRole(step.text);
236
+ let dataValue;
237
+ try {
238
+ dataValue = context.dataResolver.resolveData(step.dataRef, context.featureName);
239
+ }
240
+ catch (error) {
241
+ dataValue = `\${${step.dataRef}}`;
242
+ }
243
+ const state = extractWaitState(step.text);
244
+ // Render inline — no locator partial needed, role is known directly
245
+ return {
246
+ code: `await page.getByRole('${role}').filter({ hasText: '${dataValue.replace(/'/g, "\\'")}' }).waitFor({ state: '${state}' });`,
247
+ comment: `Wait for ${role} with ${step.dataRef} to be ${state}`,
248
+ };
249
+ },
250
+ priority: 11,
251
+ },
252
+ // "wait for dialog hidden" - role keyword inline, no selector brackets, no data filter
253
+ {
254
+ name: 'wait-for-role',
255
+ matcher: (step) => (step.text.includes('wait for') || step.text.includes('waits for')) &&
256
+ !step.selectorRef &&
257
+ !step.dataRef &&
258
+ !!elementKeywordToRole(step.text),
259
+ generator: (step, context) => {
260
+ const role = elementKeywordToRole(step.text);
261
+ const state = extractWaitState(step.text);
262
+ return {
263
+ code: `await page.getByRole('${role}').waitFor({ state: '${state}' });`,
264
+ comment: `Wait for ${role} to be ${state}`,
265
+ };
266
+ },
267
+ priority: 11,
268
+ },
199
269
  // NEW: Wait for page pattern
200
270
  {
201
271
  name: 'wait-for-page',
@@ -211,19 +281,48 @@ exports.interactionPatterns = [
211
281
  },
212
282
  priority: 9, // Higher than wait-for-element
213
283
  },
284
+ {
285
+ name: 'wait-for-element-with-text',
286
+ matcher: (step) => (step.text.includes('wait for') || step.text.includes('waits for')) &&
287
+ !!step.selectorRef &&
288
+ !!step.dataRef,
289
+ generator: (step, context) => {
290
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
291
+ let dataValue;
292
+ try {
293
+ dataValue = context.dataResolver.resolveData(step.dataRef, context.featureName);
294
+ }
295
+ catch (error) {
296
+ dataValue = `\${${step.dataRef}}`;
297
+ }
298
+ const state = extractWaitState(step.text);
299
+ const code = context.templateEngine.renderStep('wait-for-element-with-text', {
300
+ ...resolved,
301
+ selectorRef: step.selectorRef,
302
+ dataValue,
303
+ state,
304
+ });
305
+ return {
306
+ code,
307
+ comment: `Wait for ${step.selectorRef} with ${step.dataRef} to be ${state}`,
308
+ };
309
+ },
310
+ priority: 10,
311
+ },
214
312
  {
215
313
  name: 'wait-for-element',
216
314
  matcher: (step) => (step.text.includes('wait for') || step.text.includes('waits for')) && !!step.selectorRef,
217
315
  generator: (step, context) => {
218
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType);
316
+ const resolved = context.selectorResolver.resolveSelector(step.selectorRef, undefined, step.elementType, step.nth);
317
+ const state = extractWaitState(step.text);
219
318
  const code = context.templateEngine.renderStep('wait-for-element', {
220
319
  ...resolved,
221
320
  selectorRef: step.selectorRef,
222
- state: 'visible',
321
+ state,
223
322
  });
224
323
  return {
225
324
  code,
226
- comment: `Wait for ${step.selectorRef}`,
325
+ comment: `Wait for ${step.selectorRef} to be ${state}`,
227
326
  };
228
327
  },
229
328
  priority: 8,