create-appraisejs 0.3.1-alpha.0 → 0.4.0-alpha.0

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 (577) hide show
  1. package/README.md +17 -17
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js.map +1 -1
  4. package/dist/prepare-template-utils.d.ts.map +1 -1
  5. package/dist/prepare-template-utils.js.map +1 -1
  6. package/dist/prompts.d.ts.map +1 -1
  7. package/dist/prompts.js +2 -2
  8. package/dist/prompts.js.map +1 -1
  9. package/dist/sync-templates-utils.d.ts.map +1 -1
  10. package/dist/sync-templates-utils.js +1 -5
  11. package/dist/sync-templates-utils.js.map +1 -1
  12. package/package.json +1 -1
  13. package/templates/blank/.editorconfig +11 -0
  14. package/templates/blank/.env.example +2 -2
  15. package/templates/blank/.gitattributes +21 -0
  16. package/templates/blank/.gitconfig.appraise +14 -0
  17. package/templates/blank/.prettierrc +13 -0
  18. package/templates/blank/.vscode/settings.json +2 -0
  19. package/templates/blank/README.md +12 -12
  20. package/templates/blank/components.json +24 -24
  21. package/templates/blank/cucumber.mjs +27 -16
  22. package/templates/blank/e2e/README.md +56 -0
  23. package/templates/blank/e2e/apply-migrations.mjs +76 -0
  24. package/templates/blank/e2e/appraise-smoke.spec.ts +78 -0
  25. package/templates/blank/e2e/authoring.spec.ts +53 -0
  26. package/templates/blank/e2e/crud-configuration.spec.ts +138 -0
  27. package/templates/blank/e2e/crud-tests.spec.ts +76 -0
  28. package/templates/blank/e2e/helpers/forms.ts +186 -0
  29. package/templates/blank/e2e/helpers/navigation.ts +27 -0
  30. package/templates/blank/e2e/helpers/table.ts +45 -0
  31. package/templates/blank/e2e/helpers/test-data.ts +559 -0
  32. package/templates/blank/e2e/helpers/ui.ts +41 -0
  33. package/templates/blank/e2e/navigation.spec.ts +101 -0
  34. package/templates/blank/e2e/runs-and-reports.spec.ts +82 -0
  35. package/templates/blank/e2e/settings-sync.spec.ts +39 -0
  36. package/templates/blank/e2e/start-server.mjs +61 -0
  37. package/templates/blank/eslint.config.mjs +4 -4
  38. package/templates/blank/gitignore +0 -3
  39. package/templates/blank/next-env.d.ts +6 -6
  40. package/templates/blank/package-lock.json +60 -104
  41. package/templates/blank/package.json +11 -10
  42. package/templates/blank/packages/cucumber-runtime/package.json +14 -13
  43. package/templates/blank/packages/cucumber-runtime/src/cache.util.ts +93 -93
  44. package/templates/blank/packages/cucumber-runtime/src/cli.ts +77 -68
  45. package/templates/blank/packages/cucumber-runtime/src/environment.util.ts +21 -21
  46. package/templates/blank/packages/cucumber-runtime/src/executor.ts +32 -32
  47. package/templates/blank/packages/cucumber-runtime/src/index.ts +17 -17
  48. package/templates/blank/packages/cucumber-runtime/src/locator.util.ts +234 -234
  49. package/templates/blank/packages/cucumber-runtime/src/parameter-types.ts +7 -7
  50. package/templates/blank/packages/cucumber-runtime/src/paths.ts +22 -5
  51. package/templates/blank/packages/cucumber-runtime/src/random-data.util.ts +35 -35
  52. package/templates/blank/packages/cucumber-runtime/src/types.ts +13 -13
  53. package/templates/blank/packages/cucumber-runtime/src/world.ts +44 -44
  54. package/templates/blank/packages/cucumber-runtime/tsconfig.json +11 -11
  55. package/templates/blank/packages/locator-picker-companion/dist/cli.js +1 -1
  56. package/templates/blank/packages/locator-picker-companion/dist/index.d.ts +3 -3
  57. package/templates/blank/packages/locator-picker-companion/dist/index.js +3 -3
  58. package/templates/blank/packages/locator-picker-companion/dist/injected-picker-script.js +13 -3
  59. package/templates/blank/packages/locator-picker-companion/dist/selector-generator.d.ts +6 -3
  60. package/templates/blank/packages/locator-picker-companion/dist/selector-generator.js +233 -229
  61. package/templates/blank/packages/locator-picker-companion/package.json +2 -1
  62. package/templates/blank/packages/locator-picker-companion/src/cli.ts +1 -7
  63. package/templates/blank/packages/locator-picker-companion/src/injected-picker-script.ts +26 -5
  64. package/templates/blank/packages/locator-picker-companion/src/launcher.ts +1 -3
  65. package/templates/blank/packages/locator-picker-companion/src/session-file.ts +4 -15
  66. package/templates/blank/packages/locator-picker-companion/src/types.ts +1 -8
  67. package/templates/blank/playwright.config.ts +46 -0
  68. package/templates/blank/postcss.config.mjs +8 -8
  69. package/templates/blank/prisma/dev.db +0 -0
  70. package/templates/blank/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -16
  71. package/templates/blank/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -27
  72. package/templates/blank/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -17
  73. package/templates/blank/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -12
  74. package/templates/blank/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -28
  75. package/templates/blank/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -12
  76. package/templates/blank/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -10
  77. package/templates/blank/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -10
  78. package/templates/blank/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -108
  79. package/templates/blank/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -55
  80. package/templates/blank/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -27
  81. package/templates/blank/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -59
  82. package/templates/blank/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -34
  83. package/templates/blank/prisma/migrations/20260313093000_add_report_step_screenshot_path/migration.sql +1 -1
  84. package/templates/blank/scripts/configure-git-line-endings.mjs +91 -0
  85. package/templates/blank/scripts/install-template-step.ts +5 -1
  86. package/templates/blank/scripts/lib/step-matcher.test.ts +3 -3
  87. package/templates/blank/scripts/lib/step-matcher.ts +5 -1
  88. package/templates/blank/scripts/lib/template-step-installer.test.ts +4 -2
  89. package/templates/blank/scripts/lib/template-step-installer.ts +16 -4
  90. package/templates/blank/scripts/lib/template-step-registry.test.ts +1 -1
  91. package/templates/blank/scripts/lib/template-step-registry.ts +4 -1
  92. package/templates/blank/scripts/run-fallow-commit.mjs +4 -6
  93. package/templates/blank/scripts/setup-env.ts +0 -0
  94. package/templates/blank/scripts/sync-all.ts +7 -6
  95. package/templates/blank/scripts/sync-appraise-base-template.ts +84 -77
  96. package/templates/blank/scripts/sync-environments.ts +47 -44
  97. package/templates/blank/scripts/sync-locator-groups.ts +67 -76
  98. package/templates/blank/scripts/sync-locators.ts +50 -53
  99. package/templates/blank/scripts/sync-modules.ts +42 -42
  100. package/templates/blank/scripts/sync-tags.ts +51 -51
  101. package/templates/blank/scripts/sync-template-step-groups.ts +34 -32
  102. package/templates/blank/scripts/sync-template-steps.ts +97 -97
  103. package/templates/blank/scripts/sync-test-cases.ts +125 -84
  104. package/templates/blank/scripts/sync-test-suites.ts +85 -80
  105. package/templates/blank/src/actions/server-action-boundary.test.ts +1 -7
  106. package/templates/blank/src/actions/settings/sync-actions.ts +3 -1
  107. package/templates/blank/src/actions/tags/tag-actions.ts +1 -7
  108. package/templates/blank/src/actions/template-test-case/template-test-case-actions.ts +3 -1
  109. package/templates/blank/src/app/(base)/environments/create/page.tsx +28 -28
  110. package/templates/blank/src/app/(base)/environments/environment-form.tsx +3 -2
  111. package/templates/blank/src/app/(base)/environments/environment-helpers.ts +4 -1
  112. package/templates/blank/src/app/(base)/layout.tsx +10 -10
  113. package/templates/blank/src/app/(base)/locator-groups/locator-group-form.tsx +5 -3
  114. package/templates/blank/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -77
  115. package/templates/blank/src/app/(base)/locator-groups/locator-group-table.tsx +28 -28
  116. package/templates/blank/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -46
  117. package/templates/blank/src/app/(base)/locator-groups/page.tsx +9 -19
  118. package/templates/blank/src/app/(base)/locators/create/create-locator-workspace-helpers.test.ts +3 -6
  119. package/templates/blank/src/app/(base)/locators/create/create-locator-workspace-response.ts +22 -5
  120. package/templates/blank/src/app/(base)/locators/create/create-locator-workspace-state.ts +5 -1
  121. package/templates/blank/src/app/(base)/locators/create/use-locator-workspace.ts +7 -2
  122. package/templates/blank/src/app/(base)/locators/locator-file-sync.ts +1 -5
  123. package/templates/blank/src/app/(base)/locators/locator-helpers.ts +2 -12
  124. package/templates/blank/src/app/(base)/locators/locator-table-columns.tsx +59 -60
  125. package/templates/blank/src/app/(base)/modules/module-form.tsx +3 -1
  126. package/templates/blank/src/app/(base)/reports/overview-chart.tsx +49 -49
  127. package/templates/blank/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +114 -115
  128. package/templates/blank/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -27
  129. package/templates/blank/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +80 -79
  130. package/templates/blank/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +29 -27
  131. package/templates/blank/src/app/(base)/settings/settings-sync-panel-helpers.test.tsx +4 -6
  132. package/templates/blank/src/app/(base)/settings/settings-sync-panel.tsx +22 -23
  133. package/templates/blank/src/app/(base)/tags/tag-form.test.tsx +2 -10
  134. package/templates/blank/src/app/(base)/tags/tag-form.tsx +5 -3
  135. package/templates/blank/src/app/(base)/tags/tag-table-columns.tsx +63 -63
  136. package/templates/blank/src/app/(base)/tags/tag-table.tsx +29 -29
  137. package/templates/blank/src/app/(base)/template-step-groups/create/page.tsx +28 -28
  138. package/templates/blank/src/app/(base)/template-step-groups/template-step-group-form.tsx +3 -1
  139. package/templates/blank/src/app/(base)/template-step-groups/template-step-group-helpers.ts +4 -1
  140. package/templates/blank/src/app/(base)/template-steps/paramChip.tsx +6 -10
  141. package/templates/blank/src/app/(base)/template-steps/template-step-form-helpers.ts +4 -2
  142. package/templates/blank/src/app/(base)/template-steps/template-step-helpers.test.ts +19 -1
  143. package/templates/blank/src/app/(base)/template-steps/template-step-helpers.ts +1 -5
  144. package/templates/blank/src/app/(base)/template-steps/template-step-row-guards.ts +1 -5
  145. package/templates/blank/src/app/(base)/template-steps/template-step-types.ts +1 -5
  146. package/templates/blank/src/app/(base)/template-test-cases/create-template-test-case-page-data.test.ts +4 -1
  147. package/templates/blank/src/app/(base)/template-test-cases/create-template-test-case-page-data.ts +1 -2
  148. package/templates/blank/src/app/(base)/template-test-cases/modify/[id]/page.tsx +1 -0
  149. package/templates/blank/src/app/(base)/template-test-cases/template-test-case-flow.test.tsx +0 -1
  150. package/templates/blank/src/app/(base)/template-test-cases/template-test-case-form.tsx +3 -1
  151. package/templates/blank/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -76
  152. package/templates/blank/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -32
  153. package/templates/blank/src/app/(base)/test-cases/create/page.tsx +1 -5
  154. package/templates/blank/src/app/(base)/test-cases/create-from-template/create-from-template-selection-helpers.ts +1 -4
  155. package/templates/blank/src/app/(base)/test-cases/create-from-template/page.test.tsx +2 -2
  156. package/templates/blank/src/app/(base)/test-cases/inline-tag-creation-dialog.tsx +1 -7
  157. package/templates/blank/src/app/(base)/test-cases/inline-test-suite-creation-dialog.tsx +1 -7
  158. package/templates/blank/src/app/(base)/test-cases/modify/[id]/page.tsx +1 -5
  159. package/templates/blank/src/app/(base)/test-cases/test-case-form.tsx +63 -78
  160. package/templates/blank/src/app/(base)/test-cases/test-case-route-helpers.test.ts +2 -7
  161. package/templates/blank/src/app/(base)/test-suites/editable-test-suite-helpers.ts +1 -6
  162. package/templates/blank/src/app/(base)/test-suites/test-suite-form.test.tsx +2 -10
  163. package/templates/blank/src/app/(dashboard-components)/data-card-grid.tsx +10 -10
  164. package/templates/blank/src/app/api/test-runs/[runId]/download/route.ts +1 -4
  165. package/templates/blank/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.test.ts +18 -9
  166. package/templates/blank/src/assets/icons/empty-tube.tsx +23 -23
  167. package/templates/blank/src/assets/icons/tube-plus.tsx +29 -29
  168. package/templates/blank/src/components/data-visualization/info-card.tsx +56 -70
  169. package/templates/blank/src/components/data-visualization/info-grid.tsx +22 -22
  170. package/templates/blank/src/components/diagram/add-node-prompt-node.tsx +1 -1
  171. package/templates/blank/src/components/diagram/dynamic-parameters-helpers.ts +4 -3
  172. package/templates/blank/src/components/diagram/dynamic-parameters.test.tsx +4 -1
  173. package/templates/blank/src/components/diagram/dynamic-parameters.tsx +0 -1
  174. package/templates/blank/src/components/diagram/flow-diagram-block-dialog.test.tsx +26 -0
  175. package/templates/blank/src/components/diagram/flow-diagram-block-dialog.tsx +3 -1
  176. package/templates/blank/src/components/diagram/flow-diagram-connection-guards.ts +24 -6
  177. package/templates/blank/src/components/diagram/flow-diagram-helpers.test.ts +27 -0
  178. package/templates/blank/src/components/diagram/flow-diagram-node-search.tsx +73 -66
  179. package/templates/blank/src/components/diagram/flow-diagram-toolbar.tsx +35 -3
  180. package/templates/blank/src/components/diagram/flow-diagram-view.tsx +1 -7
  181. package/templates/blank/src/components/diagram/flow-diagram.test.tsx +225 -0
  182. package/templates/blank/src/components/diagram/flow-node-data-helpers.ts +1 -1
  183. package/templates/blank/src/components/diagram/node-form-fields-content.tsx +9 -2
  184. package/templates/blank/src/components/diagram/node-form-helpers.test.ts +3 -1
  185. package/templates/blank/src/components/diagram/node-form-helpers.ts +1 -4
  186. package/templates/blank/src/components/diagram/node-form-template-step-selection.ts +1 -4
  187. package/templates/blank/src/components/diagram/node-form.test.tsx +25 -0
  188. package/templates/blank/src/components/diagram/node-form.tsx +2 -12
  189. package/templates/blank/src/components/diagram/options-header-node.test.tsx +4 -1
  190. package/templates/blank/src/components/diagram/options-header-node.tsx +140 -130
  191. package/templates/blank/src/components/diagram/use-flow-diagram-search.ts +2 -0
  192. package/templates/blank/src/components/diagram/use-flow-diagram.ts +93 -1
  193. package/templates/blank/src/components/form/error-message.tsx +7 -7
  194. package/templates/blank/src/components/loading-skeleton/form/button-skeleton.tsx +8 -8
  195. package/templates/blank/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -8
  196. package/templates/blank/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -14
  197. package/templates/blank/src/components/navigation/entity-search-command.tsx +3 -9
  198. package/templates/blank/src/components/navigation/nav-link.tsx +60 -60
  199. package/templates/blank/src/components/test-case/test-case-form-helpers.test.ts +1 -5
  200. package/templates/blank/src/components/test-case/test-case-form-helpers.ts +1 -5
  201. package/templates/blank/src/components/test-case/test-case-picker-helpers.ts +8 -7
  202. package/templates/blank/src/components/test-case/test-case-picker.tsx +2 -6
  203. package/templates/blank/src/components/test-run/log-viewer.test.tsx +25 -0
  204. package/templates/blank/src/components/test-run/log-viewer.tsx +2 -2
  205. package/templates/blank/src/components/test-run/test-run-details-guards.ts +10 -1
  206. package/templates/blank/src/components/test-run/test-run-details.test.tsx +9 -19
  207. package/templates/blank/src/components/test-run/use-log-viewer.ts +2 -8
  208. package/templates/blank/src/components/test-run/use-test-run-header.ts +1 -4
  209. package/templates/blank/src/components/test-suite/test-suite-picker.tsx +1 -1
  210. package/templates/blank/src/components/theme/theme-provider.tsx +7 -1
  211. package/templates/blank/src/components/typography/page-header-subtitle.tsx +7 -7
  212. package/templates/blank/src/components/typography/page-header.tsx +7 -7
  213. package/templates/blank/src/components/ui/chart.tsx +2 -8
  214. package/templates/blank/src/components/ui/command.tsx +2 -5
  215. package/templates/blank/src/components/ui/data-table-column-header.tsx +3 -3
  216. package/templates/blank/src/components/ui/data-table.test.tsx +1 -8
  217. package/templates/blank/src/components/ui/dialog.tsx +1 -4
  218. package/templates/blank/src/components/ui/select.tsx +2 -2
  219. package/templates/blank/src/components/ui/separator.tsx +5 -1
  220. package/templates/blank/src/components/ui/skeleton.tsx +7 -7
  221. package/templates/blank/src/components/ui/table.tsx +1 -1
  222. package/templates/blank/src/components/ui/toaster.tsx +26 -26
  223. package/templates/blank/src/components/ui/tooltip.tsx +1 -1
  224. package/templates/blank/src/constants/form-opts/locator-group-form-opts.ts +1 -1
  225. package/templates/blank/src/lib/appraise-test-case-metadata.test.ts +78 -0
  226. package/templates/blank/src/lib/appraise-test-case-metadata.ts +220 -0
  227. package/templates/blank/src/lib/automation/automation-path-roots.test.ts +14 -0
  228. package/templates/blank/src/lib/automation/automation-path-roots.ts +10 -2
  229. package/templates/blank/src/lib/database-sync.ts +166 -15
  230. package/templates/blank/src/lib/executor/local-executor-adapter.ts +6 -2
  231. package/templates/blank/src/lib/feature-file-generator.ts +54 -10
  232. package/templates/blank/src/lib/gherkin-parser.test.ts +52 -0
  233. package/templates/blank/src/lib/gherkin-parser.ts +39 -1
  234. package/templates/blank/src/lib/locator-group-file-utils.ts +5 -1
  235. package/templates/blank/src/lib/locator-picker/session-manager.ts +1 -2
  236. package/templates/blank/src/lib/metrics/metric-calculator.test.ts +105 -6
  237. package/templates/blank/src/lib/metrics/metric-calculator.ts +39 -40
  238. package/templates/blank/src/lib/sync/projected-feature-utils.ts +5 -1
  239. package/templates/blank/src/lib/sync/sync-executor.ts +1 -4
  240. package/templates/blank/src/lib/sync/sync-pending-counts.test.ts +316 -7
  241. package/templates/blank/src/lib/sync/sync-pending-counts.ts +189 -26
  242. package/templates/blank/src/lib/template-automation-paths.ts +1 -1
  243. package/templates/blank/src/lib/template-sync-utils.d.ts +14 -7
  244. package/templates/blank/src/lib/test-case-utils.ts +6 -6
  245. package/templates/blank/src/lib/test-run/log-formatter.ts +82 -83
  246. package/templates/blank/src/lib/test-run/report-parser.ts +352 -352
  247. package/templates/blank/src/lib/transformers/gherkin-converter.ts +42 -42
  248. package/templates/blank/src/lib/transformers/key-to-icon-transformer.tsx +95 -95
  249. package/templates/blank/src/lib/utils/node-param-validation.ts +81 -81
  250. package/templates/blank/src/lib/utils/template-step-file-generator.ts +5 -3
  251. package/templates/blank/src/lib/utils/template-step-file-manager-intelligent.ts +11 -1
  252. package/templates/blank/src/services/dashboard/dashboard-service.test.ts +28 -1
  253. package/templates/blank/src/services/dashboard/dashboard-service.ts +2 -0
  254. package/templates/blank/src/services/locator/locator-service.test.ts +1 -3
  255. package/templates/blank/src/services/locator/locator-service.ts +3 -1
  256. package/templates/blank/src/services/locator/locator-sync-utils.test.ts +1 -4
  257. package/templates/blank/src/services/module/module-service.ts +1 -4
  258. package/templates/blank/src/services/report/report-service.test.ts +70 -6
  259. package/templates/blank/src/services/report/report-service.ts +52 -9
  260. package/templates/blank/src/services/shared/errors.ts +2 -4
  261. package/templates/blank/src/services/template-step/template-step-service.ts +3 -1
  262. package/templates/blank/src/services/template-step-group/template-step-group-service.ts +3 -1
  263. package/templates/blank/src/services/test-case/test-case-service.ts +0 -5
  264. package/templates/blank/src/services/test-run/test-run-service.test.ts +13 -6
  265. package/templates/blank/src/services/test-run/test-run-service.ts +53 -8
  266. package/templates/blank/src/services/test-suite/test-suite-service.test.ts +1 -5
  267. package/templates/blank/src/services/test-suite/test-suite-service.ts +2 -4
  268. package/templates/blank/src/types/form/actionHandler.ts +1 -5
  269. package/templates/blank/tsconfig.json +8 -8
  270. package/templates/starter/.editorconfig +11 -0
  271. package/templates/starter/.env.example +2 -2
  272. package/templates/starter/.gitattributes +21 -0
  273. package/templates/starter/.gitconfig.appraise +14 -0
  274. package/templates/starter/.prettierrc +13 -0
  275. package/templates/starter/.vscode/settings.json +2 -0
  276. package/templates/starter/README.md +12 -12
  277. package/templates/starter/automation/steps/actions/click.step.ts +56 -58
  278. package/templates/starter/automation/steps/actions/hover.step.ts +25 -27
  279. package/templates/starter/automation/steps/actions/input.step.ts +85 -108
  280. package/templates/starter/automation/steps/actions/navigation.step.ts +67 -70
  281. package/templates/starter/automation/steps/actions/random_data.step.ts +149 -143
  282. package/templates/starter/automation/steps/actions/store.step.ts +69 -1
  283. package/templates/starter/automation/steps/actions/wait.step.ts +84 -1
  284. package/templates/starter/automation/steps/validations/active_state_assertion.step.ts +28 -30
  285. package/templates/starter/automation/steps/validations/navigation_assertion.step.ts +20 -22
  286. package/templates/starter/automation/steps/validations/text_assertion.step.ts +67 -107
  287. package/templates/starter/automation/steps/validations/visibility_assertion.step.ts +24 -26
  288. package/templates/starter/components.json +24 -24
  289. package/templates/starter/cucumber.mjs +27 -16
  290. package/templates/starter/e2e/README.md +56 -0
  291. package/templates/starter/e2e/apply-migrations.mjs +76 -0
  292. package/templates/starter/e2e/appraise-smoke.spec.ts +78 -0
  293. package/templates/starter/e2e/authoring.spec.ts +53 -0
  294. package/templates/starter/e2e/crud-configuration.spec.ts +138 -0
  295. package/templates/starter/e2e/crud-tests.spec.ts +76 -0
  296. package/templates/starter/e2e/helpers/forms.ts +186 -0
  297. package/templates/starter/e2e/helpers/navigation.ts +27 -0
  298. package/templates/starter/e2e/helpers/table.ts +45 -0
  299. package/templates/starter/e2e/helpers/test-data.ts +559 -0
  300. package/templates/starter/e2e/helpers/ui.ts +41 -0
  301. package/templates/starter/e2e/navigation.spec.ts +101 -0
  302. package/templates/starter/e2e/runs-and-reports.spec.ts +82 -0
  303. package/templates/starter/e2e/settings-sync.spec.ts +39 -0
  304. package/templates/starter/e2e/start-server.mjs +61 -0
  305. package/templates/starter/eslint.config.mjs +4 -4
  306. package/templates/starter/gitignore +0 -3
  307. package/templates/starter/next-env.d.ts +6 -6
  308. package/templates/starter/package-lock.json +60 -104
  309. package/templates/starter/package.json +11 -10
  310. package/templates/starter/packages/cucumber-runtime/package.json +14 -13
  311. package/templates/starter/packages/cucumber-runtime/src/cache.util.ts +93 -93
  312. package/templates/starter/packages/cucumber-runtime/src/cli.ts +77 -68
  313. package/templates/starter/packages/cucumber-runtime/src/environment.util.ts +21 -21
  314. package/templates/starter/packages/cucumber-runtime/src/executor.ts +32 -32
  315. package/templates/starter/packages/cucumber-runtime/src/index.ts +17 -17
  316. package/templates/starter/packages/cucumber-runtime/src/locator.util.ts +234 -234
  317. package/templates/starter/packages/cucumber-runtime/src/parameter-types.ts +7 -7
  318. package/templates/starter/packages/cucumber-runtime/src/paths.ts +22 -5
  319. package/templates/starter/packages/cucumber-runtime/src/random-data.util.ts +35 -35
  320. package/templates/starter/packages/cucumber-runtime/src/types.ts +13 -13
  321. package/templates/starter/packages/cucumber-runtime/src/world.ts +44 -44
  322. package/templates/starter/packages/cucumber-runtime/tsconfig.json +11 -11
  323. package/templates/starter/packages/locator-picker-companion/dist/cli.js +1 -1
  324. package/templates/starter/packages/locator-picker-companion/dist/index.d.ts +3 -3
  325. package/templates/starter/packages/locator-picker-companion/dist/index.js +3 -3
  326. package/templates/starter/packages/locator-picker-companion/dist/injected-picker-script.js +13 -3
  327. package/templates/starter/packages/locator-picker-companion/dist/selector-generator.d.ts +6 -3
  328. package/templates/starter/packages/locator-picker-companion/dist/selector-generator.js +233 -229
  329. package/templates/starter/packages/locator-picker-companion/package.json +2 -1
  330. package/templates/starter/packages/locator-picker-companion/src/cli.ts +1 -7
  331. package/templates/starter/packages/locator-picker-companion/src/injected-picker-script.ts +26 -5
  332. package/templates/starter/packages/locator-picker-companion/src/launcher.ts +1 -3
  333. package/templates/starter/packages/locator-picker-companion/src/session-file.ts +4 -15
  334. package/templates/starter/packages/locator-picker-companion/src/types.ts +1 -8
  335. package/templates/starter/playwright.config.ts +46 -0
  336. package/templates/starter/postcss.config.mjs +8 -8
  337. package/templates/starter/prisma/dev.db +0 -0
  338. package/templates/starter/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -16
  339. package/templates/starter/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -27
  340. package/templates/starter/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -17
  341. package/templates/starter/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -12
  342. package/templates/starter/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -28
  343. package/templates/starter/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -12
  344. package/templates/starter/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -10
  345. package/templates/starter/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -10
  346. package/templates/starter/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -108
  347. package/templates/starter/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -55
  348. package/templates/starter/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -27
  349. package/templates/starter/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -59
  350. package/templates/starter/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -34
  351. package/templates/starter/prisma/migrations/20260313093000_add_report_step_screenshot_path/migration.sql +1 -1
  352. package/templates/starter/scripts/configure-git-line-endings.mjs +91 -0
  353. package/templates/starter/scripts/install-template-step.ts +5 -1
  354. package/templates/starter/scripts/lib/step-matcher.test.ts +3 -3
  355. package/templates/starter/scripts/lib/step-matcher.ts +5 -1
  356. package/templates/starter/scripts/lib/template-step-installer.test.ts +4 -2
  357. package/templates/starter/scripts/lib/template-step-installer.ts +16 -4
  358. package/templates/starter/scripts/lib/template-step-registry.test.ts +1 -1
  359. package/templates/starter/scripts/lib/template-step-registry.ts +4 -1
  360. package/templates/starter/scripts/run-fallow-commit.mjs +4 -6
  361. package/templates/starter/scripts/setup-env.ts +0 -0
  362. package/templates/starter/scripts/sync-all.ts +7 -6
  363. package/templates/starter/scripts/sync-appraise-base-template.ts +84 -77
  364. package/templates/starter/scripts/sync-environments.ts +47 -44
  365. package/templates/starter/scripts/sync-locator-groups.ts +67 -76
  366. package/templates/starter/scripts/sync-locators.ts +50 -53
  367. package/templates/starter/scripts/sync-modules.ts +42 -42
  368. package/templates/starter/scripts/sync-tags.ts +51 -51
  369. package/templates/starter/scripts/sync-template-step-groups.ts +34 -32
  370. package/templates/starter/scripts/sync-template-steps.ts +97 -97
  371. package/templates/starter/scripts/sync-test-cases.ts +125 -84
  372. package/templates/starter/scripts/sync-test-suites.ts +85 -80
  373. package/templates/starter/src/actions/server-action-boundary.test.ts +1 -7
  374. package/templates/starter/src/actions/settings/sync-actions.ts +3 -1
  375. package/templates/starter/src/actions/tags/tag-actions.ts +1 -7
  376. package/templates/starter/src/actions/template-test-case/template-test-case-actions.ts +3 -1
  377. package/templates/starter/src/app/(base)/environments/create/page.tsx +28 -28
  378. package/templates/starter/src/app/(base)/environments/environment-form.tsx +3 -2
  379. package/templates/starter/src/app/(base)/environments/environment-helpers.ts +4 -1
  380. package/templates/starter/src/app/(base)/layout.tsx +10 -10
  381. package/templates/starter/src/app/(base)/locator-groups/locator-group-form.tsx +5 -3
  382. package/templates/starter/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -77
  383. package/templates/starter/src/app/(base)/locator-groups/locator-group-table.tsx +28 -28
  384. package/templates/starter/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -46
  385. package/templates/starter/src/app/(base)/locator-groups/page.tsx +9 -19
  386. package/templates/starter/src/app/(base)/locators/create/create-locator-workspace-helpers.test.ts +3 -6
  387. package/templates/starter/src/app/(base)/locators/create/create-locator-workspace-response.ts +22 -5
  388. package/templates/starter/src/app/(base)/locators/create/create-locator-workspace-state.ts +5 -1
  389. package/templates/starter/src/app/(base)/locators/create/use-locator-workspace.ts +7 -2
  390. package/templates/starter/src/app/(base)/locators/locator-file-sync.ts +1 -5
  391. package/templates/starter/src/app/(base)/locators/locator-helpers.ts +2 -12
  392. package/templates/starter/src/app/(base)/locators/locator-table-columns.tsx +59 -60
  393. package/templates/starter/src/app/(base)/modules/module-form.tsx +3 -1
  394. package/templates/starter/src/app/(base)/reports/overview-chart.tsx +49 -49
  395. package/templates/starter/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +114 -115
  396. package/templates/starter/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -27
  397. package/templates/starter/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +80 -79
  398. package/templates/starter/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +29 -27
  399. package/templates/starter/src/app/(base)/settings/settings-sync-panel-helpers.test.tsx +4 -6
  400. package/templates/starter/src/app/(base)/settings/settings-sync-panel.tsx +22 -23
  401. package/templates/starter/src/app/(base)/tags/tag-form.test.tsx +2 -10
  402. package/templates/starter/src/app/(base)/tags/tag-form.tsx +5 -3
  403. package/templates/starter/src/app/(base)/tags/tag-table-columns.tsx +63 -63
  404. package/templates/starter/src/app/(base)/tags/tag-table.tsx +29 -29
  405. package/templates/starter/src/app/(base)/template-step-groups/create/page.tsx +28 -28
  406. package/templates/starter/src/app/(base)/template-step-groups/template-step-group-form.tsx +3 -1
  407. package/templates/starter/src/app/(base)/template-step-groups/template-step-group-helpers.ts +4 -1
  408. package/templates/starter/src/app/(base)/template-steps/paramChip.tsx +6 -10
  409. package/templates/starter/src/app/(base)/template-steps/template-step-form-helpers.ts +4 -2
  410. package/templates/starter/src/app/(base)/template-steps/template-step-helpers.test.ts +19 -1
  411. package/templates/starter/src/app/(base)/template-steps/template-step-helpers.ts +1 -5
  412. package/templates/starter/src/app/(base)/template-steps/template-step-row-guards.ts +1 -5
  413. package/templates/starter/src/app/(base)/template-steps/template-step-types.ts +1 -5
  414. package/templates/starter/src/app/(base)/template-test-cases/create-template-test-case-page-data.test.ts +4 -1
  415. package/templates/starter/src/app/(base)/template-test-cases/create-template-test-case-page-data.ts +1 -2
  416. package/templates/starter/src/app/(base)/template-test-cases/modify/[id]/page.tsx +1 -0
  417. package/templates/starter/src/app/(base)/template-test-cases/template-test-case-flow.test.tsx +0 -1
  418. package/templates/starter/src/app/(base)/template-test-cases/template-test-case-form.tsx +3 -1
  419. package/templates/starter/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -76
  420. package/templates/starter/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -32
  421. package/templates/starter/src/app/(base)/test-cases/create/page.tsx +1 -5
  422. package/templates/starter/src/app/(base)/test-cases/create-from-template/create-from-template-selection-helpers.ts +1 -4
  423. package/templates/starter/src/app/(base)/test-cases/create-from-template/page.test.tsx +2 -2
  424. package/templates/starter/src/app/(base)/test-cases/inline-tag-creation-dialog.tsx +1 -7
  425. package/templates/starter/src/app/(base)/test-cases/inline-test-suite-creation-dialog.tsx +1 -7
  426. package/templates/starter/src/app/(base)/test-cases/modify/[id]/page.tsx +1 -5
  427. package/templates/starter/src/app/(base)/test-cases/test-case-form.tsx +63 -78
  428. package/templates/starter/src/app/(base)/test-cases/test-case-route-helpers.test.ts +2 -7
  429. package/templates/starter/src/app/(base)/test-suites/editable-test-suite-helpers.ts +1 -6
  430. package/templates/starter/src/app/(base)/test-suites/test-suite-form.test.tsx +2 -10
  431. package/templates/starter/src/app/(dashboard-components)/data-card-grid.tsx +10 -10
  432. package/templates/starter/src/app/api/test-runs/[runId]/download/route.ts +1 -4
  433. package/templates/starter/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.test.ts +18 -9
  434. package/templates/starter/src/assets/icons/empty-tube.tsx +23 -23
  435. package/templates/starter/src/assets/icons/tube-plus.tsx +29 -29
  436. package/templates/starter/src/components/data-visualization/info-card.tsx +56 -70
  437. package/templates/starter/src/components/data-visualization/info-grid.tsx +22 -22
  438. package/templates/starter/src/components/diagram/add-node-prompt-node.tsx +1 -1
  439. package/templates/starter/src/components/diagram/dynamic-parameters-helpers.ts +4 -3
  440. package/templates/starter/src/components/diagram/dynamic-parameters.test.tsx +4 -1
  441. package/templates/starter/src/components/diagram/dynamic-parameters.tsx +0 -1
  442. package/templates/starter/src/components/diagram/flow-diagram-block-dialog.test.tsx +26 -0
  443. package/templates/starter/src/components/diagram/flow-diagram-block-dialog.tsx +3 -1
  444. package/templates/starter/src/components/diagram/flow-diagram-connection-guards.ts +24 -6
  445. package/templates/starter/src/components/diagram/flow-diagram-helpers.test.ts +27 -0
  446. package/templates/starter/src/components/diagram/flow-diagram-node-search.tsx +73 -66
  447. package/templates/starter/src/components/diagram/flow-diagram-toolbar.tsx +35 -3
  448. package/templates/starter/src/components/diagram/flow-diagram-view.tsx +1 -7
  449. package/templates/starter/src/components/diagram/flow-diagram.test.tsx +225 -0
  450. package/templates/starter/src/components/diagram/flow-node-data-helpers.ts +1 -1
  451. package/templates/starter/src/components/diagram/node-form-fields-content.tsx +9 -2
  452. package/templates/starter/src/components/diagram/node-form-helpers.test.ts +3 -1
  453. package/templates/starter/src/components/diagram/node-form-helpers.ts +1 -4
  454. package/templates/starter/src/components/diagram/node-form-template-step-selection.ts +1 -4
  455. package/templates/starter/src/components/diagram/node-form.test.tsx +25 -0
  456. package/templates/starter/src/components/diagram/node-form.tsx +2 -12
  457. package/templates/starter/src/components/diagram/options-header-node.test.tsx +4 -1
  458. package/templates/starter/src/components/diagram/options-header-node.tsx +140 -130
  459. package/templates/starter/src/components/diagram/use-flow-diagram-search.ts +2 -0
  460. package/templates/starter/src/components/diagram/use-flow-diagram.ts +93 -1
  461. package/templates/starter/src/components/form/error-message.tsx +7 -7
  462. package/templates/starter/src/components/loading-skeleton/form/button-skeleton.tsx +8 -8
  463. package/templates/starter/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -8
  464. package/templates/starter/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -14
  465. package/templates/starter/src/components/navigation/entity-search-command.tsx +3 -9
  466. package/templates/starter/src/components/navigation/nav-link.tsx +60 -60
  467. package/templates/starter/src/components/test-case/test-case-form-helpers.test.ts +1 -5
  468. package/templates/starter/src/components/test-case/test-case-form-helpers.ts +1 -5
  469. package/templates/starter/src/components/test-case/test-case-picker-helpers.ts +8 -7
  470. package/templates/starter/src/components/test-case/test-case-picker.tsx +2 -6
  471. package/templates/starter/src/components/test-run/log-viewer.test.tsx +25 -0
  472. package/templates/starter/src/components/test-run/log-viewer.tsx +2 -2
  473. package/templates/starter/src/components/test-run/test-run-details-guards.ts +10 -1
  474. package/templates/starter/src/components/test-run/test-run-details.test.tsx +9 -19
  475. package/templates/starter/src/components/test-run/use-log-viewer.ts +2 -8
  476. package/templates/starter/src/components/test-run/use-test-run-header.ts +1 -4
  477. package/templates/starter/src/components/test-suite/test-suite-picker.tsx +1 -1
  478. package/templates/starter/src/components/theme/theme-provider.tsx +7 -1
  479. package/templates/starter/src/components/typography/page-header-subtitle.tsx +7 -7
  480. package/templates/starter/src/components/typography/page-header.tsx +7 -7
  481. package/templates/starter/src/components/ui/chart.tsx +2 -8
  482. package/templates/starter/src/components/ui/command.tsx +2 -5
  483. package/templates/starter/src/components/ui/data-table-column-header.tsx +3 -3
  484. package/templates/starter/src/components/ui/data-table.test.tsx +1 -8
  485. package/templates/starter/src/components/ui/dialog.tsx +1 -4
  486. package/templates/starter/src/components/ui/select.tsx +2 -2
  487. package/templates/starter/src/components/ui/separator.tsx +5 -1
  488. package/templates/starter/src/components/ui/skeleton.tsx +7 -7
  489. package/templates/starter/src/components/ui/table.tsx +1 -1
  490. package/templates/starter/src/components/ui/toaster.tsx +26 -26
  491. package/templates/starter/src/components/ui/tooltip.tsx +1 -1
  492. package/templates/starter/src/constants/form-opts/locator-group-form-opts.ts +1 -1
  493. package/templates/starter/src/lib/appraise-test-case-metadata.test.ts +78 -0
  494. package/templates/starter/src/lib/appraise-test-case-metadata.ts +220 -0
  495. package/templates/starter/src/lib/automation/automation-path-roots.test.ts +14 -0
  496. package/templates/starter/src/lib/automation/automation-path-roots.ts +10 -2
  497. package/templates/starter/src/lib/database-sync.ts +166 -15
  498. package/templates/starter/src/lib/executor/local-executor-adapter.ts +6 -2
  499. package/templates/starter/src/lib/feature-file-generator.ts +54 -10
  500. package/templates/starter/src/lib/gherkin-parser.test.ts +52 -0
  501. package/templates/starter/src/lib/gherkin-parser.ts +39 -1
  502. package/templates/starter/src/lib/locator-group-file-utils.ts +5 -1
  503. package/templates/starter/src/lib/locator-picker/session-manager.ts +1 -2
  504. package/templates/starter/src/lib/metrics/metric-calculator.test.ts +105 -6
  505. package/templates/starter/src/lib/metrics/metric-calculator.ts +39 -40
  506. package/templates/starter/src/lib/sync/projected-feature-utils.ts +5 -1
  507. package/templates/starter/src/lib/sync/sync-executor.ts +1 -4
  508. package/templates/starter/src/lib/sync/sync-pending-counts.test.ts +316 -7
  509. package/templates/starter/src/lib/sync/sync-pending-counts.ts +189 -26
  510. package/templates/starter/src/lib/template-automation-paths.ts +1 -1
  511. package/templates/starter/src/lib/template-sync-utils.d.ts +14 -7
  512. package/templates/starter/src/lib/test-case-utils.ts +6 -6
  513. package/templates/starter/src/lib/test-run/log-formatter.ts +82 -83
  514. package/templates/starter/src/lib/test-run/report-parser.ts +352 -352
  515. package/templates/starter/src/lib/transformers/gherkin-converter.ts +42 -42
  516. package/templates/starter/src/lib/transformers/key-to-icon-transformer.tsx +95 -95
  517. package/templates/starter/src/lib/utils/node-param-validation.ts +81 -81
  518. package/templates/starter/src/lib/utils/template-step-file-generator.ts +5 -3
  519. package/templates/starter/src/lib/utils/template-step-file-manager-intelligent.ts +11 -1
  520. package/templates/starter/src/services/dashboard/dashboard-service.test.ts +28 -1
  521. package/templates/starter/src/services/dashboard/dashboard-service.ts +2 -0
  522. package/templates/starter/src/services/locator/locator-service.test.ts +1 -3
  523. package/templates/starter/src/services/locator/locator-service.ts +3 -1
  524. package/templates/starter/src/services/locator/locator-sync-utils.test.ts +1 -4
  525. package/templates/starter/src/services/module/module-service.ts +1 -4
  526. package/templates/starter/src/services/report/report-service.test.ts +70 -6
  527. package/templates/starter/src/services/report/report-service.ts +52 -9
  528. package/templates/starter/src/services/shared/errors.ts +2 -4
  529. package/templates/starter/src/services/template-step/template-step-service.ts +3 -1
  530. package/templates/starter/src/services/template-step-group/template-step-group-service.ts +3 -1
  531. package/templates/starter/src/services/test-case/test-case-service.ts +0 -5
  532. package/templates/starter/src/services/test-run/test-run-service.test.ts +13 -6
  533. package/templates/starter/src/services/test-run/test-run-service.ts +53 -8
  534. package/templates/starter/src/services/test-suite/test-suite-service.test.ts +1 -5
  535. package/templates/starter/src/services/test-suite/test-suite-service.ts +2 -4
  536. package/templates/starter/src/types/form/actionHandler.ts +1 -5
  537. package/templates/starter/tsconfig.json +8 -8
  538. package/dist/cli.e2e.test.d.ts +0 -2
  539. package/dist/cli.e2e.test.d.ts.map +0 -1
  540. package/dist/cli.e2e.test.js +0 -73
  541. package/dist/cli.e2e.test.js.map +0 -1
  542. package/dist/config.test.d.ts +0 -2
  543. package/dist/config.test.d.ts.map +0 -1
  544. package/dist/config.test.js +0 -65
  545. package/dist/config.test.js.map +0 -1
  546. package/dist/copy-template.test.d.ts +0 -2
  547. package/dist/copy-template.test.d.ts.map +0 -1
  548. package/dist/copy-template.test.js +0 -71
  549. package/dist/copy-template.test.js.map +0 -1
  550. package/dist/download-repo.test.d.ts +0 -2
  551. package/dist/download-repo.test.d.ts.map +0 -1
  552. package/dist/download-repo.test.js +0 -14
  553. package/dist/download-repo.test.js.map +0 -1
  554. package/dist/install.test.d.ts +0 -2
  555. package/dist/install.test.d.ts.map +0 -1
  556. package/dist/install.test.js +0 -119
  557. package/dist/install.test.js.map +0 -1
  558. package/dist/prompts.test.d.ts +0 -2
  559. package/dist/prompts.test.d.ts.map +0 -1
  560. package/dist/prompts.test.js +0 -58
  561. package/dist/prompts.test.js.map +0 -1
  562. package/templates/default/next-env.d.ts +0 -6
  563. package/templates/default/packages/locator-picker-companion/dist/cli.d.ts +0 -1
  564. package/templates/default/packages/locator-picker-companion/dist/cli.js +0 -302
  565. package/templates/default/packages/locator-picker-companion/dist/index.d.ts +0 -3
  566. package/templates/default/packages/locator-picker-companion/dist/index.js +0 -3
  567. package/templates/default/packages/locator-picker-companion/dist/injected-picker-script.d.ts +0 -1
  568. package/templates/default/packages/locator-picker-companion/dist/injected-picker-script.js +0 -615
  569. package/templates/default/packages/locator-picker-companion/dist/launcher.d.ts +0 -11
  570. package/templates/default/packages/locator-picker-companion/dist/launcher.js +0 -59
  571. package/templates/default/packages/locator-picker-companion/dist/selector-generator.d.ts +0 -3
  572. package/templates/default/packages/locator-picker-companion/dist/selector-generator.js +0 -257
  573. package/templates/default/packages/locator-picker-companion/dist/session-file.d.ts +0 -22
  574. package/templates/default/packages/locator-picker-companion/dist/session-file.js +0 -150
  575. package/templates/default/packages/locator-picker-companion/dist/types.d.ts +0 -31
  576. package/templates/default/packages/locator-picker-companion/dist/types.js +0 -1
  577. package/templates/default/prisma/dev.db +0 -0
@@ -1,55 +1,55 @@
1
- -- RedefineTables
2
- PRAGMA defer_foreign_keys=ON;
3
- PRAGMA foreign_keys=OFF;
4
- CREATE TABLE "new_ReportHook" (
5
- "id" TEXT NOT NULL PRIMARY KEY,
6
- "reportScenarioId" TEXT NOT NULL,
7
- "keyword" TEXT NOT NULL,
8
- "status" TEXT NOT NULL,
9
- "duration" TEXT NOT NULL,
10
- "errorMessage" TEXT,
11
- "errorTrace" TEXT,
12
- "hidden" BOOLEAN NOT NULL DEFAULT false,
13
- "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
14
- "updatedAt" DATETIME NOT NULL,
15
- CONSTRAINT "ReportHook_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE CASCADE ON UPDATE CASCADE
16
- );
17
- INSERT INTO "new_ReportHook" ("createdAt", "duration", "errorMessage", "errorTrace", "hidden", "id", "keyword", "reportScenarioId", "status", "updatedAt") SELECT "createdAt", CAST("duration" AS TEXT), "errorMessage", "errorTrace", "hidden", "id", "keyword", "reportScenarioId", "status", "updatedAt" FROM "ReportHook";
18
- DROP TABLE "ReportHook";
19
- ALTER TABLE "new_ReportHook" RENAME TO "ReportHook";
20
- CREATE TABLE "new_ReportStep" (
21
- "id" TEXT NOT NULL PRIMARY KEY,
22
- "reportScenarioId" TEXT NOT NULL,
23
- "keyword" TEXT NOT NULL,
24
- "line" INTEGER,
25
- "name" TEXT NOT NULL,
26
- "matchLocation" TEXT,
27
- "status" TEXT NOT NULL,
28
- "duration" TEXT NOT NULL,
29
- "errorMessage" TEXT,
30
- "errorTrace" TEXT,
31
- "hidden" BOOLEAN NOT NULL DEFAULT false,
32
- "order" INTEGER NOT NULL,
33
- "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
34
- "updatedAt" DATETIME NOT NULL,
35
- CONSTRAINT "ReportStep_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE CASCADE ON UPDATE CASCADE
36
- );
37
- INSERT INTO "new_ReportStep" ("createdAt", "duration", "errorMessage", "errorTrace", "hidden", "id", "keyword", "line", "matchLocation", "name", "order", "reportScenarioId", "status", "updatedAt") SELECT "createdAt", CAST("duration" AS TEXT), "errorMessage", "errorTrace", "hidden", "id", "keyword", "line", "matchLocation", "name", "order", "reportScenarioId", "status", "updatedAt" FROM "ReportStep";
38
- DROP TABLE "ReportStep";
39
- ALTER TABLE "new_ReportStep" RENAME TO "ReportStep";
40
- CREATE TABLE "new_ReportTestCase" (
41
- "id" TEXT NOT NULL PRIMARY KEY,
42
- "reportId" TEXT NOT NULL,
43
- "testCaseId" TEXT NOT NULL,
44
- "testRunTestCaseId" TEXT NOT NULL,
45
- "reportScenarioId" TEXT,
46
- "duration" TEXT NOT NULL,
47
- CONSTRAINT "ReportTestCase_testRunTestCaseId_fkey" FOREIGN KEY ("testRunTestCaseId") REFERENCES "TestRunTestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
48
- CONSTRAINT "ReportTestCase_reportId_fkey" FOREIGN KEY ("reportId") REFERENCES "Report" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
49
- CONSTRAINT "ReportTestCase_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE SET NULL ON UPDATE CASCADE
50
- );
51
- INSERT INTO "new_ReportTestCase" ("duration", "id", "reportId", "reportScenarioId", "testCaseId", "testRunTestCaseId") SELECT CAST("duration" AS TEXT), "id", "reportId", "reportScenarioId", "testCaseId", "testRunTestCaseId" FROM "ReportTestCase";
52
- DROP TABLE "ReportTestCase";
53
- ALTER TABLE "new_ReportTestCase" RENAME TO "ReportTestCase";
54
- PRAGMA foreign_keys=ON;
55
- PRAGMA defer_foreign_keys=OFF;
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_ReportHook" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "reportScenarioId" TEXT NOT NULL,
7
+ "keyword" TEXT NOT NULL,
8
+ "status" TEXT NOT NULL,
9
+ "duration" TEXT NOT NULL,
10
+ "errorMessage" TEXT,
11
+ "errorTrace" TEXT,
12
+ "hidden" BOOLEAN NOT NULL DEFAULT false,
13
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
14
+ "updatedAt" DATETIME NOT NULL,
15
+ CONSTRAINT "ReportHook_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE CASCADE ON UPDATE CASCADE
16
+ );
17
+ INSERT INTO "new_ReportHook" ("createdAt", "duration", "errorMessage", "errorTrace", "hidden", "id", "keyword", "reportScenarioId", "status", "updatedAt") SELECT "createdAt", CAST("duration" AS TEXT), "errorMessage", "errorTrace", "hidden", "id", "keyword", "reportScenarioId", "status", "updatedAt" FROM "ReportHook";
18
+ DROP TABLE "ReportHook";
19
+ ALTER TABLE "new_ReportHook" RENAME TO "ReportHook";
20
+ CREATE TABLE "new_ReportStep" (
21
+ "id" TEXT NOT NULL PRIMARY KEY,
22
+ "reportScenarioId" TEXT NOT NULL,
23
+ "keyword" TEXT NOT NULL,
24
+ "line" INTEGER,
25
+ "name" TEXT NOT NULL,
26
+ "matchLocation" TEXT,
27
+ "status" TEXT NOT NULL,
28
+ "duration" TEXT NOT NULL,
29
+ "errorMessage" TEXT,
30
+ "errorTrace" TEXT,
31
+ "hidden" BOOLEAN NOT NULL DEFAULT false,
32
+ "order" INTEGER NOT NULL,
33
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
34
+ "updatedAt" DATETIME NOT NULL,
35
+ CONSTRAINT "ReportStep_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE CASCADE ON UPDATE CASCADE
36
+ );
37
+ INSERT INTO "new_ReportStep" ("createdAt", "duration", "errorMessage", "errorTrace", "hidden", "id", "keyword", "line", "matchLocation", "name", "order", "reportScenarioId", "status", "updatedAt") SELECT "createdAt", CAST("duration" AS TEXT), "errorMessage", "errorTrace", "hidden", "id", "keyword", "line", "matchLocation", "name", "order", "reportScenarioId", "status", "updatedAt" FROM "ReportStep";
38
+ DROP TABLE "ReportStep";
39
+ ALTER TABLE "new_ReportStep" RENAME TO "ReportStep";
40
+ CREATE TABLE "new_ReportTestCase" (
41
+ "id" TEXT NOT NULL PRIMARY KEY,
42
+ "reportId" TEXT NOT NULL,
43
+ "testCaseId" TEXT NOT NULL,
44
+ "testRunTestCaseId" TEXT NOT NULL,
45
+ "reportScenarioId" TEXT,
46
+ "duration" TEXT NOT NULL,
47
+ CONSTRAINT "ReportTestCase_testRunTestCaseId_fkey" FOREIGN KEY ("testRunTestCaseId") REFERENCES "TestRunTestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
48
+ CONSTRAINT "ReportTestCase_reportId_fkey" FOREIGN KEY ("reportId") REFERENCES "Report" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
49
+ CONSTRAINT "ReportTestCase_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE SET NULL ON UPDATE CASCADE
50
+ );
51
+ INSERT INTO "new_ReportTestCase" ("duration", "id", "reportId", "reportScenarioId", "testCaseId", "testRunTestCaseId") SELECT CAST("duration" AS TEXT), "id", "reportId", "reportScenarioId", "testCaseId", "testRunTestCaseId" FROM "ReportTestCase";
52
+ DROP TABLE "ReportTestCase";
53
+ ALTER TABLE "new_ReportTestCase" RENAME TO "ReportTestCase";
54
+ PRAGMA foreign_keys=ON;
55
+ PRAGMA defer_foreign_keys=OFF;
@@ -1,27 +1,27 @@
1
- -- RedefineTables
2
- PRAGMA defer_foreign_keys=ON;
3
- PRAGMA foreign_keys=OFF;
4
- CREATE TABLE "new_TestRun" (
5
- "id" TEXT NOT NULL PRIMARY KEY,
6
- "name" TEXT NOT NULL,
7
- "runId" TEXT NOT NULL,
8
- "startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
9
- "completedAt" DATETIME,
10
- "status" TEXT NOT NULL DEFAULT 'QUEUED',
11
- "result" TEXT NOT NULL DEFAULT 'PENDING',
12
- "updatedAt" DATETIME NOT NULL,
13
- "environmentId" TEXT NOT NULL,
14
- "testWorkersCount" INTEGER DEFAULT 1,
15
- "browserEngine" TEXT NOT NULL DEFAULT 'CHROMIUM',
16
- "logPath" TEXT,
17
- "reportPath" TEXT,
18
- CONSTRAINT "TestRun_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "Environment" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
19
- );
20
- INSERT INTO "new_TestRun" ("browserEngine", "completedAt", "environmentId", "id", "logPath", "name", "reportPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt") SELECT "browserEngine", "completedAt", "environmentId", "id", "logPath", "name", "reportPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt" FROM "TestRun";
21
- DROP TABLE "TestRun";
22
- ALTER TABLE "new_TestRun" RENAME TO "TestRun";
23
- CREATE UNIQUE INDEX "TestRun_name_key" ON "TestRun"("name");
24
- CREATE UNIQUE INDEX "TestRun_runId_key" ON "TestRun"("runId");
25
- PRAGMA foreign_keys=ON;
26
- PRAGMA defer_foreign_keys=OFF;
27
-
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_TestRun" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "name" TEXT NOT NULL,
7
+ "runId" TEXT NOT NULL,
8
+ "startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
9
+ "completedAt" DATETIME,
10
+ "status" TEXT NOT NULL DEFAULT 'QUEUED',
11
+ "result" TEXT NOT NULL DEFAULT 'PENDING',
12
+ "updatedAt" DATETIME NOT NULL,
13
+ "environmentId" TEXT NOT NULL,
14
+ "testWorkersCount" INTEGER DEFAULT 1,
15
+ "browserEngine" TEXT NOT NULL DEFAULT 'CHROMIUM',
16
+ "logPath" TEXT,
17
+ "reportPath" TEXT,
18
+ CONSTRAINT "TestRun_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "Environment" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
19
+ );
20
+ INSERT INTO "new_TestRun" ("browserEngine", "completedAt", "environmentId", "id", "logPath", "name", "reportPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt") SELECT "browserEngine", "completedAt", "environmentId", "id", "logPath", "name", "reportPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt" FROM "TestRun";
21
+ DROP TABLE "TestRun";
22
+ ALTER TABLE "new_TestRun" RENAME TO "TestRun";
23
+ CREATE UNIQUE INDEX "TestRun_name_key" ON "TestRun"("name");
24
+ CREATE UNIQUE INDEX "TestRun_runId_key" ON "TestRun"("runId");
25
+ PRAGMA foreign_keys=ON;
26
+ PRAGMA defer_foreign_keys=OFF;
27
+
@@ -1,59 +1,59 @@
1
- -- CreateTable
2
- CREATE TABLE "TestCaseMetrics" (
3
- "id" TEXT NOT NULL PRIMARY KEY,
4
- "testCaseId" TEXT NOT NULL,
5
- "isRepeatedlyFailing" BOOLEAN NOT NULL DEFAULT false,
6
- "isFlaky" BOOLEAN NOT NULL DEFAULT false,
7
- "consecutiveFailures" INTEGER NOT NULL DEFAULT 0,
8
- "failureRate" REAL NOT NULL DEFAULT 0,
9
- "totalRecentRuns" INTEGER NOT NULL DEFAULT 0,
10
- "failedRecentRuns" INTEGER NOT NULL DEFAULT 0,
11
- "lastExecutedAt" DATETIME,
12
- "lastFailedAt" DATETIME,
13
- "lastPassedAt" DATETIME,
14
- "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
15
- "updatedAt" DATETIME NOT NULL,
16
- CONSTRAINT "TestCaseMetrics_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE
17
- );
18
-
19
- -- CreateTable
20
- CREATE TABLE "TestSuiteMetrics" (
21
- "id" TEXT NOT NULL PRIMARY KEY,
22
- "testSuiteId" TEXT NOT NULL,
23
- "lastExecutedAt" DATETIME,
24
- "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
25
- "updatedAt" DATETIME NOT NULL,
26
- CONSTRAINT "TestSuiteMetrics_testSuiteId_fkey" FOREIGN KEY ("testSuiteId") REFERENCES "TestSuite" ("id") ON DELETE CASCADE ON UPDATE CASCADE
27
- );
28
-
29
- -- CreateTable
30
- CREATE TABLE "DashboardMetrics" (
31
- "id" TEXT NOT NULL PRIMARY KEY,
32
- "failedRecentRunsCount" INTEGER NOT NULL DEFAULT 0,
33
- "repeatedlyFailingTestsCount" INTEGER NOT NULL DEFAULT 0,
34
- "flakyTestsCount" INTEGER NOT NULL DEFAULT 0,
35
- "suitesNotExecutedRecentlyCount" INTEGER NOT NULL DEFAULT 0,
36
- "lastUpdatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
37
- "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
38
- );
39
-
40
- -- CreateIndex
41
- CREATE UNIQUE INDEX "TestCaseMetrics_testCaseId_key" ON "TestCaseMetrics"("testCaseId");
42
-
43
- -- CreateIndex
44
- CREATE INDEX "TestCaseMetrics_isRepeatedlyFailing_idx" ON "TestCaseMetrics"("isRepeatedlyFailing");
45
-
46
- -- CreateIndex
47
- CREATE INDEX "TestCaseMetrics_isFlaky_idx" ON "TestCaseMetrics"("isFlaky");
48
-
49
- -- CreateIndex
50
- CREATE UNIQUE INDEX "TestSuiteMetrics_testSuiteId_key" ON "TestSuiteMetrics"("testSuiteId");
51
-
52
- -- CreateIndex
53
- CREATE INDEX "TestSuiteMetrics_lastExecutedAt_idx" ON "TestSuiteMetrics"("lastExecutedAt");
54
-
55
- -- CreateIndex
56
- CREATE INDEX "TestRun_completedAt_idx" ON "TestRun"("completedAt");
57
-
58
- -- CreateIndex
59
- CREATE INDEX "TestRun_result_idx" ON "TestRun"("result");
1
+ -- CreateTable
2
+ CREATE TABLE "TestCaseMetrics" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "testCaseId" TEXT NOT NULL,
5
+ "isRepeatedlyFailing" BOOLEAN NOT NULL DEFAULT false,
6
+ "isFlaky" BOOLEAN NOT NULL DEFAULT false,
7
+ "consecutiveFailures" INTEGER NOT NULL DEFAULT 0,
8
+ "failureRate" REAL NOT NULL DEFAULT 0,
9
+ "totalRecentRuns" INTEGER NOT NULL DEFAULT 0,
10
+ "failedRecentRuns" INTEGER NOT NULL DEFAULT 0,
11
+ "lastExecutedAt" DATETIME,
12
+ "lastFailedAt" DATETIME,
13
+ "lastPassedAt" DATETIME,
14
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
15
+ "updatedAt" DATETIME NOT NULL,
16
+ CONSTRAINT "TestCaseMetrics_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE
17
+ );
18
+
19
+ -- CreateTable
20
+ CREATE TABLE "TestSuiteMetrics" (
21
+ "id" TEXT NOT NULL PRIMARY KEY,
22
+ "testSuiteId" TEXT NOT NULL,
23
+ "lastExecutedAt" DATETIME,
24
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
25
+ "updatedAt" DATETIME NOT NULL,
26
+ CONSTRAINT "TestSuiteMetrics_testSuiteId_fkey" FOREIGN KEY ("testSuiteId") REFERENCES "TestSuite" ("id") ON DELETE CASCADE ON UPDATE CASCADE
27
+ );
28
+
29
+ -- CreateTable
30
+ CREATE TABLE "DashboardMetrics" (
31
+ "id" TEXT NOT NULL PRIMARY KEY,
32
+ "failedRecentRunsCount" INTEGER NOT NULL DEFAULT 0,
33
+ "repeatedlyFailingTestsCount" INTEGER NOT NULL DEFAULT 0,
34
+ "flakyTestsCount" INTEGER NOT NULL DEFAULT 0,
35
+ "suitesNotExecutedRecentlyCount" INTEGER NOT NULL DEFAULT 0,
36
+ "lastUpdatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
37
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
38
+ );
39
+
40
+ -- CreateIndex
41
+ CREATE UNIQUE INDEX "TestCaseMetrics_testCaseId_key" ON "TestCaseMetrics"("testCaseId");
42
+
43
+ -- CreateIndex
44
+ CREATE INDEX "TestCaseMetrics_isRepeatedlyFailing_idx" ON "TestCaseMetrics"("isRepeatedlyFailing");
45
+
46
+ -- CreateIndex
47
+ CREATE INDEX "TestCaseMetrics_isFlaky_idx" ON "TestCaseMetrics"("isFlaky");
48
+
49
+ -- CreateIndex
50
+ CREATE UNIQUE INDEX "TestSuiteMetrics_testSuiteId_key" ON "TestSuiteMetrics"("testSuiteId");
51
+
52
+ -- CreateIndex
53
+ CREATE INDEX "TestSuiteMetrics_lastExecutedAt_idx" ON "TestSuiteMetrics"("lastExecutedAt");
54
+
55
+ -- CreateIndex
56
+ CREATE INDEX "TestRun_completedAt_idx" ON "TestRun"("completedAt");
57
+
58
+ -- CreateIndex
59
+ CREATE INDEX "TestRun_result_idx" ON "TestRun"("result");
@@ -1,34 +1,34 @@
1
- -- RedefineTables
2
- PRAGMA defer_foreign_keys=ON;
3
- PRAGMA foreign_keys=OFF;
4
- CREATE TABLE "new_TemplateTestCaseStepParameter" (
5
- "id" TEXT NOT NULL PRIMARY KEY,
6
- "name" TEXT NOT NULL,
7
- "defaultValue" TEXT NOT NULL,
8
- "order" INTEGER NOT NULL,
9
- "testCaseStepId" TEXT NOT NULL,
10
- "locatorId" TEXT,
11
- "type" TEXT NOT NULL,
12
- "defaultLocatorId" TEXT,
13
- CONSTRAINT "TemplateTestCaseStepParameter_defaultLocatorId_fkey" FOREIGN KEY ("defaultLocatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
14
- CONSTRAINT "TemplateTestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TemplateTestCaseStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
15
- );
16
- INSERT INTO "new_TemplateTestCaseStepParameter" ("defaultLocatorId", "defaultValue", "id", "locatorId", "name", "order", "testCaseStepId", "type") SELECT "defaultLocatorId", "defaultValue", "id", "locatorId", "name", "order", "testCaseStepId", "type" FROM "TemplateTestCaseStepParameter";
17
- DROP TABLE "TemplateTestCaseStepParameter";
18
- ALTER TABLE "new_TemplateTestCaseStepParameter" RENAME TO "TemplateTestCaseStepParameter";
19
- CREATE TABLE "new_TestCaseStepParameter" (
20
- "id" TEXT NOT NULL PRIMARY KEY,
21
- "name" TEXT NOT NULL,
22
- "value" TEXT NOT NULL,
23
- "order" INTEGER NOT NULL,
24
- "testCaseStepId" TEXT NOT NULL,
25
- "locatorId" TEXT,
26
- "type" TEXT NOT NULL,
27
- CONSTRAINT "TestCaseStepParameter_locatorId_fkey" FOREIGN KEY ("locatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
28
- CONSTRAINT "TestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TestCaseStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
29
- );
30
- INSERT INTO "new_TestCaseStepParameter" ("id", "locatorId", "name", "order", "testCaseStepId", "type", "value") SELECT "id", "locatorId", "name", "order", "testCaseStepId", "type", "value" FROM "TestCaseStepParameter";
31
- DROP TABLE "TestCaseStepParameter";
32
- ALTER TABLE "new_TestCaseStepParameter" RENAME TO "TestCaseStepParameter";
33
- PRAGMA foreign_keys=ON;
34
- PRAGMA defer_foreign_keys=OFF;
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_TemplateTestCaseStepParameter" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "name" TEXT NOT NULL,
7
+ "defaultValue" TEXT NOT NULL,
8
+ "order" INTEGER NOT NULL,
9
+ "testCaseStepId" TEXT NOT NULL,
10
+ "locatorId" TEXT,
11
+ "type" TEXT NOT NULL,
12
+ "defaultLocatorId" TEXT,
13
+ CONSTRAINT "TemplateTestCaseStepParameter_defaultLocatorId_fkey" FOREIGN KEY ("defaultLocatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
14
+ CONSTRAINT "TemplateTestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TemplateTestCaseStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
15
+ );
16
+ INSERT INTO "new_TemplateTestCaseStepParameter" ("defaultLocatorId", "defaultValue", "id", "locatorId", "name", "order", "testCaseStepId", "type") SELECT "defaultLocatorId", "defaultValue", "id", "locatorId", "name", "order", "testCaseStepId", "type" FROM "TemplateTestCaseStepParameter";
17
+ DROP TABLE "TemplateTestCaseStepParameter";
18
+ ALTER TABLE "new_TemplateTestCaseStepParameter" RENAME TO "TemplateTestCaseStepParameter";
19
+ CREATE TABLE "new_TestCaseStepParameter" (
20
+ "id" TEXT NOT NULL PRIMARY KEY,
21
+ "name" TEXT NOT NULL,
22
+ "value" TEXT NOT NULL,
23
+ "order" INTEGER NOT NULL,
24
+ "testCaseStepId" TEXT NOT NULL,
25
+ "locatorId" TEXT,
26
+ "type" TEXT NOT NULL,
27
+ CONSTRAINT "TestCaseStepParameter_locatorId_fkey" FOREIGN KEY ("locatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
28
+ CONSTRAINT "TestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TestCaseStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
29
+ );
30
+ INSERT INTO "new_TestCaseStepParameter" ("id", "locatorId", "name", "order", "testCaseStepId", "type", "value") SELECT "id", "locatorId", "name", "order", "testCaseStepId", "type", "value" FROM "TestCaseStepParameter";
31
+ DROP TABLE "TestCaseStepParameter";
32
+ ALTER TABLE "new_TestCaseStepParameter" RENAME TO "TestCaseStepParameter";
33
+ PRAGMA foreign_keys=ON;
34
+ PRAGMA defer_foreign_keys=OFF;
@@ -1 +1 @@
1
- ALTER TABLE "ReportStep" ADD COLUMN "screenshotPath" TEXT;
1
+ ALTER TABLE "ReportStep" ADD COLUMN "screenshotPath" TEXT;
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Applies repo line-ending policy to the local clone so `git diff` matches
4
+ * .gitattributes / EditorConfig / Prettier (LF everywhere).
5
+ *
6
+ * Usage:
7
+ * node scripts/configure-git-line-endings.mjs
8
+ * node scripts/configure-git-line-endings.mjs --renormalize
9
+ */
10
+
11
+ import { execSync } from 'node:child_process'
12
+ import { existsSync } from 'node:fs'
13
+ import { dirname, join } from 'node:path'
14
+ import { fileURLToPath } from 'node:url'
15
+
16
+ const scriptDir = dirname(fileURLToPath(import.meta.url))
17
+ const repoRoot = join(scriptDir, '..')
18
+ const gitConfigInclude = '../.gitconfig.appraise'
19
+ const quiet = process.argv.includes('--quiet')
20
+
21
+ function log(message) {
22
+ if (!quiet) {
23
+ console.log(message)
24
+ }
25
+ }
26
+
27
+ function runGit(args, options = {}) {
28
+ const stdio = options.stdio ?? ['pipe', 'pipe', 'pipe']
29
+ const result = execSync(['git', ...args].join(' '), {
30
+ cwd: repoRoot,
31
+ encoding: 'utf8',
32
+ stdio,
33
+ ...options,
34
+ })
35
+
36
+ if (stdio !== 'inherit' && result != null) {
37
+ return String(result).trim()
38
+ }
39
+
40
+ return ''
41
+ }
42
+
43
+ function isGitRepository() {
44
+ return existsSync(join(repoRoot, '.git'))
45
+ }
46
+
47
+ function getLocalConfig(key) {
48
+ try {
49
+ return runGit(['config', '--local', '--get', key])
50
+ } catch {
51
+ return null
52
+ }
53
+ }
54
+
55
+ function setLocalConfig(key, value) {
56
+ runGit(['config', '--local', key, value], { stdio: 'inherit' })
57
+ }
58
+
59
+ function ensureGitInclude() {
60
+ const current = getLocalConfig('include.path')
61
+ if (current === gitConfigInclude) {
62
+ return false
63
+ }
64
+
65
+ setLocalConfig('include.path', gitConfigInclude)
66
+ log(`Linked local git config: include.path = ${gitConfigInclude}`)
67
+ return true
68
+ }
69
+
70
+ function main() {
71
+ if (!isGitRepository()) {
72
+ log('Not a git repository; skipping git line-ending configuration.')
73
+ return
74
+ }
75
+
76
+ const updatedInclude = ensureGitInclude()
77
+
78
+ if (!updatedInclude && !quiet) {
79
+ log('Git line-ending settings already use .gitconfig.appraise (LF, autocrlf=false).')
80
+ }
81
+
82
+ if (process.argv.includes('--renormalize')) {
83
+ log('Staging removals so renormalize does not fail on deleted tracked paths...')
84
+ runGit(['add', '-u'], { stdio: 'inherit' })
85
+ log('Renormalizing line endings in the index (may update staged content)...')
86
+ runGit(['add', '--renormalize', '.'], { stdio: 'inherit' })
87
+ log('Renormalize complete. Review with: git status')
88
+ }
89
+ }
90
+
91
+ main()
@@ -65,7 +65,11 @@ function getRunArgs(packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun', scriptName:
65
65
  return ['run', scriptName]
66
66
  }
67
67
 
68
- async function runScript(projectRoot: string, packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun', scriptName: string): Promise<void> {
68
+ async function runScript(
69
+ projectRoot: string,
70
+ packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun',
71
+ scriptName: string,
72
+ ): Promise<void> {
69
73
  await new Promise<void>((resolve, reject) => {
70
74
  const child = spawn(packageManager, getRunArgs(packageManager, scriptName), {
71
75
  cwd: projectRoot,
@@ -79,8 +79,8 @@ describe('sameResolvedParameters', () => {
79
79
  })
80
80
 
81
81
  it('returns false for different values', () => {
82
- expect(
83
- sameResolvedParameters(sample, [{ name: 'x', value: '2', order: 0, type: StepParameterType.NUMBER }]),
84
- ).toBe(false)
82
+ expect(sameResolvedParameters(sample, [{ name: 'x', value: '2', order: 0, type: StepParameterType.NUMBER }])).toBe(
83
+ false,
84
+ )
85
85
  })
86
86
  })
@@ -75,7 +75,11 @@ export function findMatchingTemplateStep(
75
75
  templateSteps: TemplateStepCandidate[],
76
76
  ): TemplateStepMatch | null {
77
77
  for (const templateStep of templateSteps) {
78
- const parameters = extractParametersFromGherkinStep(gherkinStep.text, templateStep.signature, templateStep.parameters)
78
+ const parameters = extractParametersFromGherkinStep(
79
+ gherkinStep.text,
80
+ templateStep.signature,
81
+ templateStep.parameters,
82
+ )
79
83
  if (parameters) {
80
84
  return {
81
85
  templateStepId: templateStep.id,
@@ -116,7 +116,7 @@ When('click {string}', async function () {})`),
116
116
  expect(result.status).toBe('installed')
117
117
  const content = await fs.readFile(path.join(workspace, 'automation/steps/actions/click.step.ts'), 'utf8')
118
118
  expect(content).toContain("import { helper } from './helper'")
119
- expect(content).toContain("// Existing note")
119
+ expect(content).toContain('// Existing note')
120
120
  expect(content).toContain("When('existing click'")
121
121
  expect(content).toContain("When('click {string}'")
122
122
  expect(content).toContain('Then')
@@ -185,7 +185,9 @@ When('click {string}', async function () {
185
185
  await Promise.resolve('new')
186
186
  })`)
187
187
 
188
- await expect(installTemplateStepPayload(payload, { projectRoot: workspace })).rejects.toThrow('Re-run with --overwrite')
188
+ await expect(installTemplateStepPayload(payload, { projectRoot: workspace })).rejects.toThrow(
189
+ 'Re-run with --overwrite',
190
+ )
189
191
 
190
192
  const overwriteResult = await installTemplateStepPayload(payload, {
191
193
  projectRoot: workspace,
@@ -33,7 +33,10 @@ type ExistingStepMatch = {
33
33
  source: string
34
34
  }
35
35
 
36
- const STEP_FILE_PATTERNS = ['automation/steps/actions/**/*.step.ts', 'automation/steps/validations/**/*.step.ts'] as const
36
+ const STEP_FILE_PATTERNS = [
37
+ 'automation/steps/actions/**/*.step.ts',
38
+ 'automation/steps/validations/**/*.step.ts',
39
+ ] as const
37
40
  const RUNTIME_IMPORT_PATH = '../../../packages/cucumber-runtime/src/index.js'
38
41
  const REQUIRED_RUNTIME_IMPORTS = [
39
42
  'When',
@@ -46,7 +49,8 @@ const REQUIRED_RUNTIME_IMPORTS = [
46
49
  'generateRandomData',
47
50
  'RandomDataType',
48
51
  ] as const
49
- const PLACEHOLDER_COMMENT = '// This file is generated automatically. Add template steps to this group to generate content.'
52
+ const PLACEHOLDER_COMMENT =
53
+ '// This file is generated automatically. Add template steps to this group to generate content.'
50
54
 
51
55
  function parseTypeScriptModule(content: string) {
52
56
  return parse(content, {
@@ -68,7 +72,13 @@ function getGroupDirectoryName(type: TemplateStepGroupType): 'actions' | 'valida
68
72
  }
69
73
 
70
74
  function getGroupFilePath(projectRoot: string, groupName: string, type: TemplateStepGroupType): string {
71
- return path.join(projectRoot, 'automation', 'steps', getGroupDirectoryName(type), `${getGroupFileName(groupName)}.step.ts`)
75
+ return path.join(
76
+ projectRoot,
77
+ 'automation',
78
+ 'steps',
79
+ getGroupDirectoryName(type),
80
+ `${getGroupFileName(groupName)}.step.ts`,
81
+ )
72
82
  }
73
83
 
74
84
  function generateGroupJSDoc(name: string, description: string | null, type: TemplateStepGroupType): string {
@@ -289,7 +299,9 @@ async function buildUpdatedGroupFileContent(
289
299
  })
290
300
  }
291
301
 
292
- const sections = [generateGroupJSDoc(payload.step.group.name, payload.step.group.description, payload.step.group.type)]
302
+ const sections = [
303
+ generateGroupJSDoc(payload.step.group.name, payload.step.group.description, payload.step.group.type),
304
+ ]
293
305
  const mergedImports = mergeImports(existingContent)
294
306
  if (mergedImports.trim()) {
295
307
  sections.push(mergedImports)
@@ -73,7 +73,7 @@ When('click {string}', async function (this: CustomWorld, elementName: SelectorN
73
73
  expect(registry.fragments).toEqual([
74
74
  {
75
75
  path: 'fragments/click/click-element.ts',
76
- content: expect.stringContaining("@name click element"),
76
+ content: expect.stringContaining('@name click element'),
77
77
  },
78
78
  ])
79
79
  expect(registry.fragments[0]?.content).toContain("When('click {string}'")
@@ -37,7 +37,10 @@ export type BuiltStepRegistry = {
37
37
  fragments: StepRegistryFragment[]
38
38
  }
39
39
 
40
- const STEP_FILE_PATTERNS = ['automation/steps/actions/**/*.step.ts', 'automation/steps/validations/**/*.step.ts'] as const
40
+ const STEP_FILE_PATTERNS = [
41
+ 'automation/steps/actions/**/*.step.ts',
42
+ 'automation/steps/validations/**/*.step.ts',
43
+ ] as const
41
44
 
42
45
  export function slugifyRegistryName(value: string): string {
43
46
  return value
@@ -4,16 +4,14 @@ import path from 'node:path'
4
4
 
5
5
  const scriptDir = path.dirname(fileURLToPath(import.meta.url))
6
6
  const repoRoot = path.resolve(scriptDir, '..')
7
- const fallowBin = path.join(repoRoot, 'node_modules', '.bin', 'fallow')
7
+ // Invoke the package CLI via node — Windows cannot spawn extensionless .bin shims directly.
8
+ const fallowCli = path.join(repoRoot, 'node_modules', 'fallow', 'bin', 'fallow')
9
+ const fallowArgs = ['audit', '--base', 'HEAD', '--format', 'json', '--quiet', '--explain', '--fail-on-issues']
8
10
 
9
11
  const env = { ...process.env }
10
12
  delete env.GIT_INDEX_FILE
11
13
 
12
- const result = spawnSync(
13
- fallowBin,
14
- ['audit', '--base', 'HEAD', '--format', 'json', '--quiet', '--explain', '--fail-on-issues'],
15
- { cwd: repoRoot, env, stdio: 'inherit' },
16
- )
14
+ const result = spawnSync(process.execPath, [fallowCli, ...fallowArgs], { cwd: repoRoot, env, stdio: 'inherit' })
17
15
 
18
16
  if (result.error) {
19
17
  console.error(result.error)
File without changes