@sun-asterisk/sungen 1.0.7 → 1.0.9

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 (42) hide show
  1. package/README.md +15 -3
  2. package/dist/generators/cli.js +1 -1
  3. package/dist/generators/scaffold-generator/index.d.ts +0 -5
  4. package/dist/generators/scaffold-generator/index.d.ts.map +1 -1
  5. package/dist/generators/scaffold-generator/index.js +17 -22
  6. package/dist/generators/scaffold-generator/index.js.map +1 -1
  7. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +1 -1
  8. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator.hbs +1 -1
  9. package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
  10. package/dist/generators/test-generator/template-engine.js +3 -0
  11. package/dist/generators/test-generator/template-engine.js.map +1 -1
  12. package/dist/generators/test-generator/utils/data-resolver.d.ts +8 -0
  13. package/dist/generators/test-generator/utils/data-resolver.d.ts.map +1 -1
  14. package/dist/generators/test-generator/utils/data-resolver.js +29 -4
  15. package/dist/generators/test-generator/utils/data-resolver.js.map +1 -1
  16. package/dist/generators/test-generator/utils/selector-resolver.d.ts +15 -0
  17. package/dist/generators/test-generator/utils/selector-resolver.d.ts.map +1 -1
  18. package/dist/generators/test-generator/utils/selector-resolver.js +318 -31
  19. package/dist/generators/test-generator/utils/selector-resolver.js.map +1 -1
  20. package/dist/input/cli-adapter.js +1 -1
  21. package/dist/orchestrator/pipeline.d.ts.map +1 -1
  22. package/dist/orchestrator/pipeline.js +1 -0
  23. package/dist/orchestrator/pipeline.js.map +1 -1
  24. package/dist/orchestrator/project-initializer.d.ts.map +1 -1
  25. package/dist/orchestrator/project-initializer.js +1 -0
  26. package/dist/orchestrator/project-initializer.js.map +1 -1
  27. package/dist/orchestrator/screen-manager.d.ts +8 -0
  28. package/dist/orchestrator/screen-manager.d.ts.map +1 -1
  29. package/dist/orchestrator/screen-manager.js +87 -13
  30. package/dist/orchestrator/screen-manager.js.map +1 -1
  31. package/package.json +1 -1
  32. package/src/generators/cli.ts +1 -1
  33. package/src/generators/scaffold-generator/index.ts +17 -26
  34. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +1 -1
  35. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator.hbs +1 -1
  36. package/src/generators/test-generator/template-engine.ts +4 -0
  37. package/src/generators/test-generator/utils/data-resolver.ts +34 -4
  38. package/src/generators/test-generator/utils/selector-resolver.ts +366 -36
  39. package/src/input/cli-adapter.ts +1 -1
  40. package/src/orchestrator/pipeline.ts +1 -0
  41. package/src/orchestrator/project-initializer.ts +1 -0
  42. package/src/orchestrator/screen-manager.ts +90 -13
@@ -1 +1 @@
1
- {"version":3,"file":"project-initializer.d.ts","sourceRoot":"","sources":["../../src/orchestrator/project-initializer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAgB;;IAMpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAoFnC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA2D1B"}
1
+ {"version":3,"file":"project-initializer.d.ts","sourceRoot":"","sources":["../../src/orchestrator/project-initializer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAgB;;IAMpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAoFnC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA2D1B"}
@@ -104,6 +104,7 @@ class ProjectInitializer {
104
104
  const sungenEntries = [
105
105
  '# Sungen generated files',
106
106
  'specs/generated/',
107
+ 'specs/.auth/',
107
108
  'test-results/',
108
109
  'playwright-report/'
109
110
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"project-initializer.js","sourceRoot":"","sources":["../../src/orchestrator/project-initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-initializer.js","sourceRoot":"","sources":["../../src/orchestrator/project-initializer.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,14 @@ export declare class ScreenManager {
39
39
  * Generate test data YAML template
40
40
  */
41
41
  private generateTestDataTemplate;
42
+ /**
43
+ * Generate selector override YAML template (empty with guidelines)
44
+ */
45
+ private generateSelectorOverrideTemplate;
46
+ /**
47
+ * Generate test-data override YAML template (empty with guidelines)
48
+ */
49
+ private generateTestDataOverrideTemplate;
42
50
  /**
43
51
  * Display success message with next steps
44
52
  */
@@ -1 +1 @@
1
- {"version":3,"file":"screen-manager.d.ts","sourceRoot":"","sources":["../../src/orchestrator/screen-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAS;;IAO3B;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkGtD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoB/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;OAEG;IACH,OAAO,CAAC,cAAc;CAgBvB"}
1
+ {"version":3,"file":"screen-manager.d.ts","sourceRoot":"","sources":["../../src/orchestrator/screen-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,UAAU,CAAS;;IAO3B;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkGtD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoB/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkChC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAiCxC;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAkCxC;;OAEG;IACH,OAAO,CAAC,cAAc;CAoBvB"}
@@ -65,8 +65,8 @@ class ScreenManager {
65
65
  const testDataDir = path.join(screenDir, 'test-data');
66
66
  // File paths
67
67
  const featurePath = path.join(featuresDir, `${filename}.feature`);
68
- const selectorPath = path.join(selectorsDir, `${filename}.yaml`);
69
- const testDataPath = path.join(testDataDir, `${filename}.yaml`);
68
+ const selectorOverridePath = path.join(selectorsDir, `${filename}.override.yaml`);
69
+ const testDataOverridePath = path.join(testDataDir, `${filename}.override.yaml`);
70
70
  // Smart behavior: Create dirs only if first file
71
71
  const isFirstFile = !fs.existsSync(screenDir);
72
72
  if (isFirstFile) {
@@ -108,23 +108,23 @@ class ScreenManager {
108
108
  console.error(` ${error instanceof Error ? error.message : String(error)}`);
109
109
  process.exit(1);
110
110
  }
111
- // Generate and write selector file
112
- const selectorContent = this.generateSelectorTemplate(options, filename);
111
+ // Generate and write selector override file (NOT base file)
112
+ const selectorOverrideContent = this.generateSelectorOverrideTemplate(filename);
113
113
  try {
114
- fs.writeFileSync(selectorPath, selectorContent, 'utf-8');
114
+ fs.writeFileSync(selectorOverridePath, selectorOverrideContent, 'utf-8');
115
115
  }
116
116
  catch (error) {
117
- console.error(`❌ Error: Failed to create selector file at ${selectorPath}`);
117
+ console.error(`❌ Error: Failed to create selector override file at ${selectorOverridePath}`);
118
118
  console.error(` ${error instanceof Error ? error.message : String(error)}`);
119
119
  process.exit(1);
120
120
  }
121
- // Generate and write test data file
122
- const testDataContent = this.generateTestDataTemplate(options);
121
+ // Generate and write test data override file (NOT base file)
122
+ const testDataOverrideContent = this.generateTestDataOverrideTemplate(filename);
123
123
  try {
124
- fs.writeFileSync(testDataPath, testDataContent, 'utf-8');
124
+ fs.writeFileSync(testDataOverridePath, testDataOverrideContent, 'utf-8');
125
125
  }
126
126
  catch (error) {
127
- console.error(`❌ Error: Failed to create test data file at ${testDataPath}`);
127
+ console.error(`❌ Error: Failed to create test data override file at ${testDataOverridePath}`);
128
128
  console.error(` ${error instanceof Error ? error.message : String(error)}`);
129
129
  process.exit(1);
130
130
  }
@@ -247,6 +247,77 @@ ${screenPath ? `# Path: ${screenPath}` : '# Path: (not specified - update as nee
247
247
  # Next steps:
248
248
  # 1. Add test data variables referenced in your feature scenarios
249
249
  # 2. Use {{variable}} syntax in your feature files to reference these values
250
+ `;
251
+ }
252
+ /**
253
+ * Generate selector override YAML template (empty with guidelines)
254
+ */
255
+ generateSelectorOverrideTemplate(filename) {
256
+ return `# ${filename}.override.yaml - User Override File
257
+ # This file will NEVER be modified by 'sungen map' command
258
+ # Use this to override auto-generated selectors or add custom ones
259
+ #
260
+ # Format:
261
+ # element.key:
262
+ # selector: "css-selector-here" # Optional: custom CSS selector
263
+ # type: role|testid|placeholder|label|text
264
+ # value: "value-for-type"
265
+ # name: "Display Name" # Optional
266
+ # nth: 0 # Optional: element index
267
+ #
268
+ # Examples:
269
+ # email.field:
270
+ # type: testid
271
+ # value: "login-email"
272
+ #
273
+ # submit.button:
274
+ # type: role
275
+ # value: "button"
276
+ # name: "Sign In"
277
+ #
278
+ # custom.element:
279
+ # selector: "#my-custom-id"
280
+ # type: placeholder
281
+ # value: "Enter text"
282
+ #
283
+ # Leave empty if no overrides needed
284
+ # Base selectors will be auto-generated by: sungen map --screen ${filename}
285
+ `;
286
+ }
287
+ /**
288
+ * Generate test-data override YAML template (empty with guidelines)
289
+ */
290
+ generateTestDataOverrideTemplate(filename) {
291
+ return `# ${filename}.override.yaml - User Override File
292
+ # This file will NEVER be modified by 'sungen map' command
293
+ # Use this to override auto-generated test data or add custom data
294
+ #
295
+ # Format:
296
+ # variable_name: "value"
297
+ #
298
+ # nested:
299
+ # variable: "value"
300
+ #
301
+ # array_example:
302
+ # - "item1"
303
+ # - "item2"
304
+ #
305
+ # Examples:
306
+ # # Simple string override
307
+ # valid_email: "custom@example.com"
308
+ #
309
+ # # Nested object override
310
+ # api:
311
+ # url: "https://staging.example.com"
312
+ # timeout: 5000
313
+ #
314
+ # # Array override
315
+ # test_users:
316
+ # - "user1@example.com"
317
+ # - "user2@example.com"
318
+ #
319
+ # Leave empty if no overrides needed
320
+ # Base test data will be auto-generated by: sungen map --screen ${filename}
250
321
  `;
251
322
  }
252
323
  /**
@@ -258,12 +329,15 @@ ${screenPath ? `# Path: ${screenPath}` : '# Path: (not specified - update as nee
258
329
  console.log(`Path: ${screenDir}\n`);
259
330
  console.log('Created files:');
260
331
  console.log(` 📄 ${path.join(screenDir, 'features', `${filename}.feature`)}`);
261
- console.log(` 📄 ${path.join(screenDir, 'selectors', `${filename}.yaml`)}`);
262
- console.log(` 📄 ${path.join(screenDir, 'test-data', `${filename}.yaml`)}\n`);
332
+ console.log(` 📝 ${path.join(screenDir, 'selectors', `${filename}.override.yaml`)} (user-editable)`);
333
+ console.log(` 📝 ${path.join(screenDir, 'test-data', `${filename}.override.yaml`)} (user-editable)\n`);
334
+ console.log('📌 Note: Override files will NEVER be modified by automation');
335
+ console.log(' Edit these files to customize selectors and test data\n');
263
336
  console.log('Next steps:');
264
337
  console.log(` 1. Edit the Gherkin feature file to define test scenarios`);
265
338
  console.log(` 2. Run: sungen map --screen ${name}`);
266
- console.log(` This will generate selector mappings from your feature file\n`);
339
+ console.log(` This will generate BASE selector and test-data files`);
340
+ console.log(` (Override files remain untouched)\n`);
267
341
  console.log('Documentation: https://github.com/sun-asterisk/sungen');
268
342
  }
269
343
  }
@@ -1 +1 @@
1
- {"version":3,"file":"screen-manager.js","sourceRoot":"","sources":["../../src/orchestrator/screen-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen-manager.js","sourceRoot":"","sources":["../../src/orchestrator/screen-manager.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAQ7B,MAAa,aAAa;IAIxB;QACE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,OAAsB;QACpC,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;QAEtD,uBAAuB;QACvB,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtC,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEzD,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI;YAC3B,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,CAAC,CAAC,UAAU,CAAC;QAEf,6BAA6B;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAEtD,aAAa;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,UAAU,CAAC,CAAC;QAClE,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,gBAAgB,CAAC,CAAC;QAClF,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,gBAAgB,CAAC,CAAC;QAEjF,iDAAiD;QACjD,MAAM,WAAW,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;YAExD,qBAAqB;YACrB,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBACpD,CAAC;gBACD,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/C,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACvD,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9E,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;QACnE,CAAC;QAED,4CAA4C;QAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,0BAA0B,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kCAAkC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,WAAW,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,4DAA4D;QAC5D,MAAM,uBAAuB,GAAG,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uDAAuD,oBAAoB,EAAE,CAAC,CAAC;YAC7F,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6DAA6D;QAC7D,MAAM,uBAAuB,GAAG,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wDAAwD,oBAAoB,EAAE,CAAC,CAAC;YAC9F,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,0BAA0B;QAC1B,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,IAAI,OAAO,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,OAAO,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAY;QACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;YACvF,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,IAAY;QACtC,OAAO,IAAI;aACR,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;aACvB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,UAAkB;QAChD,sCAAsC;QACtC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAErE,qCAAqC;QACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAElD,0BAA0B;QAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,OAAsB,EAAE,QAAgB;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;QACrD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,qBAAqB,OAAO,CAAC,IAAI,SAAS,CAAC;QAEtF,OAAO,YAAY,OAAO,CAAC,IAAI;;;cAGrB,WAAW;;UAEf,WAAW;;;kCAGa,OAAO,CAAC,IAAI;;;;CAI7C,CAAC;IACA,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,OAAsB,EAAE,QAAgB;QACvE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAEtC,OAAO,KAAK,OAAO,CAAC,IAAI;aACf,SAAS;EACpB,UAAU,CAAC,CAAC,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC,CAAC,4CAA4C;;;;;;;;;;;;;;;;;;;;yCAoB5C,QAAQ,aAAa,QAAQ;gCACtC,QAAQ;;;;CAIvC,CAAC;IACA,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,OAAsB;QACrD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzD,OAAO,KAAK,OAAO,CAAC,IAAI;aACf,SAAS;;;;;;;;;;;CAWrB,CAAC;IACA,CAAC;IAED;;OAEG;IACK,gCAAgC,CAAC,QAAgB;QACvD,OAAO,KAAK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;kEA4B0C,QAAQ;CACzE,CAAC;IACA,CAAC;IAED;;OAEG;IACK,gCAAgC,CAAC,QAAgB;QACvD,OAAO,KAAK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kEA6B0C,QAAQ;CACzE,CAAC;IACA,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAY,EAAE,QAAgB,EAAE,SAAiB;QACtE,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,QAAQ,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,QAAQ,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,QAAQ,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QAExG,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAE1E,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;CACF;AA1UD,sCA0UC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sun-asterisk/sungen",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "AI-Native E2E Test Generator - Generate Playwright tests from Gherkin features using AI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -52,7 +52,7 @@ const program = new Command();
52
52
  program
53
53
  .name('qa-generator')
54
54
  .description('AI-Native QA Selector DSL Generator')
55
- .version('1.0.7');
55
+ .version('1.0.9');
56
56
 
57
57
  // ============================================================================
58
58
  // Command: discover
@@ -15,7 +15,6 @@ export interface ScaffoldElement {
15
15
  value: string;
16
16
  name?: string; // For role type (accessible name)
17
17
  nth: number;
18
- withValue?: string; // For assertions with dynamic value: {{variable}}
19
18
  }
20
19
 
21
20
  export interface ScaffoldResult {
@@ -48,7 +47,6 @@ interface ExtractedElement {
48
47
  targetType: string; // Target type from Gherkin: button, link, field, radio, dropdown, text, etc.
49
48
  lineText: string; // Full line for context
50
49
  nth: number; // Index from "field 1", "button 2", etc. (0 = no index specified)
51
- withValue?: string; // Value ref for assertions with {{value}}
52
50
  }
53
51
 
54
52
  export class ScaffoldGenerator {
@@ -101,9 +99,6 @@ export class ScaffoldGenerator {
101
99
  const nth = this.extractNthIndex(afterElement);
102
100
  const targetType = this.extractTargetType(afterElement, action);
103
101
 
104
- // Extract {{value}} for assertions like "see [X] text with {{value}}"
105
- const withValue = this.extractWithValue(afterElement);
106
-
107
102
  elements.push({
108
103
  rawText,
109
104
  key,
@@ -111,7 +106,6 @@ export class ScaffoldGenerator {
111
106
  targetType,
112
107
  lineText: trimmedLine,
113
108
  nth,
114
- withValue,
115
109
  });
116
110
  }
117
111
  }
@@ -170,17 +164,6 @@ export class ScaffoldGenerator {
170
164
  }
171
165
  }
172
166
 
173
- /**
174
- * Extract {{value}} from "with {{value}}" pattern
175
- */
176
- private extractWithValue(text: string): string | undefined {
177
- const withValueMatch = text.match(/\bwith\s+\{\{([^}]+)\}\}/i);
178
- if (withValueMatch) {
179
- return withValueMatch[1].trim();
180
- }
181
- return undefined;
182
- }
183
-
184
167
  /**
185
168
  * Extract nth index from text after element reference
186
169
  * e.g., " field 1 with" -> 1, " button 2" -> 2, " text" -> 0
@@ -277,7 +260,7 @@ export class ScaffoldGenerator {
277
260
  * Create a scaffold element based on the action type and target type
278
261
  */
279
262
  private createScaffoldElement(element: ExtractedElement): ScaffoldElement {
280
- const { nth, targetType, withValue } = element;
263
+ const { nth, targetType } = element;
281
264
 
282
265
  switch (element.action) {
283
266
  case 'fill':
@@ -312,17 +295,13 @@ export class ScaffoldGenerator {
312
295
  };
313
296
 
314
297
  case 'see':
315
- // For assertions, include withValue if present
316
- const seeElement: ScaffoldElement = {
298
+ // For assertions
299
+ return {
317
300
  selector: '',
318
301
  type: 'text',
319
302
  value: element.rawText,
320
303
  nth,
321
304
  };
322
- if (withValue) {
323
- seeElement.withValue = withValue;
324
- }
325
- return seeElement;
326
305
 
327
306
  case 'select':
328
307
  // Determine role based on target type (radio, dropdown/combobox, checkbox)
@@ -544,20 +523,24 @@ export class ScaffoldGenerator {
544
523
 
545
524
  // Check if files exist
546
525
  const selectorsPath = path.join(selectorsDir, `${filename}.yaml`);
526
+ const selectorsOverridePath = path.join(selectorsDir, `${filename}.override.yaml`);
547
527
  const selectorsExists = fs.existsSync(selectorsPath);
548
528
 
549
529
  const testDataPath = path.join(testDataDir, `${filename}.yaml`);
530
+ const testDataOverridePath = path.join(testDataDir, `${filename}.override.yaml`);
550
531
  const testDataExists = fs.existsSync(testDataPath);
551
532
 
552
- // Write selectors YAML with filename (write if doesn't exist or force is true)
533
+ // Write selectors YAML (BASE ONLY - never touch override files)
553
534
  if (!selectorsExists || forceOverwrite) {
554
535
  this.writeSelectorsYaml(selectorScaffold, selectorsPath, filename);
555
536
  }
537
+ // Override file is NEVER touched by map command
556
538
 
557
- // Write test-data YAML with filename (write if doesn't exist or force is true)
539
+ // Write test-data YAML (BASE ONLY - never touch override files)
558
540
  if (!testDataExists || forceOverwrite) {
559
541
  this.writeTestDataYaml(testDataScaffold, testDataPath, filename);
560
542
  }
543
+ // Override file is NEVER touched by map command
561
544
 
562
545
  results.push({
563
546
  featureFile: filename,
@@ -649,6 +632,10 @@ export class ScaffoldGenerator {
649
632
  const getDisplayValue = (e: ScaffoldElement) => e.name || e.value;
650
633
 
651
634
  const header = `# ${this.capitalizeFirst(screenName)} Screen Selectors (Auto-generated)
635
+ # ⚠️ AUTO-GENERATED - Do not edit directly
636
+ # To override values, edit ${screenName}.override.yaml
637
+ # Manual edits to this file will be lost on regeneration
638
+ #
652
639
  # Reference in features: ${Object.values(scaffold).map(e => `[${getDisplayValue(e)}]`).join(', ')}
653
640
 
654
641
  `;
@@ -668,6 +655,10 @@ export class ScaffoldGenerator {
668
655
  */
669
656
  private writeTestDataYaml(testData: TestDataResult, outputPath: string, screenName: string): void {
670
657
  const header = `# ${this.capitalizeFirst(screenName)} Screen Test Data (Auto-generated)
658
+ # ⚠️ AUTO-GENERATED - Consider editing only the override file
659
+ # To override values, copy to ${screenName}.override.yaml
660
+ # Manual edits to this file will be lost on regeneration
661
+ #
671
662
  # Reference in features using {{variable}} syntax
672
663
 
673
664
  `;
@@ -1 +1 @@
1
- await expect(page.getByText(/{{escapeQuotes value}}.*{{dataValue}}/)).toBeVisible();
1
+ await expect(page.getByText(/{{escapeQuotes value}}.*{{escapeRegex dataValue}}/)).toBeVisible();
@@ -1 +1 @@
1
- {{#if (eq strategy 'testid')}}page.getByTestId('{{value}}'){{else if (eq strategy 'role')}}page.getByRole('{{role}}', { name: '{{escapeQuotes name}}' }){{else if (eq strategy 'placeholder')}}page.getByPlaceholder('{{escapeQuotes value}}'){{else if (eq strategy 'label')}}page.getByLabel('{{escapeQuotes value}}'){{else if (eq strategy 'text')}}page.getByText('{{escapeQuotes value}}'){{else if (eq strategy 'id')}}page.locator('{{selector}}'){{else}}page.locator('{{escapeQuotes selector}}'){{/if}}{{#if (and (isDefined nth) (gt nth 0))}}.nth({{subtract nth 1}}){{/if}}
1
+ {{#if (eq strategy 'testid')}}page.getByTestId('{{value}}'){{else if (eq strategy 'role')}}page.getByRole('{{role}}', { name: '{{escapeQuotes name}}' }){{else if (eq strategy 'placeholder')}}page.getByPlaceholder('{{escapeQuotes value}}'){{else if (eq strategy 'label')}}page.getByLabel('{{escapeQuotes value}}'){{else if (eq strategy 'text')}}page.getByText('{{escapeQuotes value}}'){{else if (eq strategy 'id')}}page.locator('{{selector}}'){{else}}page.locator('{{escapeQuotes selector}}'){{/if}}{{#if (gt nth 0)}}.nth({{subtract nth 1}}){{/if}}
@@ -24,6 +24,10 @@ export class TemplateEngine {
24
24
  return text.replace(/'/g, "\\'");
25
25
  });
26
26
 
27
+ Handlebars.registerHelper('escapeRegex', function(text: string) {
28
+ return text.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&');
29
+ });
30
+
27
31
  // Comparison helpers for conditional logic
28
32
  Handlebars.registerHelper('eq', function(a: any, b: any) {
29
33
  return a === b;
@@ -5,6 +5,11 @@ import yaml from 'yaml';
5
5
  /**
6
6
  * DataResolver - Resolves data references to actual values
7
7
  * at generation time (not runtime)
8
+ *
9
+ * Supports override files with priority:
10
+ * 1. .override.yaml (highest - user customizations)
11
+ * 2. -override.yaml (legacy - backward compat)
12
+ * 3. .yaml (lowest - auto-generated base)
8
13
  */
9
14
  export class DataResolver {
10
15
  private dataCache = new Map<string, any>();
@@ -108,12 +113,28 @@ export class DataResolver {
108
113
 
109
114
  /**
110
115
  * Find data file path (checks new screen-based structure)
116
+ * Priority: .override.yaml > -override.yaml > base .yaml
117
+ * Skips files that exist but contain no data (only comments)
111
118
  */
112
119
  private findDataFilePath(fileName: string): string | null {
113
120
  const possiblePaths = this.getPossibleDataPaths(fileName);
114
121
 
115
122
  for (const p of possiblePaths) {
116
123
  if (fs.existsSync(p)) {
124
+ // Check if file has actual data (not just comments/empty)
125
+ const content = fs.readFileSync(p, 'utf-8');
126
+ const data = yaml.parse(content);
127
+
128
+ // Skip if file is empty or only contains null/undefined
129
+ if (data === null || data === undefined || (typeof data === 'object' && Object.keys(data).length === 0)) {
130
+ continue;
131
+ }
132
+
133
+ // Emit deprecation warning for old -override.yaml pattern
134
+ if (p.includes('-override.yaml')) {
135
+ console.warn(`⚠️ Deprecated: ${path.basename(p)}`);
136
+ console.warn(` Rename to: ${fileName}.override.yaml for better compatibility`);
137
+ }
117
138
  return p;
118
139
  }
119
140
  }
@@ -123,16 +144,25 @@ export class DataResolver {
123
144
 
124
145
  /**
125
146
  * Get list of possible data file paths (priority order)
147
+ * Priority: .override.yaml > -override.yaml > base .yaml
126
148
  */
127
149
  private getPossibleDataPaths(fileName: string): string[] {
128
150
  const paths: string[] = [];
129
151
 
130
- // New structure: qa/screens/{screenName}/test-data/{fileName}.yaml
152
+ // New structure: qa/screens/{screenName}/test-data/
131
153
  if (this.screenName) {
132
154
  const cwd = process.cwd();
133
- const newPath = path.join(cwd, 'qa', 'screens', this.screenName, 'test-data', `${fileName}.yaml`);
134
- const newPathYml = path.join(cwd, 'qa', 'screens', this.screenName, 'test-data', `${fileName}.yml`);
135
- paths.push(newPath, newPathYml);
155
+ const basePath = path.join(cwd, 'qa', 'screens', this.screenName, 'test-data');
156
+
157
+ // Priority 1: New .override.yaml pattern (highest)
158
+ paths.push(path.join(basePath, `${fileName}.override.yaml`));
159
+
160
+ // Priority 2: Old -override.yaml pattern (backward compat)
161
+ paths.push(path.join(basePath, `${fileName}-override.yaml`));
162
+
163
+ // Priority 3: Base file (lowest)
164
+ paths.push(path.join(basePath, `${fileName}.yaml`));
165
+ paths.push(path.join(basePath, `${fileName}.yml`));
136
166
  }
137
167
 
138
168
  return paths;