@sun-asterisk/sungen 1.0.4 → 1.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.
Files changed (120) hide show
  1. package/dist/cli/index.js +79 -0
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/core/validator/data-validator.d.ts +38 -0
  4. package/dist/core/validator/data-validator.d.ts.map +1 -0
  5. package/dist/core/validator/data-validator.js +212 -0
  6. package/dist/core/validator/data-validator.js.map +1 -0
  7. package/dist/core/validator/feature-validator.d.ts +27 -0
  8. package/dist/core/validator/feature-validator.d.ts.map +1 -0
  9. package/dist/core/validator/feature-validator.js +182 -0
  10. package/dist/core/validator/feature-validator.js.map +1 -0
  11. package/dist/core/validator/index.d.ts +46 -0
  12. package/dist/core/validator/index.d.ts.map +1 -0
  13. package/dist/core/validator/index.js +17 -0
  14. package/dist/core/validator/index.js.map +1 -0
  15. package/dist/core/validator/screen-validator.d.ts +35 -0
  16. package/dist/core/validator/screen-validator.d.ts.map +1 -0
  17. package/dist/core/validator/screen-validator.js +195 -0
  18. package/dist/core/validator/screen-validator.js.map +1 -0
  19. package/dist/core/validator/selector-validator.d.ts +35 -0
  20. package/dist/core/validator/selector-validator.d.ts.map +1 -0
  21. package/dist/core/validator/selector-validator.js +210 -0
  22. package/dist/core/validator/selector-validator.js.map +1 -0
  23. package/dist/generators/cli.js +1 -1
  24. package/dist/input/cli-adapter.d.ts +4 -0
  25. package/dist/input/cli-adapter.d.ts.map +1 -1
  26. package/dist/input/cli-adapter.js +12 -1
  27. package/dist/input/cli-adapter.js.map +1 -1
  28. package/package.json +1 -1
  29. package/src/cli/index.ts +85 -0
  30. package/src/core/validator/data-validator.ts +202 -0
  31. package/src/core/validator/feature-validator.ts +176 -0
  32. package/src/core/validator/index.ts +57 -0
  33. package/src/core/validator/screen-validator.ts +209 -0
  34. package/src/core/validator/selector-validator.ts +208 -0
  35. package/src/generators/cli.ts +1 -1
  36. package/src/input/cli-adapter.ts +13 -1
  37. package/dist/config/ai-providers.yaml +0 -56
  38. package/dist/config/default.config.yaml +0 -101
  39. package/dist/config/framework.config.yaml +0 -52
  40. package/dist/config/routes.yaml +0 -31
  41. package/dist/generators/test-generator/adapters/playwright/templates/steps/active-state-assertion.hbs +0 -2
  42. package/dist/generators/test-generator/adapters/playwright/templates/steps/ai-response-assertion-selector.hbs +0 -5
  43. package/dist/generators/test-generator/adapters/playwright/templates/steps/ai-response-assertion-simple.hbs +0 -1
  44. package/dist/generators/test-generator/adapters/playwright/templates/steps/application-running.hbs +0 -1
  45. package/dist/generators/test-generator/adapters/playwright/templates/steps/check-action.hbs +0 -1
  46. package/dist/generators/test-generator/adapters/playwright/templates/steps/checkbox.hbs +0 -2
  47. package/dist/generators/test-generator/adapters/playwright/templates/steps/checked-assertion.hbs +0 -1
  48. package/dist/generators/test-generator/adapters/playwright/templates/steps/clear-action.hbs +0 -1
  49. package/dist/generators/test-generator/adapters/playwright/templates/steps/clear-auth.hbs +0 -6
  50. package/dist/generators/test-generator/adapters/playwright/templates/steps/clear-browser-state.hbs +0 -6
  51. package/dist/generators/test-generator/adapters/playwright/templates/steps/clear-database.hbs +0 -4
  52. package/dist/generators/test-generator/adapters/playwright/templates/steps/clear.hbs +0 -2
  53. package/dist/generators/test-generator/adapters/playwright/templates/steps/click-action.hbs +0 -1
  54. package/dist/generators/test-generator/adapters/playwright/templates/steps/click.hbs +0 -2
  55. package/dist/generators/test-generator/adapters/playwright/templates/steps/contain-text-assertion.hbs +0 -1
  56. package/dist/generators/test-generator/adapters/playwright/templates/steps/contains-text-assertion.hbs +0 -2
  57. package/dist/generators/test-generator/adapters/playwright/templates/steps/count-assertion.hbs +0 -1
  58. package/dist/generators/test-generator/adapters/playwright/templates/steps/count-greater-than.hbs +0 -3
  59. package/dist/generators/test-generator/adapters/playwright/templates/steps/count-less-than.hbs +0 -3
  60. package/dist/generators/test-generator/adapters/playwright/templates/steps/disabled-assertion.hbs +0 -2
  61. package/dist/generators/test-generator/adapters/playwright/templates/steps/displayed-containing-text.hbs +0 -3
  62. package/dist/generators/test-generator/adapters/playwright/templates/steps/displayed-with-text.hbs +0 -3
  63. package/dist/generators/test-generator/adapters/playwright/templates/steps/double-click-action.hbs +0 -1
  64. package/dist/generators/test-generator/adapters/playwright/templates/steps/empty-assertion-advanced.hbs +0 -3
  65. package/dist/generators/test-generator/adapters/playwright/templates/steps/empty-assertion.hbs +0 -2
  66. package/dist/generators/test-generator/adapters/playwright/templates/steps/enabled-assertion.hbs +0 -2
  67. package/dist/generators/test-generator/adapters/playwright/templates/steps/error-message-assertion.hbs +0 -3
  68. package/dist/generators/test-generator/adapters/playwright/templates/steps/fill-action.hbs +0 -1
  69. package/dist/generators/test-generator/adapters/playwright/templates/steps/fill.hbs +0 -2
  70. package/dist/generators/test-generator/adapters/playwright/templates/steps/focused-assertion.hbs +0 -1
  71. package/dist/generators/test-generator/adapters/playwright/templates/steps/generic-message-assertion.hbs +0 -3
  72. package/dist/generators/test-generator/adapters/playwright/templates/steps/has-attribute.hbs +0 -2
  73. package/dist/generators/test-generator/adapters/playwright/templates/steps/has-class.hbs +0 -2
  74. package/dist/generators/test-generator/adapters/playwright/templates/steps/has-count.hbs +0 -2
  75. package/dist/generators/test-generator/adapters/playwright/templates/steps/has-image-src.hbs +0 -3
  76. package/dist/generators/test-generator/adapters/playwright/templates/steps/has-link.hbs +0 -3
  77. package/dist/generators/test-generator/adapters/playwright/templates/steps/has-placeholder.hbs +0 -3
  78. package/dist/generators/test-generator/adapters/playwright/templates/steps/has-value.hbs +0 -2
  79. package/dist/generators/test-generator/adapters/playwright/templates/steps/have-text-assertion.hbs +0 -1
  80. package/dist/generators/test-generator/adapters/playwright/templates/steps/hover-action.hbs +0 -1
  81. package/dist/generators/test-generator/adapters/playwright/templates/steps/html5-validation-check.hbs +0 -4
  82. package/dist/generators/test-generator/adapters/playwright/templates/steps/is-checked.hbs +0 -2
  83. package/dist/generators/test-generator/adapters/playwright/templates/steps/is-editable.hbs +0 -2
  84. package/dist/generators/test-generator/adapters/playwright/templates/steps/is-focused.hbs +0 -2
  85. package/dist/generators/test-generator/adapters/playwright/templates/steps/is-hidden.hbs +0 -2
  86. package/dist/generators/test-generator/adapters/playwright/templates/steps/is-unchecked.hbs +0 -2
  87. package/dist/generators/test-generator/adapters/playwright/templates/steps/locator.hbs +0 -1
  88. package/dist/generators/test-generator/adapters/playwright/templates/steps/login.hbs +0 -8
  89. package/dist/generators/test-generator/adapters/playwright/templates/steps/message-assertion-body.hbs +0 -1
  90. package/dist/generators/test-generator/adapters/playwright/templates/steps/message-assertion-selector.hbs +0 -2
  91. package/dist/generators/test-generator/adapters/playwright/templates/steps/message-count-assertion.hbs +0 -3
  92. package/dist/generators/test-generator/adapters/playwright/templates/steps/navigation.hbs +0 -1
  93. package/dist/generators/test-generator/adapters/playwright/templates/steps/not-checked-assertion.hbs +0 -1
  94. package/dist/generators/test-generator/adapters/playwright/templates/steps/not-visible-assertion.hbs +0 -1
  95. package/dist/generators/test-generator/adapters/playwright/templates/steps/not-visible.hbs +0 -2
  96. package/dist/generators/test-generator/adapters/playwright/templates/steps/notification-assertion.hbs +0 -4
  97. package/dist/generators/test-generator/adapters/playwright/templates/steps/press-action.hbs +0 -1
  98. package/dist/generators/test-generator/adapters/playwright/templates/steps/press-enter.hbs +0 -2
  99. package/dist/generators/test-generator/adapters/playwright/templates/steps/redirect-assertion.hbs +0 -3
  100. package/dist/generators/test-generator/adapters/playwright/templates/steps/route-assertion.hbs +0 -2
  101. package/dist/generators/test-generator/adapters/playwright/templates/steps/screen-navigation.hbs +0 -3
  102. package/dist/generators/test-generator/adapters/playwright/templates/steps/scroll-bottom-assertion.hbs +0 -5
  103. package/dist/generators/test-generator/adapters/playwright/templates/steps/select-action.hbs +0 -1
  104. package/dist/generators/test-generator/adapters/playwright/templates/steps/select.hbs +0 -2
  105. package/dist/generators/test-generator/adapters/playwright/templates/steps/text-matches-pattern.hbs +0 -3
  106. package/dist/generators/test-generator/adapters/playwright/templates/steps/uncheck-action.hbs +0 -1
  107. package/dist/generators/test-generator/adapters/playwright/templates/steps/user-login-todo.hbs +0 -6
  108. package/dist/generators/test-generator/adapters/playwright/templates/steps/visibility-assertion.hbs +0 -2
  109. package/dist/generators/test-generator/adapters/playwright/templates/steps/visible-assertion.hbs +0 -1
  110. package/dist/generators/test-generator/adapters/playwright/templates/steps/wait-for-element.hbs +0 -1
  111. package/dist/generators/test-generator/adapters/playwright/templates/steps/wait-timeout.hbs +0 -1
  112. package/dist/generators/test-generator/adapters/playwright/templates/steps/wait.hbs +0 -1
  113. package/dist/generators/test-generator/step-mapper-old.d.ts +0 -180
  114. package/dist/generators/test-generator/step-mapper-old.d.ts.map +0 -1
  115. package/dist/generators/test-generator/step-mapper-old.js +0 -752
  116. package/dist/generators/test-generator/step-mapper-old.js.map +0 -1
  117. package/dist/generators/test-generator/step-mapper-refactored.d.ts +0 -47
  118. package/dist/generators/test-generator/step-mapper-refactored.d.ts.map +0 -1
  119. package/dist/generators/test-generator/step-mapper-refactored.js +0 -182
  120. package/dist/generators/test-generator/step-mapper-refactored.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/validator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,uBAAuB,GACvB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,qBAAqB,GACrB,uBAAuB,GACvB,oBAAoB,GACpB,eAAe,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAGD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * Validator Core - Types and Exports
4
+ * Validates Gherkin features and selector/test-data mappings
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ScreenValidator = exports.DataValidator = exports.SelectorValidator = exports.FeatureValidator = void 0;
8
+ // Re-exports
9
+ var feature_validator_1 = require("./feature-validator");
10
+ Object.defineProperty(exports, "FeatureValidator", { enumerable: true, get: function () { return feature_validator_1.FeatureValidator; } });
11
+ var selector_validator_1 = require("./selector-validator");
12
+ Object.defineProperty(exports, "SelectorValidator", { enumerable: true, get: function () { return selector_validator_1.SelectorValidator; } });
13
+ var data_validator_1 = require("./data-validator");
14
+ Object.defineProperty(exports, "DataValidator", { enumerable: true, get: function () { return data_validator_1.DataValidator; } });
15
+ var screen_validator_1 = require("./screen-validator");
16
+ Object.defineProperty(exports, "ScreenValidator", { enumerable: true, get: function () { return screen_validator_1.ScreenValidator; } });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/validator/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiDH,aAAa;AACb,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Screen Validator
3
+ * Orchestrates validation for a screen (all features in qa/screens/<name>/)
4
+ */
5
+ import { ValidationResult } from './index';
6
+ export interface ScreenValidatorOptions {
7
+ verbose?: boolean;
8
+ baseDir?: string;
9
+ }
10
+ export declare class ScreenValidator {
11
+ private baseDir;
12
+ private verbose;
13
+ constructor(options?: ScreenValidatorOptions);
14
+ /**
15
+ * Validate a specific screen
16
+ */
17
+ validateScreen(screenName: string): ValidationResult;
18
+ /**
19
+ * Validate all screens
20
+ */
21
+ validateAll(): ValidationResult;
22
+ /**
23
+ * Discover .feature files in a directory
24
+ */
25
+ private discoverFeatureFiles;
26
+ /**
27
+ * Build final validation result
28
+ */
29
+ private buildResult;
30
+ /**
31
+ * Create error result for invalid setup
32
+ */
33
+ private createErrorResult;
34
+ }
35
+ //# sourceMappingURL=screen-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validator/screen-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAKjB,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,sBAA2B;IAKhD;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAkFpD;;OAEG;IACH,WAAW,IAAI,gBAAgB;IAyB/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAuB1B"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Screen Validator
4
+ * Orchestrates validation for a screen (all features in qa/screens/<name>/)
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.ScreenValidator = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const feature_validator_1 = require("./feature-validator");
44
+ const selector_validator_1 = require("./selector-validator");
45
+ const data_validator_1 = require("./data-validator");
46
+ class ScreenValidator {
47
+ constructor(options = {}) {
48
+ this.baseDir = options.baseDir || process.cwd();
49
+ this.verbose = options.verbose || false;
50
+ }
51
+ /**
52
+ * Validate a specific screen
53
+ */
54
+ validateScreen(screenName) {
55
+ const results = [];
56
+ const screenDir = path.join(this.baseDir, 'qa', 'screens', screenName);
57
+ const featuresDir = path.join(screenDir, 'features');
58
+ // Check if screen exists
59
+ if (!fs.existsSync(screenDir)) {
60
+ return this.createErrorResult(`Screen "${screenName}" not found at ${screenDir}`);
61
+ }
62
+ if (!fs.existsSync(featuresDir)) {
63
+ return this.createErrorResult(`Features directory not found at ${featuresDir}`);
64
+ }
65
+ // Find all feature files
66
+ const featureFiles = this.discoverFeatureFiles(featuresDir);
67
+ if (featureFiles.length === 0) {
68
+ return this.createErrorResult(`No .feature files found in ${featuresDir}`);
69
+ }
70
+ // Initialize validators
71
+ const featureValidator = new feature_validator_1.FeatureValidator();
72
+ const selectorValidator = new selector_validator_1.SelectorValidator(screenName, this.baseDir);
73
+ const dataValidator = new data_validator_1.DataValidator(screenName, this.baseDir);
74
+ // Validate each feature file
75
+ for (const featureFile of featureFiles) {
76
+ const featureName = path.basename(featureFile, '.feature');
77
+ const relativeFile = path.relative(this.baseDir, featureFile);
78
+ const fileResult = {
79
+ file: relativeFile,
80
+ valid: true,
81
+ errors: [],
82
+ warnings: [],
83
+ };
84
+ // 1. Validate Gherkin syntax and extract refs
85
+ const featureResult = featureValidator.validate(featureFile);
86
+ fileResult.errors.push(...featureResult.errors);
87
+ fileResult.warnings.push(...featureResult.warnings);
88
+ // 2. Validate selector file
89
+ const selectorFileResult = selectorValidator.validateFile(featureName);
90
+ fileResult.errors.push(...selectorFileResult.errors);
91
+ fileResult.warnings.push(...selectorFileResult.warnings);
92
+ // 3. Validate selector refs exist
93
+ if (featureResult.refs.selectors.length > 0) {
94
+ const selectorRefErrors = selectorValidator.validateRefs(featureName, featureResult.refs.selectors, relativeFile);
95
+ fileResult.errors.push(...selectorRefErrors);
96
+ }
97
+ // 4. Validate data file
98
+ const dataFileResult = dataValidator.validateFile(featureName);
99
+ fileResult.errors.push(...dataFileResult.errors);
100
+ fileResult.warnings.push(...dataFileResult.warnings);
101
+ // 5. Validate data refs exist
102
+ if (featureResult.refs.dataRefs.length > 0) {
103
+ const dataRefErrors = dataValidator.validateRefs(featureName, featureResult.refs.dataRefs, relativeFile);
104
+ fileResult.errors.push(...dataRefErrors);
105
+ }
106
+ // Update validity
107
+ fileResult.valid = fileResult.errors.length === 0;
108
+ results.push(fileResult);
109
+ }
110
+ return this.buildResult(results);
111
+ }
112
+ /**
113
+ * Validate all screens
114
+ */
115
+ validateAll() {
116
+ const screensDir = path.join(this.baseDir, 'qa', 'screens');
117
+ if (!fs.existsSync(screensDir)) {
118
+ return this.createErrorResult(`Screens directory not found at ${screensDir}`);
119
+ }
120
+ const screens = fs.readdirSync(screensDir, { withFileTypes: true })
121
+ .filter(entry => entry.isDirectory())
122
+ .map(entry => entry.name);
123
+ if (screens.length === 0) {
124
+ return this.createErrorResult(`No screens found in ${screensDir}`);
125
+ }
126
+ const allResults = [];
127
+ for (const screenName of screens) {
128
+ const screenResult = this.validateScreen(screenName);
129
+ allResults.push(...screenResult.results);
130
+ }
131
+ return this.buildResult(allResults);
132
+ }
133
+ /**
134
+ * Discover .feature files in a directory
135
+ */
136
+ discoverFeatureFiles(dir) {
137
+ const files = [];
138
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
139
+ for (const entry of entries) {
140
+ const fullPath = path.join(dir, entry.name);
141
+ if (entry.isDirectory()) {
142
+ files.push(...this.discoverFeatureFiles(fullPath));
143
+ }
144
+ else if (entry.isFile() && entry.name.endsWith('.feature')) {
145
+ files.push(fullPath);
146
+ }
147
+ }
148
+ return files;
149
+ }
150
+ /**
151
+ * Build final validation result
152
+ */
153
+ buildResult(results) {
154
+ const summary = {
155
+ totalFiles: results.length,
156
+ passedFiles: results.filter(r => r.valid).length,
157
+ failedFiles: results.filter(r => !r.valid).length,
158
+ totalErrors: results.reduce((sum, r) => sum + r.errors.length, 0),
159
+ totalWarnings: results.reduce((sum, r) => sum + r.warnings.length, 0),
160
+ };
161
+ return {
162
+ valid: summary.failedFiles === 0,
163
+ summary,
164
+ results,
165
+ };
166
+ }
167
+ /**
168
+ * Create error result for invalid setup
169
+ */
170
+ createErrorResult(message) {
171
+ return {
172
+ valid: false,
173
+ summary: {
174
+ totalFiles: 0,
175
+ passedFiles: 0,
176
+ failedFiles: 0,
177
+ totalErrors: 1,
178
+ totalWarnings: 0,
179
+ },
180
+ results: [{
181
+ file: '',
182
+ valid: false,
183
+ errors: [{
184
+ type: 'error',
185
+ code: 'GHERKIN_SYNTAX_ERROR',
186
+ message,
187
+ file: '',
188
+ }],
189
+ warnings: [],
190
+ }],
191
+ };
192
+ }
193
+ }
194
+ exports.ScreenValidator = ScreenValidator;
195
+ //# sourceMappingURL=screen-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-validator.js","sourceRoot":"","sources":["../../../src/core/validator/screen-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Selector Validator
3
+ * Validates selector YAML files and checks referenced selectors exist
4
+ */
5
+ import { ValidationIssue } from './index';
6
+ export declare class SelectorValidator {
7
+ private screenName;
8
+ private baseDir;
9
+ private selectorCache;
10
+ constructor(screenName: string, baseDir?: string);
11
+ /**
12
+ * Validate selector file for a feature
13
+ */
14
+ validateFile(featureName: string): {
15
+ errors: ValidationIssue[];
16
+ warnings: ValidationIssue[];
17
+ };
18
+ /**
19
+ * Check if selector references exist
20
+ */
21
+ validateRefs(featureName: string, refs: Array<{
22
+ ref: string;
23
+ line: number;
24
+ }>, featureFile: string): ValidationIssue[];
25
+ /**
26
+ * Generate selector key from natural language label
27
+ * Matches logic in SelectorResolver.generateKey()
28
+ */
29
+ private generateKey;
30
+ /**
31
+ * Find selector file path (checks override first)
32
+ */
33
+ private findSelectorPath;
34
+ }
35
+ //# sourceMappingURL=selector-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validator/selector-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAc1C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAmC;gBAE5C,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAKhD;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;KAAE;IAqF7F;;OAEG;IACH,YAAY,CACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EAC1C,WAAW,EAAE,MAAM,GAClB,eAAe,EAAE;IA4CpB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAmBzB"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * Selector Validator
4
+ * Validates selector YAML files and checks referenced selectors exist
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.SelectorValidator = void 0;
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ const yaml_1 = __importDefault(require("yaml"));
47
+ const VALID_TYPES = ['placeholder', 'role', 'testid', 'label', 'text'];
48
+ class SelectorValidator {
49
+ constructor(screenName, baseDir) {
50
+ this.selectorCache = new Map();
51
+ this.screenName = screenName;
52
+ this.baseDir = baseDir || process.cwd();
53
+ }
54
+ /**
55
+ * Validate selector file for a feature
56
+ */
57
+ validateFile(featureName) {
58
+ const errors = [];
59
+ const warnings = [];
60
+ const filePath = this.findSelectorPath(featureName);
61
+ if (!filePath) {
62
+ errors.push({
63
+ type: 'error',
64
+ code: 'MISSING_SELECTOR_FILE',
65
+ message: `Selector file not found for feature "${featureName}"`,
66
+ file: `qa/screens/${this.screenName}/selectors/${featureName}.yaml`,
67
+ });
68
+ return { errors, warnings };
69
+ }
70
+ // Load and parse YAML
71
+ let content;
72
+ let selectors;
73
+ try {
74
+ content = fs.readFileSync(filePath, 'utf-8');
75
+ }
76
+ catch (error) {
77
+ errors.push({
78
+ type: 'error',
79
+ code: 'INVALID_YAML_SYNTAX',
80
+ message: `Cannot read file: ${error.message}`,
81
+ file: filePath,
82
+ });
83
+ return { errors, warnings };
84
+ }
85
+ try {
86
+ selectors = yaml_1.default.parse(content);
87
+ }
88
+ catch (error) {
89
+ errors.push({
90
+ type: 'error',
91
+ code: 'INVALID_YAML_SYNTAX',
92
+ message: `YAML parse error: ${error.message}`,
93
+ file: filePath,
94
+ });
95
+ return { errors, warnings };
96
+ }
97
+ if (!selectors || typeof selectors !== 'object') {
98
+ errors.push({
99
+ type: 'error',
100
+ code: 'INVALID_YAML_SYNTAX',
101
+ message: 'Selector file must be a valid YAML object',
102
+ file: filePath,
103
+ });
104
+ return { errors, warnings };
105
+ }
106
+ // Validate each selector entry
107
+ for (const [key, entry] of Object.entries(selectors)) {
108
+ if (!entry || typeof entry !== 'object') {
109
+ warnings.push({
110
+ type: 'warning',
111
+ code: 'INVALID_SELECTOR_TYPE',
112
+ message: `Selector "${key}" should be an object with type/value properties`,
113
+ file: filePath,
114
+ element: key,
115
+ });
116
+ continue;
117
+ }
118
+ // Check type is valid
119
+ if (entry.type && !VALID_TYPES.includes(entry.type)) {
120
+ warnings.push({
121
+ type: 'warning',
122
+ code: 'INVALID_SELECTOR_TYPE',
123
+ message: `Selector "${key}" has invalid type "${entry.type}". Valid types: ${VALID_TYPES.join(', ')}`,
124
+ file: filePath,
125
+ element: key,
126
+ });
127
+ }
128
+ }
129
+ // Cache for later ref validation
130
+ this.selectorCache.set(featureName, selectors);
131
+ return { errors, warnings };
132
+ }
133
+ /**
134
+ * Check if selector references exist
135
+ */
136
+ validateRefs(featureName, refs, featureFile) {
137
+ const errors = [];
138
+ // Load selectors if not cached
139
+ if (!this.selectorCache.has(featureName)) {
140
+ const filePath = this.findSelectorPath(featureName);
141
+ if (!filePath) {
142
+ // Already reported in validateFile
143
+ return errors;
144
+ }
145
+ try {
146
+ const content = fs.readFileSync(filePath, 'utf-8');
147
+ const selectors = yaml_1.default.parse(content);
148
+ this.selectorCache.set(featureName, selectors);
149
+ }
150
+ catch {
151
+ // Error already reported in validateFile
152
+ return errors;
153
+ }
154
+ }
155
+ const selectors = this.selectorCache.get(featureName);
156
+ if (!selectors) {
157
+ return errors;
158
+ }
159
+ // Check each ref
160
+ for (const { ref, line } of refs) {
161
+ const key = this.generateKey(ref);
162
+ if (!(key in selectors)) {
163
+ errors.push({
164
+ type: 'error',
165
+ code: 'MISSING_SELECTOR',
166
+ message: `Selector [${ref}] (key: ${key}) not found in selectors/${featureName}.yaml`,
167
+ file: featureFile,
168
+ line,
169
+ element: ref,
170
+ });
171
+ }
172
+ }
173
+ return errors;
174
+ }
175
+ /**
176
+ * Generate selector key from natural language label
177
+ * Matches logic in SelectorResolver.generateKey()
178
+ */
179
+ generateKey(label) {
180
+ return label
181
+ .toLowerCase()
182
+ .replace(/['\u2019]s/g, 's')
183
+ .replace(/['\u2019]/g, '')
184
+ .replace(/[^a-z0-9\s]/g, '')
185
+ .trim()
186
+ .replace(/\s+/g, '.');
187
+ }
188
+ /**
189
+ * Find selector file path (checks override first)
190
+ */
191
+ findSelectorPath(featureName) {
192
+ const possiblePaths = [
193
+ // Override (highest priority)
194
+ path.join(this.baseDir, 'qa', 'screens', this.screenName, 'selectors', `${featureName}-override.yaml`),
195
+ // Normal
196
+ path.join(this.baseDir, 'qa', 'screens', this.screenName, 'selectors', `${featureName}.yaml`),
197
+ // Legacy paths
198
+ path.join(this.baseDir, 'qa', 'selectors', 'screens', `${featureName}-override.yaml`),
199
+ path.join(this.baseDir, 'qa', 'selectors', 'screens', `${featureName}.yaml`),
200
+ ];
201
+ for (const p of possiblePaths) {
202
+ if (fs.existsSync(p)) {
203
+ return p;
204
+ }
205
+ }
206
+ return null;
207
+ }
208
+ }
209
+ exports.SelectorValidator = SelectorValidator;
210
+ //# sourceMappingURL=selector-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-validator.js","sourceRoot":"","sources":["../../../src/core/validator/selector-validator.ts"],"names":[],"mappings":"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"}
@@ -80,7 +80,7 @@ const program = new commander_1.Command();
80
80
  program
81
81
  .name('qa-generator')
82
82
  .description('AI-Native QA Selector DSL Generator')
83
- .version('1.0.4');
83
+ .version('1.0.6');
84
84
  // ============================================================================
85
85
  // Command: discover
86
86
  // ============================================================================
@@ -55,6 +55,10 @@ export declare class CLIAdapter implements InputAdapter {
55
55
  * Add add --screen command
56
56
  */
57
57
  addAddScreenCommand(program: Command): Command;
58
+ /**
59
+ * Add validate command
60
+ */
61
+ addValidateCommand(program: Command): Command;
58
62
  /**
59
63
  * Extract options from commander Command
60
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cli-adapter.d.ts","sourceRoot":"","sources":["../../src/input/cli-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE5D,qBAAa,UAAW,YAAW,YAAY;IAC7C,IAAI,cAAmB;IAEvB;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU;IAMlC;;OAEG;IACH,QAAQ,IAAI,OAAO;IAKnB;;OAEG;IACH,aAAa,IAAI,OAAO;IAiBxB;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAY7C;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAQlD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAUxC;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAU7C;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAYzC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAMzC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAM1C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAU5C;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAS9C;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU;CAqB7C"}
1
+ {"version":3,"file":"cli-adapter.d.ts","sourceRoot":"","sources":["../../src/input/cli-adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE5D,qBAAa,UAAW,YAAW,YAAY;IAC7C,IAAI,cAAmB;IAEvB;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU;IAMlC;;OAEG;IACH,QAAQ,IAAI,OAAO;IAKnB;;OAEG;IACH,aAAa,IAAI,OAAO;IAiBxB;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAY7C;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAQlD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAUxC;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAU7C;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAYzC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAMzC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAM1C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAU5C;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAS9C;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAS7C;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU;CAqB7C"}
@@ -34,7 +34,7 @@ class CLIAdapter {
34
34
  program
35
35
  .name('sungen')
36
36
  .description('AI-Native E2E Test Generator - Generate Playwright tests from Gherkin features')
37
- .version('1.0.4');
37
+ .version('1.0.6');
38
38
  // Global options
39
39
  program
40
40
  .option('-c, --config <path>', 'Path to custom config file')
@@ -143,6 +143,17 @@ class CLIAdapter {
143
143
  .option('-p, --path <path>', 'Screen route path')
144
144
  .option('-d, --description <text>', 'Screen description');
145
145
  }
146
+ /**
147
+ * Add validate command
148
+ */
149
+ addValidateCommand(program) {
150
+ return program
151
+ .command('validate')
152
+ .description('Validate Gherkin features and selector/test-data mappings')
153
+ .option('-s, --screen <name>', 'Validate specific screen (optional, defaults to all)')
154
+ .option('--json', 'Output results as JSON')
155
+ .option('-v, --verbose', 'Show all checks, not just failures');
156
+ }
146
157
  /**
147
158
  * Extract options from commander Command
148
159
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cli-adapter.js","sourceRoot":"","sources":["../../src/input/cli-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-adapter.js","sourceRoot":"","sources":["../../src/input/cli-adapter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAAoC;AAEpC,mDAA4D;AAE5D,MAAa,UAAU;IAAvB;QACE,SAAI,GAAG,2BAAW,CAAC,GAAG,CAAC;IAyLzB,CAAC;IAvLC;;OAEG;IACH,KAAK,CAAC,IAAe;QACnB,oDAAoD;QACpD,iEAAiE;QACjE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,+BAA+B;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;QAE9B,OAAO;aACJ,IAAI,CAAC,QAAQ,CAAC;aACd,WAAW,CAAC,gFAAgF,CAAC;aAC7F,OAAO,CAAC,OAAO,CAAC,CAAC;QAEpB,iBAAiB;QACjB,OAAO;aACJ,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;aAC3D,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;aACjD,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC,CAAC;QAE7D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAgB;QACjC,OAAO,OAAO;aACX,OAAO,CAAC,UAAU,CAAC;aACnB,WAAW,CAAC,4CAA4C,CAAC;aACzD,cAAc,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;aAChE,MAAM,CAAC,sBAAsB,EAAE,2CAA2C,EAAE,KAAK,CAAC;aAClF,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;aACnD,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;aACxE,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;aAChE,MAAM,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,OAAgB;QACtC,OAAO,OAAO;aACX,OAAO,CAAC,gBAAgB,CAAC;aACzB,WAAW,CAAC,iDAAiD,CAAC;aAC9D,MAAM,CAAC,aAAa,EAAE,iDAAiD,CAAC;aACxE,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,EAAE,YAAY,CAAC,CAAC;IACpG,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAgB;QAC5B,OAAO,OAAO;aACX,OAAO,CAAC,KAAK,CAAC;aACd,WAAW,CAAC,iEAAiE,CAAC;aAC9E,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,CAAC;aACrF,MAAM,CAAC,oBAAoB,EAAE,sCAAsC,CAAC;aACpE,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;aAC5D,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAgB;QACjC,OAAO,OAAO;aACX,OAAO,CAAC,UAAU,CAAC;aACnB,WAAW,CAAC,6CAA6C,CAAC;aAC1D,MAAM,CAAC,aAAa,EAAE,iDAAiD,CAAC;aACxE,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,EAAE,YAAY,CAAC;aAC9F,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;aACrE,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAAgB;QAC7B,OAAO,OAAO;aACX,OAAO,CAAC,MAAM,CAAC;aACf,WAAW,CAAC,+CAA+C,CAAC;aAC5D,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;aACnE,MAAM,CAAC,sBAAsB,EAAE,2CAA2C,EAAE,KAAK,CAAC;aAClF,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;aACzD,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;aACxE,MAAM,CAAC,WAAW,EAAE,2CAA2C,CAAC;aAChE,MAAM,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAAgB;QAC7B,OAAO,OAAO;aACX,OAAO,CAAC,MAAM,CAAC;aACf,WAAW,CAAC,qEAAqE,CAAC,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAgB;QAC9B,OAAO,OAAO;aACX,OAAO,CAAC,aAAa,CAAC;aACtB,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAgB;QAChC,OAAO,OAAO;aACX,OAAO,CAAC,UAAU,CAAC;aACnB,WAAW,CAAC,4DAA4D,CAAC;aACzE,MAAM,CAAC,qBAAqB,EAAE,iDAAiD,CAAC;aAChF,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;aAC9D,MAAM,CAAC,SAAS,EAAE,2CAA2C,CAAC;aAC9D,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,OAAgB;QAClC,OAAO,OAAO;aACX,OAAO,CAAC,KAAK,CAAC;aACd,WAAW,CAAC,6CAA6C,CAAC;aAC1D,cAAc,CAAC,iBAAiB,EAAE,aAAa,CAAC;aAChD,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;aAChD,MAAM,CAAC,0BAA0B,EAAE,oBAAoB,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAgB;QACjC,OAAO,OAAO;aACX,OAAO,CAAC,UAAU,CAAC;aACnB,WAAW,CAAC,2DAA2D,CAAC;aACxE,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,CAAC;aACrF,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;aAC1C,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAAgB;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAE5B,4BAA4B;QAC5B,IAAI,IAAI,GAAwD,IAAI,CAAC,IAAI,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,GAAG,SAAS,CAAC;QAClC,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,GAAG,gBAAgB,CAAC;QAEhD,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACxD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;CACF;AA1LD,gCA0LC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sun-asterisk/sungen",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
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",