create-appraise 0.1.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 (330) hide show
  1. package/README.md +52 -0
  2. package/package.json +63 -0
  3. package/templates/default/.env.example +2 -0
  4. package/templates/default/README.md +51 -0
  5. package/templates/default/appraise.config.json +4 -0
  6. package/templates/default/components.json +24 -0
  7. package/templates/default/eslint.config.mjs +15 -0
  8. package/templates/default/next-env.d.ts +6 -0
  9. package/templates/default/next.config.ts +7 -0
  10. package/templates/default/package-lock.json +14321 -0
  11. package/templates/default/package.json +124 -0
  12. package/templates/default/postcss.config.mjs +8 -0
  13. package/templates/default/prisma/migrations/20251026202316_migrate_back_to_sqlite/migration.sql +257 -0
  14. package/templates/default/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -0
  15. package/templates/default/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -0
  16. package/templates/default/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -0
  17. package/templates/default/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -0
  18. package/templates/default/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -0
  19. package/templates/default/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -0
  20. package/templates/default/prisma/migrations/20251130190737_add_trace_path_to_test_run_test_case/migration.sql +2 -0
  21. package/templates/default/prisma/migrations/20251213074835_add_log_path_to_test_run/migration.sql +2 -0
  22. package/templates/default/prisma/migrations/20251213183952_add_name_property_for_the_test_run_entities/migration.sql +30 -0
  23. package/templates/default/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -0
  24. package/templates/default/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -0
  25. package/templates/default/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -0
  26. package/templates/default/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -0
  27. package/templates/default/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -0
  28. package/templates/default/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -0
  29. package/templates/default/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -0
  30. package/templates/default/prisma/migrations/migration_lock.toml +3 -0
  31. package/templates/default/prisma/schema.prisma +554 -0
  32. package/templates/default/public/favicon.ico +0 -0
  33. package/templates/default/public/file.svg +1 -0
  34. package/templates/default/public/globe.svg +1 -0
  35. package/templates/default/public/next.svg +1 -0
  36. package/templates/default/public/vercel.svg +1 -0
  37. package/templates/default/public/window.svg +1 -0
  38. package/templates/default/scripts/regenerate-features.ts +94 -0
  39. package/templates/default/scripts/setup-env.ts +19 -0
  40. package/templates/default/scripts/sync-all.ts +341 -0
  41. package/templates/default/scripts/sync-environments.ts +323 -0
  42. package/templates/default/scripts/sync-locator-groups.ts +413 -0
  43. package/templates/default/scripts/sync-locators.ts +402 -0
  44. package/templates/default/scripts/sync-modules.ts +349 -0
  45. package/templates/default/scripts/sync-tags.ts +292 -0
  46. package/templates/default/scripts/sync-template-step-groups.ts +399 -0
  47. package/templates/default/scripts/sync-template-steps.ts +806 -0
  48. package/templates/default/scripts/sync-test-cases.ts +905 -0
  49. package/templates/default/scripts/sync-test-suites.ts +411 -0
  50. package/templates/default/src/actions/conflict/conflict.action.ts +33 -0
  51. package/templates/default/src/actions/dashboard/dashboard-actions.ts +241 -0
  52. package/templates/default/src/actions/environments/environment-actions.ts +205 -0
  53. package/templates/default/src/actions/locator/locator-actions.ts +547 -0
  54. package/templates/default/src/actions/locator-groups/locator-group-actions.ts +344 -0
  55. package/templates/default/src/actions/modules/module-actions.ts +133 -0
  56. package/templates/default/src/actions/reports/report-actions.ts +614 -0
  57. package/templates/default/src/actions/review/review-actions.ts +147 -0
  58. package/templates/default/src/actions/tags/tag-actions.ts +104 -0
  59. package/templates/default/src/actions/template-step/template-step-actions.ts +332 -0
  60. package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +278 -0
  61. package/templates/default/src/actions/template-test-case/template-test-case-actions.ts +238 -0
  62. package/templates/default/src/actions/test-case/test-case-actions.ts +419 -0
  63. package/templates/default/src/actions/test-run/test-run-actions.ts +1185 -0
  64. package/templates/default/src/actions/test-suite/test-suite-actions.ts +253 -0
  65. package/templates/default/src/actions/user/user-actions.ts +13 -0
  66. package/templates/default/src/app/(base)/environments/create/page.tsx +28 -0
  67. package/templates/default/src/app/(base)/environments/environment-form.tsx +219 -0
  68. package/templates/default/src/app/(base)/environments/environment-table-columns.tsx +96 -0
  69. package/templates/default/src/app/(base)/environments/environment-table.tsx +24 -0
  70. package/templates/default/src/app/(base)/environments/modify/[id]/page.tsx +46 -0
  71. package/templates/default/src/app/(base)/environments/page.tsx +59 -0
  72. package/templates/default/src/app/(base)/layout.tsx +10 -0
  73. package/templates/default/src/app/(base)/locator-groups/create/page.tsx +44 -0
  74. package/templates/default/src/app/(base)/locator-groups/locator-group-form.tsx +215 -0
  75. package/templates/default/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -0
  76. package/templates/default/src/app/(base)/locator-groups/locator-group-table.tsx +28 -0
  77. package/templates/default/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -0
  78. package/templates/default/src/app/(base)/locator-groups/page.tsx +61 -0
  79. package/templates/default/src/app/(base)/locators/create/page.tsx +38 -0
  80. package/templates/default/src/app/(base)/locators/locator-form.tsx +163 -0
  81. package/templates/default/src/app/(base)/locators/locator-table-columns.tsx +90 -0
  82. package/templates/default/src/app/(base)/locators/locator-table.tsx +28 -0
  83. package/templates/default/src/app/(base)/locators/modify/[id]/page.tsx +45 -0
  84. package/templates/default/src/app/(base)/locators/page.tsx +65 -0
  85. package/templates/default/src/app/(base)/locators/sync-locators-button.tsx +66 -0
  86. package/templates/default/src/app/(base)/modules/create/page.tsx +34 -0
  87. package/templates/default/src/app/(base)/modules/modify/[id]/page.tsx +46 -0
  88. package/templates/default/src/app/(base)/modules/module-form.tsx +126 -0
  89. package/templates/default/src/app/(base)/modules/module-table-columns.tsx +85 -0
  90. package/templates/default/src/app/(base)/modules/module-table.tsx +24 -0
  91. package/templates/default/src/app/(base)/modules/page.tsx +59 -0
  92. package/templates/default/src/app/(base)/reports/[id]/page.tsx +517 -0
  93. package/templates/default/src/app/(base)/reports/duration-chart.tsx +33 -0
  94. package/templates/default/src/app/(base)/reports/feature-chart.tsx +78 -0
  95. package/templates/default/src/app/(base)/reports/overview-chart.tsx +46 -0
  96. package/templates/default/src/app/(base)/reports/page.tsx +98 -0
  97. package/templates/default/src/app/(base)/reports/report-metric-card.tsx +16 -0
  98. package/templates/default/src/app/(base)/reports/report-table-columns.tsx +189 -0
  99. package/templates/default/src/app/(base)/reports/report-table.tsx +72 -0
  100. package/templates/default/src/app/(base)/reports/report-view-table-columns.tsx +131 -0
  101. package/templates/default/src/app/(base)/reports/report-view-table.tsx +82 -0
  102. package/templates/default/src/app/(base)/reports/test-cases/page.tsx +42 -0
  103. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +115 -0
  104. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -0
  105. package/templates/default/src/app/(base)/reports/test-suites/page.tsx +42 -0
  106. package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +79 -0
  107. package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +27 -0
  108. package/templates/default/src/app/(base)/reports/view-logs-button.tsx +60 -0
  109. package/templates/default/src/app/(base)/reviews/create/page.tsx +26 -0
  110. package/templates/default/src/app/(base)/reviews/created-reviews-table.tsx +15 -0
  111. package/templates/default/src/app/(base)/reviews/modify/[id]/page.tsx +26 -0
  112. package/templates/default/src/app/(base)/reviews/page.tsx +26 -0
  113. package/templates/default/src/app/(base)/reviews/review/[id]/page.tsx +26 -0
  114. package/templates/default/src/app/(base)/reviews/review-form.tsx +11 -0
  115. package/templates/default/src/app/(base)/reviews/review-table-by-creator-columns.tsx +9 -0
  116. package/templates/default/src/app/(base)/reviews/review-table-by-reviewer-columns.tsx +9 -0
  117. package/templates/default/src/app/(base)/reviews/reviewer-reviews-table.tsx +15 -0
  118. package/templates/default/src/app/(base)/tags/create/page.tsx +39 -0
  119. package/templates/default/src/app/(base)/tags/modify/[id]/page.tsx +50 -0
  120. package/templates/default/src/app/(base)/tags/page.tsx +58 -0
  121. package/templates/default/src/app/(base)/tags/tag-form.tsx +147 -0
  122. package/templates/default/src/app/(base)/tags/tag-table-columns.tsx +63 -0
  123. package/templates/default/src/app/(base)/tags/tag-table.tsx +29 -0
  124. package/templates/default/src/app/(base)/template-step-groups/create/page.tsx +28 -0
  125. package/templates/default/src/app/(base)/template-step-groups/modify/[id]/page.tsx +45 -0
  126. package/templates/default/src/app/(base)/template-step-groups/page.tsx +60 -0
  127. package/templates/default/src/app/(base)/template-step-groups/template-step-group-form.tsx +167 -0
  128. package/templates/default/src/app/(base)/template-step-groups/template-step-group-table-columns.tsx +89 -0
  129. package/templates/default/src/app/(base)/template-step-groups/template-step-group-table.tsx +32 -0
  130. package/templates/default/src/app/(base)/template-steps/create/page.tsx +37 -0
  131. package/templates/default/src/app/(base)/template-steps/modify/[id]/page.tsx +49 -0
  132. package/templates/default/src/app/(base)/template-steps/page.tsx +59 -0
  133. package/templates/default/src/app/(base)/template-steps/paramChip.tsx +213 -0
  134. package/templates/default/src/app/(base)/template-steps/template-step-form.tsx +384 -0
  135. package/templates/default/src/app/(base)/template-steps/template-step-table-columns.tsx +158 -0
  136. package/templates/default/src/app/(base)/template-steps/template-step-table.tsx +24 -0
  137. package/templates/default/src/app/(base)/template-test-cases/create/page.tsx +56 -0
  138. package/templates/default/src/app/(base)/template-test-cases/modify/[id]/page.tsx +89 -0
  139. package/templates/default/src/app/(base)/template-test-cases/page.tsx +58 -0
  140. package/templates/default/src/app/(base)/template-test-cases/template-test-case-flow.tsx +84 -0
  141. package/templates/default/src/app/(base)/template-test-cases/template-test-case-form.tsx +262 -0
  142. package/templates/default/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -0
  143. package/templates/default/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -0
  144. package/templates/default/src/app/(base)/test-cases/create/page.tsx +76 -0
  145. package/templates/default/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx +96 -0
  146. package/templates/default/src/app/(base)/test-cases/create-from-template/page.tsx +38 -0
  147. package/templates/default/src/app/(base)/test-cases/create-from-template/template-selection-form.tsx +73 -0
  148. package/templates/default/src/app/(base)/test-cases/modify/[id]/page.tsx +106 -0
  149. package/templates/default/src/app/(base)/test-cases/page.tsx +60 -0
  150. package/templates/default/src/app/(base)/test-cases/test-case-flow.tsx +82 -0
  151. package/templates/default/src/app/(base)/test-cases/test-case-form.tsx +395 -0
  152. package/templates/default/src/app/(base)/test-cases/test-case-table-columns.tsx +90 -0
  153. package/templates/default/src/app/(base)/test-cases/test-case-table.tsx +35 -0
  154. package/templates/default/src/app/(base)/test-runs/[id]/page.tsx +56 -0
  155. package/templates/default/src/app/(base)/test-runs/create/page.tsx +47 -0
  156. package/templates/default/src/app/(base)/test-runs/page.tsx +60 -0
  157. package/templates/default/src/app/(base)/test-runs/test-run-form.tsx +512 -0
  158. package/templates/default/src/app/(base)/test-runs/test-run-table-columns.tsx +229 -0
  159. package/templates/default/src/app/(base)/test-runs/test-run-table.tsx +127 -0
  160. package/templates/default/src/app/(base)/test-suites/create/page.tsx +45 -0
  161. package/templates/default/src/app/(base)/test-suites/modify/[id]/page.tsx +55 -0
  162. package/templates/default/src/app/(base)/test-suites/page.tsx +82 -0
  163. package/templates/default/src/app/(base)/test-suites/test-suite-form.tsx +269 -0
  164. package/templates/default/src/app/(base)/test-suites/test-suite-table-columns.tsx +97 -0
  165. package/templates/default/src/app/(base)/test-suites/test-suite-table.tsx +29 -0
  166. package/templates/default/src/app/(dashboard-components)/app-drawer.tsx +187 -0
  167. package/templates/default/src/app/(dashboard-components)/data-card-grid.tsx +13 -0
  168. package/templates/default/src/app/(dashboard-components)/data-card.tsx +27 -0
  169. package/templates/default/src/app/(dashboard-components)/execution-health-panel.tsx +57 -0
  170. package/templates/default/src/app/(dashboard-components)/ongoing-test-runs-card.tsx +87 -0
  171. package/templates/default/src/app/(dashboard-components)/quick-actions-drawer.tsx +45 -0
  172. package/templates/default/src/app/api/test-runs/[runId]/download/route.ts +133 -0
  173. package/templates/default/src/app/api/test-runs/[runId]/logs/route.ts +420 -0
  174. package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +146 -0
  175. package/templates/default/src/app/favicon.ico +0 -0
  176. package/templates/default/src/app/globals.css +147 -0
  177. package/templates/default/src/app/layout.tsx +171 -0
  178. package/templates/default/src/app/page.tsx +64 -0
  179. package/templates/default/src/assets/icons/empty-tube.tsx +23 -0
  180. package/templates/default/src/assets/icons/tube-plus.tsx +29 -0
  181. package/templates/default/src/components/base-node.tsx +21 -0
  182. package/templates/default/src/components/chart/pie-chart.tsx +73 -0
  183. package/templates/default/src/components/data-extraction/locator-inspector.tsx +460 -0
  184. package/templates/default/src/components/data-state/empty-state.tsx +40 -0
  185. package/templates/default/src/components/data-visualization/info-card.tsx +70 -0
  186. package/templates/default/src/components/data-visualization/info-grid.tsx +22 -0
  187. package/templates/default/src/components/devtools/providers.tsx +13 -0
  188. package/templates/default/src/components/diagram/button-edge.tsx +54 -0
  189. package/templates/default/src/components/diagram/dynamic-parameters.tsx +438 -0
  190. package/templates/default/src/components/diagram/edit-header-option.tsx +36 -0
  191. package/templates/default/src/components/diagram/flow-diagram.tsx +470 -0
  192. package/templates/default/src/components/diagram/node-form.tsx +262 -0
  193. package/templates/default/src/components/diagram/options-header-node.tsx +57 -0
  194. package/templates/default/src/components/diagram/template-step-combobox.tsx +155 -0
  195. package/templates/default/src/components/form/error-message.tsx +7 -0
  196. package/templates/default/src/components/kokonutui/smooth-tab.tsx +453 -0
  197. package/templates/default/src/components/loading-skeleton/data-table/data-table-skeleton.tsx +30 -0
  198. package/templates/default/src/components/loading-skeleton/form/button-skeleton.tsx +8 -0
  199. package/templates/default/src/components/loading-skeleton/form/icon-button-skeleton.tsx +8 -0
  200. package/templates/default/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -0
  201. package/templates/default/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -0
  202. package/templates/default/src/components/logo.tsx +15 -0
  203. package/templates/default/src/components/navigation/command-badge.tsx +34 -0
  204. package/templates/default/src/components/navigation/command-chain-input.tsx +51 -0
  205. package/templates/default/src/components/navigation/entity-search-command.tsx +116 -0
  206. package/templates/default/src/components/navigation/nav-card.tsx +31 -0
  207. package/templates/default/src/components/navigation/nav-command.tsx +508 -0
  208. package/templates/default/src/components/navigation/nav-link.tsx +60 -0
  209. package/templates/default/src/components/navigation/nav-menu-card-deck.tsx +112 -0
  210. package/templates/default/src/components/node-header.tsx +159 -0
  211. package/templates/default/src/components/reports/test-case-logs-modal.tsx +253 -0
  212. package/templates/default/src/components/table/table-actions.tsx +172 -0
  213. package/templates/default/src/components/test-run/download-logs-button.tsx +99 -0
  214. package/templates/default/src/components/test-run/log-viewer.tsx +445 -0
  215. package/templates/default/src/components/test-run/test-run-details.tsx +611 -0
  216. package/templates/default/src/components/test-run/test-run-header.tsx +149 -0
  217. package/templates/default/src/components/test-run/view-report-button.tsx +102 -0
  218. package/templates/default/src/components/theme/mode-toggle.tsx +54 -0
  219. package/templates/default/src/components/theme/theme-provider.tsx +8 -0
  220. package/templates/default/src/components/typography/page-header-subtitle.tsx +7 -0
  221. package/templates/default/src/components/typography/page-header.tsx +7 -0
  222. package/templates/default/src/components/ui/alert-dialog.tsx +106 -0
  223. package/templates/default/src/components/ui/alert.tsx +43 -0
  224. package/templates/default/src/components/ui/avatar.tsx +40 -0
  225. package/templates/default/src/components/ui/badge.tsx +29 -0
  226. package/templates/default/src/components/ui/button.tsx +47 -0
  227. package/templates/default/src/components/ui/calendar.tsx +158 -0
  228. package/templates/default/src/components/ui/card.tsx +43 -0
  229. package/templates/default/src/components/ui/chart.tsx +369 -0
  230. package/templates/default/src/components/ui/checkbox.tsx +28 -0
  231. package/templates/default/src/components/ui/command.tsx +135 -0
  232. package/templates/default/src/components/ui/data-table-column-header.tsx +61 -0
  233. package/templates/default/src/components/ui/data-table-pagination.tsx +87 -0
  234. package/templates/default/src/components/ui/data-table-view-options.tsx +50 -0
  235. package/templates/default/src/components/ui/data-table.tsx +267 -0
  236. package/templates/default/src/components/ui/dialog.tsx +97 -0
  237. package/templates/default/src/components/ui/dropdown-menu.tsx +182 -0
  238. package/templates/default/src/components/ui/empty.tsx +104 -0
  239. package/templates/default/src/components/ui/input.tsx +22 -0
  240. package/templates/default/src/components/ui/kbd.tsx +28 -0
  241. package/templates/default/src/components/ui/label.tsx +19 -0
  242. package/templates/default/src/components/ui/loading.tsx +12 -0
  243. package/templates/default/src/components/ui/multi-select-with-preview.tsx +116 -0
  244. package/templates/default/src/components/ui/multi-select.tsx +142 -0
  245. package/templates/default/src/components/ui/navigation-menu.tsx +120 -0
  246. package/templates/default/src/components/ui/popover.tsx +33 -0
  247. package/templates/default/src/components/ui/progress.tsx +25 -0
  248. package/templates/default/src/components/ui/radio-group.tsx +44 -0
  249. package/templates/default/src/components/ui/scroll-area.tsx +40 -0
  250. package/templates/default/src/components/ui/select.tsx +144 -0
  251. package/templates/default/src/components/ui/separator.tsx +22 -0
  252. package/templates/default/src/components/ui/skeleton.tsx +7 -0
  253. package/templates/default/src/components/ui/table.tsx +76 -0
  254. package/templates/default/src/components/ui/tabs.tsx +55 -0
  255. package/templates/default/src/components/ui/textarea.tsx +21 -0
  256. package/templates/default/src/components/ui/toast.tsx +113 -0
  257. package/templates/default/src/components/ui/toaster.tsx +26 -0
  258. package/templates/default/src/components/ui/tooltip.tsx +32 -0
  259. package/templates/default/src/components/user-prompt/delete-prompt.tsx +87 -0
  260. package/templates/default/src/config/db-config.ts +10 -0
  261. package/templates/default/src/constants/form-opts/diagram/node-form.ts +30 -0
  262. package/templates/default/src/constants/form-opts/environment-form-opts.ts +24 -0
  263. package/templates/default/src/constants/form-opts/locator-form-opts.ts +20 -0
  264. package/templates/default/src/constants/form-opts/locator-group-form-opts.ts +28 -0
  265. package/templates/default/src/constants/form-opts/module-form-opts.ts +21 -0
  266. package/templates/default/src/constants/form-opts/review-form-opts.ts +23 -0
  267. package/templates/default/src/constants/form-opts/tag-form-opts.ts +42 -0
  268. package/templates/default/src/constants/form-opts/template-selection-form-opts.ts +16 -0
  269. package/templates/default/src/constants/form-opts/template-step-group-form-opts.ts +24 -0
  270. package/templates/default/src/constants/form-opts/template-test-case-form-opts.ts +39 -0
  271. package/templates/default/src/constants/form-opts/template-test-step-form-opts.ts +36 -0
  272. package/templates/default/src/constants/form-opts/test-case-form-opts.ts +43 -0
  273. package/templates/default/src/constants/form-opts/test-run-form-opts.ts +31 -0
  274. package/templates/default/src/constants/form-opts/test-suite-form-opts.ts +24 -0
  275. package/templates/default/src/hooks/use-toast.ts +187 -0
  276. package/templates/default/src/lib/bidirectional-sync.ts +432 -0
  277. package/templates/default/src/lib/database-sync.ts +531 -0
  278. package/templates/default/src/lib/environment-file-utils.ts +221 -0
  279. package/templates/default/src/lib/feature-file-generator.ts +411 -0
  280. package/templates/default/src/lib/gherkin-parser.ts +259 -0
  281. package/templates/default/src/lib/locator-group-file-utils.ts +370 -0
  282. package/templates/default/src/lib/metrics/metric-calculator.ts +613 -0
  283. package/templates/default/src/lib/module-hierarchy-builder.ts +205 -0
  284. package/templates/default/src/lib/path-helpers/module-path.ts +71 -0
  285. package/templates/default/src/lib/test-case-utils.ts +6 -0
  286. package/templates/default/src/lib/test-run/log-formatter.ts +83 -0
  287. package/templates/default/src/lib/test-run/process-manager.ts +191 -0
  288. package/templates/default/src/lib/test-run/report-parser.ts +316 -0
  289. package/templates/default/src/lib/test-run/test-run-executor.ts +144 -0
  290. package/templates/default/src/lib/test-run/winston-logger.ts +95 -0
  291. package/templates/default/src/lib/transformers/gherkin-converter.ts +42 -0
  292. package/templates/default/src/lib/transformers/key-to-icon-transformer.tsx +95 -0
  293. package/templates/default/src/lib/transformers/template-test-case-converter.ts +160 -0
  294. package/templates/default/src/lib/utils/node-param-validation.ts +81 -0
  295. package/templates/default/src/lib/utils/template-step-file-generator.ts +167 -0
  296. package/templates/default/src/lib/utils/template-step-file-manager-intelligent.ts +723 -0
  297. package/templates/default/src/lib/utils/template-step-file-manager.ts +166 -0
  298. package/templates/default/src/lib/utils.ts +31 -0
  299. package/templates/default/src/tests/config/environments/environments.json +14 -0
  300. package/templates/default/src/tests/config/executor/world.ts +41 -0
  301. package/templates/default/src/tests/executor.ts +80 -0
  302. package/templates/default/src/tests/hooks/hooks.ts +99 -0
  303. package/templates/default/src/tests/mapping/locator-map.json +1 -0
  304. package/templates/default/src/tests/steps/actions/click.step.ts +62 -0
  305. package/templates/default/src/tests/steps/actions/hover.step.ts +31 -0
  306. package/templates/default/src/tests/steps/actions/input.step.ts +149 -0
  307. package/templates/default/src/tests/steps/actions/navigation.step.ts +72 -0
  308. package/templates/default/src/tests/steps/actions/random_data.step.ts +146 -0
  309. package/templates/default/src/tests/steps/actions/store.step.ts +90 -0
  310. package/templates/default/src/tests/steps/actions/wait.step.ts +107 -0
  311. package/templates/default/src/tests/steps/validations/active_state_assertion.step.ts +34 -0
  312. package/templates/default/src/tests/steps/validations/navigation_assertion.step.ts +23 -0
  313. package/templates/default/src/tests/steps/validations/text_assertion.step.ts +111 -0
  314. package/templates/default/src/tests/steps/validations/visibility_assertion.step.ts +30 -0
  315. package/templates/default/src/tests/support/parameter-types.ts +12 -0
  316. package/templates/default/src/tests/utils/cache.util.ts +260 -0
  317. package/templates/default/src/tests/utils/cli.util.ts +177 -0
  318. package/templates/default/src/tests/utils/environment.util.ts +65 -0
  319. package/templates/default/src/tests/utils/locator.util.ts +248 -0
  320. package/templates/default/src/tests/utils/random-data.util.ts +45 -0
  321. package/templates/default/src/tests/utils/spawner.util.ts +617 -0
  322. package/templates/default/src/types/diagram/diagram.ts +34 -0
  323. package/templates/default/src/types/diagram/template-step.ts +11 -0
  324. package/templates/default/src/types/executor/browser.type.ts +1 -0
  325. package/templates/default/src/types/form/actionHandler.ts +6 -0
  326. package/templates/default/src/types/locator/locator.type.ts +11 -0
  327. package/templates/default/src/types/step/step.type.ts +1 -0
  328. package/templates/default/src/types/table/data-table.ts +6 -0
  329. package/templates/default/tailwind.config.ts +62 -0
  330. package/templates/default/tsconfig.json +28 -0
@@ -0,0 +1,124 @@
1
+ {
2
+ "name": "appraise",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "next dev",
8
+ "build": "next build",
9
+ "start": "next start",
10
+ "lint": "eslint .",
11
+ "install-playwright": "npx playwright install && npx playwright install-deps",
12
+ "install-dependencies": "npm install --legacy-peer-deps",
13
+ "setup-env": "npx tsx scripts/setup-env.ts",
14
+ "migrate-db": "npx prisma migrate dev",
15
+ "setup": "npm run install-dependencies && npm run setup-env && npm run migrate-db && npm run install-playwright",
16
+ "sync-features": "npx tsx scripts/regenerate-features.ts",
17
+ "sync-features:dry-run": "npx tsx scripts/regenerate-features.ts --dry-run",
18
+ "sync-locator-groups": "npx tsx scripts/sync-locator-groups.ts",
19
+ "sync-environments": "npx tsx scripts/sync-environments.ts",
20
+ "sync-locators": "npx tsx scripts/sync-locators.ts",
21
+ "sync-modules": "npx tsx scripts/sync-modules.ts",
22
+ "sync-tags": "npx tsx scripts/sync-tags.ts",
23
+ "sync-test-suites": "npx tsx scripts/sync-test-suites.ts",
24
+ "sync-test-cases": "npx tsx scripts/sync-test-cases.ts",
25
+ "sync-template-step-groups": "npx tsx scripts/sync-template-step-groups.ts",
26
+ "sync-template-steps": "npx tsx scripts/sync-template-steps.ts",
27
+ "sync-all": "npx tsx scripts/sync-all.ts",
28
+ "sync-template": "node scripts/sync-template-from-base.mjs",
29
+ "test": "cucumber-js",
30
+ "appraise:setup": "npm run setup",
31
+ "appraise:sync": "npm run sync-all"
32
+ },
33
+ "dependencies": {
34
+ "@babel/parser": "^7.27.0",
35
+ "@babel/types": "^7.27.0",
36
+ "@faker-js/faker": "^10.2.0",
37
+ "@prisma/client": "^6.2.1",
38
+ "@radix-ui/react-alert-dialog": "^1.1.14",
39
+ "@radix-ui/react-avatar": "^1.1.10",
40
+ "@radix-ui/react-checkbox": "^1.3.2",
41
+ "@radix-ui/react-dialog": "^1.1.14",
42
+ "@radix-ui/react-dropdown-menu": "^2.1.15",
43
+ "@radix-ui/react-label": "^2.1.7",
44
+ "@radix-ui/react-navigation-menu": "^1.2.13",
45
+ "@radix-ui/react-popover": "^1.1.14",
46
+ "@radix-ui/react-progress": "^1.1.8",
47
+ "@radix-ui/react-radio-group": "^1.3.8",
48
+ "@radix-ui/react-scroll-area": "^1.2.9",
49
+ "@radix-ui/react-select": "^2.2.5",
50
+ "@radix-ui/react-separator": "^1.1.7",
51
+ "@radix-ui/react-slot": "^1.2.3",
52
+ "@radix-ui/react-tabs": "^1.1.12",
53
+ "@radix-ui/react-toast": "^1.2.14",
54
+ "@radix-ui/react-tooltip": "^1.2.8",
55
+ "@tanstack/react-devtools": "^0.8.1",
56
+ "@tanstack/react-form": "^1.25.0",
57
+ "@tanstack/react-form-devtools": "^0.2.1",
58
+ "@tanstack/react-table": "^8.20.6",
59
+ "@types/archiver": "^7.0.0",
60
+ "@uiw/codemirror-extensions-langs": "^4.23.10",
61
+ "@uiw/codemirror-theme-github": "^4.23.10",
62
+ "@uiw/react-codemirror": "^4.23.10",
63
+ "@xyflow/react": "^12.4.4",
64
+ "archiver": "^7.0.1",
65
+ "better-sqlite3": "^12.4.1",
66
+ "class-variance-authority": "^0.7.1",
67
+ "clsx": "^2.1.1",
68
+ "cmdk": "^1.1.1",
69
+ "date-fns": "^4.1.0",
70
+ "lucide-react": "^0.473.0",
71
+ "motion": "^12.23.26",
72
+ "next": "^16.0.7",
73
+ "next-themes": "^0.4.4",
74
+ "react": "^19.2.1",
75
+ "react-day-picker": "^9.7.0",
76
+ "react-dom": "^19.2.1",
77
+ "recharts": "^2.15.4",
78
+ "tailwind-merge": "^2.6.0",
79
+ "tailwindcss-animate": "^1.0.7",
80
+ "winston": "^3.19.0",
81
+ "zod": "^3.24.1"
82
+ },
83
+ "devDependencies": {
84
+ "@babel/traverse": "^7.28.5",
85
+ "@cucumber/cucumber": "^12.6.0",
86
+ "@cucumber/pretty-formatter": "^2.4.0",
87
+ "@cucumber/tag-expressions": "^8.0.0",
88
+ "@eslint/eslintrc": "^3",
89
+ "@types/babel__traverse": "^7.28.0",
90
+ "@types/better-sqlite3": "^7.6.13",
91
+ "@types/chai": "^5.2.2",
92
+ "@types/chai-as-promised": "^8.0.2",
93
+ "@types/fs-extra": "^11.0.4",
94
+ "@types/node": "^20.17.16",
95
+ "@types/react": "^19.2.7",
96
+ "@types/react-dom": "^19.2.3",
97
+ "baseline-browser-mapping": "^2.9.3",
98
+ "chai": "^5.2.1",
99
+ "chai-as-promised": "^8.0.1",
100
+ "commander": "^14.0.2",
101
+ "dotenv": "^17.2.3",
102
+ "eslint": "^9",
103
+ "eslint-config-next": "^16.0.7",
104
+ "execa": "^9.6.0",
105
+ "glob": "^11.0.3",
106
+ "globals": "^16.4.0",
107
+ "jiti": "^2.6.1",
108
+ "playwright": "^1.58.0",
109
+ "postcss": "^8",
110
+ "prettier": "^3.6.2",
111
+ "prettier-plugin-tailwindcss": "^0.6.14",
112
+ "prisma": "^6.2.1",
113
+ "rimraf": "^6.1.2",
114
+ "tailwindcss": "^3.4.1",
115
+ "ts-node": "^10.9.2",
116
+ "tsx": "^4.20.4",
117
+ "typescript": "^5.7.3"
118
+ },
119
+ "overrides": {
120
+ "react-is": "^19.2.1",
121
+ "@types/react": "^19.2.7",
122
+ "@types/react-dom": "^19.2.3"
123
+ }
124
+ }
@@ -0,0 +1,8 @@
1
+ /** @type {import('postcss-load-config').Config} */
2
+ const config = {
3
+ plugins: {
4
+ tailwindcss: {},
5
+ },
6
+ };
7
+
8
+ export default config;
@@ -0,0 +1,257 @@
1
+ -- CreateTable
2
+ CREATE TABLE "TestSuite" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "name" TEXT NOT NULL,
5
+ "description" TEXT,
6
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
7
+ "updatedAt" DATETIME NOT NULL,
8
+ "moduleId" TEXT NOT NULL,
9
+ CONSTRAINT "TestSuite_moduleId_fkey" FOREIGN KEY ("moduleId") REFERENCES "Module" ("id") ON DELETE CASCADE ON UPDATE CASCADE
10
+ );
11
+
12
+ -- CreateTable
13
+ CREATE TABLE "Review" (
14
+ "id" TEXT NOT NULL PRIMARY KEY,
15
+ "testCaseId" TEXT NOT NULL,
16
+ "reviewerId" TEXT NOT NULL,
17
+ "status" TEXT NOT NULL,
18
+ "comments" TEXT,
19
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
20
+ "updatedAt" DATETIME NOT NULL,
21
+ CONSTRAINT "Review_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
22
+ );
23
+
24
+ -- CreateTable
25
+ CREATE TABLE "LinkedJiraTicket" (
26
+ "id" TEXT NOT NULL PRIMARY KEY,
27
+ "testCaseId" TEXT NOT NULL,
28
+ "jiraTicketId" TEXT NOT NULL,
29
+ "jiraTicketUrl" TEXT NOT NULL,
30
+ "jiraStatus" TEXT,
31
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
32
+ "updatedAt" DATETIME NOT NULL,
33
+ CONSTRAINT "LinkedJiraTicket_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
34
+ );
35
+
36
+ -- CreateTable
37
+ CREATE TABLE "TemplateStep" (
38
+ "id" TEXT NOT NULL PRIMARY KEY,
39
+ "name" TEXT NOT NULL,
40
+ "description" TEXT,
41
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
42
+ "updatedAt" DATETIME NOT NULL,
43
+ "signature" TEXT NOT NULL,
44
+ "functionDefinition" TEXT,
45
+ "type" TEXT NOT NULL,
46
+ "icon" TEXT NOT NULL,
47
+ "templateStepGroupId" TEXT NOT NULL,
48
+ CONSTRAINT "TemplateStep_templateStepGroupId_fkey" FOREIGN KEY ("templateStepGroupId") REFERENCES "TemplateStepGroup" ("id") ON DELETE CASCADE ON UPDATE CASCADE
49
+ );
50
+
51
+ -- CreateTable
52
+ CREATE TABLE "TemplateStepParameter" (
53
+ "id" TEXT NOT NULL PRIMARY KEY,
54
+ "name" TEXT NOT NULL,
55
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
56
+ "updatedAt" DATETIME NOT NULL,
57
+ "templateStepId" TEXT NOT NULL,
58
+ "order" INTEGER NOT NULL,
59
+ "type" TEXT NOT NULL,
60
+ CONSTRAINT "TemplateStepParameter_templateStepId_fkey" FOREIGN KEY ("templateStepId") REFERENCES "TemplateStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
61
+ );
62
+
63
+ -- CreateTable
64
+ CREATE TABLE "TemplateStepGroup" (
65
+ "id" TEXT NOT NULL PRIMARY KEY,
66
+ "name" TEXT NOT NULL,
67
+ "description" TEXT,
68
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
69
+ "updatedAt" DATETIME NOT NULL
70
+ );
71
+
72
+ -- CreateTable
73
+ CREATE TABLE "TestCase" (
74
+ "id" TEXT NOT NULL PRIMARY KEY,
75
+ "title" TEXT NOT NULL,
76
+ "description" TEXT NOT NULL,
77
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
78
+ "updatedAt" DATETIME NOT NULL
79
+ );
80
+
81
+ -- CreateTable
82
+ CREATE TABLE "TestCaseStep" (
83
+ "id" TEXT NOT NULL PRIMARY KEY,
84
+ "testCaseId" TEXT NOT NULL,
85
+ "order" INTEGER NOT NULL,
86
+ "gherkinStep" TEXT NOT NULL,
87
+ "icon" TEXT NOT NULL,
88
+ "label" TEXT NOT NULL,
89
+ "templateStepId" TEXT NOT NULL,
90
+ CONSTRAINT "TestCaseStep_templateStepId_fkey" FOREIGN KEY ("templateStepId") REFERENCES "TemplateStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
91
+ CONSTRAINT "TestCaseStep_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
92
+ );
93
+
94
+ -- CreateTable
95
+ CREATE TABLE "TemplateTestCase" (
96
+ "id" TEXT NOT NULL PRIMARY KEY,
97
+ "name" TEXT NOT NULL,
98
+ "description" TEXT,
99
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
100
+ "updatedAt" DATETIME NOT NULL
101
+ );
102
+
103
+ -- CreateTable
104
+ CREATE TABLE "TemplateTestCaseStep" (
105
+ "id" TEXT NOT NULL PRIMARY KEY,
106
+ "order" INTEGER NOT NULL,
107
+ "gherkinStep" TEXT NOT NULL,
108
+ "icon" TEXT NOT NULL,
109
+ "label" TEXT NOT NULL,
110
+ "templateTestCaseId" TEXT NOT NULL,
111
+ "templateStepId" TEXT NOT NULL,
112
+ CONSTRAINT "TemplateTestCaseStep_templateStepId_fkey" FOREIGN KEY ("templateStepId") REFERENCES "TemplateStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
113
+ CONSTRAINT "TemplateTestCaseStep_templateTestCaseId_fkey" FOREIGN KEY ("templateTestCaseId") REFERENCES "TemplateTestCase" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
114
+ );
115
+
116
+ -- CreateTable
117
+ CREATE TABLE "TemplateTestCaseStepParameter" (
118
+ "id" TEXT NOT NULL PRIMARY KEY,
119
+ "name" TEXT NOT NULL,
120
+ "defaultValue" TEXT NOT NULL,
121
+ "order" INTEGER NOT NULL,
122
+ "testCaseStepId" TEXT NOT NULL,
123
+ "locatorId" TEXT,
124
+ "type" TEXT NOT NULL,
125
+ "defaultLocatorId" TEXT,
126
+ CONSTRAINT "TemplateTestCaseStepParameter_defaultLocatorId_fkey" FOREIGN KEY ("defaultLocatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
127
+ CONSTRAINT "TemplateTestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TemplateTestCaseStep" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
128
+ );
129
+
130
+ -- CreateTable
131
+ CREATE TABLE "TestCaseStepParameter" (
132
+ "id" TEXT NOT NULL PRIMARY KEY,
133
+ "name" TEXT NOT NULL,
134
+ "value" TEXT NOT NULL,
135
+ "order" INTEGER NOT NULL,
136
+ "testCaseStepId" TEXT NOT NULL,
137
+ "locatorId" TEXT,
138
+ "type" TEXT NOT NULL,
139
+ CONSTRAINT "TestCaseStepParameter_locatorId_fkey" FOREIGN KEY ("locatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
140
+ CONSTRAINT "TestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TestCaseStep" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
141
+ );
142
+
143
+ -- CreateTable
144
+ CREATE TABLE "Locator" (
145
+ "id" TEXT NOT NULL PRIMARY KEY,
146
+ "name" TEXT NOT NULL,
147
+ "value" TEXT NOT NULL,
148
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
149
+ "updatedAt" DATETIME NOT NULL,
150
+ "locatorGroupId" TEXT,
151
+ CONSTRAINT "Locator_locatorGroupId_fkey" FOREIGN KEY ("locatorGroupId") REFERENCES "LocatorGroup" ("id") ON DELETE CASCADE ON UPDATE CASCADE
152
+ );
153
+
154
+ -- CreateTable
155
+ CREATE TABLE "LocatorGroup" (
156
+ "id" TEXT NOT NULL PRIMARY KEY,
157
+ "name" TEXT NOT NULL,
158
+ "route" TEXT NOT NULL DEFAULT '/',
159
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
160
+ "updatedAt" DATETIME NOT NULL,
161
+ "moduleId" TEXT NOT NULL,
162
+ CONSTRAINT "LocatorGroup_moduleId_fkey" FOREIGN KEY ("moduleId") REFERENCES "Module" ("id") ON DELETE CASCADE ON UPDATE CASCADE
163
+ );
164
+
165
+ -- CreateTable
166
+ CREATE TABLE "Module" (
167
+ "id" TEXT NOT NULL PRIMARY KEY,
168
+ "name" TEXT NOT NULL,
169
+ "parentId" TEXT,
170
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
171
+ "updatedAt" DATETIME NOT NULL,
172
+ CONSTRAINT "Module_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "Module" ("id") ON DELETE CASCADE ON UPDATE CASCADE
173
+ );
174
+
175
+ -- CreateTable
176
+ CREATE TABLE "TestRunTestCase" (
177
+ "id" TEXT NOT NULL PRIMARY KEY,
178
+ "testRunId" TEXT NOT NULL,
179
+ "testCaseId" TEXT NOT NULL,
180
+ "status" TEXT NOT NULL DEFAULT 'PENDING',
181
+ "result" TEXT NOT NULL DEFAULT 'UNTESTED',
182
+ CONSTRAINT "TestRunTestCase_testRunId_fkey" FOREIGN KEY ("testRunId") REFERENCES "TestRun" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
183
+ CONSTRAINT "TestRunTestCase_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
184
+ );
185
+
186
+ -- CreateTable
187
+ CREATE TABLE "TestRun" (
188
+ "id" TEXT NOT NULL PRIMARY KEY,
189
+ "runId" TEXT NOT NULL,
190
+ "startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
191
+ "completedAt" DATETIME,
192
+ "status" TEXT NOT NULL DEFAULT 'QUEUED',
193
+ "result" TEXT NOT NULL DEFAULT 'PENDING',
194
+ "updatedAt" DATETIME NOT NULL,
195
+ "environmentId" TEXT NOT NULL,
196
+ "testWorkersCount" INTEGER DEFAULT 1,
197
+ "browserEngine" TEXT NOT NULL DEFAULT 'CHROMIUM',
198
+ CONSTRAINT "TestRun_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "Environment" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
199
+ );
200
+
201
+ -- CreateTable
202
+ CREATE TABLE "Environment" (
203
+ "id" TEXT NOT NULL PRIMARY KEY,
204
+ "name" TEXT NOT NULL,
205
+ "baseUrl" TEXT NOT NULL,
206
+ "apiBaseUrl" TEXT,
207
+ "username" TEXT,
208
+ "password" TEXT,
209
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
210
+ "updatedAt" DATETIME NOT NULL
211
+ );
212
+
213
+ -- CreateTable
214
+ CREATE TABLE "Tag" (
215
+ "id" TEXT NOT NULL PRIMARY KEY,
216
+ "name" TEXT NOT NULL,
217
+ "tagExpression" TEXT NOT NULL,
218
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
219
+ "updatedAt" DATETIME NOT NULL
220
+ );
221
+
222
+ -- CreateTable
223
+ CREATE TABLE "_TestSuiteTestCases" (
224
+ "A" TEXT NOT NULL,
225
+ "B" TEXT NOT NULL,
226
+ CONSTRAINT "_TestSuiteTestCases_A_fkey" FOREIGN KEY ("A") REFERENCES "TestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
227
+ CONSTRAINT "_TestSuiteTestCases_B_fkey" FOREIGN KEY ("B") REFERENCES "TestSuite" ("id") ON DELETE CASCADE ON UPDATE CASCADE
228
+ );
229
+
230
+ -- CreateTable
231
+ CREATE TABLE "_TagToTestRun" (
232
+ "A" TEXT NOT NULL,
233
+ "B" TEXT NOT NULL,
234
+ CONSTRAINT "_TagToTestRun_A_fkey" FOREIGN KEY ("A") REFERENCES "Tag" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
235
+ CONSTRAINT "_TagToTestRun_B_fkey" FOREIGN KEY ("B") REFERENCES "TestRun" ("id") ON DELETE CASCADE ON UPDATE CASCADE
236
+ );
237
+
238
+ -- CreateIndex
239
+ CREATE UNIQUE INDEX "LocatorGroup_name_key" ON "LocatorGroup"("name");
240
+
241
+ -- CreateIndex
242
+ CREATE UNIQUE INDEX "TestRun_runId_key" ON "TestRun"("runId");
243
+
244
+ -- CreateIndex
245
+ CREATE UNIQUE INDEX "Environment_name_key" ON "Environment"("name");
246
+
247
+ -- CreateIndex
248
+ CREATE UNIQUE INDEX "_TestSuiteTestCases_AB_unique" ON "_TestSuiteTestCases"("A", "B");
249
+
250
+ -- CreateIndex
251
+ CREATE INDEX "_TestSuiteTestCases_B_index" ON "_TestSuiteTestCases"("B");
252
+
253
+ -- CreateIndex
254
+ CREATE UNIQUE INDEX "_TagToTestRun_AB_unique" ON "_TagToTestRun"("A", "B");
255
+
256
+ -- CreateIndex
257
+ CREATE INDEX "_TagToTestRun_B_index" ON "_TagToTestRun"("B");
@@ -0,0 +1,16 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_TemplateStepGroup" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "name" TEXT NOT NULL,
7
+ "description" TEXT,
8
+ "type" TEXT NOT NULL DEFAULT 'ACTION',
9
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
+ "updatedAt" DATETIME NOT NULL
11
+ );
12
+ INSERT INTO "new_TemplateStepGroup" ("createdAt", "description", "id", "name", "updatedAt") SELECT "createdAt", "description", "id", "name", "updatedAt" FROM "TemplateStepGroup";
13
+ DROP TABLE "TemplateStepGroup";
14
+ ALTER TABLE "new_TemplateStepGroup" RENAME TO "TemplateStepGroup";
15
+ PRAGMA foreign_keys=ON;
16
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,27 @@
1
+ -- CreateTable
2
+ CREATE TABLE "_TagToTestSuite" (
3
+ "A" TEXT NOT NULL,
4
+ "B" TEXT NOT NULL,
5
+ CONSTRAINT "_TagToTestSuite_A_fkey" FOREIGN KEY ("A") REFERENCES "Tag" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
6
+ CONSTRAINT "_TagToTestSuite_B_fkey" FOREIGN KEY ("B") REFERENCES "TestSuite" ("id") ON DELETE CASCADE ON UPDATE CASCADE
7
+ );
8
+
9
+ -- CreateTable
10
+ CREATE TABLE "_TagToTestCase" (
11
+ "A" TEXT NOT NULL,
12
+ "B" TEXT NOT NULL,
13
+ CONSTRAINT "_TagToTestCase_A_fkey" FOREIGN KEY ("A") REFERENCES "Tag" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
14
+ CONSTRAINT "_TagToTestCase_B_fkey" FOREIGN KEY ("B") REFERENCES "TestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE
15
+ );
16
+
17
+ -- CreateIndex
18
+ CREATE UNIQUE INDEX "_TagToTestSuite_AB_unique" ON "_TagToTestSuite"("A", "B");
19
+
20
+ -- CreateIndex
21
+ CREATE INDEX "_TagToTestSuite_B_index" ON "_TagToTestSuite"("B");
22
+
23
+ -- CreateIndex
24
+ CREATE UNIQUE INDEX "_TagToTestCase_AB_unique" ON "_TagToTestCase"("A", "B");
25
+
26
+ -- CreateIndex
27
+ CREATE INDEX "_TagToTestCase_B_index" ON "_TagToTestCase"("B");
@@ -0,0 +1,17 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_TestRunTestCase" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "testRunId" TEXT NOT NULL,
7
+ "testCaseId" TEXT NOT NULL,
8
+ "status" TEXT NOT NULL DEFAULT 'PENDING',
9
+ "result" TEXT NOT NULL DEFAULT 'UNTESTED',
10
+ CONSTRAINT "TestRunTestCase_testRunId_fkey" FOREIGN KEY ("testRunId") REFERENCES "TestRun" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
11
+ CONSTRAINT "TestRunTestCase_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
12
+ );
13
+ INSERT INTO "new_TestRunTestCase" ("id", "result", "status", "testCaseId", "testRunId") SELECT "id", "result", "status", "testCaseId", "testRunId" FROM "TestRunTestCase";
14
+ DROP TABLE "TestRunTestCase";
15
+ ALTER TABLE "new_TestRunTestCase" RENAME TO "TestRunTestCase";
16
+ PRAGMA foreign_keys=ON;
17
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,12 @@
1
+ -- CreateTable
2
+ CREATE TABLE "TestRunLog" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "testRunId" TEXT NOT NULL,
5
+ "logs" TEXT NOT NULL,
6
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
7
+ "updatedAt" DATETIME NOT NULL,
8
+ CONSTRAINT "TestRunLog_testRunId_fkey" FOREIGN KEY ("testRunId") REFERENCES "TestRun" ("runId") ON DELETE CASCADE ON UPDATE CASCADE
9
+ );
10
+
11
+ -- CreateIndex
12
+ CREATE UNIQUE INDEX "TestRunLog_testRunId_key" ON "TestRunLog"("testRunId");
@@ -0,0 +1,28 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_Tag" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "name" TEXT NOT NULL,
7
+ "tagExpression" TEXT NOT NULL,
8
+ "type" TEXT NOT NULL DEFAULT 'FILTER',
9
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
+ "updatedAt" DATETIME NOT NULL
11
+ );
12
+ INSERT INTO "new_Tag" ("createdAt", "id", "name", "tagExpression", "updatedAt") SELECT "createdAt", "id", "name", "tagExpression", "updatedAt" FROM "Tag";
13
+ DROP TABLE "Tag";
14
+ ALTER TABLE "new_Tag" RENAME TO "Tag";
15
+ CREATE TABLE "new_TestRunTestCase" (
16
+ "id" TEXT NOT NULL PRIMARY KEY,
17
+ "testRunId" TEXT NOT NULL,
18
+ "testCaseId" TEXT NOT NULL,
19
+ "status" TEXT NOT NULL DEFAULT 'PENDING',
20
+ "result" TEXT NOT NULL DEFAULT 'UNTESTED',
21
+ CONSTRAINT "TestRunTestCase_testRunId_fkey" FOREIGN KEY ("testRunId") REFERENCES "TestRun" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
22
+ CONSTRAINT "TestRunTestCase_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE
23
+ );
24
+ INSERT INTO "new_TestRunTestCase" ("id", "result", "status", "testCaseId", "testRunId") SELECT "id", "result", "status", "testCaseId", "testRunId" FROM "TestRunTestCase";
25
+ DROP TABLE "TestRunTestCase";
26
+ ALTER TABLE "new_TestRunTestCase" RENAME TO "TestRunTestCase";
27
+ PRAGMA foreign_keys=ON;
28
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,12 @@
1
+ -- CreateTable
2
+ CREATE TABLE "ConflictResolution" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "entityType" TEXT NOT NULL,
5
+ "entityId" TEXT NOT NULL,
6
+ "conflictType" TEXT NOT NULL,
7
+ "conflictingEntityId" TEXT,
8
+ "resolved" BOOLEAN NOT NULL DEFAULT false,
9
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
+ "updatedAt" DATETIME NOT NULL,
11
+ CONSTRAINT "ConflictResolution_entityId_fkey" FOREIGN KEY ("entityId") REFERENCES "Locator" ("id") ON DELETE CASCADE ON UPDATE CASCADE
12
+ );
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "TestRunTestCase" ADD COLUMN "tracePath" TEXT;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "TestRun" ADD COLUMN "logPath" TEXT;
@@ -0,0 +1,30 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - Added the required column `name` to the `TestRun` table without a default value. This is not possible if the table is not empty.
5
+
6
+ */
7
+ -- RedefineTables
8
+ PRAGMA defer_foreign_keys=ON;
9
+ PRAGMA foreign_keys=OFF;
10
+ CREATE TABLE "new_TestRun" (
11
+ "id" TEXT NOT NULL PRIMARY KEY,
12
+ "name" TEXT NOT NULL,
13
+ "runId" TEXT NOT NULL,
14
+ "startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
15
+ "completedAt" DATETIME,
16
+ "status" TEXT NOT NULL DEFAULT 'QUEUED',
17
+ "result" TEXT NOT NULL DEFAULT 'PENDING',
18
+ "updatedAt" DATETIME NOT NULL,
19
+ "environmentId" TEXT NOT NULL,
20
+ "testWorkersCount" INTEGER DEFAULT 1,
21
+ "browserEngine" TEXT NOT NULL DEFAULT 'CHROMIUM',
22
+ "logPath" TEXT,
23
+ CONSTRAINT "TestRun_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "Environment" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
24
+ );
25
+ INSERT INTO "new_TestRun" ("browserEngine", "completedAt", "environmentId", "id", "logPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt") SELECT "browserEngine", "completedAt", "environmentId", "id", "logPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt" FROM "TestRun";
26
+ DROP TABLE "TestRun";
27
+ ALTER TABLE "new_TestRun" RENAME TO "TestRun";
28
+ CREATE UNIQUE INDEX "TestRun_runId_key" ON "TestRun"("runId");
29
+ PRAGMA foreign_keys=ON;
30
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,10 @@
1
+ -- CreateTable
2
+ CREATE TABLE "Report" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "name" TEXT NOT NULL,
5
+ "description" TEXT,
6
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
7
+ "updatedAt" DATETIME NOT NULL,
8
+ "testRunId" TEXT NOT NULL,
9
+ CONSTRAINT "Report_testRunId_fkey" FOREIGN KEY ("testRunId") REFERENCES "TestRun" ("id") ON DELETE CASCADE ON UPDATE CASCADE
10
+ );
@@ -0,0 +1,10 @@
1
+ -- CreateTable
2
+ CREATE TABLE "ReportTestCase" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "reportId" TEXT NOT NULL,
5
+ "testCaseId" TEXT NOT NULL,
6
+ "testRunTestCaseId" TEXT NOT NULL,
7
+ "duration" INTEGER NOT NULL,
8
+ CONSTRAINT "ReportTestCase_testRunTestCaseId_fkey" FOREIGN KEY ("testRunTestCaseId") REFERENCES "TestRunTestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
9
+ CONSTRAINT "ReportTestCase_reportId_fkey" FOREIGN KEY ("reportId") REFERENCES "Report" ("id") ON DELETE CASCADE ON UPDATE CASCADE
10
+ );