@sun-asterisk/sungen 3.0.1 → 3.1.1

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 (132) hide show
  1. package/dist/cli/commands/challenge.d.ts.map +1 -1
  2. package/dist/cli/commands/challenge.js +9 -2
  3. package/dist/cli/commands/challenge.js.map +1 -1
  4. package/dist/cli/commands/delivery.d.ts.map +1 -1
  5. package/dist/cli/commands/delivery.js +3 -2
  6. package/dist/cli/commands/delivery.js.map +1 -1
  7. package/dist/cli/commands/generate.d.ts.map +1 -1
  8. package/dist/cli/commands/generate.js +8 -0
  9. package/dist/cli/commands/generate.js.map +1 -1
  10. package/dist/exporters/csv-exporter.d.ts.map +1 -1
  11. package/dist/exporters/csv-exporter.js +92 -76
  12. package/dist/exporters/csv-exporter.js.map +1 -1
  13. package/dist/exporters/spec-parser.d.ts.map +1 -1
  14. package/dist/exporters/spec-parser.js +3 -1
  15. package/dist/exporters/spec-parser.js.map +1 -1
  16. package/dist/generators/test-generator/adapters/adapter-interface.d.ts +2 -0
  17. package/dist/generators/test-generator/adapters/adapter-interface.d.ts.map +1 -1
  18. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.d.ts +1 -0
  19. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.d.ts.map +1 -1
  20. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.js.map +1 -1
  21. package/dist/generators/test-generator/adapters/playwright/templates/imports.hbs +3 -0
  22. package/dist/generators/test-generator/adapters/playwright/templates/scenario.hbs +19 -1
  23. package/dist/generators/test-generator/code-generator.d.ts +12 -0
  24. package/dist/generators/test-generator/code-generator.d.ts.map +1 -1
  25. package/dist/generators/test-generator/code-generator.js +137 -4
  26. package/dist/generators/test-generator/code-generator.js.map +1 -1
  27. package/dist/generators/test-generator/patterns/database-patterns.d.ts +6 -0
  28. package/dist/generators/test-generator/patterns/database-patterns.d.ts.map +1 -0
  29. package/dist/generators/test-generator/patterns/database-patterns.js +95 -0
  30. package/dist/generators/test-generator/patterns/database-patterns.js.map +1 -0
  31. package/dist/generators/test-generator/patterns/expect-patterns.d.ts +3 -0
  32. package/dist/generators/test-generator/patterns/expect-patterns.d.ts.map +1 -0
  33. package/dist/generators/test-generator/patterns/expect-patterns.js +54 -0
  34. package/dist/generators/test-generator/patterns/expect-patterns.js.map +1 -0
  35. package/dist/generators/test-generator/patterns/index.d.ts +1 -0
  36. package/dist/generators/test-generator/patterns/index.d.ts.map +1 -1
  37. package/dist/generators/test-generator/patterns/index.js +8 -1
  38. package/dist/generators/test-generator/patterns/index.js.map +1 -1
  39. package/dist/generators/test-generator/step-mapper.d.ts +6 -0
  40. package/dist/generators/test-generator/step-mapper.d.ts.map +1 -1
  41. package/dist/generators/test-generator/step-mapper.js +8 -0
  42. package/dist/generators/test-generator/step-mapper.js.map +1 -1
  43. package/dist/generators/test-generator/template-engine.d.ts +4 -0
  44. package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
  45. package/dist/generators/test-generator/template-engine.js +1 -1
  46. package/dist/generators/test-generator/template-engine.js.map +1 -1
  47. package/dist/generators/test-generator/utils/runtime-data-transformer.d.ts +1 -1
  48. package/dist/generators/test-generator/utils/runtime-data-transformer.d.ts.map +1 -1
  49. package/dist/generators/test-generator/utils/runtime-data-transformer.js +5 -5
  50. package/dist/generators/test-generator/utils/runtime-data-transformer.js.map +1 -1
  51. package/dist/harness/audit.js +1 -1
  52. package/dist/harness/capability-plan.js +1 -1
  53. package/dist/harness/catalog/drivers.yaml +1 -1
  54. package/dist/harness/catalog/universal-viewpoints.yaml +1 -1
  55. package/dist/harness/challenge.d.ts +1 -0
  56. package/dist/harness/challenge.d.ts.map +1 -1
  57. package/dist/harness/challenge.js +49 -2
  58. package/dist/harness/challenge.js.map +1 -1
  59. package/dist/harness/data-driven-lint.d.ts +7 -0
  60. package/dist/harness/data-driven-lint.d.ts.map +1 -0
  61. package/dist/harness/data-driven-lint.js +153 -0
  62. package/dist/harness/data-driven-lint.js.map +1 -0
  63. package/dist/harness/flow-plan.js +1 -1
  64. package/dist/harness/parse.d.ts +2 -0
  65. package/dist/harness/parse.d.ts.map +1 -1
  66. package/dist/harness/parse.js +16 -0
  67. package/dist/harness/parse.js.map +1 -1
  68. package/dist/harness/query-catalog.d.ts +48 -0
  69. package/dist/harness/query-catalog.d.ts.map +1 -0
  70. package/dist/harness/query-catalog.js +0 -0
  71. package/dist/harness/query-catalog.js.map +1 -0
  72. package/dist/harness/script-check.d.ts.map +1 -1
  73. package/dist/harness/script-check.js +11 -5
  74. package/dist/harness/script-check.js.map +1 -1
  75. package/dist/orchestrator/templates/ai-instructions/claude-agent-challenge.md +3 -2
  76. package/dist/orchestrator/templates/ai-instructions/claude-skill-gherkin-syntax.md +40 -0
  77. package/dist/orchestrator/templates/ai-instructions/claude-skill-harness-audit.md +1 -1
  78. package/dist/orchestrator/templates/ai-instructions/claude-skill-tc-generation.md +19 -0
  79. package/dist/orchestrator/templates/ai-instructions/claude-skill-tc-review.md +1 -0
  80. package/dist/orchestrator/templates/ai-instructions/claude-skill-test-design-techniques.md +6 -0
  81. package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-gherkin-syntax.md +40 -0
  82. package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-harness-audit.md +1 -1
  83. package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-tc-generation.md +19 -0
  84. package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-tc-review.md +1 -0
  85. package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-test-design-techniques.md +6 -0
  86. package/dist/orchestrator/templates/specs-db.d.ts +26 -0
  87. package/dist/orchestrator/templates/specs-db.d.ts.map +1 -0
  88. package/dist/orchestrator/templates/specs-db.js +193 -0
  89. package/dist/orchestrator/templates/specs-db.js.map +1 -0
  90. package/dist/orchestrator/templates/specs-db.ts +169 -0
  91. package/dist/orchestrator/templates/specs-test-data.ts +76 -15
  92. package/docs/orchestration-spec.md +3 -3
  93. package/package.json +2 -2
  94. package/src/cli/commands/challenge.ts +6 -2
  95. package/src/cli/commands/delivery.ts +3 -2
  96. package/src/cli/commands/generate.ts +8 -0
  97. package/src/exporters/csv-exporter.ts +22 -6
  98. package/src/exporters/spec-parser.ts +3 -1
  99. package/src/generators/test-generator/adapters/adapter-interface.ts +2 -1
  100. package/src/generators/test-generator/adapters/playwright/playwright-adapter.ts +1 -1
  101. package/src/generators/test-generator/adapters/playwright/templates/imports.hbs +3 -0
  102. package/src/generators/test-generator/adapters/playwright/templates/scenario.hbs +19 -1
  103. package/src/generators/test-generator/code-generator.ts +133 -4
  104. package/src/generators/test-generator/patterns/database-patterns.ts +96 -0
  105. package/src/generators/test-generator/patterns/expect-patterns.ts +49 -0
  106. package/src/generators/test-generator/patterns/index.ts +5 -0
  107. package/src/generators/test-generator/step-mapper.ts +9 -0
  108. package/src/generators/test-generator/template-engine.ts +5 -2
  109. package/src/generators/test-generator/utils/runtime-data-transformer.ts +5 -5
  110. package/src/harness/audit.ts +1 -1
  111. package/src/harness/capability-plan.ts +1 -1
  112. package/src/harness/catalog/drivers.yaml +1 -1
  113. package/src/harness/catalog/universal-viewpoints.yaml +1 -1
  114. package/src/harness/challenge.ts +47 -2
  115. package/src/harness/data-driven-lint.ts +119 -0
  116. package/src/harness/flow-plan.ts +1 -1
  117. package/src/harness/parse.ts +12 -0
  118. package/src/harness/query-catalog.ts +0 -0
  119. package/src/harness/script-check.ts +12 -6
  120. package/src/orchestrator/templates/ai-instructions/claude-agent-challenge.md +3 -2
  121. package/src/orchestrator/templates/ai-instructions/claude-skill-gherkin-syntax.md +40 -0
  122. package/src/orchestrator/templates/ai-instructions/claude-skill-harness-audit.md +1 -1
  123. package/src/orchestrator/templates/ai-instructions/claude-skill-tc-generation.md +19 -0
  124. package/src/orchestrator/templates/ai-instructions/claude-skill-tc-review.md +1 -0
  125. package/src/orchestrator/templates/ai-instructions/claude-skill-test-design-techniques.md +6 -0
  126. package/src/orchestrator/templates/ai-instructions/github-skill-sungen-gherkin-syntax.md +40 -0
  127. package/src/orchestrator/templates/ai-instructions/github-skill-sungen-harness-audit.md +1 -1
  128. package/src/orchestrator/templates/ai-instructions/github-skill-sungen-tc-generation.md +19 -0
  129. package/src/orchestrator/templates/ai-instructions/github-skill-sungen-tc-review.md +1 -0
  130. package/src/orchestrator/templates/ai-instructions/github-skill-sungen-test-design-techniques.md +6 -0
  131. package/src/orchestrator/templates/specs-db.ts +169 -0
  132. package/src/orchestrator/templates/specs-test-data.ts +76 -15
@@ -1 +1 @@
1
- {"version":3,"file":"playwright-adapter.js","sourceRoot":"","sources":["../../../../../src/generators/test-generator/adapters/playwright/playwright-adapter.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,2DAAuD;AAEvD;;;GAGG;AACH,MAAa,iBAAiB;IAM5B;QALS,kBAAa,GAAG,YAAY,CAAC;QAC7B,kBAAa,GAAG,UAAU,CAAC;QAKlC,2CAA2C;QAC3C,IAAI,CAAC,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,cAAc,CAAC,IAAkB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,cAAc,CAAC,IAAkB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,aAAa,CAAC,OAA0G;QACtH,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,gBAAgB,CAAC,IAA0D;QACzE,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAC,IAA0D;QACxE,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,eAAe,CAAC,IAA0D;QACxE,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,IAA0D;QACvE,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,UAAU,CAAC,YAAoB,EAAE,IAAS;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;CACF;AA3CD,8CA2CC"}
1
+ {"version":3,"file":"playwright-adapter.js","sourceRoot":"","sources":["../../../../../src/generators/test-generator/adapters/playwright/playwright-adapter.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,2DAAuD;AAEvD;;;GAGG;AACH,MAAa,iBAAiB;IAM5B;QALS,kBAAa,GAAG,YAAY,CAAC;QAC7B,kBAAa,GAAG,UAAU,CAAC;QAKlC,2CAA2C;QAC3C,IAAI,CAAC,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,cAAc,CAAC,IAAkB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,cAAc,CAAC,IAAkB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,aAAa,CAAC,OAA8H;QAC1I,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,gBAAgB,CAAC,IAA0D;QACzE,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAC,IAA0D;QACxE,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,eAAe,CAAC,IAA0D;QACxE,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,IAA0D;QACvE,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,UAAU,CAAC,YAAoB,EAAE,IAAS;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;CACF;AA3CD,8CA2CC"}
@@ -3,6 +3,9 @@ import { type Page, type BrowserContext } from '@playwright/test';
3
3
  {{#if runtimeData}}
4
4
  import { TestDataLoader } from '{{basePath}}/test-data';
5
5
  {{/if}}
6
+ {{#if needsDb}}
7
+ import { db } from '{{basePath}}/db';
8
+ {{/if}}
6
9
 
7
10
  // This file is auto-generated from Gherkin feature files
8
11
  // DO NOT EDIT MANUALLY - changes will be overwritten
@@ -1,3 +1,20 @@
1
+ {{#if casesDataset}}
2
+ for (const __row of testData.cases('{{casesDataset}}')) {
3
+ {{#if tags}}
4
+ test(`{{scenarioName}} — ${__row.__label}`, { tag: [{{{tags}}}] }, async ({{#if isParallel}}{ page }{{/if}}) => {
5
+ {{else}}
6
+ test(`{{scenarioName}} — ${__row.__label}`, async ({{#if isParallel}}{ page }{{/if}}) => {
7
+ {{/if}}
8
+ const rowData = testData.withRow(__row);
9
+ {{#each steps}}
10
+ {{#if comment}}
11
+ // {{comment}}
12
+ {{/if}}
13
+ {{code}}
14
+ {{/each}}
15
+ });
16
+ }
17
+ {{else}}
1
18
  {{#if isParallel}}
2
19
  {{#if tags}}
3
20
  test('{{scenarioName}}', { tag: [{{{tags}}}] }, async ({ page }) => {
@@ -24,4 +41,5 @@
24
41
  {{code}}
25
42
  {{/each}}
26
43
  });
27
- {{/if}}
44
+ {{/if}}
45
+ {{/if}}
@@ -14,6 +14,7 @@ export declare class CodeGenerator {
14
14
  private adapter;
15
15
  private screenName?;
16
16
  private options;
17
+ private queryScreenName;
17
18
  private stepsRegistry;
18
19
  constructor(options?: {
19
20
  useAI?: boolean;
@@ -40,6 +41,17 @@ export declare class CodeGenerator {
40
41
  /**
41
42
  * Ensure specs/base.ts exists in the output directory
42
43
  */
44
+ /** True when any step (background or scenario) in the feature is a DB-verification step. */
45
+ private featureUsesDb;
46
+ /**
47
+ * Build the precondition bind steps for a scenario's `@query:<name>[(p={{v}},…)]` tags.
48
+ * Each runs the catalog query and binds the result array to a `{{name}}` variable.
49
+ */
50
+ private buildQueryBinds;
51
+ /** Parse `@query:name(a={{x}},b="lit",c=3)` overrides → { a: "testData.get('x')", … } JS exprs. */
52
+ private parseQueryOverrides;
53
+ /** Copy the Data Driver runtime helper into specs/db.ts (idempotent). */
54
+ ensureDbFile(outputDir: string): void;
43
55
  ensureBaseFile(outputDir: string): void;
44
56
  private generateTestCode;
45
57
  private generateBackgroundSteps;
@@ -1 +1 @@
1
- {"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../../src/generators/test-generator/code-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA8B,MAAM,mBAAmB,CAAC;AAyJ9E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAM;IAErB,OAAO,CAAC,aAAa,CAAqC;gBAE9C,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO;IAgBtK;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC;IAiEzB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAS7C;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;YA0CzB,gBAAgB;YAgMhB,uBAAuB;YAYvB,kBAAkB;YAiBlB,YAAY;YAqBZ,gBAAgB;IA4E9B;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC;CA8D5B"}
1
+ {"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../../src/generators/test-generator/code-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA8B,MAAM,mBAAmB,CAAC;AA2J9E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAM;IAErB,OAAO,CAAC,eAAe,CAAc;IAErC,OAAO,CAAC,aAAa,CAAqC;gBAE9C,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO;IAgBtK;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC;IAqEzB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,SAAS,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAS7C;;OAEG;IACH,4FAA4F;IAC5F,OAAO,CAAC,aAAa;IASrB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0BvB,mGAAmG;IACnG,OAAO,CAAC,mBAAmB;IAmB3B,yEAAyE;IACzE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAarC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;YA0CzB,gBAAgB;YAkMhB,uBAAuB;YAYvB,kBAAkB;YAiBlB,YAAY;YAqBZ,gBAAgB;IAyH9B;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC;CA8D5B"}
@@ -9,6 +9,8 @@ const path_1 = __importDefault(require("path"));
9
9
  const step_mapper_1 = require("./step-mapper");
10
10
  const adapters_1 = require("./adapters");
11
11
  const runtime_data_transformer_1 = require("./utils/runtime-data-transformer");
12
+ const database_patterns_1 = require("./patterns/database-patterns");
13
+ const query_catalog_1 = require("../../harness/query-catalog");
12
14
  /**
13
15
  * Filter base scenario steps for @extend: only keep Given→When steps.
14
16
  * Skips Then and any And/But that follow Then (since And/But inherit
@@ -75,7 +77,7 @@ function extractCleanupFlags(tags) {
75
77
  const FUNCTIONAL_TAG_PREFIXES = [
76
78
  '@parallel', '@cleanup:', '@auth:', '@manual', '@no-auth',
77
79
  '@steps:', '@extend:', '@screenshot:', '@beforeAll', '@afterEach', '@afterAll',
78
- '@flow',
80
+ '@flow', '@cases:',
79
81
  ];
80
82
  function extractPassThroughTags(scenarioTags, featureTags) {
81
83
  const allTags = [...featureTags, ...scenarioTags];
@@ -142,6 +144,8 @@ function warnMultipleAuthTags(tags, context) {
142
144
  }
143
145
  class CodeGenerator {
144
146
  constructor(options = {}) {
147
+ // Screen/flow name for the CURRENT feature, in catalog-resolution form (`flows/<x>` for flows).
148
+ this.queryScreenName = '';
145
149
  // Steps registry built per feature during generateTestCode(); used by countSteps()
146
150
  this.stepsRegistry = new Map();
147
151
  this.options = options;
@@ -199,7 +203,11 @@ class CodeGenerator {
199
203
  const isParallelFeature = (feature.tags || []).includes('@parallel');
200
204
  const hasCleanupTags = (feature.tags || []).some(t => t.startsWith('@cleanup:'));
201
205
  const needsCleanupImport = !isParallelFeature && hasCleanupTags;
202
- const imports = this.adapter.renderImports({ runtimeData: this.options.runtimeData, basePath, needsCleanupImport });
206
+ // Data Driver: if any step verifies DB state, import the `db` helper + emit specs/db.ts
207
+ const needsDb = this.featureUsesDb(feature);
208
+ if (needsDb)
209
+ this.ensureDbFile(outputDir);
210
+ const imports = this.adapter.renderImports({ runtimeData: this.options.runtimeData, basePath, needsCleanupImport, needsDb });
203
211
  // Generate test code (async now to support AI mapping)
204
212
  const testCode = await this.generateTestCode(feature);
205
213
  // Combine and collapse any runs of 3+ newlines down to 2 (one blank line max)
@@ -249,8 +257,86 @@ class CodeGenerator {
249
257
  /**
250
258
  * Ensure specs/base.ts exists in the output directory
251
259
  */
260
+ /** True when any step (background or scenario) in the feature is a DB-verification step. */
261
+ featureUsesDb(feature) {
262
+ const steps = [];
263
+ if (feature.background?.steps)
264
+ steps.push(...feature.background.steps);
265
+ for (const sc of feature.scenarios || [])
266
+ if (sc.steps)
267
+ steps.push(...sc.steps);
268
+ if (steps.some((s) => s && typeof s.text === 'string' && (0, database_patterns_1.isDbStep)(s.text)))
269
+ return true;
270
+ // A scenario may carry only a @query:<name> post-condition tag (no DB step in its body).
271
+ return (feature.scenarios || []).some((sc) => (sc.tags || []).some((t) => t.startsWith('@query:')));
272
+ }
273
+ /**
274
+ * Build the precondition bind steps for a scenario's `@query:<name>[(p={{v}},…)]` tags.
275
+ * Each runs the catalog query and binds the result array to a `{{name}}` variable.
276
+ */
277
+ buildQueryBinds(scenario) {
278
+ const out = [];
279
+ const TAG = /^@query:([A-Za-z_][A-Za-z0-9_]*)(?:\((.*)\))?$/;
280
+ for (const tag of scenario.tags || []) {
281
+ const m = tag.match(TAG);
282
+ if (!m)
283
+ continue;
284
+ const name = m[1];
285
+ const overrides = this.parseQueryOverrides(m[2]);
286
+ const entry = (0, query_catalog_1.resolveQuery)(name, this.queryScreenName); // throws (fail-fast) if missing/ambiguous
287
+ const { sql, paramNames } = (0, query_catalog_1.compileQuery)(entry);
288
+ const paramExprs = paramNames.map((p) => p in overrides ? overrides[p] : `testData.get(${JSON.stringify(p)})`);
289
+ const label = JSON.stringify(entry.description ? `query "${name}" — ${entry.description}` : `query "${name}"`);
290
+ const ds = entry.datasource ? JSON.stringify(entry.datasource) : 'undefined';
291
+ out.push({
292
+ comment: `@query:${name} → bind {{${name}}} from ${entry.datasource || 'default datasource'}`,
293
+ code: this.indentCode(`testData.bind(${JSON.stringify(name)}, await db.fetchQuery(${label}, ${JSON.stringify(sql)}, [${paramExprs.join(', ')}], ${ds}));`, 4),
294
+ });
295
+ }
296
+ return out;
297
+ }
298
+ /** Parse `@query:name(a={{x}},b="lit",c=3)` overrides → { a: "testData.get('x')", … } JS exprs. */
299
+ parseQueryOverrides(raw) {
300
+ const out = {};
301
+ if (!raw)
302
+ return out;
303
+ for (const part of raw.split(',')) {
304
+ const eq = part.indexOf('=');
305
+ if (eq < 0)
306
+ continue;
307
+ const key = part.slice(0, eq).trim();
308
+ const val = part.slice(eq + 1).trim();
309
+ if (!key)
310
+ continue;
311
+ const v = val.match(/^\{\{\s*([^}]+?)\s*\}\}$/);
312
+ const q = val.match(/^["'](.*)["']$/);
313
+ if (v)
314
+ out[key] = `testData.get(${JSON.stringify(v[1])})`;
315
+ else if (q)
316
+ out[key] = JSON.stringify(q[1]);
317
+ else if (/^-?\d+(?:\.\d+)?$/.test(val))
318
+ out[key] = val;
319
+ else
320
+ out[key] = JSON.stringify(val);
321
+ }
322
+ return out;
323
+ }
324
+ /** Copy the Data Driver runtime helper into specs/db.ts (idempotent). */
325
+ ensureDbFile(outputDir) {
326
+ const templatesRoot = path_1.default.join(__dirname, '..', '..', 'orchestrator', 'templates');
327
+ const dbPath = path_1.default.join(outputDir, 'db.ts');
328
+ if (!fs_1.default.existsSync(dbPath)) {
329
+ const templatePath = path_1.default.join(templatesRoot, 'specs-db.ts');
330
+ if (fs_1.default.existsSync(templatePath)) {
331
+ if (!fs_1.default.existsSync(outputDir))
332
+ fs_1.default.mkdirSync(outputDir, { recursive: true });
333
+ fs_1.default.copyFileSync(templatePath, dbPath);
334
+ console.log('✓ Created: specs/db.ts');
335
+ }
336
+ }
337
+ }
252
338
  ensureBaseFile(outputDir) {
253
- const templatesRoot = path_1.default.join(__dirname, '..', '..', '..', 'orchestrator', 'templates');
339
+ const templatesRoot = path_1.default.join(__dirname, '..', '..', 'orchestrator', 'templates');
254
340
  const basePath = path_1.default.join(outputDir, 'base.ts');
255
341
  if (!fs_1.default.existsSync(basePath)) {
256
342
  const templatePath = path_1.default.join(templatesRoot, 'specs-base.ts');
@@ -318,6 +404,8 @@ class CodeGenerator {
318
404
  }
319
405
  this.stepMapper.setScreenContext(effectiveScreenName);
320
406
  }
407
+ // Catalog-resolution screen name for @query binds (flows are prefixed `flows/`).
408
+ this.queryScreenName = isFlowFeature ? `flows/${effectiveScreenName}` : (effectiveScreenName || '');
321
409
  // Reset flow mode per feature to prevent state leak in --all mode
322
410
  this.stepMapper.setFlowMode(isFlowFeature);
323
411
  // Set feature context for data resolution and navigation
@@ -521,6 +609,36 @@ class CodeGenerator {
521
609
  }
522
610
  // Set scenario context for path variable resolution (full merged list)
523
611
  this.stepMapper.setScenarioContext(stepsToMap);
612
+ // Data-driven (@cases): the scenario's {{col}} refs are dataset *row columns* that
613
+ // exist only at runtime — register them as captured so they resolve to a runtime
614
+ // get() (→ rowData.get) instead of compile-time YAML lookup.
615
+ const casesTag = scenario.tags.find((t) => t.startsWith('@cases:'));
616
+ const casesDataset = casesTag ? casesTag.slice('@cases:'.length).trim() : undefined;
617
+ if (casesDataset) {
618
+ const refs = new Set();
619
+ for (const st of stepsToMap) {
620
+ for (const m of (st.text || '').matchAll(/\{\{\s*([\w.]+)\s*\}\}/g))
621
+ refs.add(m[1]);
622
+ }
623
+ for (const r of refs)
624
+ this.stepMapper.registerCaptured(r);
625
+ }
626
+ // @query-bound vars: `{{name.col}}` / `{{name[2].col}}` / `{{name.count}}` exist only at
627
+ // runtime (the bind fetches them) — register as captured so they resolve to a runtime get()
628
+ // instead of a compile-time YAML lookup that would fail.
629
+ const queryNames = (scenario.tags || [])
630
+ .map((t) => t.match(/^@query:([A-Za-z_][A-Za-z0-9_]*)/))
631
+ .filter((m) => !!m)
632
+ .map((m) => m[1]);
633
+ if (queryNames.length) {
634
+ for (const st of stepsToMap) {
635
+ for (const mt of (st.text || '').matchAll(/\{\{\s*([^}]+?)\s*\}\}/g)) {
636
+ const head = mt[1].split(/[.[]/)[0];
637
+ if (queryNames.includes(head))
638
+ this.stepMapper.registerCaptured(mt[1]);
639
+ }
640
+ }
641
+ }
524
642
  const steps = [];
525
643
  if (scenario.extendsName && this.stepsRegistry.has(scenario.extendsName)) {
526
644
  const baseScenario = this.stepsRegistry.get(scenario.extendsName);
@@ -547,16 +665,31 @@ class CodeGenerator {
547
665
  steps.push({ comment: mapped.comment, code: this.indentCode(mapped.code, 4) });
548
666
  }
549
667
  }
668
+ // @query:<name>[(p={{v}},…)] tags → run the catalog query as a PRECONDITION and bind its
669
+ // result to a `{{name}}` variable (scenario asserts on it with `expect …` + path access).
670
+ // Prepended so the binds run before the scenario's own steps.
671
+ const queryBinds = this.buildQueryBinds(scenario);
672
+ if (queryBinds.length)
673
+ steps.unshift(...queryBinds);
550
674
  // Extract pass-through tags (feature + scenario, excluding functional tags)
551
675
  const tags = extractPassThroughTags(scenario.tags, featureTags);
552
676
  // Use adapter to render scenario
553
- return this.adapter.renderScenario({
677
+ const rendered = this.adapter.renderScenario({
554
678
  scenarioName: scenario.name,
555
679
  steps,
556
680
  authRole,
557
681
  isParallel,
558
682
  tags,
683
+ casesDataset,
559
684
  });
685
+ // Data-driven (@cases): the per-row test() binds a row-scoped view (`rowData`).
686
+ // Pre-transform THIS scenario's runtime-data markers to read from `rowData`, so the
687
+ // global `testData` transform that runs next on the rest of the file leaves it alone.
688
+ // The loop header's `testData.cases()/withRow()` are literal code (no markers) → untouched.
689
+ if (casesDataset && this.options.runtimeData) {
690
+ return (0, runtime_data_transformer_1.transformToRuntimeData)(rendered, 'rowData');
691
+ }
692
+ return rendered;
560
693
  }
561
694
  /**
562
695
  * Indent code lines with specified number of spaces
@@ -1 +1 @@
1
- {"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../../../src/generators/test-generator/code-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../../../src/generators/test-generator/code-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { StepPattern } from './types';
2
+ /** True when a step is a declarative DB-verification step (used to wire the `db` import).
3
+ * Named queries are invoked via the `@query:` annotation, not a step — see code-generator. */
4
+ export declare function isDbStep(text: string): boolean;
5
+ export declare const databasePatterns: StepPattern[];
6
+ //# sourceMappingURL=database-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/database-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAC;AAsBtD;+FAC+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9C;AA+BD,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAqCzC,CAAC"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.databasePatterns = void 0;
4
+ exports.isDbStep = isDbStep;
5
+ /**
6
+ * Database verification patterns (Data Driver v1) — declarative, no-SQL DB assertions
7
+ * that compile to calls on the runtime `db` helper (specs/db.ts). Read-only.
8
+ *
9
+ * User see [users] row where [email] is {{reg_email}}
10
+ * User see [users] row where [email] is {{reg_email}} has [status] = "active"
11
+ * User see [users] no row where [email] is {{dup_email}}
12
+ * User see [orders] where [buyer] is {{buyer}} count is {{expected_count}}
13
+ *
14
+ * Identifiers ([table]/[column]) are validated by the helper; values bind as parameters.
15
+ */
16
+ const TABLE = String.raw `\[([A-Za-z_][A-Za-z0-9_]*)\]`;
17
+ const VALUE = String.raw `\{\{[^}]+\}\}|"[^"]*"|'[^']*'|-?\d+(?:\.\d+)?`;
18
+ const reRow = new RegExp(`see\\s+${TABLE}\\s+row\\s+where\\b`, 'i');
19
+ const reNoRow = new RegExp(`see\\s+${TABLE}\\s+no\\s+row\\s+where\\b`, 'i');
20
+ const reCount = new RegExp(`see\\s+${TABLE}.*\\bcount\\s+is\\b`, 'i');
21
+ /** True when a step is a declarative DB-verification step (used to wire the `db` import).
22
+ * Named queries are invoked via the `@query:` annotation, not a step — see code-generator. */
23
+ function isDbStep(text) {
24
+ return reNoRow.test(text) || reRow.test(text) || reCount.test(text);
25
+ }
26
+ /** Render a value token (`{{var}}` | "literal" | 'literal' | number) as a JS expression. */
27
+ function valueExpr(token) {
28
+ const t = token.trim();
29
+ const v = t.match(/^\{\{\s*([^}]+?)\s*\}\}$/);
30
+ if (v)
31
+ return `testData.get(${JSON.stringify(v[1])})`;
32
+ const q = t.match(/^["'](.*)["']$/);
33
+ if (q)
34
+ return JSON.stringify(q[1]);
35
+ if (/^-?\d+(?:\.\d+)?$/.test(t))
36
+ return t;
37
+ return JSON.stringify(t);
38
+ }
39
+ /** Parse a `[col] is VALUE [and [col2] is VALUE2]` segment into a JS object literal. */
40
+ function parseFilter(segment) {
41
+ const re = new RegExp(`\\[([A-Za-z_][A-Za-z0-9_]*)\\]\\s+is\\s+(${VALUE})`, 'gi');
42
+ const parts = [];
43
+ let m;
44
+ while ((m = re.exec(segment)))
45
+ parts.push(`${JSON.stringify(m[1])}: ${valueExpr(m[2])}`);
46
+ return `{ ${parts.join(', ')} }`;
47
+ }
48
+ /** Parse a `has [col] = VALUE [and [col2] = VALUE2]` segment into a JS object literal. */
49
+ function parseExpected(segment) {
50
+ const re = new RegExp(`\\[([A-Za-z_][A-Za-z0-9_]*)\\]\\s*=\\s*(${VALUE})`, 'gi');
51
+ const parts = [];
52
+ let m;
53
+ while ((m = re.exec(segment)))
54
+ parts.push(`${JSON.stringify(m[1])}: ${valueExpr(m[2])}`);
55
+ return parts.length ? `{ ${parts.join(', ')} }` : '';
56
+ }
57
+ exports.databasePatterns = [
58
+ {
59
+ name: 'db-no-row',
60
+ priority: 60, // above generic see-assertions
61
+ matcher: (step) => reNoRow.test(step.text),
62
+ generator: (step, _ctx) => {
63
+ const m = step.text.match(new RegExp(`${TABLE}\\s+no\\s+row\\s+where\\s+(.+)$`, 'i'));
64
+ const table = m[1];
65
+ const filter = parseFilter(m[2]);
66
+ return { code: `await db.assertNoRow(${JSON.stringify(table)}, ${filter});`, comment: `DB: no row in ${table}` };
67
+ },
68
+ },
69
+ {
70
+ name: 'db-count',
71
+ priority: 60,
72
+ matcher: (step) => reCount.test(step.text) && !reRow.test(step.text),
73
+ generator: (step, _ctx) => {
74
+ const m = step.text.match(new RegExp(`${TABLE}(?:\\s+where\\s+(.+?))?\\s+count\\s+is\\s+(${VALUE})`, 'i'));
75
+ const table = m[1];
76
+ const filter = m[2] ? parseFilter(m[2]) : '{}';
77
+ return { code: `await db.assertCount(${JSON.stringify(table)}, ${filter}, Number(${valueExpr(m[3])}));`, comment: `DB: count rows in ${table}` };
78
+ },
79
+ },
80
+ {
81
+ name: 'db-row',
82
+ priority: 60,
83
+ matcher: (step) => reRow.test(step.text),
84
+ generator: (step, _ctx) => {
85
+ // [table] row where <filter> [has <expected>]
86
+ const m = step.text.match(new RegExp(`${TABLE}\\s+row\\s+where\\s+(.+?)(?:\\s+has\\s+(.+))?$`, 'i'));
87
+ const table = m[1];
88
+ const filter = parseFilter(m[2]);
89
+ const expected = m[3] ? parseExpected(m[3]) : '';
90
+ const args = expected ? `${JSON.stringify(table)}, ${filter}, ${expected}` : `${JSON.stringify(table)}, ${filter}`;
91
+ return { code: `await db.assertRow(${args});`, comment: `DB: row in ${table}` };
92
+ },
93
+ },
94
+ ];
95
+ //# sourceMappingURL=database-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/database-patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { StepPattern } from './types';
2
+ export declare const expectPatterns: StepPattern[];
3
+ //# sourceMappingURL=expect-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect-patterns.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/expect-patterns.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAkB,MAAM,SAAS,CAAC;AA6BtD,eAAO,MAAM,cAAc,EAAE,WAAW,EAkBvC,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.expectPatterns = void 0;
4
+ /**
5
+ * Data-vs-data assertions — compare two runtime values directly (no UI element).
6
+ * The primary use is asserting on an `@query`-bound result via path access, e.g.
7
+ *
8
+ * Then expect {{products.count}} is {{expected}}
9
+ * Then expect {{products.count}} is at least {{one}}
10
+ * Then expect {{active_user.status}} is "active"
11
+ * Then expect {{order.total}} is not {{zero}}
12
+ *
13
+ * Both sides are `{{var|path}}` | "literal" | 'literal' | number. Generic — works for any
14
+ * test-data values, not only DB results.
15
+ */
16
+ const VALUE = String.raw `\{\{[^}]+\}\}|"[^"]*"|'[^']*'|-?\d+(?:\.\d+)?`;
17
+ const reExpect = new RegExp(`^\\s*(?:User\\s+)?expect\\s+(${VALUE})\\s+is\\s+(not\\s+|at\\s+least\\s+|at\\s+most\\s+)?(${VALUE})\\s*$`, 'i');
18
+ /** Render a value token (`{{var}}` | "literal" | 'literal' | number) as a JS expression. */
19
+ function valueExpr(token) {
20
+ const t = token.trim();
21
+ const v = t.match(/^\{\{\s*([^}]+?)\s*\}\}$/);
22
+ if (v)
23
+ return `testData.get(${JSON.stringify(v[1])})`;
24
+ const q = t.match(/^["'](.*)["']$/);
25
+ if (q)
26
+ return JSON.stringify(q[1]);
27
+ if (/^-?\d+(?:\.\d+)?$/.test(t))
28
+ return t;
29
+ return JSON.stringify(t);
30
+ }
31
+ exports.expectPatterns = [
32
+ {
33
+ name: 'expect-data',
34
+ priority: 62, // above generic see-assertions; sibling of the DB assertions
35
+ matcher: (step) => reExpect.test(step.text),
36
+ generator: (step, _ctx) => {
37
+ const m = step.text.match(reExpect);
38
+ const a = valueExpr(m[1]);
39
+ const op = (m[2] || '').trim().toLowerCase();
40
+ const b = valueExpr(m[3]);
41
+ let code;
42
+ if (op === 'at least')
43
+ code = `expect(Number(${a})).toBeGreaterThanOrEqual(Number(${b}));`;
44
+ else if (op === 'at most')
45
+ code = `expect(Number(${a})).toBeLessThanOrEqual(Number(${b}));`;
46
+ else if (op === 'not')
47
+ code = `expect(String(${a})).not.toBe(String(${b}));`;
48
+ else
49
+ code = `expect(String(${a})).toBe(String(${b}));`;
50
+ return { code, comment: `Expect ${m[1]} ${op ? op + ' ' : 'is '}${m[3]}` };
51
+ },
52
+ },
53
+ ];
54
+ //# sourceMappingURL=expect-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect-patterns.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/expect-patterns.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;;;GAWG;AACH,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA,+CAA+C,CAAC;AACxE,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,gCAAgC,KAAK,wDAAwD,KAAK,QAAQ,EAAE,GAAG,CAAC,CAAC;AAE7I,4FAA4F;AAC5F,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,IAAI,CAAC;QAAE,OAAO,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAEY,QAAA,cAAc,GAAkB;IAC3C;QACE,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,EAAE,EAAE,6DAA6D;QAC3E,OAAO,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACvD,SAAS,EAAE,CAAC,IAAgB,EAAE,IAAoB,EAAc,EAAE;YAChE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC;YACrC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAY,CAAC;YACjB,IAAI,EAAE,KAAK,UAAU;gBAAE,IAAI,GAAG,iBAAiB,CAAC,oCAAoC,CAAC,KAAK,CAAC;iBACtF,IAAI,EAAE,KAAK,SAAS;gBAAE,IAAI,GAAG,iBAAiB,CAAC,iCAAiC,CAAC,KAAK,CAAC;iBACvF,IAAI,EAAE,KAAK,KAAK;gBAAE,IAAI,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,KAAK,CAAC;;gBACxE,IAAI,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7E,CAAC;KACF;CACF,CAAC"}
@@ -55,5 +55,6 @@ export { keyboardPatterns } from './keyboard-patterns';
55
55
  export { scrollPatterns } from './scroll-patterns';
56
56
  export { scopePatterns } from './scope-patterns';
57
57
  export { tablePatterns } from './table-patterns';
58
+ export { databasePatterns, isDbStep } from './database-patterns';
58
59
  export * from './types';
59
60
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAYtD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqB;;IAMrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAK3C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;IASjD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAgC1E;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAyBnC;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAI5B;;OAEG;IACH,eAAe,IAAI,MAAM;CAG1B;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AActD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqB;;IAMrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAkB/B;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAK3C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;IASjD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAgC1E;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAyBnC;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAI5B;;OAEG;IACH,eAAe,IAAI,MAAM;CAG1B;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACjE,cAAc,SAAS,CAAC"}