@sun-asterisk/sungen 3.2.29 → 3.2.31

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 (335) hide show
  1. package/dist/cli/commands/delivery.d.ts.map +1 -1
  2. package/dist/cli/commands/delivery.js +2 -1
  3. package/dist/cli/commands/delivery.js.map +1 -1
  4. package/dist/cli/commands/generate.d.ts.map +1 -1
  5. package/dist/cli/commands/generate.js +6 -2
  6. package/dist/cli/commands/generate.js.map +1 -1
  7. package/dist/cli/commands/inspect.js +1 -1
  8. package/dist/cli/commands/inspect.js.map +1 -1
  9. package/dist/cli/commands/results-merge.d.ts.map +1 -1
  10. package/dist/cli/commands/results-merge.js +9 -2
  11. package/dist/cli/commands/results-merge.js.map +1 -1
  12. package/dist/cli/commands/results-sanitize.d.ts +24 -0
  13. package/dist/cli/commands/results-sanitize.d.ts.map +1 -0
  14. package/dist/cli/commands/results-sanitize.js +126 -0
  15. package/dist/cli/commands/results-sanitize.js.map +1 -0
  16. package/dist/cli/commands/script-check.d.ts.map +1 -1
  17. package/dist/cli/commands/script-check.js +3 -1
  18. package/dist/cli/commands/script-check.js.map +1 -1
  19. package/dist/cli/commands/update.d.ts.map +1 -1
  20. package/dist/cli/commands/update.js +3 -0
  21. package/dist/cli/commands/update.js.map +1 -1
  22. package/dist/exporters/api-testcase-formatter.d.ts +3 -6
  23. package/dist/exporters/api-testcase-formatter.d.ts.map +1 -1
  24. package/dist/exporters/api-testcase-formatter.js +7 -10
  25. package/dist/exporters/api-testcase-formatter.js.map +1 -1
  26. package/dist/exporters/matrix/build.d.ts.map +1 -1
  27. package/dist/exporters/matrix/build.js +4 -2
  28. package/dist/exporters/matrix/build.js.map +1 -1
  29. package/dist/exporters/matrix/render-coverage-sheet.d.ts.map +1 -1
  30. package/dist/exporters/matrix/render-coverage-sheet.js +3 -1
  31. package/dist/exporters/matrix/render-coverage-sheet.js.map +1 -1
  32. package/dist/exporters/matrix/render-csv.d.ts.map +1 -1
  33. package/dist/exporters/matrix/render-csv.js +3 -1
  34. package/dist/exporters/matrix/render-csv.js.map +1 -1
  35. package/dist/exporters/matrix/render-overview-sheet.d.ts.map +1 -1
  36. package/dist/exporters/matrix/render-overview-sheet.js +5 -9
  37. package/dist/exporters/matrix/render-overview-sheet.js.map +1 -1
  38. package/dist/exporters/matrix/result-totals.d.ts +23 -0
  39. package/dist/exporters/matrix/result-totals.d.ts.map +1 -0
  40. package/dist/exporters/matrix/result-totals.js +21 -0
  41. package/dist/exporters/matrix/result-totals.js.map +1 -0
  42. package/dist/exporters/matrix/testcase-summary-band.d.ts.map +1 -1
  43. package/dist/exporters/matrix/testcase-summary-band.js +2 -6
  44. package/dist/exporters/matrix/testcase-summary-band.js.map +1 -1
  45. package/dist/exporters/qa-env-secret-denylist.js +2 -2
  46. package/dist/exporters/qa-env-secret-denylist.js.map +1 -1
  47. package/dist/exporters/report-path-sanitizer.d.ts +38 -0
  48. package/dist/exporters/report-path-sanitizer.d.ts.map +1 -0
  49. package/dist/exporters/report-path-sanitizer.js +137 -0
  50. package/dist/exporters/report-path-sanitizer.js.map +1 -0
  51. package/dist/exporters/result-variants.d.ts.map +1 -1
  52. package/dist/exporters/result-variants.js +2 -1
  53. package/dist/exporters/result-variants.js.map +1 -1
  54. package/dist/exporters/sensitive-key.d.ts +31 -0
  55. package/dist/exporters/sensitive-key.d.ts.map +1 -0
  56. package/dist/exporters/sensitive-key.js +50 -0
  57. package/dist/exporters/sensitive-key.js.map +1 -0
  58. package/dist/exporters/test-data-resolver.d.ts +4 -1
  59. package/dist/exporters/test-data-resolver.d.ts.map +1 -1
  60. package/dist/exporters/test-data-resolver.js +12 -2
  61. package/dist/exporters/test-data-resolver.js.map +1 -1
  62. package/dist/generators/gherkin-parser/index.d.ts +3 -0
  63. package/dist/generators/gherkin-parser/index.d.ts.map +1 -1
  64. package/dist/generators/gherkin-parser/index.js +17 -9
  65. package/dist/generators/gherkin-parser/index.js.map +1 -1
  66. package/dist/generators/gherkin-parser/parent-scope-clause.d.ts +54 -0
  67. package/dist/generators/gherkin-parser/parent-scope-clause.d.ts.map +1 -0
  68. package/dist/generators/gherkin-parser/parent-scope-clause.js +109 -0
  69. package/dist/generators/gherkin-parser/parent-scope-clause.js.map +1 -0
  70. package/dist/generators/test-generator/adapters/adapter-interface.d.ts +23 -18
  71. package/dist/generators/test-generator/adapters/adapter-interface.d.ts.map +1 -1
  72. package/dist/generators/test-generator/adapters/appium/appium-adapter.d.ts +4 -19
  73. package/dist/generators/test-generator/adapters/appium/appium-adapter.d.ts.map +1 -1
  74. package/dist/generators/test-generator/adapters/appium/appium-adapter.js.map +1 -1
  75. package/dist/generators/test-generator/adapters/appium/templates/after-all.hbs +18 -0
  76. package/dist/generators/test-generator/adapters/appium/templates/after-each.hbs +18 -0
  77. package/dist/generators/test-generator/adapters/appium/templates/before-all.hbs +18 -0
  78. package/dist/generators/test-generator/adapters/appium/templates/steps/actions/click-at-position-action.hbs +1 -0
  79. package/dist/generators/test-generator/adapters/appium/templates/steps/actions/click-element-with-text.hbs +1 -1
  80. package/dist/generators/test-generator/adapters/appium/templates/steps/actions/double-click-action.hbs +7 -0
  81. package/dist/generators/test-generator/adapters/appium/templates/steps/actions/frame-enter-action.hbs +3 -6
  82. package/dist/generators/test-generator/adapters/appium/templates/steps/actions/table-paginate-action.hbs +3 -0
  83. package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/visible-assertion.hbs +1 -1
  84. package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/long-press-action.hbs +4 -0
  85. package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/pinch-zoom-action.hbs +4 -0
  86. package/dist/generators/test-generator/adapters/appium/templates/steps/partials/locator.hbs +9 -1
  87. package/dist/generators/test-generator/adapters/appium/templates/test-file.hbs +54 -23
  88. package/dist/generators/test-generator/adapters/index.d.ts +1 -1
  89. package/dist/generators/test-generator/adapters/index.d.ts.map +1 -1
  90. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.d.ts +4 -19
  91. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.d.ts.map +1 -1
  92. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.js.map +1 -1
  93. package/dist/generators/test-generator/adapters/playwright/templates/after-all.hbs +19 -1
  94. package/dist/generators/test-generator/adapters/playwright/templates/after-each.hbs +18 -0
  95. package/dist/generators/test-generator/adapters/playwright/templates/before-all.hbs +19 -1
  96. package/dist/generators/test-generator/adapters/playwright/templates/imports.hbs +3 -0
  97. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/check-action.hbs +6 -1
  98. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/click-at-position-action.hbs +23 -0
  99. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/expand-action.hbs +8 -8
  100. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/fill-editor-action.hbs +7 -2
  101. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/table-action-in-row-nth.hbs +3 -1
  102. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/table-action-in-row.hbs +3 -1
  103. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/table-paginate-action.hbs +5 -0
  104. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/uncheck-action.hbs +3 -1
  105. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/unknown-element-action.hbs +1 -1
  106. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/wait-for-page.hbs +18 -1
  107. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/all-contain-assertion.hbs +32 -4
  108. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/all-contain-element.hbs +5 -2
  109. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/checked-assertion.hbs +5 -1
  110. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/column-cell-assertion.hbs +13 -2
  111. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/contain-text-assertion.hbs +1 -1
  112. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-role-variable-assertion.hbs +2 -2
  113. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-variable-assertion.hbs +1 -1
  114. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/have-text-assertion.hbs +1 -1
  115. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-role-variable-assertion.hbs +2 -2
  116. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-variable-assertion.hbs +1 -1
  117. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/not-checked-assertion.hbs +2 -1
  118. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/selected-assertion.hbs +14 -3
  119. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/state-with-filter-assertion.hbs +13 -2
  120. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-role-variable-assertion.hbs +3 -3
  121. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +1 -1
  122. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-variable-assertion.hbs +1 -1
  123. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/checked-opts.hbs +8 -0
  124. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/locator-nth.hbs +1 -1
  125. package/dist/generators/test-generator/adapters/playwright/templates/test-file.hbs +10 -8
  126. package/dist/generators/test-generator/code-generator.d.ts +37 -0
  127. package/dist/generators/test-generator/code-generator.d.ts.map +1 -1
  128. package/dist/generators/test-generator/code-generator.js +160 -39
  129. package/dist/generators/test-generator/code-generator.js.map +1 -1
  130. package/dist/generators/test-generator/diagnostics.d.ts +79 -5
  131. package/dist/generators/test-generator/diagnostics.d.ts.map +1 -1
  132. package/dist/generators/test-generator/diagnostics.js +78 -4
  133. package/dist/generators/test-generator/diagnostics.js.map +1 -1
  134. package/dist/generators/test-generator/patterns/index.d.ts +24 -5
  135. package/dist/generators/test-generator/patterns/index.d.ts.map +1 -1
  136. package/dist/generators/test-generator/patterns/index.js +92 -14
  137. package/dist/generators/test-generator/patterns/index.js.map +1 -1
  138. package/dist/generators/test-generator/patterns/with-parent-scope.d.ts +18 -0
  139. package/dist/generators/test-generator/patterns/with-parent-scope.d.ts.map +1 -0
  140. package/dist/generators/test-generator/patterns/with-parent-scope.js +40 -0
  141. package/dist/generators/test-generator/patterns/with-parent-scope.js.map +1 -0
  142. package/dist/generators/test-generator/step-mapper.d.ts +63 -9
  143. package/dist/generators/test-generator/step-mapper.d.ts.map +1 -1
  144. package/dist/generators/test-generator/step-mapper.js +166 -28
  145. package/dist/generators/test-generator/step-mapper.js.map +1 -1
  146. package/dist/generators/test-generator/template-engine.d.ts +4 -19
  147. package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
  148. package/dist/generators/test-generator/template-engine.js +17 -12
  149. package/dist/generators/test-generator/template-engine.js.map +1 -1
  150. package/dist/generators/test-generator/utils/data-resolver.d.ts +7 -0
  151. package/dist/generators/test-generator/utils/data-resolver.d.ts.map +1 -1
  152. package/dist/generators/test-generator/utils/data-resolver.js +19 -2
  153. package/dist/generators/test-generator/utils/data-resolver.js.map +1 -1
  154. package/dist/generators/test-generator/utils/dialog-scope-identity.d.ts +41 -0
  155. package/dist/generators/test-generator/utils/dialog-scope-identity.d.ts.map +1 -0
  156. package/dist/generators/test-generator/utils/dialog-scope-identity.js +61 -0
  157. package/dist/generators/test-generator/utils/dialog-scope-identity.js.map +1 -0
  158. package/dist/generators/test-generator/utils/escape-js-string.d.ts +17 -0
  159. package/dist/generators/test-generator/utils/escape-js-string.d.ts.map +1 -0
  160. package/dist/generators/test-generator/utils/escape-js-string.js +29 -0
  161. package/dist/generators/test-generator/utils/escape-js-string.js.map +1 -0
  162. package/dist/generators/test-generator/utils/nearest-match.d.ts +24 -0
  163. package/dist/generators/test-generator/utils/nearest-match.d.ts.map +1 -0
  164. package/dist/generators/test-generator/utils/nearest-match.js +56 -0
  165. package/dist/generators/test-generator/utils/nearest-match.js.map +1 -0
  166. package/dist/generators/test-generator/utils/selector-entry-fields.d.ts +58 -0
  167. package/dist/generators/test-generator/utils/selector-entry-fields.d.ts.map +1 -0
  168. package/dist/generators/test-generator/utils/selector-entry-fields.js +119 -0
  169. package/dist/generators/test-generator/utils/selector-entry-fields.js.map +1 -0
  170. package/dist/generators/test-generator/utils/selector-entry-walk.d.ts +25 -0
  171. package/dist/generators/test-generator/utils/selector-entry-walk.d.ts.map +1 -0
  172. package/dist/generators/test-generator/utils/selector-entry-walk.js +54 -0
  173. package/dist/generators/test-generator/utils/selector-entry-walk.js.map +1 -0
  174. package/dist/generators/test-generator/utils/selector-nth-validation.d.ts +59 -0
  175. package/dist/generators/test-generator/utils/selector-nth-validation.d.ts.map +1 -0
  176. package/dist/generators/test-generator/utils/selector-nth-validation.js +91 -0
  177. package/dist/generators/test-generator/utils/selector-nth-validation.js.map +1 -0
  178. package/dist/generators/test-generator/utils/selector-resolver.d.ts +30 -1
  179. package/dist/generators/test-generator/utils/selector-resolver.d.ts.map +1 -1
  180. package/dist/generators/test-generator/utils/selector-resolver.js +195 -15
  181. package/dist/generators/test-generator/utils/selector-resolver.js.map +1 -1
  182. package/dist/generators/test-generator/utils/selector-type-validation.d.ts +51 -0
  183. package/dist/generators/test-generator/utils/selector-type-validation.d.ts.map +1 -0
  184. package/dist/generators/test-generator/utils/selector-type-validation.js +77 -0
  185. package/dist/generators/test-generator/utils/selector-type-validation.js.map +1 -0
  186. package/dist/harness/data-driven-lint.d.ts.map +1 -1
  187. package/dist/harness/data-driven-lint.js +217 -33
  188. package/dist/harness/data-driven-lint.js.map +1 -1
  189. package/dist/harness/script-check.d.ts +2 -2
  190. package/dist/harness/script-check.d.ts.map +1 -1
  191. package/dist/harness/script-check.js +186 -25
  192. package/dist/harness/script-check.js.map +1 -1
  193. package/dist/index.d.ts +2 -0
  194. package/dist/index.d.ts.map +1 -1
  195. package/dist/index.js +10 -1
  196. package/dist/index.js.map +1 -1
  197. package/dist/orchestrator/project-initializer.d.ts +6 -0
  198. package/dist/orchestrator/project-initializer.d.ts.map +1 -1
  199. package/dist/orchestrator/project-initializer.js +16 -0
  200. package/dist/orchestrator/project-initializer.js.map +1 -1
  201. package/dist/orchestrator/report-sanitize-reporter-install.d.ts +24 -0
  202. package/dist/orchestrator/report-sanitize-reporter-install.d.ts.map +1 -0
  203. package/dist/orchestrator/report-sanitize-reporter-install.js +161 -0
  204. package/dist/orchestrator/report-sanitize-reporter-install.js.map +1 -0
  205. package/dist/orchestrator/templates/ai-src/commands/run-test.md +9 -1
  206. package/dist/orchestrator/templates/ai-src/skills/sungen-api-coverage-model/SKILL.md +10 -0
  207. package/dist/orchestrator/templates/ai-src/skills/sungen-error-mapping/SKILL.md +14 -2
  208. package/dist/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +108 -8
  209. package/dist/orchestrator/templates/ai-src/skills/sungen-selector-fix/SKILL.md +1 -0
  210. package/dist/orchestrator/templates/ai-src/skills/sungen-selector-keys/SKILL.md +9 -2
  211. package/dist/orchestrator/templates/ai-src/skills/sungen-tc-review/SKILL.md +4 -4
  212. package/dist/orchestrator/templates/playwright.config.ts +7 -0
  213. package/dist/orchestrator/templates/specs-checked-state.d.ts +83 -0
  214. package/dist/orchestrator/templates/specs-checked-state.d.ts.map +1 -0
  215. package/dist/orchestrator/templates/specs-checked-state.js +261 -0
  216. package/dist/orchestrator/templates/specs-checked-state.js.map +1 -0
  217. package/dist/orchestrator/templates/specs-checked-state.ts +324 -0
  218. package/dist/orchestrator/templates/specs-report-path-sanitize-reporter.d.ts +36 -0
  219. package/dist/orchestrator/templates/specs-report-path-sanitize-reporter.d.ts.map +1 -0
  220. package/dist/orchestrator/templates/specs-report-path-sanitize-reporter.js +155 -0
  221. package/dist/orchestrator/templates/specs-report-path-sanitize-reporter.js.map +1 -0
  222. package/dist/orchestrator/templates/specs-report-path-sanitize-reporter.ts +142 -0
  223. package/dist/orchestrator/templates/specs-url-assert.d.ts +50 -25
  224. package/dist/orchestrator/templates/specs-url-assert.d.ts.map +1 -1
  225. package/dist/orchestrator/templates/specs-url-assert.js +65 -24
  226. package/dist/orchestrator/templates/specs-url-assert.js.map +1 -1
  227. package/dist/orchestrator/templates/specs-url-assert.ts +101 -28
  228. package/dist/utils/selector-types.d.ts +43 -1
  229. package/dist/utils/selector-types.d.ts.map +1 -1
  230. package/dist/utils/selector-types.js +51 -7
  231. package/dist/utils/selector-types.js.map +1 -1
  232. package/package.json +3 -3
  233. package/src/cli/commands/delivery.ts +2 -1
  234. package/src/cli/commands/generate.ts +5 -2
  235. package/src/cli/commands/inspect.ts +1 -1
  236. package/src/cli/commands/results-merge.ts +9 -2
  237. package/src/cli/commands/results-sanitize.ts +98 -0
  238. package/src/cli/commands/script-check.ts +3 -1
  239. package/src/cli/commands/update.ts +3 -0
  240. package/src/exporters/api-testcase-formatter.ts +5 -7
  241. package/src/exporters/matrix/build.ts +4 -2
  242. package/src/exporters/matrix/render-coverage-sheet.ts +3 -1
  243. package/src/exporters/matrix/render-csv.ts +3 -1
  244. package/src/exporters/matrix/render-overview-sheet.ts +5 -10
  245. package/src/exporters/matrix/result-totals.ts +37 -0
  246. package/src/exporters/matrix/testcase-summary-band.ts +2 -7
  247. package/src/exporters/qa-env-secret-denylist.ts +1 -1
  248. package/src/exporters/report-path-sanitizer.ts +144 -0
  249. package/src/exporters/result-variants.ts +2 -1
  250. package/src/exporters/sensitive-key.ts +48 -0
  251. package/src/exporters/test-data-resolver.ts +12 -2
  252. package/src/generators/gherkin-parser/index.ts +21 -10
  253. package/src/generators/gherkin-parser/parent-scope-clause.ts +130 -0
  254. package/src/generators/test-generator/adapters/adapter-interface.ts +25 -3
  255. package/src/generators/test-generator/adapters/appium/appium-adapter.ts +4 -4
  256. package/src/generators/test-generator/adapters/appium/templates/after-all.hbs +18 -0
  257. package/src/generators/test-generator/adapters/appium/templates/after-each.hbs +18 -0
  258. package/src/generators/test-generator/adapters/appium/templates/before-all.hbs +18 -0
  259. package/src/generators/test-generator/adapters/appium/templates/steps/actions/click-at-position-action.hbs +1 -0
  260. package/src/generators/test-generator/adapters/appium/templates/steps/actions/click-element-with-text.hbs +1 -1
  261. package/src/generators/test-generator/adapters/appium/templates/steps/actions/double-click-action.hbs +7 -0
  262. package/src/generators/test-generator/adapters/appium/templates/steps/actions/frame-enter-action.hbs +3 -6
  263. package/src/generators/test-generator/adapters/appium/templates/steps/actions/table-paginate-action.hbs +3 -0
  264. package/src/generators/test-generator/adapters/appium/templates/steps/assertions/visible-assertion.hbs +1 -1
  265. package/src/generators/test-generator/adapters/appium/templates/steps/gestures/long-press-action.hbs +4 -0
  266. package/src/generators/test-generator/adapters/appium/templates/steps/gestures/pinch-zoom-action.hbs +4 -0
  267. package/src/generators/test-generator/adapters/appium/templates/steps/partials/locator.hbs +9 -1
  268. package/src/generators/test-generator/adapters/appium/templates/test-file.hbs +54 -23
  269. package/src/generators/test-generator/adapters/index.ts +1 -1
  270. package/src/generators/test-generator/adapters/playwright/playwright-adapter.ts +4 -4
  271. package/src/generators/test-generator/adapters/playwright/templates/after-all.hbs +19 -1
  272. package/src/generators/test-generator/adapters/playwright/templates/after-each.hbs +18 -0
  273. package/src/generators/test-generator/adapters/playwright/templates/before-all.hbs +19 -1
  274. package/src/generators/test-generator/adapters/playwright/templates/imports.hbs +3 -0
  275. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/check-action.hbs +6 -1
  276. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/click-at-position-action.hbs +23 -0
  277. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/expand-action.hbs +8 -8
  278. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/fill-editor-action.hbs +7 -2
  279. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/table-action-in-row-nth.hbs +3 -1
  280. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/table-action-in-row.hbs +3 -1
  281. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/table-paginate-action.hbs +5 -0
  282. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/uncheck-action.hbs +3 -1
  283. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/unknown-element-action.hbs +1 -1
  284. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/wait-for-page.hbs +18 -1
  285. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/all-contain-assertion.hbs +32 -4
  286. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/all-contain-element.hbs +5 -2
  287. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/checked-assertion.hbs +5 -1
  288. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/column-cell-assertion.hbs +13 -2
  289. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/contain-text-assertion.hbs +1 -1
  290. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-role-variable-assertion.hbs +2 -2
  291. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/disabled-with-variable-assertion.hbs +1 -1
  292. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/have-text-assertion.hbs +1 -1
  293. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-role-variable-assertion.hbs +2 -2
  294. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-variable-assertion.hbs +1 -1
  295. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/not-checked-assertion.hbs +2 -1
  296. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/selected-assertion.hbs +14 -3
  297. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/state-with-filter-assertion.hbs +13 -2
  298. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-role-variable-assertion.hbs +3 -3
  299. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-value-assertion.hbs +1 -1
  300. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/visible-with-variable-assertion.hbs +1 -1
  301. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/checked-opts.hbs +8 -0
  302. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/locator-nth.hbs +1 -1
  303. package/src/generators/test-generator/adapters/playwright/templates/test-file.hbs +10 -8
  304. package/src/generators/test-generator/code-generator.ts +176 -45
  305. package/src/generators/test-generator/diagnostics.ts +79 -5
  306. package/src/generators/test-generator/patterns/index.ts +97 -16
  307. package/src/generators/test-generator/patterns/with-parent-scope.ts +41 -0
  308. package/src/generators/test-generator/step-mapper.ts +170 -26
  309. package/src/generators/test-generator/template-engine.ts +21 -21
  310. package/src/generators/test-generator/utils/data-resolver.ts +23 -2
  311. package/src/generators/test-generator/utils/dialog-scope-identity.ts +71 -0
  312. package/src/generators/test-generator/utils/escape-js-string.ts +24 -0
  313. package/src/generators/test-generator/utils/nearest-match.ts +55 -0
  314. package/src/generators/test-generator/utils/selector-entry-fields.ts +131 -0
  315. package/src/generators/test-generator/utils/selector-entry-walk.ts +58 -0
  316. package/src/generators/test-generator/utils/selector-nth-validation.ts +99 -0
  317. package/src/generators/test-generator/utils/selector-resolver.ts +245 -16
  318. package/src/generators/test-generator/utils/selector-type-validation.ts +87 -0
  319. package/src/harness/data-driven-lint.ts +192 -32
  320. package/src/harness/script-check.ts +186 -21
  321. package/src/index.ts +7 -0
  322. package/src/orchestrator/project-initializer.ts +17 -0
  323. package/src/orchestrator/report-sanitize-reporter-install.ts +109 -0
  324. package/src/orchestrator/templates/ai-src/commands/run-test.md +9 -1
  325. package/src/orchestrator/templates/ai-src/skills/sungen-api-coverage-model/SKILL.md +10 -0
  326. package/src/orchestrator/templates/ai-src/skills/sungen-error-mapping/SKILL.md +14 -2
  327. package/src/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +108 -8
  328. package/src/orchestrator/templates/ai-src/skills/sungen-selector-fix/SKILL.md +1 -0
  329. package/src/orchestrator/templates/ai-src/skills/sungen-selector-keys/SKILL.md +9 -2
  330. package/src/orchestrator/templates/ai-src/skills/sungen-tc-review/SKILL.md +4 -4
  331. package/src/orchestrator/templates/playwright.config.ts +7 -0
  332. package/src/orchestrator/templates/specs-checked-state.ts +324 -0
  333. package/src/orchestrator/templates/specs-report-path-sanitize-reporter.ts +142 -0
  334. package/src/orchestrator/templates/specs-url-assert.ts +101 -28
  335. package/src/utils/selector-types.ts +54 -5
@@ -11,6 +11,13 @@
11
11
  * SG-W002 — step parsed a {{dataRef}} value but the generated code never uses it
12
12
  * SG-W003 — `name` filter defaulted from the Gherkin reference on a name-from-content
13
13
  * role (status/alert/…) — such a filter can never match; opt out with `name: null`
14
+ * SG-W004 — a selectors.yaml entry declares a field no consumer reads, so writing it has no
15
+ * effect on the generated test. Reserved for this in the original diagnostics spec
16
+ * (`exact: true` with no construct it applies to) and implemented for the wider class
17
+ * by #712, where `pagination:` and `contenteditable:` were public, documented,
18
+ * plumbed — and read by nothing. The field partition lives in
19
+ * utils/selector-entry-fields.ts; a field added there without a named consumer is
20
+ * the bug this code exists to catch.
14
21
  * SG-W005 — qa/app.yaml problem (unknown key, unknown preset, unparseable)
15
22
  * SG-W006 — qa/app.<env>.yaml found (per-environment profiles are unsupported by design)
16
23
  * SG-W007 — browser-alert handler step written AFTER an action step: the listener
@@ -60,6 +67,23 @@
60
67
  * but the generated code is a BARE VISIBILITY check: the clause was swallowed by the
61
68
  * catch-all and the test would pass whatever the element says. Four separate defects
62
69
  * have arrived this way, so the step compiles to a runtime throw instead.
70
+ * SG-W017 — a step needs a selector-entry field the entry does not declare, so there is nothing
71
+ * honest to compile. Today: a table paginate step whose table declares no
72
+ * `pagination.next`/`.prev` (#712). The mirror of SG-W004 — that one reports a field
73
+ * written that nothing reads, this one a field a consumer needs that nobody wrote.
74
+ * Compiles the step to a loud runtime throw rather than guessing a locator, which is
75
+ * the #690 failure (a locator no page has, failing far from the cause).
76
+ * SG-W018 — a selectors.yaml entry declares an `nth:` the compiler cannot use (#720). `nth:` was
77
+ * the one entry field whose VALUE nothing checked: the key is known (SG-W004 quiet) and
78
+ * the `type:` is valid (SG-E027 quiet), so `nth: -1`, `nth: 'last'`, `nth: 1.5` and
79
+ * `nth: -2` all compiled clean — the web side dropped the filter entirely (identical to
80
+ * deleting the line, then a strict-mode violation naming the DOM) while the mobile side
81
+ * emitted `$$('~x')[-1]` / `[last]`, undefined-indexing and a bare identifier that even
82
+ * the SG-E022 parse check reads as valid JavaScript. The contract is an integer `>= -1`
83
+ * (`0..N` a zero-based index, `-1` the last match); anything else is normalised away
84
+ * before it reaches a template, and reported here so "ignored" is stated rather than
85
+ * discovered. A warning, on SG-W004's reasoning — the value is inert once dropped and
86
+ * `--strict` already turns the channel non-zero
63
87
  * SG-E020 — the step matched a pattern whose template the ACTIVE adapter does not ship. Before
64
88
  * the platform SPI this was an unhandled `Template not found` that killed the WHOLE
65
89
  * feature file and named neither the step nor the adapter. The step now compiles to a
@@ -112,6 +136,13 @@
112
136
  * RUN time, so the compiler cannot know — the matrix, not this code, is the net that
113
137
  * covers that case. Reported as an E-code and compiled to a loud throw, because the
114
138
  * feature has declared the one OS where the step is known not to work.
139
+ * SG-E026 — a click step names a POSITION (`at position "top-left"`, `at offset x=…, y=…`) that
140
+ * would not be honoured: the keyword is misspelt, a value is outside the grammar (not a
141
+ * number, negative, above 100%, a missing axis, an unknown preset), or another click form
142
+ * claimed the step first (`try to click`, a `with {{v}}` text filter, `… and accept [OK]
143
+ * alert`). Each of those would compile to a click on the element's CENTRE and pass — for a
144
+ * backdrop-dismiss overlay that is the one outcome that proves nothing — so the step
145
+ * compiles to a loud throw instead
115
146
  * SG-W026 — a mobile ACTIVE-NAVIGATION step that emitted NO executable code, so a promised screen
116
147
  * change never happens. `When User open [Settings] page` compiles to the one-line
117
148
  * `navigation` template — a comment noting the app was already launched by the wdio
@@ -138,6 +169,15 @@
138
169
  * Reported rather than resolved by precedence — two tests genuinely sharing one title
139
170
  * cannot be told apart by a name-keyed lookup, so the only honest fix is a rename. Silently
140
171
  * picking a winner would be the same silent-discard shape as SG-W021
172
+ * SG-E027 — a selectors.yaml entry declares a `type:` that is not a selector type at all. YAML is
173
+ * untyped at run time, so `type: 'testId'` (capital I), `'xpth'`, `'rol'` or any other
174
+ * misspelling used to compile clean and resolve through the strategy switch's
175
+ * `default:` branch as `getByPlaceholder('<the value>')` — a locator that cannot
176
+ * match, failing much later as a timeout naming placeholder text the author never
177
+ * wrote. Checked where the selector FILE is loaded rather than in the switch: `page`
178
+ * legitimately reaches that `default:` on every page assertion, and the load point can
179
+ * name the entry key and the nearest valid spelling. Reported once per entry, and
180
+ * every step naming that entry compiles to a `throw`
141
181
  * SG-E022 — the generated spec is not parseable JS/TS, so NOTHING in the file runs — Playwright
142
182
  * reports one SyntaxError and every scenario in the unit is lost. A compiler self-check
143
183
  * (@babel/parser) on the emitted code, added after a field report where the runtime-data
@@ -146,12 +186,46 @@
146
186
  * compiler, not the Gherkin: it should be impossible, and it is reported so a broken
147
187
  * build names itself at generate time instead of one step further downstream
148
188
  *
189
+ * SG-W028 — a step's trailing scope clause was DROPPED, so the step runs against more of the page
190
+ * than its sentence names. Two causes, one code: the `<word>` after `in [X]` is not a
191
+ * container type (a typo, or a leaf element used as a parent), or the by-content form
192
+ * `in [X] <type> with {{v}}` was written for the mobile adapter, which chains a parent
193
+ * element and has no content filter. Before this, both compiled clean and silently
194
+ * widened the assertion to the whole screen — the failure mode that only a diff of the
195
+ * generated spec against the Gherkin could reveal (#667)
196
+ * SG-W029 — a mobile (appium) feature compiled with NO usable app-package `Path:` — either the line
197
+ * is missing outright, or it holds a web-style route (`Path: /applied-jobs`) that the
198
+ * package guard rejects. Both used to be silent, and both cost the same two things: the
199
+ * per-scenario `beforeEach` was not emitted at all, so Background dropped to Mocha's
200
+ * `before()` (once per FILE, every scenario sharing one continuous app session — a tab
201
+ * switch or a scroll in one scenario stranding elements off-screen for every later one),
202
+ * and the `@reset:` tier ladder went with it, leaving the tag inert. The spec now always
203
+ * emits the reset machinery and resolves the app id from the session capability that
204
+ * wdio.conf sets, throwing a named error when nothing supplies one — so this is a
205
+ * warning about an under-declared feature file, not a broken build (#669)
206
+ * SG-W030 — a selectors.yaml `expanded.class`/`expanded.attribute` carries a character outside the
207
+ * accepted class/attribute-name set (whitespace, a quote, a backslash, `$`, `{`, `}`).
208
+ * The value is pasted into the generated spec (string literal, regex, classList argument),
209
+ * and selectors.yaml is often generated from the page under test, so it is refused and the
210
+ * field dropped — the step falls back to driving/asserting `aria-expanded`. Reported once
211
+ * per entry and field. A WARNING rather than a refusal because the fallback still tests
212
+ * something; the checked/selected signal has no fallback and is refused outright instead
213
+ *
214
+ * SG-E031 — a selectors.yaml `checked:`/`selected:` declaration the compiler refuses: the two
215
+ * spellings disagree, a class token or attribute name carries whitespace/a quote/a
216
+ * backslash, or one entry declares both a class and an attribute. Each is silent at run
217
+ * time — the matcher would never match and the step would time out blaming the
218
+ * component — so the declaration is refused rather than compiled. Unlike the expanded
219
+ * signal (SG-W030) it is not dropped-and-warned: with no signal the step is back on the
220
+ * failure the declaration exists to fix. Recorded here AND thrown, so a pattern that
221
+ * resolves selectors inside a `catch` cannot swallow it silently
149
222
  * Diagnostics never change the EXIT CODE by themselves; `sungen generate --strict` turns any
150
223
  * collected diagnostic into a non-zero exit. They are not all inert, though: SG-W001, SG-W011,
151
- * SG-E020, SG-E021, SG-W020, SG-E023 and SG-E024 additionally compile the offending step to a runtime
152
- * `throw`, because a step that reads as a check and silently checks nothing is worse than one that
153
- * fails loudly. (SG-E022 is the one exception to the "blame the Gherkin" rule and throws nothing: the
154
- * file is still written so the user keeps the artifact to inspect.)
224
+ * SG-E020, SG-E021, SG-W020, SG-E023, SG-E024, SG-E025, SG-E026 and SG-E027 additionally compile
225
+ * the offending step to a runtime `throw` — a step that reads as a check and silently checks
226
+ * nothing is worse than one that fails loudly — and SG-E031 refuses the file outright. (SG-E022 is
227
+ * the one exception to the "blame the Gherkin" rule and throws nothing: the file is still written
228
+ * so the user keeps the artifact to inspect.)
155
229
  * Generation always COMPLETES — the rest of the scenario and the rest of the file still compile.
156
230
  */
157
231
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/generators/test-generator/diagnostics.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0JG;;;AAWH,MAAa,oBAAoB;IAAjC;QACU,UAAK,GAAiB,EAAE,CAAC;IAuBnC,CAAC;IArBC,GAAG,CAAC,IAAoB,EAAE,OAAe,EAAE,UAA+C,EAAE;QAC1F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAGD,qDAAqD;IACrD,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxBD,oDAwBC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../src/generators/test-generator/diagnostics.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoOG;;;AAWH,MAAa,oBAAoB;IAAjC;QACU,UAAK,GAAiB,EAAE,CAAC;IAuBnC,CAAC;IArBC,GAAG,CAAC,IAAoB,EAAE,OAAe,EAAE,UAA+C,EAAE;QAC1F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAGD,qDAAqD;IACrD,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxBD,oDAwBC"}
@@ -116,14 +116,33 @@ export declare class PatternRegistry {
116
116
  */
117
117
  private static unsupportedTemplate;
118
118
  /**
119
- * Resolve parent scoping to a Playwright locator string.
120
- * Tries YAML lookup first, falls back to auto-infer from parentType.
119
+ * Resolve a step's `in [Parent] <type> [with <value>]` scope to a locator string, or `undefined`
120
+ * when the step carries no scope.
121
121
  *
122
- * Parent type → Playwright role:
123
- * table → 'table', list → 'list', section → 'region',
124
- * dialog → 'dialog', form → 'form'
122
+ * Tries YAML lookup first, falls back to auto-inferring a role from the container type with the
123
+ * reference as the accessible name. A reference written as `{{var}}` is resolved through
124
+ * test-data before it reaches that name — containers are routinely labelled with the text under
125
+ * test, and a literal `{{var}}` in the name matches nothing.
125
126
  */
126
127
  private static resolveParentLocator;
128
+ private static parentContainerLocator;
129
+ /**
130
+ * Narrow the container to the ONE whose content matches the step's parent value — the
131
+ * `with {{job_title}}` tail of `see [Tag] header with {{label}} in [Job Card] card with
132
+ * {{job_title}}`. Without it a list of identical cards leaves the assertion matching whichever
133
+ * one Playwright reaches first.
134
+ *
135
+ * Web-only, and refused rather than approximated elsewhere: the Appium partial chains a parent
136
+ * with `$()`, which has no content filter, so emitting one would be invalid code and pretending
137
+ * the scope applied would be the very silence this whole fix exists to end (SG-W028).
138
+ */
139
+ private static filterParentByValue;
140
+ /**
141
+ * Resolve a `{{var}}` written where literal text is expected, leaving anything else untouched.
142
+ * An unknown variable stays as written rather than throwing — the locator is then wrong in a way
143
+ * the author can read, which beats losing the whole step.
144
+ */
145
+ private static resolveInlineData;
127
146
  /**
128
147
  * Check if step matches a pattern matcher
129
148
  */
@@ -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,EAAyB,MAAM,SAAS,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM9D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AASpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAUD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqB;;IAMrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAK3C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;IAejD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAyE1E;;OAEG;IACH;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IA2B7B,OAAO,CAAC,MAAM,CAAC,YAAY;IAwB3B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAyBxB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAmBlC;;;;;;;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;AAID,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,EAAyB,MAAM,SAAS,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAQ9D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AASpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAUD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqB;;IAMrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAK3C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;IAejD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAwF1E;;OAEG;IACH;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IA2B7B,OAAO,CAAC,MAAM,CAAC,YAAY;IAwB3B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAyBxB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAmBlC;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAQnC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAsCrC;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAiBlC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAUhC;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAI5B;;OAEG;IACH,eAAe,IAAI,MAAM;CAG1B;AAID,cAAc,SAAS,CAAC"}
@@ -23,6 +23,8 @@ Object.defineProperty(exports, "maskRefsForMatching", { enumerable: true, get: f
23
23
  const unsupported_step_code_1 = require("./unsupported-step-code");
24
24
  Object.defineProperty(exports, "unsupportedStepCode", { enumerable: true, get: function () { return unsupported_step_code_1.unsupportedStepCode; } });
25
25
  const os_support_1 = require("../adapters/appium/os-support");
26
+ const with_parent_scope_1 = require("./with-parent-scope");
27
+ const escape_js_string_1 = require("../utils/escape-js-string");
26
28
  /**
27
29
  * Gesture forms that OWN the word "tap" — each has its own pattern keyed on it (`mobile-double-tap`
28
30
  * at priority 17, `tap-top-of-element` at 18) and means MORE than a click. They are the one
@@ -138,6 +140,10 @@ class PatternRegistry {
138
140
  // Matching mirrors findPattern exactly: refs masked FIRST (so `[Tap Water]` is not a
139
141
  // verb), then `tap` → `click` normalisation for the mobile vocabulary.
140
142
  const matchStep = { ...step, text: normalizeVerbs((0, mask_refs_for_matching_1.maskRefsForMatching)(step.text)) };
143
+ // The step's parent scope, resolved ONCE for the whole search. Not per candidate pattern: a
144
+ // resolver may decline and hand the step to the next one, and re-resolving here would report
145
+ // the mobile by-content refusal (SG-W028) once per attempt instead of once per step.
146
+ const parentScope = PatternRegistry.resolveParentLocator(step, context);
141
147
  for (const pattern of this.patterns) {
142
148
  if (!this.matchesPattern(matchStep, pattern.matcher))
143
149
  continue;
@@ -147,10 +153,19 @@ class PatternRegistry {
147
153
  const platformMiss = PatternRegistry.platformMiss(pattern, context, step);
148
154
  if (platformMiss)
149
155
  return platformMiss;
156
+ // Shared by BOTH code paths below. The injection used to live inside the resolver branch, so
157
+ // a `generator` pattern discarded a perfectly parsed scope: `see [Tag] header with {{label}}
158
+ // in [Job Card] section` routes to `see-with-variable` (a generator) and asserted against the
159
+ // whole page (#667). Scope that is parsed and then dropped widens the step just as silently
160
+ // as scope that never parsed at all.
161
+ // `table-*` patterns opt out by name — they resolve the container from the step text
162
+ // themselves and would otherwise scope it twice.
163
+ const parentLocator = pattern.name.startsWith('table-') ? undefined : parentScope;
164
+ const scoped = parentLocator ? (0, with_parent_scope_1.withParentScope)(context, parentLocator) : context;
150
165
  try {
151
166
  // Prefer resolver (framework-agnostic) over generator (legacy)
152
167
  if (pattern.resolver) {
153
- const resolved = pattern.resolver(step, context);
168
+ const resolved = pattern.resolver(step, scoped);
154
169
  if (!resolved)
155
170
  continue; // resolver declined — fall through
156
171
  // iOS gate — AFTER the resolver, because it needs the template the step actually reached.
@@ -170,14 +185,16 @@ class PatternRegistry {
170
185
  if (resolverStateMiss)
171
186
  return resolverStateMiss;
172
187
  // Auto-inject parent scoping if step has parentRef
173
- // Skip for table-* patterns — they resolve the table name internally from step text
174
- if (step.parentRef && step.parentType && !pattern.name.startsWith('table-')) {
175
- resolved.data.parentLocator = PatternRegistry.resolveParentLocator(step.parentRef, step.parentType, context);
176
- }
188
+ if (parentLocator)
189
+ resolved.data.parentLocator = parentLocator;
177
190
  const code = context.templateEngine.renderStep(resolved.templateName, resolved.data);
191
+ // The compiler's post-map guards need to know WHICH form won and what it resolved to (e.g.
192
+ // a refusal a resolver recorded in its data) — without re-matching.
178
193
  return {
179
194
  code,
180
195
  comment: resolved.comment,
196
+ pattern: pattern.name,
197
+ templateData: resolved.data,
181
198
  };
182
199
  }
183
200
  if (pattern.generator) {
@@ -185,7 +202,9 @@ class PatternRegistry {
185
202
  const generatorStateMiss = PatternRegistry.stateMiss(pattern, context, step);
186
203
  if (generatorStateMiss)
187
204
  return generatorStateMiss;
188
- return pattern.generator(step, context);
205
+ // A generator returning nothing still falls through to the no-pattern path.
206
+ const generated = pattern.generator(step, scoped);
207
+ return generated ? { ...generated, pattern: pattern.name } : null;
189
208
  }
190
209
  return null;
191
210
  }
@@ -327,14 +346,22 @@ class PatternRegistry {
327
346
  };
328
347
  }
329
348
  /**
330
- * Resolve parent scoping to a Playwright locator string.
331
- * Tries YAML lookup first, falls back to auto-infer from parentType.
349
+ * Resolve a step's `in [Parent] <type> [with <value>]` scope to a locator string, or `undefined`
350
+ * when the step carries no scope.
332
351
  *
333
- * Parent type → Playwright role:
334
- * table → 'table', list → 'list', section → 'region',
335
- * dialog → 'dialog', form → 'form'
352
+ * Tries YAML lookup first, falls back to auto-inferring a role from the container type with the
353
+ * reference as the accessible name. A reference written as `{{var}}` is resolved through
354
+ * test-data before it reaches that name — containers are routinely labelled with the text under
355
+ * test, and a literal `{{var}}` in the name matches nothing.
336
356
  */
337
- static resolveParentLocator(parentRef, parentType, context) {
357
+ static resolveParentLocator(step, context) {
358
+ const { parentRef, parentType } = step;
359
+ if (!parentRef || !parentType)
360
+ return undefined;
361
+ const base = PatternRegistry.parentContainerLocator(parentRef, parentType, context);
362
+ return PatternRegistry.filterParentByValue(base, step, context);
363
+ }
364
+ static parentContainerLocator(parentRef, parentType, context) {
338
365
  // Try resolving from selectors YAML
339
366
  try {
340
367
  const resolved = context.selectorResolver.resolveSelector(parentRef, context.featureName, parentType, 0);
@@ -346,13 +373,64 @@ class PatternRegistry {
346
373
  const roleMap = {
347
374
  table: 'table',
348
375
  list: 'list',
376
+ 'list-item': 'listitem',
377
+ listitem: 'listitem',
378
+ item: 'listitem',
379
+ row: 'row',
349
380
  section: 'region',
381
+ container: 'region',
382
+ panel: 'region',
383
+ card: 'region',
384
+ group: 'group',
350
385
  dialog: 'dialog',
386
+ modal: 'dialog',
387
+ drawer: 'dialog',
388
+ overlay: 'dialog',
351
389
  form: 'form',
390
+ tab: 'tabpanel',
391
+ menu: 'menu',
352
392
  };
353
393
  const role = roleMap[parentType] || parentType;
354
- const escapedName = parentRef.replace(/'/g, "\\'");
355
- return `page.getByRole('${role}', { name: '${escapedName}' })`;
394
+ const name = (0, escape_js_string_1.escapeSingleQuoted)(PatternRegistry.resolveInlineData(parentRef, context));
395
+ return `page.getByRole('${role}', { name: '${name}' })`;
396
+ }
397
+ /**
398
+ * Narrow the container to the ONE whose content matches the step's parent value — the
399
+ * `with {{job_title}}` tail of `see [Tag] header with {{label}} in [Job Card] card with
400
+ * {{job_title}}`. Without it a list of identical cards leaves the assertion matching whichever
401
+ * one Playwright reaches first.
402
+ *
403
+ * Web-only, and refused rather than approximated elsewhere: the Appium partial chains a parent
404
+ * with `$()`, which has no content filter, so emitting one would be invalid code and pretending
405
+ * the scope applied would be the very silence this whole fix exists to end (SG-W028).
406
+ */
407
+ static filterParentByValue(base, step, context) {
408
+ const raw = step.parentValueRef
409
+ ? PatternRegistry.resolveInlineData(`{{${step.parentValueRef}}}`, context)
410
+ : step.parentValueText;
411
+ if (raw === undefined)
412
+ return base;
413
+ if (context.platform === 'mobile') {
414
+ context.diagnostics?.add('SG-W028', `scoping a container BY CONTENT ("in [${step.parentRef}] ${step.parentType} with …") is web-only — the mobile adapter chains a parent element, which has no content filter, so this step would search every ${step.parentType} on the screen. Give the container an accessibility id that identifies it and scope by that instead, or assert on the element the value belongs to`, { feature: context.featureName, step: step.text });
415
+ return base;
416
+ }
417
+ return `${base}.filter({ hasText: '${(0, escape_js_string_1.escapeSingleQuoted)(raw)}' })`;
418
+ }
419
+ /**
420
+ * Resolve a `{{var}}` written where literal text is expected, leaving anything else untouched.
421
+ * An unknown variable stays as written rather than throwing — the locator is then wrong in a way
422
+ * the author can read, which beats losing the whole step.
423
+ */
424
+ static resolveInlineData(text, context) {
425
+ const match = text.match(/^\{\{([a-z0-9\-._]+)\}\}$/i);
426
+ if (!match)
427
+ return text;
428
+ try {
429
+ return context.dataResolver.resolveData(match[1], context.featureName);
430
+ }
431
+ catch {
432
+ return text;
433
+ }
356
434
  }
357
435
  /**
358
436
  * Check if step matches a pattern matcher
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { PatternContext } from './types';
2
+ /**
3
+ * Return a `PatternContext` in which every selector the pattern resolves comes back already scoped
4
+ * to `parentLocator`.
5
+ *
6
+ * Why a wrapped context rather than one assignment. A `resolver` pattern hands its template data
7
+ * back to the registry, which can stamp `parentLocator` on it; a `generator` pattern renders its own
8
+ * code and never exposes that object, so the registry had no seam and the scope was simply lost
9
+ * (#667). The seam both kinds share is where they ASK for a selector — `selectorResolver` and
10
+ * `renderLocator` — so the scope is attached there instead, and every locator partial (Playwright
11
+ * and Appium alike) already knows what to do with a `parentLocator` field.
12
+ *
13
+ * Only the target's own scope is stamped; anything a pattern resolves that ALREADY carries a
14
+ * `parentLocator` is left alone, so a pattern that builds its own container chain (table rows) keeps
15
+ * winning over the generic one.
16
+ */
17
+ export declare function withParentScope(context: PatternContext, parentLocator: string): PatternContext;
18
+ //# sourceMappingURL=with-parent-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-parent-scope.d.ts","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/with-parent-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,GAAG,cAAc,CAuB9F"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withParentScope = withParentScope;
4
+ /**
5
+ * Return a `PatternContext` in which every selector the pattern resolves comes back already scoped
6
+ * to `parentLocator`.
7
+ *
8
+ * Why a wrapped context rather than one assignment. A `resolver` pattern hands its template data
9
+ * back to the registry, which can stamp `parentLocator` on it; a `generator` pattern renders its own
10
+ * code and never exposes that object, so the registry had no seam and the scope was simply lost
11
+ * (#667). The seam both kinds share is where they ASK for a selector — `selectorResolver` and
12
+ * `renderLocator` — so the scope is attached there instead, and every locator partial (Playwright
13
+ * and Appium alike) already knows what to do with a `parentLocator` field.
14
+ *
15
+ * Only the target's own scope is stamped; anything a pattern resolves that ALREADY carries a
16
+ * `parentLocator` is left alone, so a pattern that builds its own container chain (table rows) keeps
17
+ * winning over the generic one.
18
+ */
19
+ function withParentScope(context, parentLocator) {
20
+ const scope = (resolved) => resolved && typeof resolved === 'object' && !resolved.parentLocator
21
+ ? { ...resolved, parentLocator }
22
+ : resolved;
23
+ // A Proxy rather than a copy: SelectorResolver carries more than the one method patterns call,
24
+ // and a hand-written stand-in would silently drop whatever it forgot.
25
+ const selectorResolver = new Proxy(context.selectorResolver, {
26
+ get(target, prop, receiver) {
27
+ if (prop === 'resolveSelector') {
28
+ return (...args) => scope(target.resolveSelector(...args));
29
+ }
30
+ const value = Reflect.get(target, prop, receiver);
31
+ return typeof value === 'function' ? value.bind(target) : value;
32
+ },
33
+ });
34
+ return {
35
+ ...context,
36
+ selectorResolver,
37
+ renderLocator: (resolved) => context.renderLocator(scope(resolved)),
38
+ };
39
+ }
40
+ //# sourceMappingURL=with-parent-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-parent-scope.js","sourceRoot":"","sources":["../../../../src/generators/test-generator/patterns/with-parent-scope.ts"],"names":[],"mappings":";;AAiBA,0CAuBC;AAtCD;;;;;;;;;;;;;;GAcG;AACH,SAAgB,eAAe,CAAC,OAAuB,EAAE,aAAqB;IAC5E,MAAM,KAAK,GAAG,CAAI,QAAW,EAAK,EAAE,CAClC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAE,QAAgB,CAAC,aAAa;QAC1E,CAAC,CAAC,EAAE,GAAI,QAAgB,EAAE,aAAa,EAAE;QACzC,CAAC,CAAC,QAAQ,CAAC;IAEf,+FAA+F;IAC/F,sEAAsE;IACtE,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE;QAC3D,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,KAAK,CAAE,MAAc,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,OAAO;QACV,gBAAgB;QAChB,aAAa,EAAE,CAAC,QAAa,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KACzE,CAAC;AACJ,CAAC"}
@@ -4,6 +4,8 @@ export interface MappedStep {
4
4
  code: string;
5
5
  comment?: string;
6
6
  imports?: string[];
7
+ pattern?: string;
8
+ templateData?: Record<string, any>;
7
9
  }
8
10
  /**
9
11
  * StepMapper - Orchestrates step-to-code conversion using pattern registry
@@ -81,6 +83,13 @@ export declare class StepMapper {
81
83
  * only at runtime in the dataset rows. Scenario-scoped (cleared by setScenarioContext).
82
84
  */
83
85
  registerCaptured(name: string): void;
86
+ /**
87
+ * Register the head of a variable bound by the feature's `@beforeAll` hook. Feature-scoped: it
88
+ * survives setScenarioContext() so every scenario can read `{{head.*}}` as a runtime get().
89
+ */
90
+ registerFeatureCaptured(head: string): void;
91
+ /** Drop feature-scoped captured vars — call once per feature, before its hooks and scenarios map. */
92
+ clearFeatureCaptured(): void;
84
93
  /**
85
94
  * Map a Gherkin step to Playwright code
86
95
  * Uses pattern registry first, falls back to AI if enabled
@@ -102,18 +111,25 @@ export declare class StepMapper {
102
111
  */
103
112
  private renderDialogRoot;
104
113
  /**
105
- * SG-W013 — a page assertion whose path came from a fallback rather than from a `type: page`
106
- * selector entry. Both resolvers degrade quietly when `[Ref]` does not resolve: `see [X] page`
107
- * falls back to the feature's own path, `is on [X] page` to `/<ref>/`. Before the assertion was
108
- * anchored that produced a test which always PASSED; anchored, it produces one that can never
109
- * pass. Neither is the assertion the author wrote, and nothing said so.
114
+ * The selectors.yaml entry behind a dialog reference, normalized the way the `locator` partial
115
+ * needs it. Shared by `renderDialogRoot` (which turns it into the root expression) and the
116
+ * scope-entry path (which keys off it to recognize the root again later — issue #692).
117
+ */
118
+ private resolveDialogEntry;
119
+ /**
120
+ * SG-W013 — a page STEP whose path came from a fallback rather than from a `type: page`
121
+ * selector entry. Every resolver degrades quietly when `[Ref]` does not resolve: `see [X] page`
122
+ * and `wait for [X] page` fall back to the feature's own path, `is on [X] page` to `/<ref>/`.
123
+ * Before the match was anchored that produced a test which always PASSED; anchored, it produces
124
+ * one that can never pass — an assertion that always fails, or, since #677 anchored the wait
125
+ * too, a wait that can only time out. None is the step the author wrote, and nothing said so.
110
126
  *
111
- * Detected here rather than in the resolver on purpose: `MappedStep` carries only
112
- * `{code, comment, imports}`, and the resolvers live in the driver packages while the collector
113
- * lives in core. Re-asking the SAME resolver the step-mapper already owns costs three lines and
127
+ * Detected here rather than in the resolver on purpose: the resolvers live in the driver packages
128
+ * while the collector lives in core (the mapped step now also names its pattern and carries the
129
+ * resolver's data, but the fallback itself is only visible by re-resolving the selector). Re-asking the SAME resolver the step-mapper already owns costs three lines and
114
130
  * duplicates no logic — the alternative is widening the adapter contract for every driver.
115
131
  */
116
- private checkPageAssertionFallback;
132
+ private checkPageStepFallback;
117
133
  /**
118
134
  * SG-W014 — `[X] page with {{v}}` where the value carries neither a query nor a fragment, so the
119
135
  * query half of the assertion has nothing to check and the step asserts the PATH only.
@@ -148,7 +164,35 @@ export declare class StepMapper {
148
164
  * Deliberately narrow — it fires only on the bare-visibility shape, so a pattern that genuinely
149
165
  * consumed the clause (`is-hidden`, `contains`, `matches-format`, the state family) is untouched.
150
166
  */
167
+ /**
168
+ * SG-E027 (#711) — the step names an entry whose `type:` is not a selector type, so the resolver
169
+ * fell to its placeholder default and this step compiled to `getByPlaceholder('<the value>')`:
170
+ * a locator that cannot match, which would fail much later as a timeout naming placeholder text
171
+ * the author never wrote. Compile it to a `throw` instead — the same reasoning as SG-E023 above,
172
+ * that a step which reads as a check and can only ever fail obscurely is worse than one that
173
+ * fails loudly and says why.
174
+ *
175
+ * The DIAGNOSTIC is not added here. `SelectorResolver.loadNewSelectorFile` already reported this
176
+ * entry once for the whole file; re-reporting per step would print the same line twenty times for
177
+ * one typo. This method only replaces the code, so the compile-time message and the runtime
178
+ * failure stay one fact reported once.
179
+ *
180
+ * A resolve throw means the key is missing entirely — a different defect that the resolver's own
181
+ * error already owns — and an auto-inferred selector stamps no `selectorType`, so both skip.
182
+ */
183
+ private checkUnknownSelectorType;
151
184
  private checkAssertionClauseSwallowed;
185
+ /**
186
+ * A click step that names a POSITION (`at position "top-left"`, `at offset x=…, y=…`) must compile
187
+ * through the positioned-click form with a position it understood. Anything else — a typo in the
188
+ * keyword, a value the grammar rejects, or a combination another click form claims first (`try to
189
+ * click … at position`, `… at offset … and accept [OK] alert`, `… with {{v}} … at position`) —
190
+ * would otherwise click the element's CENTRE and pass, which for a backdrop-dismiss test is the
191
+ * one outcome that proves nothing. Owned by the compiler rather than the driver so it holds no
192
+ * matter which pattern wins.
193
+ */
194
+ private static readonly CLICK_POSITION_HINT;
195
+ private checkClickPositionDropped;
152
196
  private checkDataRefConsumed;
153
197
  /**
154
198
  * Generate column assertion scoped to the current row.
@@ -243,6 +287,16 @@ export declare class StepMapper {
243
287
  * the `see` form: the `is on` twin is mobile's app-launch directive, whose empty output is right.
244
288
  */
245
289
  private checkPageAssertionNoOpOnMobile;
290
+ /**
291
+ * SG-W028 — a trailing `in [X] <word>` scope clause whose `<word>` is not a container type.
292
+ *
293
+ * The clause is dropped, and everything downstream takes the FIRST `[ref]` and the FIRST
294
+ * `{{data}}` it finds, so the sentence compiles clean while the assertion silently widens to the
295
+ * whole screen (#667). Unlike an unrecognized STEP, which at least raises SG-W001, a partially
296
+ * understood step used to say nothing at all — and a check that runs against more than it names
297
+ * passes for the wrong reason in exactly the list-of-identical-cards case it was written for.
298
+ */
299
+ private warnScopeClauseDiscarded;
246
300
  /**
247
301
  * SG-W021 — dialog scope is a no-op on the Appium adapter.
248
302
  *
@@ -1 +1 @@
1
- {"version":3,"file":"step-mapper.d.ts","sourceRoot":"","sources":["../../../src/generators/test-generator/step-mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"step-mapper.d.ts","sourceRoot":"","sources":["../../../src/generators/test-generator/step-mapper.ts"],"names":[],"mappings":"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"}