@sun-asterisk/sungen 3.2.24 → 3.2.26

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 (345) hide show
  1. package/dist/capabilities/context-router.d.ts.map +1 -1
  2. package/dist/capabilities/context-router.js +15 -7
  3. package/dist/capabilities/context-router.js.map +1 -1
  4. package/dist/cli/commands/audit.d.ts.map +1 -1
  5. package/dist/cli/commands/audit.js +23 -4
  6. package/dist/cli/commands/audit.js.map +1 -1
  7. package/dist/cli/commands/capability.d.ts.map +1 -1
  8. package/dist/cli/commands/capability.js +6 -48
  9. package/dist/cli/commands/capability.js.map +1 -1
  10. package/dist/cli/commands/changed.d.ts +14 -0
  11. package/dist/cli/commands/changed.d.ts.map +1 -0
  12. package/dist/cli/commands/changed.js +128 -0
  13. package/dist/cli/commands/changed.js.map +1 -0
  14. package/dist/cli/commands/delivery.d.ts.map +1 -1
  15. package/dist/cli/commands/delivery.js +25 -1
  16. package/dist/cli/commands/delivery.js.map +1 -1
  17. package/dist/cli/commands/generate.js +1 -1
  18. package/dist/cli/commands/generate.js.map +1 -1
  19. package/dist/cli/commands/results-merge.d.ts +19 -0
  20. package/dist/cli/commands/results-merge.d.ts.map +1 -0
  21. package/dist/cli/commands/results-merge.js +191 -0
  22. package/dist/cli/commands/results-merge.js.map +1 -0
  23. package/dist/cli/commands/update.d.ts.map +1 -1
  24. package/dist/cli/commands/update.js +100 -12
  25. package/dist/cli/commands/update.js.map +1 -1
  26. package/dist/cli/index.js +4 -0
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/exporters/api-catalog-loader.d.ts.map +1 -1
  29. package/dist/exporters/api-catalog-loader.js +10 -3
  30. package/dist/exporters/api-catalog-loader.js.map +1 -1
  31. package/dist/exporters/api-testcase-formatter.d.ts +9 -0
  32. package/dist/exporters/api-testcase-formatter.d.ts.map +1 -1
  33. package/dist/exporters/api-testcase-formatter.js +55 -3
  34. package/dist/exporters/api-testcase-formatter.js.map +1 -1
  35. package/dist/exporters/csv-exporter.d.ts.map +1 -1
  36. package/dist/exporters/csv-exporter.js +10 -1
  37. package/dist/exporters/csv-exporter.js.map +1 -1
  38. package/dist/exporters/json-exporter.d.ts.map +1 -1
  39. package/dist/exporters/json-exporter.js +6 -1
  40. package/dist/exporters/json-exporter.js.map +1 -1
  41. package/dist/exporters/matrix/build.d.ts.map +1 -1
  42. package/dist/exporters/matrix/build.js +14 -1
  43. package/dist/exporters/matrix/build.js.map +1 -1
  44. package/dist/exporters/matrix/export.js +1 -1
  45. package/dist/exporters/matrix/export.js.map +1 -1
  46. package/dist/exporters/matrix/map-loader.d.ts.map +1 -1
  47. package/dist/exporters/matrix/map-loader.js +5 -0
  48. package/dist/exporters/matrix/map-loader.js.map +1 -1
  49. package/dist/exporters/matrix/render-csv.d.ts.map +1 -1
  50. package/dist/exporters/matrix/render-csv.js +5 -1
  51. package/dist/exporters/matrix/render-csv.js.map +1 -1
  52. package/dist/exporters/matrix/render-xlsx.d.ts.map +1 -1
  53. package/dist/exporters/matrix/render-xlsx.js +4 -1
  54. package/dist/exporters/matrix/render-xlsx.js.map +1 -1
  55. package/dist/exporters/matrix/types.d.ts +18 -0
  56. package/dist/exporters/matrix/types.d.ts.map +1 -1
  57. package/dist/exporters/matrix/types.js.map +1 -1
  58. package/dist/exporters/playwright-report-parser.d.ts +17 -2
  59. package/dist/exporters/playwright-report-parser.d.ts.map +1 -1
  60. package/dist/exporters/playwright-report-parser.js +68 -8
  61. package/dist/exporters/playwright-report-parser.js.map +1 -1
  62. package/dist/exporters/results-merge.d.ts +46 -0
  63. package/dist/exporters/results-merge.d.ts.map +1 -0
  64. package/dist/exporters/results-merge.js +148 -0
  65. package/dist/exporters/results-merge.js.map +1 -0
  66. package/dist/exporters/selector-key-resolver.d.ts +4 -0
  67. package/dist/exporters/selector-key-resolver.d.ts.map +1 -1
  68. package/dist/exporters/selector-key-resolver.js +101 -1
  69. package/dist/exporters/selector-key-resolver.js.map +1 -1
  70. package/dist/exporters/types.d.ts +8 -1
  71. package/dist/exporters/types.d.ts.map +1 -1
  72. package/dist/exporters/xlsx-report-builder.d.ts.map +1 -1
  73. package/dist/exporters/xlsx-report-builder.js +5 -4
  74. package/dist/exporters/xlsx-report-builder.js.map +1 -1
  75. package/dist/generators/gherkin-parser/index.d.ts +2 -0
  76. package/dist/generators/gherkin-parser/index.d.ts.map +1 -1
  77. package/dist/generators/gherkin-parser/index.js +52 -1
  78. package/dist/generators/gherkin-parser/index.js.map +1 -1
  79. package/dist/generators/test-generator/adapters/adapter-interface.d.ts +20 -10
  80. package/dist/generators/test-generator/adapters/adapter-interface.d.ts.map +1 -1
  81. package/dist/generators/test-generator/adapters/appium/appium-adapter.d.ts +2 -11
  82. package/dist/generators/test-generator/adapters/appium/appium-adapter.d.ts.map +1 -1
  83. package/dist/generators/test-generator/adapters/appium/appium-adapter.js.map +1 -1
  84. package/dist/generators/test-generator/adapters/appium/templates/imports.hbs +3 -0
  85. package/dist/generators/test-generator/adapters/appium/templates/steps/actions/date-picker-unsupported.hbs +4 -0
  86. package/dist/generators/test-generator/adapters/appium/templates/steps/actions/lifecycle-missing-app-id.hbs +5 -0
  87. package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/matches-format-assertion.hbs +15 -0
  88. package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/visible-filtered-assertion.hbs +5 -2
  89. package/dist/generators/test-generator/adapters/appium/templates/test-file.hbs +185 -26
  90. package/dist/generators/test-generator/adapters/playwright/playwright-adapter.d.ts +2 -11
  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/imports.hbs +3 -0
  94. package/dist/generators/test-generator/adapters/playwright/templates/steps/actions/select-action.hbs +17 -1
  95. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/attribute-assertion.hbs +6 -1
  96. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/have-value-assertion.hbs +18 -1
  97. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-filter-assertion.hbs +5 -1
  98. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/matches-format-assertion.hbs +5 -0
  99. package/dist/generators/test-generator/adapters/playwright/templates/steps/assertions/state-with-filter-assertion.hbs +4 -2
  100. package/dist/generators/test-generator/adapters/playwright/templates/steps/navigation/wait-for-element-with-text.hbs +4 -1
  101. package/dist/generators/test-generator/adapters/playwright/templates/steps/partials/recipe-expect-text.hbs +1 -1
  102. package/dist/generators/test-generator/code-generator.d.ts +6 -0
  103. package/dist/generators/test-generator/code-generator.d.ts.map +1 -1
  104. package/dist/generators/test-generator/code-generator.js +80 -7
  105. package/dist/generators/test-generator/code-generator.js.map +1 -1
  106. package/dist/generators/test-generator/diagnostics.d.ts +60 -6
  107. package/dist/generators/test-generator/diagnostics.d.ts.map +1 -1
  108. package/dist/generators/test-generator/diagnostics.js +59 -5
  109. package/dist/generators/test-generator/diagnostics.js.map +1 -1
  110. package/dist/generators/test-generator/patterns/expect-patterns.d.ts +7 -0
  111. package/dist/generators/test-generator/patterns/expect-patterns.d.ts.map +1 -1
  112. package/dist/generators/test-generator/patterns/expect-patterns.js +36 -2
  113. package/dist/generators/test-generator/patterns/expect-patterns.js.map +1 -1
  114. package/dist/generators/test-generator/patterns/index.d.ts +19 -12
  115. package/dist/generators/test-generator/patterns/index.d.ts.map +1 -1
  116. package/dist/generators/test-generator/patterns/index.js +58 -38
  117. package/dist/generators/test-generator/patterns/index.js.map +1 -1
  118. package/dist/generators/test-generator/patterns/types.d.ts +23 -0
  119. package/dist/generators/test-generator/patterns/types.d.ts.map +1 -1
  120. package/dist/generators/test-generator/patterns/unsupported-step-code.d.ts +18 -0
  121. package/dist/generators/test-generator/patterns/unsupported-step-code.d.ts.map +1 -0
  122. package/dist/generators/test-generator/patterns/unsupported-step-code.js +23 -0
  123. package/dist/generators/test-generator/patterns/unsupported-step-code.js.map +1 -0
  124. package/dist/generators/test-generator/recipe-expander.js +9 -1
  125. package/dist/generators/test-generator/recipe-expander.js.map +1 -1
  126. package/dist/generators/test-generator/reset-tier.d.ts +68 -0
  127. package/dist/generators/test-generator/reset-tier.d.ts.map +1 -0
  128. package/dist/generators/test-generator/reset-tier.js +94 -0
  129. package/dist/generators/test-generator/reset-tier.js.map +1 -0
  130. package/dist/generators/test-generator/step-mapper.d.ts +39 -0
  131. package/dist/generators/test-generator/step-mapper.d.ts.map +1 -1
  132. package/dist/generators/test-generator/step-mapper.js +144 -5
  133. package/dist/generators/test-generator/step-mapper.js.map +1 -1
  134. package/dist/generators/test-generator/template-engine.d.ts +2 -10
  135. package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
  136. package/dist/generators/test-generator/template-engine.js +16 -2
  137. package/dist/generators/test-generator/template-engine.js.map +1 -1
  138. package/dist/generators/test-generator/utils/format-pattern.d.ts +35 -0
  139. package/dist/generators/test-generator/utils/format-pattern.d.ts.map +1 -0
  140. package/dist/generators/test-generator/utils/format-pattern.js +82 -0
  141. package/dist/generators/test-generator/utils/format-pattern.js.map +1 -0
  142. package/dist/generators/test-generator/utils/js-literal-scanner.d.ts +42 -0
  143. package/dist/generators/test-generator/utils/js-literal-scanner.d.ts.map +1 -0
  144. package/dist/generators/test-generator/utils/js-literal-scanner.js +142 -0
  145. package/dist/generators/test-generator/utils/js-literal-scanner.js.map +1 -0
  146. package/dist/generators/test-generator/utils/mask-refs-for-matching.d.ts +18 -0
  147. package/dist/generators/test-generator/utils/mask-refs-for-matching.d.ts.map +1 -0
  148. package/dist/generators/test-generator/utils/mask-refs-for-matching.js +25 -0
  149. package/dist/generators/test-generator/utils/mask-refs-for-matching.js.map +1 -0
  150. package/dist/generators/test-generator/utils/runtime-data-transformer.d.ts +9 -1
  151. package/dist/generators/test-generator/utils/runtime-data-transformer.d.ts.map +1 -1
  152. package/dist/generators/test-generator/utils/runtime-data-transformer.js +124 -63
  153. package/dist/generators/test-generator/utils/runtime-data-transformer.js.map +1 -1
  154. package/dist/generators/test-generator/utils/selector-resolver.d.ts.map +1 -1
  155. package/dist/generators/test-generator/utils/selector-resolver.js +20 -1
  156. package/dist/generators/test-generator/utils/selector-resolver.js.map +1 -1
  157. package/dist/generators/test-generator/utils/spec-syntax-check.d.ts +14 -0
  158. package/dist/generators/test-generator/utils/spec-syntax-check.d.ts.map +1 -0
  159. package/dist/generators/test-generator/utils/spec-syntax-check.js +26 -0
  160. package/dist/generators/test-generator/utils/spec-syntax-check.js.map +1 -0
  161. package/dist/harness/annotation-overrides.d.ts +0 -12
  162. package/dist/harness/annotation-overrides.d.ts.map +1 -1
  163. package/dist/harness/annotation-overrides.js +9 -5
  164. package/dist/harness/annotation-overrides.js.map +1 -1
  165. package/dist/harness/audit.d.ts +7 -0
  166. package/dist/harness/audit.d.ts.map +1 -1
  167. package/dist/harness/audit.js +78 -10
  168. package/dist/harness/audit.js.map +1 -1
  169. package/dist/harness/capability-plan.d.ts +2 -1
  170. package/dist/harness/capability-plan.d.ts.map +1 -1
  171. package/dist/harness/capability-plan.js +8 -3
  172. package/dist/harness/capability-plan.js.map +1 -1
  173. package/dist/harness/capability.d.ts +11 -0
  174. package/dist/harness/capability.d.ts.map +1 -1
  175. package/dist/harness/capability.js +8 -0
  176. package/dist/harness/capability.js.map +1 -1
  177. package/dist/harness/catalog/drivers.yaml +5 -0
  178. package/dist/harness/flow-contract.d.ts +18 -1
  179. package/dist/harness/flow-contract.d.ts.map +1 -1
  180. package/dist/harness/flow-contract.js +72 -9
  181. package/dist/harness/flow-contract.js.map +1 -1
  182. package/dist/harness/parse.d.ts.map +1 -1
  183. package/dist/harness/parse.js +5 -1
  184. package/dist/harness/parse.js.map +1 -1
  185. package/dist/harness/quality-gates.d.ts +12 -1
  186. package/dist/harness/quality-gates.d.ts.map +1 -1
  187. package/dist/harness/quality-gates.js +62 -7
  188. package/dist/harness/quality-gates.js.map +1 -1
  189. package/dist/harness/run-manifest.d.ts +58 -0
  190. package/dist/harness/run-manifest.d.ts.map +1 -0
  191. package/dist/harness/run-manifest.js +264 -0
  192. package/dist/harness/run-manifest.js.map +1 -0
  193. package/dist/harness/spec-branches.d.ts +88 -0
  194. package/dist/harness/spec-branches.d.ts.map +1 -0
  195. package/dist/harness/spec-branches.js +280 -0
  196. package/dist/harness/spec-branches.js.map +1 -0
  197. package/dist/harness/spec-coverage.d.ts +1 -1
  198. package/dist/harness/spec-coverage.js +4 -4
  199. package/dist/harness/spec-coverage.js.map +1 -1
  200. package/dist/harness/viewpoint-baseline.d.ts +9 -0
  201. package/dist/harness/viewpoint-baseline.d.ts.map +1 -1
  202. package/dist/harness/viewpoint-baseline.js +33 -3
  203. package/dist/harness/viewpoint-baseline.js.map +1 -1
  204. package/dist/harness/viewpoint-ledger.d.ts +1 -1
  205. package/dist/harness/viewpoint-ledger.d.ts.map +1 -1
  206. package/dist/harness/viewpoint-ledger.js +88 -9
  207. package/dist/harness/viewpoint-ledger.js.map +1 -1
  208. package/dist/index.d.ts +1 -0
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +5 -1
  211. package/dist/index.js.map +1 -1
  212. package/dist/orchestrator/lockstep-version.d.ts +22 -0
  213. package/dist/orchestrator/lockstep-version.d.ts.map +1 -0
  214. package/dist/orchestrator/lockstep-version.js +58 -0
  215. package/dist/orchestrator/lockstep-version.js.map +1 -0
  216. package/dist/orchestrator/project-deps-sync.d.ts +39 -0
  217. package/dist/orchestrator/project-deps-sync.d.ts.map +1 -0
  218. package/dist/orchestrator/project-deps-sync.js +175 -0
  219. package/dist/orchestrator/project-deps-sync.js.map +1 -0
  220. package/dist/orchestrator/project-initializer.d.ts.map +1 -1
  221. package/dist/orchestrator/project-initializer.js +5 -2
  222. package/dist/orchestrator/project-initializer.js.map +1 -1
  223. package/dist/orchestrator/templates/ai-src/commands/add-flow.md +16 -0
  224. package/dist/orchestrator/templates/ai-src/commands/create-test.md +9 -0
  225. package/dist/orchestrator/templates/ai-src/commands/delivery.md +9 -2
  226. package/dist/orchestrator/templates/ai-src/commands/run-test.md +109 -0
  227. package/dist/orchestrator/templates/ai-src/config/claude.md +1 -1
  228. package/dist/orchestrator/templates/ai-src/config/copilot.md +1 -1
  229. package/dist/orchestrator/templates/ai-src/skills/sungen-api-design/SKILL.md +49 -0
  230. package/dist/orchestrator/templates/ai-src/skills/sungen-error-mapping/SKILL.md +14 -3
  231. package/dist/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +110 -6
  232. package/dist/orchestrator/templates/ai-src/skills/sungen-locale/SKILL.md +1 -1
  233. package/dist/orchestrator/templates/ai-src/skills/sungen-mobile-gestures/SKILL.md +8 -0
  234. package/dist/orchestrator/templates/ai-src/skills/sungen-selector-fix/SKILL.md +1 -1
  235. package/dist/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +40 -1
  236. package/dist/orchestrator/templates/ai-src/skills/sungen-tc-review/SKILL.md +15 -0
  237. package/dist/orchestrator/templates/env.appium.example +10 -0
  238. package/dist/orchestrator/templates/specs-api.d.ts +4 -2
  239. package/dist/orchestrator/templates/specs-api.d.ts.map +1 -1
  240. package/dist/orchestrator/templates/specs-api.js +233 -10
  241. package/dist/orchestrator/templates/specs-api.js.map +1 -1
  242. package/dist/orchestrator/templates/specs-api.ts +214 -11
  243. package/dist/orchestrator/templates/specs-regex-escape.d.ts +13 -0
  244. package/dist/orchestrator/templates/specs-regex-escape.d.ts.map +1 -0
  245. package/dist/orchestrator/templates/specs-regex-escape.js +19 -0
  246. package/dist/orchestrator/templates/specs-regex-escape.js.map +1 -0
  247. package/dist/orchestrator/templates/specs-regex-escape.ts +16 -0
  248. package/dist/orchestrator/templates/specs-test-data.ts +53 -6
  249. package/dist/orchestrator/templates/wdio.conf.ts +28 -9
  250. package/package.json +8 -6
  251. package/src/capabilities/context-router.ts +13 -5
  252. package/src/cli/commands/audit.ts +22 -3
  253. package/src/cli/commands/capability.ts +4 -38
  254. package/src/cli/commands/changed.ts +104 -0
  255. package/src/cli/commands/delivery.ts +27 -2
  256. package/src/cli/commands/generate.ts +1 -1
  257. package/src/cli/commands/results-merge.ts +153 -0
  258. package/src/cli/commands/update.ts +72 -13
  259. package/src/cli/index.ts +4 -0
  260. package/src/exporters/api-catalog-loader.ts +10 -2
  261. package/src/exporters/api-testcase-formatter.ts +59 -3
  262. package/src/exporters/csv-exporter.ts +11 -2
  263. package/src/exporters/json-exporter.ts +7 -2
  264. package/src/exporters/matrix/build.ts +13 -1
  265. package/src/exporters/matrix/export.ts +1 -1
  266. package/src/exporters/matrix/map-loader.ts +5 -0
  267. package/src/exporters/matrix/render-csv.ts +5 -1
  268. package/src/exporters/matrix/render-xlsx.ts +4 -1
  269. package/src/exporters/matrix/types.ts +18 -0
  270. package/src/exporters/playwright-report-parser.ts +68 -9
  271. package/src/exporters/results-merge.ts +150 -0
  272. package/src/exporters/selector-key-resolver.ts +81 -1
  273. package/src/exporters/types.ts +8 -1
  274. package/src/exporters/xlsx-report-builder.ts +5 -4
  275. package/src/generators/gherkin-parser/index.ts +55 -1
  276. package/src/generators/test-generator/adapters/adapter-interface.ts +23 -1
  277. package/src/generators/test-generator/adapters/appium/appium-adapter.ts +2 -2
  278. package/src/generators/test-generator/adapters/appium/templates/imports.hbs +3 -0
  279. package/src/generators/test-generator/adapters/appium/templates/steps/actions/date-picker-unsupported.hbs +4 -0
  280. package/src/generators/test-generator/adapters/appium/templates/steps/actions/lifecycle-missing-app-id.hbs +5 -0
  281. package/src/generators/test-generator/adapters/appium/templates/steps/assertions/matches-format-assertion.hbs +15 -0
  282. package/src/generators/test-generator/adapters/appium/templates/steps/assertions/visible-filtered-assertion.hbs +5 -2
  283. package/src/generators/test-generator/adapters/appium/templates/test-file.hbs +185 -26
  284. package/src/generators/test-generator/adapters/playwright/playwright-adapter.ts +2 -2
  285. package/src/generators/test-generator/adapters/playwright/templates/imports.hbs +3 -0
  286. package/src/generators/test-generator/adapters/playwright/templates/steps/actions/select-action.hbs +17 -1
  287. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/attribute-assertion.hbs +6 -1
  288. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/have-value-assertion.hbs +18 -1
  289. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/hidden-with-filter-assertion.hbs +5 -1
  290. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/matches-format-assertion.hbs +5 -0
  291. package/src/generators/test-generator/adapters/playwright/templates/steps/assertions/state-with-filter-assertion.hbs +4 -2
  292. package/src/generators/test-generator/adapters/playwright/templates/steps/navigation/wait-for-element-with-text.hbs +4 -1
  293. package/src/generators/test-generator/adapters/playwright/templates/steps/partials/recipe-expect-text.hbs +1 -1
  294. package/src/generators/test-generator/code-generator.ts +86 -7
  295. package/src/generators/test-generator/diagnostics.ts +60 -6
  296. package/src/generators/test-generator/patterns/expect-patterns.ts +37 -2
  297. package/src/generators/test-generator/patterns/index.ts +58 -33
  298. package/src/generators/test-generator/patterns/types.ts +36 -0
  299. package/src/generators/test-generator/patterns/unsupported-step-code.ts +19 -0
  300. package/src/generators/test-generator/recipe-expander.ts +9 -1
  301. package/src/generators/test-generator/reset-tier.ts +93 -0
  302. package/src/generators/test-generator/step-mapper.ts +149 -6
  303. package/src/generators/test-generator/template-engine.ts +18 -3
  304. package/src/generators/test-generator/utils/format-pattern.ts +79 -0
  305. package/src/generators/test-generator/utils/js-literal-scanner.ts +132 -0
  306. package/src/generators/test-generator/utils/mask-refs-for-matching.ts +21 -0
  307. package/src/generators/test-generator/utils/runtime-data-transformer.ts +126 -76
  308. package/src/generators/test-generator/utils/selector-resolver.ts +22 -1
  309. package/src/generators/test-generator/utils/spec-syntax-check.ts +22 -0
  310. package/src/harness/annotation-overrides.ts +10 -5
  311. package/src/harness/audit.ts +82 -12
  312. package/src/harness/capability-plan.ts +10 -5
  313. package/src/harness/capability.ts +16 -0
  314. package/src/harness/catalog/drivers.yaml +5 -0
  315. package/src/harness/flow-contract.ts +87 -9
  316. package/src/harness/parse.ts +5 -1
  317. package/src/harness/quality-gates.ts +64 -6
  318. package/src/harness/run-manifest.ts +254 -0
  319. package/src/harness/spec-branches.ts +346 -0
  320. package/src/harness/spec-coverage.ts +4 -4
  321. package/src/harness/viewpoint-baseline.ts +41 -6
  322. package/src/harness/viewpoint-ledger.ts +82 -9
  323. package/src/index.ts +1 -0
  324. package/src/orchestrator/lockstep-version.ts +46 -0
  325. package/src/orchestrator/project-deps-sync.ts +175 -0
  326. package/src/orchestrator/project-initializer.ts +5 -2
  327. package/src/orchestrator/templates/ai-src/commands/add-flow.md +16 -0
  328. package/src/orchestrator/templates/ai-src/commands/create-test.md +9 -0
  329. package/src/orchestrator/templates/ai-src/commands/delivery.md +9 -2
  330. package/src/orchestrator/templates/ai-src/commands/run-test.md +109 -0
  331. package/src/orchestrator/templates/ai-src/config/claude.md +1 -1
  332. package/src/orchestrator/templates/ai-src/config/copilot.md +1 -1
  333. package/src/orchestrator/templates/ai-src/skills/sungen-api-design/SKILL.md +49 -0
  334. package/src/orchestrator/templates/ai-src/skills/sungen-error-mapping/SKILL.md +14 -3
  335. package/src/orchestrator/templates/ai-src/skills/sungen-gherkin-syntax/SKILL.md +110 -6
  336. package/src/orchestrator/templates/ai-src/skills/sungen-locale/SKILL.md +1 -1
  337. package/src/orchestrator/templates/ai-src/skills/sungen-mobile-gestures/SKILL.md +8 -0
  338. package/src/orchestrator/templates/ai-src/skills/sungen-selector-fix/SKILL.md +1 -1
  339. package/src/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +40 -1
  340. package/src/orchestrator/templates/ai-src/skills/sungen-tc-review/SKILL.md +15 -0
  341. package/src/orchestrator/templates/env.appium.example +10 -0
  342. package/src/orchestrator/templates/specs-api.ts +214 -11
  343. package/src/orchestrator/templates/specs-regex-escape.ts +16 -0
  344. package/src/orchestrator/templates/specs-test-data.ts +53 -6
  345. package/src/orchestrator/templates/wdio.conf.ts +28 -9
@@ -12,8 +12,11 @@ import { PlaywrightResult } from './types';
12
12
  * Candidate order (first existing wins):
13
13
  * 1. <genDir>/<featureBaseName>-test-result.<SUNGEN_ENV>.json (env runs)
14
14
  * 2. <genDir>/<featureBaseName>-test-result.json (per-feature reporter)
15
- * 3. <cwd>/test-results/results.<SUNGEN_ENV>.json
16
- * 4. <cwd>/test-results/results.json (playwright default)
15
+ * 3. <genDir>/<featureBaseName>-test-result.<os>[.<SUNGEN_ENV>].json — mobile per-OS
16
+ * reporter files (wdio writes one per capability; a mobile project has NO base file).
17
+ * MOBILE_PLATFORM picks the OS explicitly; otherwise android, then ios.
18
+ * 4. <cwd>/test-results/results.<SUNGEN_ENV>.json
19
+ * 5. <cwd>/test-results/results.json (playwright default)
17
20
  */
18
21
  export declare function resolveResultsPath(cwd: string, genDir: string, featureBaseName: string): string | null;
19
22
  /**
@@ -27,6 +30,12 @@ export declare function loadPlaywrightReport(reportPath: string): Map<string, Pl
27
30
  * Returns null if the file is missing/invalid or no projects are listed.
28
31
  */
29
32
  export declare function loadReportProjectName(reportPath: string): string | null;
33
+ /**
34
+ * If the full title starts with a file-path-looking suite title like
35
+ * "specs/generated/kudos/kudos.spec.ts > Feature Name > ...",
36
+ * strip that leading segment so matching works against "Feature Name > ...".
37
+ */
38
+ export declare function stripLeadingFilePathSuite(fullTitle: string): string;
30
39
  /**
31
40
  * CSV "Test Result" column mapping.
32
41
  */
@@ -59,4 +68,10 @@ export declare function parseExpectedReceived(raw: string): {
59
68
  * Plus the trace path.
60
69
  */
61
70
  export declare function formatNote(result: PlaywrightResult | undefined, expectedFallback?: string): string;
71
+ /**
72
+ * One-cell error rendering for the matrix deliverable: newlines collapsed and
73
+ * clipped to the same cap as Note fields. Replaces ad-hoc `slice(0, 200)` calls
74
+ * that could cut a joined multi-error message mid-assertion.
75
+ */
76
+ export declare function clipNoteField(s: string): string;
62
77
  //# sourceMappingURL=playwright-report-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playwright-report-parser.d.ts","sourceRoot":"","sources":["../../src/exporters/playwright-report-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWtG;AAqDD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAI,CA2C7F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASvE;AAwCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAc7E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUxE;AAQD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAM3F;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EAAE,gBAAgB,SAAK,GAAG,MAAM,CAyB9F"}
1
+ {"version":3,"file":"playwright-report-parser.d.ts","sourceRoot":"","sources":["../../src/exporters/playwright-report-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBtG;AAwDD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAmE7F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASvE;AA2BD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAc7E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAUxE;AAQD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAM3F;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EAAE,gBAAgB,SAAK,GAAG,MAAM,CAwC9F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C"}
@@ -39,10 +39,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.resolveResultsPath = resolveResultsPath;
40
40
  exports.loadPlaywrightReport = loadPlaywrightReport;
41
41
  exports.loadReportProjectName = loadReportProjectName;
42
+ exports.stripLeadingFilePathSuite = stripLeadingFilePathSuite;
42
43
  exports.statusToTestResult = statusToTestResult;
43
44
  exports.formatExecutedDate = formatExecutedDate;
44
45
  exports.parseExpectedReceived = parseExpectedReceived;
45
46
  exports.formatNote = formatNote;
47
+ exports.clipNoteField = clipNoteField;
46
48
  const fs = __importStar(require("fs"));
47
49
  const path = __importStar(require("path"));
48
50
  /**
@@ -55,8 +57,11 @@ const path = __importStar(require("path"));
55
57
  * Candidate order (first existing wins):
56
58
  * 1. <genDir>/<featureBaseName>-test-result.<SUNGEN_ENV>.json (env runs)
57
59
  * 2. <genDir>/<featureBaseName>-test-result.json (per-feature reporter)
58
- * 3. <cwd>/test-results/results.<SUNGEN_ENV>.json
59
- * 4. <cwd>/test-results/results.json (playwright default)
60
+ * 3. <genDir>/<featureBaseName>-test-result.<os>[.<SUNGEN_ENV>].json — mobile per-OS
61
+ * reporter files (wdio writes one per capability; a mobile project has NO base file).
62
+ * MOBILE_PLATFORM picks the OS explicitly; otherwise android, then ios.
63
+ * 4. <cwd>/test-results/results.<SUNGEN_ENV>.json
64
+ * 5. <cwd>/test-results/results.json (playwright default)
60
65
  */
61
66
  function resolveResultsPath(cwd, genDir, featureBaseName) {
62
67
  const env = process.env.SUNGEN_ENV;
@@ -64,6 +69,12 @@ function resolveResultsPath(cwd, genDir, featureBaseName) {
64
69
  if (env)
65
70
  candidates.push(path.join(genDir, `${featureBaseName}-test-result.${env}.json`));
66
71
  candidates.push(path.join(genDir, `${featureBaseName}-test-result.json`));
72
+ const mobileOs = (process.env.MOBILE_PLATFORM || '').toLowerCase();
73
+ for (const os of mobileOs === 'android' || mobileOs === 'ios' ? [mobileOs] : ['android', 'ios']) {
74
+ if (env)
75
+ candidates.push(path.join(genDir, `${featureBaseName}-test-result.${os}.${env}.json`));
76
+ candidates.push(path.join(genDir, `${featureBaseName}-test-result.${os}.json`));
77
+ }
67
78
  if (env)
68
79
  candidates.push(path.join(cwd, 'test-results', `results.${env}.json`));
69
80
  candidates.push(path.join(cwd, 'test-results', 'results.json'));
@@ -122,7 +133,31 @@ function loadPlaywrightReport(reportPath) {
122
133
  const results = test?.results || [];
123
134
  const res = results[results.length - 1];
124
135
  const status = normalizeStatus(res?.status);
125
- const errorMsg = stripAnsi(res?.error?.message || '');
136
+ // Collect EVERY failure message of the attempt, not just the first: a test
137
+ // timeout wraps the real assertion failure, so `error` alone holds only
138
+ // "Test timeout of 15000ms exceeded." while the Locator/Expected/Received
139
+ // detail QA needs sits in errors[1+]. Stack frames are stripped PER message
140
+ // before joining — otherwise the first message's stack swallows the rest
141
+ // when downstream consumers cut at the first "at " frame.
142
+ const rawMessages = (res?.errors?.length ? res.errors.map((e) => e.message) : [res?.error?.message])
143
+ .map((m) => stripAnsi(m || ''))
144
+ .filter(Boolean);
145
+ const distinct = [];
146
+ const seenKeys = new Set();
147
+ for (const m of rawMessages) {
148
+ const stripped = m.split(/\n\s*at\s/)[0].trim();
149
+ // Key ignores a leading `Error:` — "Error: page closed" and "page closed"
150
+ // are the same failure and must not render as two Note bullets.
151
+ const key = stripped.replace(/^Error:\s*/i, '');
152
+ if (!key || seenKeys.has(key))
153
+ continue;
154
+ seenKeys.add(key);
155
+ distinct.push(stripped);
156
+ }
157
+ // Single message: keep the legacy shape (stack intact) so every existing
158
+ // consumer renders byte-identical output. Multiple: join the stack-stripped
159
+ // distinct messages so none can hide behind another's stack.
160
+ const errorMsg = distinct.length > 1 ? distinct.join('\n') : stripAnsi(res?.error?.message || rawMessages[0] || '');
126
161
  const trace = res?.attachments?.find((a) => a.name === 'trace' || a.contentType === 'application/zip')?.path;
127
162
  // Strip the leading file-path suite title if present.
128
163
  // The top-level suite title is usually a file path like "specs/generated/kudos/kudos.spec.ts".
@@ -134,6 +169,7 @@ function loadPlaywrightReport(reportPath) {
134
169
  duration: typeof res?.duration === 'number' ? res.duration : undefined,
135
170
  startTime: res?.startTime,
136
171
  error: errorMsg,
172
+ errorMessages: distinct.length > 0 ? distinct : undefined,
137
173
  tracePath: trace,
138
174
  projectName: test?.projectName,
139
175
  });
@@ -269,11 +305,23 @@ function formatNote(result, expectedFallback = '') {
269
305
  return '';
270
306
  if (result.status !== 'failed' && result.status !== 'timedOut')
271
307
  return '';
272
- // Full assertion message with stack frames dropped (frames start with "at ") + a leading `Error:`
273
- // stripped. Keep newlines here so parseExpectedReceived can delimit the Expected/Received lines.
274
- const raw = (result.error || '').split(/\n\s*at\s/)[0].replace(/^Error:\s*/i, '').trim();
275
- const { expected, received } = parseExpectedReceived(raw);
276
- const actual = received || clip(raw); // received value, else the raw error
308
+ // Per-message: stack frames dropped (frames start with "at ") + a leading `Error:` stripped.
309
+ // Keep newlines inside each message so parseExpectedReceived can delimit Expected/Received.
310
+ const messages = (result.errorMessages?.length ? result.errorMessages : [result.error || ''])
311
+ .map((m) => m.split(/\n\s*at\s/)[0].replace(/^Error:\s*/i, '').trim())
312
+ .filter(Boolean);
313
+ // The message that carries the assertion detail drives Expected/Actual; the other
314
+ // messages (e.g. the "Test timeout of 15000ms exceeded." wrapper) must still be
315
+ // shown — a real assertion failure rendered as a bare timeout reads as flaky.
316
+ // Prefer a message carrying BOTH halves: a half-match (Expected in one message,
317
+ // Received in another) would otherwise put the wrong text in Actual. With
318
+ // expect.soft the first assertion drives the split and the later assertion
319
+ // messages render as `• Error:` bullets — content preserved, columns describe #1.
320
+ const halves = (m) => { const er = parseExpectedReceived(m); return (er.expected ? 1 : 0) + (er.received ? 1 : 0); };
321
+ const assertion = messages.find((m) => halves(m) === 2) ?? messages.find((m) => halves(m) >= 1) ?? messages[0] ?? '';
322
+ const wrappers = messages.filter((m) => m !== assertion);
323
+ const { expected, received } = parseExpectedReceived(assertion);
324
+ const actual = received || clip(assertion); // received value, else the raw error
277
325
  // Newline-separated bullets so each field lands on its own row when the cell wraps — matches the
278
326
  // Test Data column's `• key: value` formatting. Excel/CSV honour `\n` inside quoted cells; the
279
327
  // dashboard modal renders with whitespace-pre-wrap.
@@ -292,8 +340,20 @@ function formatNote(result, expectedFallback = '') {
292
340
  }
293
341
  if (actual)
294
342
  parts.push(`• Actual result: ${actual}`);
343
+ // Non-assertion companions of an assertion failure (timeout wrapper etc.), one
344
+ // clipped bullet each so no cell field can blow past the XLSX-safe cap.
345
+ for (const w of wrappers)
346
+ parts.push(`• Error: ${clip(w)}`);
295
347
  if (result.tracePath)
296
348
  parts.push(`• Trace: ${result.tracePath}`);
297
349
  return parts.join('\n');
298
350
  }
351
+ /**
352
+ * One-cell error rendering for the matrix deliverable: newlines collapsed and
353
+ * clipped to the same cap as Note fields. Replaces ad-hoc `slice(0, 200)` calls
354
+ * that could cut a joined multi-error message mid-assertion.
355
+ */
356
+ function clipNoteField(s) {
357
+ return clip(s);
358
+ }
299
359
  //# sourceMappingURL=playwright-report-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"playwright-report-parser.js","sourceRoot":"","sources":["../../src/exporters/playwright-report-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playwright-report-parser.js","sourceRoot":"","sources":["../../src/exporters/playwright-report-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Merge two Playwright JSON reports by FULL TEST TITLE — the fix for subset
3
+ * re-runs: Playwright's JSON reporter overwrites the per-target result file,
4
+ * so re-running the 3 failed cases of a 100-case screen used to throw away
5
+ * the 97 passing results (QA then re-ran everything, or asked an AI to merge
6
+ * by hand — non-deterministic).
7
+ *
8
+ * Semantics (deterministic):
9
+ * - same title in both → the NEW spec wins wholesale (its results, its
10
+ * attempts, its timing);
11
+ * - title only in base → kept as-is;
12
+ * - title only in new → appended (its suite structure preserved).
13
+ * Titles compare AFTER stripping the leading file-path suite segment, so a
14
+ * base and a new report generated from different cwd/suite paths still match.
15
+ * `@cases` rows carry a ` — <label>` title suffix and merge as independent
16
+ * entries — re-running one dataset row keeps the other rows.
17
+ *
18
+ * The merge never deletes: a base title missing from the current spec (a
19
+ * scenario renamed by a spec edit) is a GHOST the caller may WARN about, but
20
+ * pruning is not this function's job — the delivery builds rows from the
21
+ * feature, so ghosts never render; only the dead `stats` block would drift,
22
+ * and it is recomputed below.
23
+ *
24
+ * Everything outside suites/specs/tests is passed through untouched from the
25
+ * BASE report (config, metadata, unknown future fields) — tolerance over
26
+ * strictness, the shape belongs to Playwright.
27
+ */
28
+ export interface MergeOutcome {
29
+ merged: any;
30
+ replaced: string[];
31
+ added: string[];
32
+ kept: string[];
33
+ }
34
+ /**
35
+ * Merge `next` into a DEEP COPY of `base` (neither input is mutated).
36
+ * Throws on inputs that are not report-shaped objects.
37
+ */
38
+ export declare function mergeResultsReports(base: any, next: any): MergeOutcome;
39
+ /**
40
+ * Ghost detection for the WARN (never a prune): base-kept titles that no
41
+ * longer correspond to a CURRENT spec title. A `@cases` report title carries
42
+ * a ` — <label>` suffix while the spec title is the base form, so a ghost is
43
+ * a title that neither equals a spec title nor extends one with that suffix.
44
+ */
45
+ export declare function findGhostTitles(keptTitles: string[], specTitles: string[]): string[];
46
+ //# sourceMappingURL=results-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results-merge.d.ts","sourceRoot":"","sources":["../../src/exporters/results-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAuDD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,YAAY,CAqCtE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAGpF"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /**
3
+ * Merge two Playwright JSON reports by FULL TEST TITLE — the fix for subset
4
+ * re-runs: Playwright's JSON reporter overwrites the per-target result file,
5
+ * so re-running the 3 failed cases of a 100-case screen used to throw away
6
+ * the 97 passing results (QA then re-ran everything, or asked an AI to merge
7
+ * by hand — non-deterministic).
8
+ *
9
+ * Semantics (deterministic):
10
+ * - same title in both → the NEW spec wins wholesale (its results, its
11
+ * attempts, its timing);
12
+ * - title only in base → kept as-is;
13
+ * - title only in new → appended (its suite structure preserved).
14
+ * Titles compare AFTER stripping the leading file-path suite segment, so a
15
+ * base and a new report generated from different cwd/suite paths still match.
16
+ * `@cases` rows carry a ` — <label>` title suffix and merge as independent
17
+ * entries — re-running one dataset row keeps the other rows.
18
+ *
19
+ * The merge never deletes: a base title missing from the current spec (a
20
+ * scenario renamed by a spec edit) is a GHOST the caller may WARN about, but
21
+ * pruning is not this function's job — the delivery builds rows from the
22
+ * feature, so ghosts never render; only the dead `stats` block would drift,
23
+ * and it is recomputed below.
24
+ *
25
+ * Everything outside suites/specs/tests is passed through untouched from the
26
+ * BASE report (config, metadata, unknown future fields) — tolerance over
27
+ * strictness, the shape belongs to Playwright.
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.mergeResultsReports = mergeResultsReports;
31
+ exports.findGhostTitles = findGhostTitles;
32
+ const playwright_report_parser_1 = require("./playwright-report-parser");
33
+ /** Collect every spec node with its stripped full title and parent array. */
34
+ function collectSpecs(report) {
35
+ const out = [];
36
+ const walk = (suites, stack) => {
37
+ if (!Array.isArray(suites))
38
+ return;
39
+ for (const suite of suites) {
40
+ if (!suite || typeof suite !== 'object')
41
+ continue;
42
+ const nextStack = typeof suite.title === 'string' && suite.title ? [...stack, suite.title] : stack;
43
+ if (Array.isArray(suite.specs)) {
44
+ suite.specs.forEach((spec, index) => {
45
+ if (!spec || typeof spec.title !== 'string')
46
+ return;
47
+ const fullTitle = (0, playwright_report_parser_1.stripLeadingFilePathSuite)([...nextStack, spec.title].join(' > '));
48
+ out.push({ title: fullTitle, parent: suite.specs, index, node: spec });
49
+ });
50
+ }
51
+ walk(suite.suites, nextStack);
52
+ }
53
+ };
54
+ walk(report?.suites, []);
55
+ return out;
56
+ }
57
+ /** Drop consumed specs from a suite tree; prune suites left with nothing. */
58
+ function pruneConsumed(suites, consumed) {
59
+ const kept = [];
60
+ for (const suite of suites) {
61
+ if (!suite || typeof suite !== 'object')
62
+ continue;
63
+ if (Array.isArray(suite.specs))
64
+ suite.specs = suite.specs.filter((s) => !consumed.has(s));
65
+ if (Array.isArray(suite.suites))
66
+ suite.suites = pruneConsumed(suite.suites, consumed);
67
+ const hasSpecs = Array.isArray(suite.specs) && suite.specs.length > 0;
68
+ const hasSuites = Array.isArray(suite.suites) && suite.suites.length > 0;
69
+ if (hasSpecs || hasSuites)
70
+ kept.push(suite);
71
+ }
72
+ return kept;
73
+ }
74
+ /** Recompute the report-level stats counters from the merged tree's final attempts. */
75
+ function recomputeStats(merged) {
76
+ if (!merged.stats || typeof merged.stats !== 'object')
77
+ return;
78
+ let expected = 0, unexpected = 0, skipped = 0, flaky = 0;
79
+ for (const ref of collectSpecs(merged)) {
80
+ for (const test of ref.node.tests ?? []) {
81
+ const results = test?.results ?? [];
82
+ const last = results[results.length - 1];
83
+ const status = last?.status;
84
+ if (status === 'passed') {
85
+ if (results.some((r) => r?.status === 'failed' || r?.status === 'timedOut'))
86
+ flaky++;
87
+ else
88
+ expected++;
89
+ }
90
+ else if (status === 'skipped')
91
+ skipped++;
92
+ else if (status)
93
+ unexpected++;
94
+ }
95
+ }
96
+ merged.stats = { ...merged.stats, expected, unexpected, skipped, flaky };
97
+ }
98
+ /**
99
+ * Merge `next` into a DEEP COPY of `base` (neither input is mutated).
100
+ * Throws on inputs that are not report-shaped objects.
101
+ */
102
+ function mergeResultsReports(base, next) {
103
+ for (const [label, r] of [['base', base], ['new', next]]) {
104
+ if (!r || typeof r !== 'object' || Array.isArray(r)) {
105
+ throw new Error(`results merge: the ${label} report is not a JSON object.`);
106
+ }
107
+ }
108
+ const merged = JSON.parse(JSON.stringify(base));
109
+ const nextCopy = JSON.parse(JSON.stringify(next));
110
+ // Last occurrence wins within one report — the same tie-break walkSuites uses.
111
+ const newByTitle = new Map();
112
+ for (const ref of collectSpecs(nextCopy))
113
+ newByTitle.set(ref.title, ref);
114
+ const replaced = [];
115
+ const kept = [];
116
+ const consumed = new Set();
117
+ for (const ref of collectSpecs(merged)) {
118
+ const incoming = newByTitle.get(ref.title);
119
+ if (incoming) {
120
+ ref.parent[ref.index] = incoming.node; // the new spec wins wholesale
121
+ consumed.add(incoming.node);
122
+ replaced.push(ref.title);
123
+ }
124
+ else {
125
+ kept.push(ref.title);
126
+ }
127
+ }
128
+ const added = [];
129
+ for (const [title, ref] of newByTitle) {
130
+ if (!consumed.has(ref.node))
131
+ added.push(title);
132
+ }
133
+ if (added.length > 0 && Array.isArray(nextCopy.suites)) {
134
+ merged.suites = [...(Array.isArray(merged.suites) ? merged.suites : []), ...pruneConsumed(nextCopy.suites, consumed)];
135
+ }
136
+ recomputeStats(merged);
137
+ return { merged, replaced, added, kept };
138
+ }
139
+ /**
140
+ * Ghost detection for the WARN (never a prune): base-kept titles that no
141
+ * longer correspond to a CURRENT spec title. A `@cases` report title carries
142
+ * a ` — <label>` suffix while the spec title is the base form, so a ghost is
143
+ * a title that neither equals a spec title nor extends one with that suffix.
144
+ */
145
+ function findGhostTitles(keptTitles, specTitles) {
146
+ return keptTitles.filter((title) => !specTitles.some((spec) => title === spec || title.startsWith(`${spec} — `)));
147
+ }
148
+ //# sourceMappingURL=results-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results-merge.js","sourceRoot":"","sources":["../../src/exporters/results-merge.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,10 @@
18
18
  * • `value` for `type: 'role'` (role name like 'button', not display)
19
19
  * • Entries with no `name` and no usable `value`
20
20
  * • Composite templates with 2+ vars (ambiguous which to use)
21
+ * • Locators whose single var is SCOPE text — inside `:has(...)`/`:not(...)`,
22
+ * in a non-final segment, or in an XPath nested predicate / pre-step
23
+ * position (see locatorVarIsScopeText) — substituting those renames the
24
+ * ref to text of a DIFFERENT element (a column header naming a table)
21
25
  */
22
26
  /**
23
27
  * How to derive the display string for a selector key:
@@ -1 +1 @@
1
- {"version":3,"file":"selector-key-resolver.d.ts","sourceRoot":"","sources":["../../src/exporters/selector-key-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAgE7D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc,CA+C5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAgBR"}
1
+ {"version":3,"file":"selector-key-resolver.d.ts","sourceRoot":"","sources":["../../src/exporters/selector-key-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AA4I7D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc,CA+C5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAgBR"}
@@ -19,6 +19,10 @@
19
19
  * • `value` for `type: 'role'` (role name like 'button', not display)
20
20
  * • Entries with no `name` and no usable `value`
21
21
  * • Composite templates with 2+ vars (ambiguous which to use)
22
+ * • Locators whose single var is SCOPE text — inside `:has(...)`/`:not(...)`,
23
+ * in a non-final segment, or in an XPath nested predicate / pre-step
24
+ * position (see locatorVarIsScopeText) — substituting those renames the
25
+ * ref to text of a DIFFERENT element (a column header naming a table)
22
26
  */
23
27
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
28
  if (k2 === undefined) k2 = k;
@@ -111,12 +115,108 @@ function resolveField(value, isLocator) {
111
115
  }
112
116
  if (vars.length === 1) {
113
117
  // Sole `{{var}}` or composite like `has-text("{{var}}")`. Both resolve
114
- // to the same var's locale-specific display text.
118
+ // to the same var's locale-specific display text — but ONLY when the var
119
+ // is the target element's OWN text. A var inside a `:has(...)` argument
120
+ // or in an ancestor segment names a DIFFERENT element (a column header
121
+ // scoping a table), and substituting it renames the ref to unrelated text.
122
+ if (isLocator && locatorVarIsScopeText(value))
123
+ return null;
115
124
  return { varName: vars[0] };
116
125
  }
117
126
  // 2+ vars in one template — ambiguous which to use; skip rather than guess.
118
127
  return null;
119
128
  }
129
+ /**
130
+ * True when a locator's single `{{var}}` (FIRST occurrence — repeats of the
131
+ * same var judge by that one, erring toward fidelity) belongs to a SCOPE
132
+ * rather than the target element's own display text.
133
+ *
134
+ * CSS / Playwright engines:
135
+ * - inside a `:has(...)` or `:not(...)` argument at any depth — that text
136
+ * describes ANOTHER element (or the text this one must NOT contain);
137
+ * `:has-text(...)` / `:text(...)` ARE the element's own text and pass;
138
+ * - in a non-final segment — a combinator (space, `>`, `>>`, `+`, `~`) at
139
+ * top level (outside parens, brackets and quotes) follows the var with a
140
+ * real selector after it. A bare trailing match flag (`"{{x}}" i`) or an
141
+ * attribute-internal space (`[name="{{x}}" i]`) is NOT a combinator.
142
+ *
143
+ * XPath (`xpath=` / `//…`):
144
+ * - the var sits in a NESTED predicate (bracket depth ≥ 2, e.g.
145
+ * `//table[.//th[text()="{{col}}"]]` — the th labels the table); or
146
+ * - a location step (`/`) follows the var at top level
147
+ * (`//th[text()="{{col}}"]/ancestor::table`).
148
+ *
149
+ * One left-to-right scan tracking quote state (with backslash-run counting so
150
+ * a literal trailing `\\` can't wedge the scanner in "quoted"), paren frames,
151
+ * and bracket depth.
152
+ */
153
+ function locatorVarIsScopeText(locator) {
154
+ const m = varPattern().exec(locator);
155
+ if (!m)
156
+ return false;
157
+ const varIndex = m.index;
158
+ const isXpath = /^\s*(?:xpath=|\(*\/\/)/i.test(locator);
159
+ let quote = null;
160
+ const scopeFrames = []; // one entry per open paren: is it a :has(/:not( frame?
161
+ let bracketDepth = 0;
162
+ let passedVar = false;
163
+ const escaped = (i) => {
164
+ let n = 0;
165
+ for (let j = i - 1; j >= 0 && locator[j] === '\\'; j--)
166
+ n++;
167
+ return n % 2 === 1;
168
+ };
169
+ for (let i = 0; i < locator.length; i++) {
170
+ if (i === varIndex) {
171
+ passedVar = true;
172
+ if (!isXpath && scopeFrames.some(Boolean))
173
+ return true;
174
+ if (isXpath && bracketDepth >= 2)
175
+ return true;
176
+ }
177
+ const c = locator[i];
178
+ if (quote) {
179
+ if (c === quote && !escaped(i))
180
+ quote = null;
181
+ continue;
182
+ }
183
+ if (c === '"' || c === "'") {
184
+ quote = c;
185
+ continue;
186
+ }
187
+ if (c === '(') {
188
+ const pseudo = locator.slice(Math.max(0, i - 4), i).toLowerCase();
189
+ scopeFrames.push(!isXpath && (pseudo === ':has' || pseudo === ':not'));
190
+ continue;
191
+ }
192
+ if (c === ')') {
193
+ scopeFrames.pop();
194
+ continue;
195
+ }
196
+ if (c === '[') {
197
+ bracketDepth++;
198
+ continue;
199
+ }
200
+ if (c === ']') {
201
+ bracketDepth = Math.max(0, bracketDepth - 1);
202
+ continue;
203
+ }
204
+ if (!passedVar || scopeFrames.length > 0 || bracketDepth > 0)
205
+ continue;
206
+ if (isXpath) {
207
+ if (c === '/')
208
+ return true; // a location step after the var → the target comes later
209
+ continue;
210
+ }
211
+ if (c === ' ' || c === '>' || c === '+' || c === '~') {
212
+ const rest = locator.slice(i).replace(/^[\s>+~]+/, '');
213
+ // Bare Playwright match flags after a quoted value are not a new segment.
214
+ if (rest.length > 0 && !/^[is](?:\s|$)/.test(rest))
215
+ return true;
216
+ }
217
+ }
218
+ return false;
219
+ }
120
220
  /**
121
221
  * Build the SelectorKey → resolution map from a selectors YAML file.
122
222
  * Returns an empty map when the file is missing or malformed.
@@ -1 +1 @@
1
- {"version":3,"file":"selector-key-resolver.js","sourceRoot":"","sources":["../../src/exporters/selector-key-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selector-key-resolver.js","sourceRoot":"","sources":["../../src/exporters/selector-key-resolver.ts"],"names":[],"mappings":"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"}
@@ -116,6 +116,13 @@ export interface PlaywrightResult {
116
116
  duration?: number;
117
117
  startTime?: string;
118
118
  error?: string;
119
+ /**
120
+ * Every distinct failure message of the final attempt (ANSI/stack stripped).
121
+ * Playwright's top-level `error` is only the FIRST error — when a timeout
122
+ * wraps an assertion, the assertion detail (Locator/Expected/Received) lives
123
+ * in `results[].errors[1+]` and would otherwise never reach the deliverable.
124
+ */
125
+ errorMessages?: string[];
119
126
  tracePath?: string;
120
127
  projectName?: string;
121
128
  }
@@ -167,7 +174,7 @@ export interface ApiCatalogEntry {
167
174
  /** Request-body wire format — decides the Content-Type the request sends.
168
175
  * Absent/`json` → application/json, `form` → application/x-www-form-urlencoded,
169
176
  * `multipart` → multipart/form-data. */
170
- encoding?: 'json' | 'form' | 'multipart';
177
+ encoding?: 'json' | 'form' | 'multipart' | 'xml';
171
178
  /** Multipart file parts (multipart/form-data). A field value may be a single file spec, its string
172
179
  * shorthand, or an array of specs (multiple files under one field name). Typed loosely — guard before use. */
173
180
  files?: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exporters/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exporters/types.ts"],"names":[],"mappings":"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"}