@sun-asterisk/sungen 3.1.1 → 3.1.2-beta.101

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 (162) hide show
  1. package/README.md +4 -428
  2. package/dist/capabilities/builtins.d.ts +31 -0
  3. package/dist/capabilities/builtins.d.ts.map +1 -0
  4. package/dist/capabilities/builtins.js +84 -0
  5. package/dist/capabilities/builtins.js.map +1 -0
  6. package/dist/capabilities/context-router.d.ts +34 -0
  7. package/dist/capabilities/context-router.d.ts.map +1 -0
  8. package/dist/capabilities/context-router.js +49 -0
  9. package/dist/capabilities/context-router.js.map +1 -0
  10. package/dist/capabilities/context.d.ts +51 -0
  11. package/dist/capabilities/context.d.ts.map +1 -0
  12. package/dist/capabilities/context.js +17 -0
  13. package/dist/capabilities/context.js.map +1 -0
  14. package/dist/capabilities/discover.d.ts +2 -0
  15. package/dist/capabilities/discover.d.ts.map +1 -0
  16. package/dist/capabilities/discover.js +48 -0
  17. package/dist/capabilities/discover.js.map +1 -0
  18. package/dist/capabilities/registry.d.ts +90 -0
  19. package/dist/capabilities/registry.d.ts.map +1 -0
  20. package/dist/capabilities/registry.js +43 -0
  21. package/dist/capabilities/registry.js.map +1 -0
  22. package/dist/capabilities/sensor.d.ts +49 -0
  23. package/dist/capabilities/sensor.d.ts.map +1 -0
  24. package/dist/capabilities/sensor.js +3 -0
  25. package/dist/capabilities/sensor.js.map +1 -0
  26. package/dist/cli/commands/generate.d.ts.map +1 -1
  27. package/dist/cli/commands/generate.js +7 -3
  28. package/dist/cli/commands/generate.js.map +1 -1
  29. package/dist/cli/index.js +10 -1
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/exporters/spec-parser.d.ts.map +1 -1
  32. package/dist/exporters/spec-parser.js +4 -1
  33. package/dist/exporters/spec-parser.js.map +1 -1
  34. package/dist/generators/test-generator/adapters/adapter-interface.d.ts +1 -0
  35. package/dist/generators/test-generator/adapters/adapter-interface.d.ts.map +1 -1
  36. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.d.ts +1 -0
  37. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.d.ts.map +1 -1
  38. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.js.map +1 -1
  39. package/dist/generators/test-generator/adapters/playwright/templates/imports.hbs +3 -0
  40. package/dist/generators/test-generator/code-generator.d.ts +18 -9
  41. package/dist/generators/test-generator/code-generator.d.ts.map +1 -1
  42. package/dist/generators/test-generator/code-generator.js +76 -119
  43. package/dist/generators/test-generator/code-generator.js.map +1 -1
  44. package/dist/generators/test-generator/patterns/index.d.ts +0 -10
  45. package/dist/generators/test-generator/patterns/index.d.ts.map +1 -1
  46. package/dist/generators/test-generator/patterns/index.js +10 -47
  47. package/dist/generators/test-generator/patterns/index.js.map +1 -1
  48. package/dist/generators/test-generator/template-engine.d.ts +1 -0
  49. package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
  50. package/dist/generators/test-generator/template-engine.js +1 -1
  51. package/dist/generators/test-generator/template-engine.js.map +1 -1
  52. package/dist/harness/annotation-overrides.d.ts +9 -0
  53. package/dist/harness/annotation-overrides.d.ts.map +1 -0
  54. package/dist/harness/annotation-overrides.js +36 -0
  55. package/dist/harness/annotation-overrides.js.map +1 -0
  56. package/dist/harness/audit.d.ts.map +1 -1
  57. package/dist/harness/audit.js +35 -7
  58. package/dist/harness/audit.js.map +1 -1
  59. package/dist/harness/catalog/drivers.yaml +35 -12
  60. package/dist/harness/parse.d.ts +1 -0
  61. package/dist/harness/parse.d.ts.map +1 -1
  62. package/dist/harness/parse.js +13 -4
  63. package/dist/harness/parse.js.map +1 -1
  64. package/dist/index.d.ts +20 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +32 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/orchestrator/templates/ai-instructions/claude-cmd-create-test.md +4 -3
  69. package/dist/orchestrator/templates/ai-instructions/claude-skill-gherkin-syntax.md +1 -0
  70. package/dist/orchestrator/templates/ai-instructions/claude-skill-tc-generation.md +3 -0
  71. package/dist/orchestrator/templates/ai-instructions/copilot-cmd-create-test.md +4 -3
  72. package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-gherkin-syntax.md +1 -0
  73. package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-tc-generation.md +3 -0
  74. package/dist/orchestrator/templates/specs-api.d.ts +19 -0
  75. package/dist/orchestrator/templates/specs-api.d.ts.map +1 -0
  76. package/dist/orchestrator/templates/specs-api.js +128 -0
  77. package/dist/orchestrator/templates/specs-api.js.map +1 -0
  78. package/dist/orchestrator/templates/specs-api.ts +101 -0
  79. package/package.json +7 -30
  80. package/src/capabilities/builtins.ts +85 -0
  81. package/src/capabilities/context-router.ts +66 -0
  82. package/src/capabilities/context.ts +46 -0
  83. package/src/capabilities/discover.ts +42 -0
  84. package/src/capabilities/registry.ts +111 -0
  85. package/src/capabilities/sensor.ts +47 -0
  86. package/src/cli/commands/generate.ts +7 -3
  87. package/src/cli/index.ts +10 -1
  88. package/src/exporters/spec-parser.ts +4 -1
  89. package/src/generators/test-generator/adapters/adapter-interface.ts +1 -1
  90. package/src/generators/test-generator/adapters/playwright/playwright-adapter.ts +1 -1
  91. package/src/generators/test-generator/adapters/playwright/templates/imports.hbs +3 -0
  92. package/src/generators/test-generator/code-generator.ts +71 -118
  93. package/src/generators/test-generator/patterns/index.ts +9 -35
  94. package/src/generators/test-generator/template-engine.ts +2 -2
  95. package/src/harness/annotation-overrides.ts +25 -0
  96. package/src/harness/audit.ts +37 -8
  97. package/src/harness/catalog/drivers.yaml +35 -12
  98. package/src/harness/parse.ts +7 -2
  99. package/src/index.ts +30 -0
  100. package/src/orchestrator/templates/ai-instructions/claude-cmd-create-test.md +4 -3
  101. package/src/orchestrator/templates/ai-instructions/claude-skill-gherkin-syntax.md +1 -0
  102. package/src/orchestrator/templates/ai-instructions/claude-skill-tc-generation.md +3 -0
  103. package/src/orchestrator/templates/ai-instructions/copilot-cmd-create-test.md +4 -3
  104. package/src/orchestrator/templates/ai-instructions/github-skill-sungen-gherkin-syntax.md +1 -0
  105. package/src/orchestrator/templates/ai-instructions/github-skill-sungen-tc-generation.md +3 -0
  106. package/src/orchestrator/templates/specs-api.ts +101 -0
  107. package/dist/generators/test-generator/patterns/assertion-patterns.d.ts +0 -7
  108. package/dist/generators/test-generator/patterns/assertion-patterns.d.ts.map +0 -1
  109. package/dist/generators/test-generator/patterns/assertion-patterns.js +0 -626
  110. package/dist/generators/test-generator/patterns/assertion-patterns.js.map +0 -1
  111. package/dist/generators/test-generator/patterns/capture-patterns.d.ts +0 -21
  112. package/dist/generators/test-generator/patterns/capture-patterns.d.ts.map +0 -1
  113. package/dist/generators/test-generator/patterns/capture-patterns.js +0 -87
  114. package/dist/generators/test-generator/patterns/capture-patterns.js.map +0 -1
  115. package/dist/generators/test-generator/patterns/database-patterns.d.ts +0 -6
  116. package/dist/generators/test-generator/patterns/database-patterns.d.ts.map +0 -1
  117. package/dist/generators/test-generator/patterns/database-patterns.js +0 -95
  118. package/dist/generators/test-generator/patterns/database-patterns.js.map +0 -1
  119. package/dist/generators/test-generator/patterns/form-patterns.d.ts +0 -6
  120. package/dist/generators/test-generator/patterns/form-patterns.d.ts.map +0 -1
  121. package/dist/generators/test-generator/patterns/form-patterns.js +0 -160
  122. package/dist/generators/test-generator/patterns/form-patterns.js.map +0 -1
  123. package/dist/generators/test-generator/patterns/interaction-patterns.d.ts +0 -6
  124. package/dist/generators/test-generator/patterns/interaction-patterns.d.ts.map +0 -1
  125. package/dist/generators/test-generator/patterns/interaction-patterns.js +0 -433
  126. package/dist/generators/test-generator/patterns/interaction-patterns.js.map +0 -1
  127. package/dist/generators/test-generator/patterns/keyboard-patterns.d.ts +0 -7
  128. package/dist/generators/test-generator/patterns/keyboard-patterns.d.ts.map +0 -1
  129. package/dist/generators/test-generator/patterns/keyboard-patterns.js +0 -47
  130. package/dist/generators/test-generator/patterns/keyboard-patterns.js.map +0 -1
  131. package/dist/generators/test-generator/patterns/navigation-patterns.d.ts +0 -6
  132. package/dist/generators/test-generator/patterns/navigation-patterns.d.ts.map +0 -1
  133. package/dist/generators/test-generator/patterns/navigation-patterns.js +0 -125
  134. package/dist/generators/test-generator/patterns/navigation-patterns.js.map +0 -1
  135. package/dist/generators/test-generator/patterns/scope-patterns.d.ts +0 -7
  136. package/dist/generators/test-generator/patterns/scope-patterns.d.ts.map +0 -1
  137. package/dist/generators/test-generator/patterns/scope-patterns.js +0 -36
  138. package/dist/generators/test-generator/patterns/scope-patterns.js.map +0 -1
  139. package/dist/generators/test-generator/patterns/scroll-patterns.d.ts +0 -7
  140. package/dist/generators/test-generator/patterns/scroll-patterns.d.ts.map +0 -1
  141. package/dist/generators/test-generator/patterns/scroll-patterns.js +0 -25
  142. package/dist/generators/test-generator/patterns/scroll-patterns.js.map +0 -1
  143. package/dist/generators/test-generator/patterns/setup-patterns.d.ts +0 -6
  144. package/dist/generators/test-generator/patterns/setup-patterns.d.ts.map +0 -1
  145. package/dist/generators/test-generator/patterns/setup-patterns.js +0 -72
  146. package/dist/generators/test-generator/patterns/setup-patterns.js.map +0 -1
  147. package/dist/generators/test-generator/patterns/table-patterns.d.ts +0 -19
  148. package/dist/generators/test-generator/patterns/table-patterns.d.ts.map +0 -1
  149. package/dist/generators/test-generator/patterns/table-patterns.js +0 -239
  150. package/dist/generators/test-generator/patterns/table-patterns.js.map +0 -1
  151. package/docs/orchestration-spec.md +0 -267
  152. package/src/generators/test-generator/patterns/assertion-patterns.ts +0 -691
  153. package/src/generators/test-generator/patterns/capture-patterns.ts +0 -97
  154. package/src/generators/test-generator/patterns/database-patterns.ts +0 -96
  155. package/src/generators/test-generator/patterns/form-patterns.ts +0 -167
  156. package/src/generators/test-generator/patterns/interaction-patterns.ts +0 -465
  157. package/src/generators/test-generator/patterns/keyboard-patterns.ts +0 -51
  158. package/src/generators/test-generator/patterns/navigation-patterns.ts +0 -140
  159. package/src/generators/test-generator/patterns/scope-patterns.ts +0 -40
  160. package/src/generators/test-generator/patterns/scroll-patterns.ts +0 -27
  161. package/src/generators/test-generator/patterns/setup-patterns.ts +0 -76
  162. package/src/generators/test-generator/patterns/table-patterns.ts +0 -279
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigation-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/navigation-patterns.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Scope Patterns
3
- * Handles: switch to [Target] frame, switch to [main] frame
4
- */
5
- import { StepPattern } from './types';
6
- export declare const scopePatterns: StepPattern[];
7
- //# sourceMappingURL=scope-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/scope-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,aAAa,EAAE,WAAW,EAgCtC,CAAC"}
@@ -1,36 +0,0 @@
1
- "use strict";
2
- /**
3
- * Scope Patterns
4
- * Handles: switch to [Target] frame, switch to [main] frame
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.scopePatterns = void 0;
8
- exports.scopePatterns = [
9
- {
10
- name: 'switch-to-frame',
11
- matcher: (step) => {
12
- return /\bswitch(?:es)?\s+to\b/i.test(step.text) &&
13
- (step.elementType === 'frame' || step.elementType === 'iframe');
14
- },
15
- resolver: (step, context) => {
16
- const selectorRef = step.selectorRef || '';
17
- // "switch to [main] frame" → reset to page context
18
- if (selectorRef.toLowerCase() === 'main') {
19
- return {
20
- templateName: 'frame-exit-action',
21
- data: {},
22
- comment: 'Exit frame scope, return to main page',
23
- };
24
- }
25
- // "switch to [Payment] frame" → enter frame scope
26
- const resolved = context.selectorResolver.resolveSelector(selectorRef, context.featureName, 'frame', step.nth);
27
- return {
28
- templateName: 'frame-enter-action',
29
- data: { ...resolved, frameName: selectorRef },
30
- comment: `Switch to ${selectorRef} frame`,
31
- };
32
- },
33
- priority: 11,
34
- },
35
- ];
36
- //# sourceMappingURL=scope-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/scope-patterns.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIU,QAAA,aAAa,GAAkB;IAC1C;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzC,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;QACzE,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;YAE3C,mDAAmD;YACnD,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;gBACzC,OAAO;oBACL,YAAY,EAAE,mBAAmB;oBACjC,IAAI,EAAE,EAAE;oBACR,OAAO,EAAE,uCAAuC;iBACjD,CAAC;YACJ,CAAC;YAED,kDAAkD;YAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CACvD,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CACpD,CAAC;YAEF,OAAO;gBACL,YAAY,EAAE,oBAAoB;gBAClC,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE;gBAC7C,OAAO,EAAE,aAAa,WAAW,QAAQ;aAC1C,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Scroll Patterns
3
- * Handles: scroll to [Target] type
4
- */
5
- import { StepPattern } from './types';
6
- export declare const scrollPatterns: StepPattern[];
7
- //# sourceMappingURL=scroll-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/scroll-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,cAAc,EAAE,WAAW,EAmBvC,CAAC"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- /**
3
- * Scroll Patterns
4
- * Handles: scroll to [Target] type
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.scrollPatterns = void 0;
8
- exports.scrollPatterns = [
9
- {
10
- name: 'scroll-to-element',
11
- matcher: (step) => {
12
- return /\bscroll(?:s)?\s+to\b/i.test(step.text) && !!step.selectorRef;
13
- },
14
- resolver: (step, context) => {
15
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, step.elementType, step.nth);
16
- return {
17
- templateName: 'scroll-action',
18
- data: { ...resolved },
19
- comment: `Scroll to ${step.selectorRef}`,
20
- };
21
- },
22
- priority: 8,
23
- },
24
- ];
25
- //# sourceMappingURL=scroll-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/scroll-patterns.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIU,QAAA,cAAc,GAAkB;IAC3C;QACE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,OAAO,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACxE,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,eAAe,CACvD,IAAI,CAAC,WAAY,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CACnE,CAAC;YAEF,OAAO;gBACL,YAAY,EAAE,eAAe;gBAC7B,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE;gBACrB,OAAO,EAAE,aAAa,IAAI,CAAC,WAAW,EAAE;aACzC,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC"}
@@ -1,6 +0,0 @@
1
- import { StepPattern } from './types';
2
- /**
3
- * Setup and precondition patterns: application setup, authentication state, etc.
4
- */
5
- export declare const setupPatterns: StepPattern[];
6
- //# sourceMappingURL=setup-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/setup-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,EAqEtC,CAAC"}
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupPatterns = void 0;
4
- /**
5
- * Setup and precondition patterns: application setup, authentication state, etc.
6
- */
7
- exports.setupPatterns = [
8
- {
9
- name: 'application-running',
10
- matcher: (step) => step.text.includes('application is running') ||
11
- step.text.includes('application running') ||
12
- step.text.includes('app is running'),
13
- resolver: (step, context) => ({
14
- templateName: 'application-running',
15
- data: {},
16
- comment: `Setup: Application is running`,
17
- }),
18
- priority: 5,
19
- },
20
- {
21
- name: 'user-not-logged-in',
22
- matcher: (step) => step.text.includes('user is not logged in') ||
23
- step.text.includes('not logged in') ||
24
- step.text.includes('logged out'),
25
- resolver: (step, context) => ({
26
- templateName: 'clear-auth',
27
- data: {},
28
- comment: `Clear authentication state (ensure user is logged out)`,
29
- }),
30
- priority: 9,
31
- },
32
- {
33
- name: 'user-logged-in',
34
- matcher: (step) => (step.text.includes('user is logged in') ||
35
- step.text.includes('logged in as')) &&
36
- !step.text.includes('not logged in'),
37
- resolver: (step, context) => {
38
- const userRef = step.dataRef || 'valid_user';
39
- return {
40
- templateName: 'user-login-todo',
41
- data: { userRef },
42
- comment: `Setup: User logged in as ${userRef}`,
43
- };
44
- },
45
- priority: 9,
46
- },
47
- {
48
- name: 'clear-database',
49
- matcher: (step) => step.text.includes('database is empty') ||
50
- step.text.includes('database is cleared') ||
51
- step.text.includes('clear database'),
52
- resolver: (step, context) => ({
53
- templateName: 'clear-database',
54
- data: {},
55
- comment: `Setup: Clear/reset database`,
56
- }),
57
- priority: 7,
58
- },
59
- {
60
- name: 'browser-state-clean',
61
- matcher: (step) => step.text.includes('clean browser state') ||
62
- step.text.includes('fresh browser') ||
63
- step.text.includes('new browser session'),
64
- resolver: (step, context) => ({
65
- templateName: 'clear-browser-state',
66
- data: {},
67
- comment: `Clear browser state (cookies, storage)`,
68
- }),
69
- priority: 8,
70
- },
71
- ];
72
- //# sourceMappingURL=setup-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/setup-patterns.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACU,QAAA,aAAa,GAAkB;IAC1C;QACE,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5B,YAAY,EAAE,qBAAqB;YACnC,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,+BAA+B;SACzC,CAAC;QACF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5B,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,wDAAwD;SAClE,CAAC;QACF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACpC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC;YAC7C,OAAO;gBACL,YAAY,EAAE,iBAAiB;gBAC/B,IAAI,EAAE,EAAE,OAAO,EAAE;gBACjB,OAAO,EAAE,4BAA4B,OAAO,EAAE;aAC/C,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5B,YAAY,EAAE,gBAAgB;YAC9B,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,6BAA6B;SACvC,CAAC;QACF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC3C,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5B,YAAY,EAAE,qBAAqB;YACnC,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,wCAAwC;SAClD,CAAC;QACF,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Table Patterns
3
- * Handles: table row assertions, table cell lookups, actions in table rows
4
- *
5
- * Syntax (v2.4 final):
6
- * - User see [Col] column in [Table] table # column exists
7
- * - User see [Ref] row in [Table] table with {{value}} # row exists (enters row scope)
8
- * - User see [Ref] row in [Table] table with {{value}} is hidden # row hidden
9
- * - User see [Table] table with {{count}} # row count
10
- * - User see [Table] table is empty # empty table
11
- * - User see [Col] column with {{value}} # cell value (row scoped — handled in step-mapper)
12
- * - User click [Act] button in [Table] table with {{filter}} # action in row
13
- * - User see [Table] table match data: # exact table match with inline DataTable
14
- * | Header1 | Header2 |
15
- * | {{value1}} | {{value2}} |
16
- */
17
- import { StepPattern } from './types';
18
- export declare const tablePatterns: StepPattern[];
19
- //# sourceMappingURL=table-patterns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/table-patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAC;AAkBtD,eAAO,MAAM,aAAa,EAAE,WAAW,EAmPtC,CAAC"}
@@ -1,239 +0,0 @@
1
- "use strict";
2
- /**
3
- * Table Patterns
4
- * Handles: table row assertions, table cell lookups, actions in table rows
5
- *
6
- * Syntax (v2.4 final):
7
- * - User see [Col] column in [Table] table # column exists
8
- * - User see [Ref] row in [Table] table with {{value}} # row exists (enters row scope)
9
- * - User see [Ref] row in [Table] table with {{value}} is hidden # row hidden
10
- * - User see [Table] table with {{count}} # row count
11
- * - User see [Table] table is empty # empty table
12
- * - User see [Col] column with {{value}} # cell value (row scoped — handled in step-mapper)
13
- * - User click [Act] button in [Table] table with {{filter}} # action in row
14
- * - User see [Table] table match data: # exact table match with inline DataTable
15
- * | Header1 | Header2 |
16
- * | {{value1}} | {{value2}} |
17
- */
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.tablePatterns = void 0;
20
- /** Helper: check if current step is in a Given context */
21
- function isGivenContext(context) {
22
- return context.effectiveKeyword === 'Given';
23
- }
24
- /** Map Gherkin element type to Playwright ARIA role */
25
- const typeToRole = {
26
- button: 'button',
27
- link: 'link',
28
- checkbox: 'checkbox',
29
- icon: 'img',
30
- image: 'img',
31
- radio: 'radio',
32
- switch: 'switch',
33
- };
34
- exports.tablePatterns = [
35
- // "User see [Table] table with {{count}}" — row count (no "rows" keyword needed)
36
- {
37
- name: 'table-row-count',
38
- matcher: (step) => {
39
- return step.elementType === 'table' &&
40
- /\btable\s+with\b/i.test(step.text) &&
41
- !!step.dataRef &&
42
- !/\brow\b/i.test(step.text) &&
43
- !/\bcolumn\b/i.test(step.text) &&
44
- !/\bempty\b/i.test(step.text);
45
- },
46
- resolver: (step, context) => {
47
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, 'table', step.nth);
48
- const count = context.dataResolver.resolveData(step.dataRef, context.featureName);
49
- const isGiven = isGivenContext(context);
50
- return {
51
- templateName: 'table-row-count',
52
- data: { ...resolved, expectedCount: count, isGiven },
53
- comment: `${isGiven ? 'Wait' : 'Assert'} ${step.selectorRef} table has ${count} rows`,
54
- };
55
- },
56
- priority: 16,
57
- },
58
- // "User see [Col] column in [Table] table"
59
- {
60
- name: 'table-column-exists',
61
- matcher: (step) => {
62
- return /\bcolumn\s+in\b/i.test(step.text) &&
63
- /\btable\b/i.test(step.text) &&
64
- !step.dataRef;
65
- },
66
- resolver: (step, context) => {
67
- // brackets[0] = Col, brackets[1] = Table
68
- const brackets = step.text.match(/\[([^\]]+)\]/g) || [];
69
- const columnName = brackets[0]?.replace(/[\[\]]/g, '') || 'Unknown';
70
- const tableName = brackets.length >= 2
71
- ? brackets[1].replace(/[\[\]]/g, '')
72
- : brackets[0]?.replace(/[\[\]]/g, '') || '';
73
- const resolved = context.selectorResolver.resolveSelector(tableName, context.featureName, 'table', step.nth);
74
- const isGiven = isGivenContext(context);
75
- return {
76
- templateName: 'table-column-exists',
77
- data: { ...resolved, columnName, isGiven },
78
- comment: `${isGiven ? 'Wait' : 'Assert'} ${columnName} column in ${tableName} table`,
79
- };
80
- },
81
- priority: 16,
82
- },
83
- // "User see [Table] table is empty"
84
- {
85
- name: 'table-is-empty',
86
- matcher: (step) => {
87
- return /\btable\s+is\s+empty\b/i.test(step.text);
88
- },
89
- resolver: (step, context) => {
90
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, 'table', step.nth);
91
- const isGiven = isGivenContext(context);
92
- return {
93
- templateName: 'table-empty',
94
- data: { ...resolved, isGiven },
95
- comment: `${isGiven ? 'Wait' : 'Assert'} ${step.selectorRef} table is empty`,
96
- };
97
- },
98
- priority: 16,
99
- },
100
- // "User see [Ref] row in [Table] table with {{value}}" — row exists (enters row scope)
101
- {
102
- name: 'table-row-exists',
103
- matcher: (step) => {
104
- return step.elementType === 'row' &&
105
- /\bin\b.*\btable\b/i.test(step.text) &&
106
- /\bwith\b/i.test(step.text) &&
107
- !!step.dataRef &&
108
- !/\bis\s+hidden\b/i.test(step.text);
109
- },
110
- resolver: (step, context) => {
111
- // brackets[0] = Ref (row label), brackets[1] = Table
112
- const brackets = step.text.match(/\[([^\]]+)\]/g) || [];
113
- const rowLabel = brackets[0]?.replace(/[\[\]]/g, '') || '';
114
- const tableName = brackets.length >= 2
115
- ? brackets[1].replace(/[\[\]]/g, '')
116
- : '';
117
- const resolved = context.selectorResolver.resolveSelector(tableName, context.featureName, 'table', step.nth);
118
- const filterValue = context.dataResolver.resolveData(step.dataRef, context.featureName);
119
- const isGiven = isGivenContext(context);
120
- return {
121
- templateName: 'table-row-exists',
122
- data: { ...resolved, filterValue, isGiven },
123
- comment: `${isGiven ? 'Wait' : 'Assert'} ${rowLabel} row in ${tableName} table with ${step.dataRef}`,
124
- };
125
- },
126
- priority: 17,
127
- },
128
- // "User see [Ref] row in [Table] table with {{value}} is hidden"
129
- {
130
- name: 'table-row-hidden',
131
- matcher: (step) => {
132
- return step.elementType === 'row' &&
133
- /\bin\b.*\btable\b/i.test(step.text) &&
134
- /\bwith\b/i.test(step.text) &&
135
- !!step.dataRef &&
136
- /\bis\s+hidden\b/i.test(step.text);
137
- },
138
- resolver: (step, context) => {
139
- // brackets[0] = Ref (row label), brackets[1] = Table
140
- const brackets = step.text.match(/\[([^\]]+)\]/g) || [];
141
- const rowLabel = brackets[0]?.replace(/[\[\]]/g, '') || '';
142
- const tableName = brackets.length >= 2
143
- ? brackets[1].replace(/[\[\]]/g, '')
144
- : '';
145
- const resolved = context.selectorResolver.resolveSelector(tableName, context.featureName, 'table', step.nth);
146
- const filterValue = context.dataResolver.resolveData(step.dataRef, context.featureName);
147
- const isGiven = isGivenContext(context);
148
- return {
149
- templateName: 'table-row-not-exists',
150
- data: { ...resolved, filterValue, isGiven },
151
- comment: `${isGiven ? 'Wait' : 'Assert'} ${rowLabel} row in ${tableName} table is hidden`,
152
- };
153
- },
154
- priority: 19,
155
- },
156
- // "User click [Act] button in [Table] table with {{filter}}" — action in row
157
- {
158
- name: 'table-action-in-row',
159
- matcher: (step) => {
160
- return /\bin\b.*\btable\b/i.test(step.text) &&
161
- /\bwith\b/i.test(step.text) &&
162
- !!step.dataRef &&
163
- step.elementType !== 'column' &&
164
- step.elementType !== 'row' &&
165
- step.elementType !== 'table';
166
- },
167
- resolver: (step, context) => {
168
- // brackets[0] = Act (element name), brackets[1] = Table
169
- const brackets = step.text.match(/\[([^\]]+)\]/g) || [];
170
- const elementName = brackets[0]?.replace(/[\[\]]/g, '') || '';
171
- const tableName = brackets.length >= 2
172
- ? brackets[1].replace(/[\[\]]/g, '')
173
- : '';
174
- const filterValue = step.dataRef
175
- ? context.dataResolver.resolveData(step.dataRef, context.featureName)
176
- : '';
177
- const tableResolved = context.selectorResolver.resolveSelector(tableName, context.featureName, 'table', 0);
178
- // Determine action from step text
179
- const actionMatch = step.text.match(/\b(click|check|uncheck)\b/i);
180
- const action = actionMatch ? actionMatch[1].toLowerCase() : 'click';
181
- // Extract element type (word after [Act]) and map to ARIA role
182
- const elementTypeMatch = step.text.match(/\]\s+([\w-]+)\s+in\b/i);
183
- const elementType = elementTypeMatch ? elementTypeMatch[1].toLowerCase() : 'button';
184
- const elementRole = typeToRole[elementType] || elementType;
185
- return {
186
- templateName: 'table-action-in-row',
187
- data: { ...tableResolved, elementName, filterValue, action, elementRole },
188
- comment: `${action} ${elementName} in ${tableName} table row with ${step.dataRef}`,
189
- };
190
- },
191
- priority: 17,
192
- },
193
- // "User see [Table] table match data:" — filter-based table match with inline DataTable
194
- // First row = headers, remaining rows = expected data
195
- // Uses filter({ hasText }) per row — resilient to data changes, row ordering, extra rows
196
- {
197
- name: 'table-match-data',
198
- matcher: (step) => {
199
- return step.elementType === 'table' &&
200
- /\btable\s+match\s+data\b/i.test(step.text) &&
201
- !!step.dataTable;
202
- },
203
- resolver: (step, context) => {
204
- const resolved = context.selectorResolver.resolveSelector(step.selectorRef, context.featureName, 'table', step.nth);
205
- const dataTable = step.dataTable;
206
- // Resolve {{variable}} references in cell values
207
- const resolvedRows = dataTable.rows.map(row => ({
208
- cells: row.cells.map(cell => {
209
- const varMatch = cell.match(/^\{\{([a-z0-9\-\.\_]+)\}\}$/i);
210
- if (varMatch) {
211
- return context.dataResolver.resolveData(varMatch[1], context.featureName);
212
- }
213
- return cell;
214
- }),
215
- }));
216
- // Pre-compute filter-based assertion lines
217
- // For each expected row: chain .filter({ hasText }) for all cell values, then assert visible
218
- const assertions = [];
219
- for (const row of resolvedRows) {
220
- const filters = row.cells
221
- .map(cell => `.filter({ hasText: '${cell.replace(/'/g, "\\'")}' })`)
222
- .join('');
223
- assertions.push(`await expect(rows${filters}).toBeVisible();`);
224
- }
225
- const isGiven = isGivenContext(context);
226
- return {
227
- templateName: 'table-match-data',
228
- data: {
229
- ...resolved,
230
- assertions,
231
- isGiven,
232
- },
233
- comment: `${isGiven ? 'Wait' : 'Assert'} ${step.selectorRef} table contains ${resolvedRows.length} expected row(s)`,
234
- };
235
- },
236
- priority: 20, // Higher than other table patterns to match first
237
- },
238
- ];
239
- //# sourceMappingURL=table-patterns.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/table-patterns.ts"],"names":[],"mappings":"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"}