create-appraisejs 0.1.6 → 0.1.8-alpha

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 (320) hide show
  1. package/README.md +45 -45
  2. package/dist/cli.js +4 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/copy-template.d.ts +2 -1
  5. package/dist/copy-template.d.ts.map +1 -1
  6. package/dist/copy-template.js +10 -7
  7. package/dist/copy-template.js.map +1 -1
  8. package/dist/copy-template.test.js +19 -0
  9. package/dist/copy-template.test.js.map +1 -1
  10. package/package.json +69 -67
  11. package/templates/default/.vscode/settings.json +5 -0
  12. package/templates/default/appraisejs.config.json +1 -1
  13. package/templates/default/components.json +24 -24
  14. package/templates/default/cucumber.mjs +16 -0
  15. package/templates/default/eslint.config.mjs +15 -15
  16. package/templates/default/next.config.ts +13 -7
  17. package/templates/default/package-lock.json +13732 -14321
  18. package/templates/default/package.json +11 -9
  19. package/templates/default/postcss.config.mjs +8 -8
  20. package/templates/default/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -16
  21. package/templates/default/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -27
  22. package/templates/default/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -17
  23. package/templates/default/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -12
  24. package/templates/default/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -28
  25. package/templates/default/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -12
  26. package/templates/default/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -10
  27. package/templates/default/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -10
  28. package/templates/default/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -108
  29. package/templates/default/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -55
  30. package/templates/default/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -27
  31. package/templates/default/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -59
  32. package/templates/default/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -34
  33. package/templates/default/prisma/schema.prisma +554 -554
  34. package/templates/default/scripts/regenerate-features.ts +94 -94
  35. package/templates/default/scripts/setup-env.ts +19 -19
  36. package/templates/default/scripts/sync-all.ts +341 -341
  37. package/templates/default/scripts/sync-appraise-base-template.ts +52 -2
  38. package/templates/default/scripts/sync-environments.ts +323 -323
  39. package/templates/default/scripts/sync-locator-groups.ts +413 -413
  40. package/templates/default/scripts/sync-locators.ts +402 -402
  41. package/templates/default/scripts/sync-modules.ts +349 -349
  42. package/templates/default/scripts/sync-tags.ts +292 -292
  43. package/templates/default/scripts/sync-template-step-groups.ts +399 -399
  44. package/templates/default/scripts/sync-template-steps.ts +806 -806
  45. package/templates/default/scripts/sync-test-cases.ts +905 -905
  46. package/templates/default/scripts/sync-test-suites.ts +411 -411
  47. package/templates/default/src/actions/conflict/conflict.action.ts +33 -33
  48. package/templates/default/src/actions/dashboard/dashboard-actions.ts +240 -240
  49. package/templates/default/src/actions/environments/environment-actions.ts +205 -205
  50. package/templates/default/src/actions/locator/locator-actions.ts +547 -547
  51. package/templates/default/src/actions/locator-groups/locator-group-actions.ts +344 -344
  52. package/templates/default/src/actions/modules/module-actions.ts +133 -133
  53. package/templates/default/src/actions/reports/report-actions.ts +613 -613
  54. package/templates/default/src/actions/review/review-actions.ts +147 -147
  55. package/templates/default/src/actions/tags/tag-actions.ts +104 -104
  56. package/templates/default/src/actions/template-step/template-step-actions.ts +332 -332
  57. package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +278 -278
  58. package/templates/default/src/actions/template-test-case/template-test-case-actions.ts +238 -238
  59. package/templates/default/src/actions/test-case/test-case-actions.ts +419 -419
  60. package/templates/default/src/actions/test-run/test-run-actions.ts +1185 -1185
  61. package/templates/default/src/actions/test-suite/test-suite-actions.ts +253 -253
  62. package/templates/default/src/actions/user/user-actions.ts +13 -13
  63. package/templates/default/src/app/(base)/environments/create/page.tsx +28 -28
  64. package/templates/default/src/app/(base)/environments/environment-form.tsx +219 -219
  65. package/templates/default/src/app/(base)/environments/environment-table-columns.tsx +96 -96
  66. package/templates/default/src/app/(base)/environments/environment-table.tsx +24 -24
  67. package/templates/default/src/app/(base)/environments/modify/[id]/page.tsx +46 -46
  68. package/templates/default/src/app/(base)/environments/page.tsx +59 -59
  69. package/templates/default/src/app/(base)/layout.tsx +10 -10
  70. package/templates/default/src/app/(base)/locator-groups/create/page.tsx +44 -44
  71. package/templates/default/src/app/(base)/locator-groups/locator-group-form.tsx +215 -215
  72. package/templates/default/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -77
  73. package/templates/default/src/app/(base)/locator-groups/locator-group-table.tsx +28 -28
  74. package/templates/default/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -46
  75. package/templates/default/src/app/(base)/locator-groups/page.tsx +61 -61
  76. package/templates/default/src/app/(base)/locators/create/page.tsx +38 -38
  77. package/templates/default/src/app/(base)/locators/locator-form.tsx +163 -163
  78. package/templates/default/src/app/(base)/locators/locator-table-columns.tsx +73 -90
  79. package/templates/default/src/app/(base)/locators/locator-table.tsx +28 -28
  80. package/templates/default/src/app/(base)/locators/modify/[id]/page.tsx +45 -45
  81. package/templates/default/src/app/(base)/locators/page.tsx +65 -65
  82. package/templates/default/src/app/(base)/locators/sync-locators-button.tsx +66 -66
  83. package/templates/default/src/app/(base)/modules/create/page.tsx +34 -34
  84. package/templates/default/src/app/(base)/modules/modify/[id]/page.tsx +46 -46
  85. package/templates/default/src/app/(base)/modules/module-form.tsx +126 -126
  86. package/templates/default/src/app/(base)/modules/module-table-columns.tsx +85 -85
  87. package/templates/default/src/app/(base)/modules/module-table.tsx +24 -24
  88. package/templates/default/src/app/(base)/modules/page.tsx +59 -59
  89. package/templates/default/src/app/(base)/reports/[id]/page.tsx +517 -517
  90. package/templates/default/src/app/(base)/reports/duration-chart.tsx +33 -33
  91. package/templates/default/src/app/(base)/reports/feature-chart.tsx +78 -78
  92. package/templates/default/src/app/(base)/reports/overview-chart.tsx +46 -46
  93. package/templates/default/src/app/(base)/reports/page.tsx +98 -98
  94. package/templates/default/src/app/(base)/reports/report-metric-card.tsx +16 -16
  95. package/templates/default/src/app/(base)/reports/report-table-columns.tsx +189 -189
  96. package/templates/default/src/app/(base)/reports/report-table.tsx +72 -72
  97. package/templates/default/src/app/(base)/reports/report-view-table-columns.tsx +131 -131
  98. package/templates/default/src/app/(base)/reports/report-view-table.tsx +82 -82
  99. package/templates/default/src/app/(base)/reports/test-cases/page.tsx +42 -42
  100. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +115 -115
  101. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -27
  102. package/templates/default/src/app/(base)/reports/test-suites/page.tsx +42 -42
  103. package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +79 -79
  104. package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +27 -27
  105. package/templates/default/src/app/(base)/reports/view-logs-button.tsx +60 -60
  106. package/templates/default/src/app/(base)/reviews/create/page.tsx +26 -26
  107. package/templates/default/src/app/(base)/reviews/created-reviews-table.tsx +15 -15
  108. package/templates/default/src/app/(base)/reviews/modify/[id]/page.tsx +26 -26
  109. package/templates/default/src/app/(base)/reviews/page.tsx +26 -26
  110. package/templates/default/src/app/(base)/reviews/review/[id]/page.tsx +26 -26
  111. package/templates/default/src/app/(base)/reviews/review-form.tsx +11 -11
  112. package/templates/default/src/app/(base)/reviews/review-table-by-creator-columns.tsx +9 -9
  113. package/templates/default/src/app/(base)/reviews/review-table-by-reviewer-columns.tsx +9 -9
  114. package/templates/default/src/app/(base)/reviews/reviewer-reviews-table.tsx +15 -15
  115. package/templates/default/src/app/(base)/tags/create/page.tsx +39 -39
  116. package/templates/default/src/app/(base)/tags/modify/[id]/page.tsx +50 -50
  117. package/templates/default/src/app/(base)/tags/page.tsx +58 -58
  118. package/templates/default/src/app/(base)/tags/tag-form.tsx +147 -147
  119. package/templates/default/src/app/(base)/tags/tag-table-columns.tsx +63 -63
  120. package/templates/default/src/app/(base)/tags/tag-table.tsx +29 -29
  121. package/templates/default/src/app/(base)/template-step-groups/create/page.tsx +28 -28
  122. package/templates/default/src/app/(base)/template-step-groups/modify/[id]/page.tsx +45 -45
  123. package/templates/default/src/app/(base)/template-step-groups/page.tsx +60 -60
  124. package/templates/default/src/app/(base)/template-step-groups/template-step-group-form.tsx +167 -167
  125. package/templates/default/src/app/(base)/template-step-groups/template-step-group-table-columns.tsx +89 -89
  126. package/templates/default/src/app/(base)/template-step-groups/template-step-group-table.tsx +32 -32
  127. package/templates/default/src/app/(base)/template-steps/create/page.tsx +37 -37
  128. package/templates/default/src/app/(base)/template-steps/modify/[id]/page.tsx +49 -49
  129. package/templates/default/src/app/(base)/template-steps/page.tsx +59 -59
  130. package/templates/default/src/app/(base)/template-steps/paramChip.tsx +213 -213
  131. package/templates/default/src/app/(base)/template-steps/template-step-form.tsx +384 -384
  132. package/templates/default/src/app/(base)/template-steps/template-step-table-columns.tsx +158 -158
  133. package/templates/default/src/app/(base)/template-steps/template-step-table.tsx +24 -24
  134. package/templates/default/src/app/(base)/template-test-cases/create/page.tsx +56 -56
  135. package/templates/default/src/app/(base)/template-test-cases/modify/[id]/page.tsx +89 -89
  136. package/templates/default/src/app/(base)/template-test-cases/page.tsx +58 -58
  137. package/templates/default/src/app/(base)/template-test-cases/template-test-case-flow.tsx +84 -84
  138. package/templates/default/src/app/(base)/template-test-cases/template-test-case-form.tsx +262 -262
  139. package/templates/default/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -76
  140. package/templates/default/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -32
  141. package/templates/default/src/app/(base)/test-cases/create/page.tsx +76 -76
  142. package/templates/default/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx +96 -96
  143. package/templates/default/src/app/(base)/test-cases/create-from-template/page.tsx +38 -38
  144. package/templates/default/src/app/(base)/test-cases/create-from-template/template-selection-form.tsx +73 -73
  145. package/templates/default/src/app/(base)/test-cases/modify/[id]/page.tsx +106 -106
  146. package/templates/default/src/app/(base)/test-cases/page.tsx +60 -60
  147. package/templates/default/src/app/(base)/test-cases/test-case-flow.tsx +82 -82
  148. package/templates/default/src/app/(base)/test-cases/test-case-form.tsx +395 -395
  149. package/templates/default/src/app/(base)/test-cases/test-case-table-columns.tsx +90 -90
  150. package/templates/default/src/app/(base)/test-cases/test-case-table.tsx +35 -35
  151. package/templates/default/src/app/(base)/test-runs/[id]/page.tsx +56 -56
  152. package/templates/default/src/app/(base)/test-runs/create/page.tsx +47 -47
  153. package/templates/default/src/app/(base)/test-runs/page.tsx +60 -60
  154. package/templates/default/src/app/(base)/test-runs/test-run-form.tsx +508 -512
  155. package/templates/default/src/app/(base)/test-runs/test-run-table-columns.tsx +229 -229
  156. package/templates/default/src/app/(base)/test-runs/test-run-table.tsx +127 -127
  157. package/templates/default/src/app/(base)/test-suites/create/page.tsx +45 -45
  158. package/templates/default/src/app/(base)/test-suites/modify/[id]/page.tsx +55 -55
  159. package/templates/default/src/app/(base)/test-suites/page.tsx +82 -82
  160. package/templates/default/src/app/(base)/test-suites/test-suite-form.tsx +269 -269
  161. package/templates/default/src/app/(base)/test-suites/test-suite-table-columns.tsx +97 -97
  162. package/templates/default/src/app/(base)/test-suites/test-suite-table.tsx +29 -29
  163. package/templates/default/src/app/(dashboard-components)/app-drawer.tsx +187 -187
  164. package/templates/default/src/app/(dashboard-components)/data-card-grid.tsx +12 -12
  165. package/templates/default/src/app/(dashboard-components)/data-card.tsx +26 -26
  166. package/templates/default/src/app/(dashboard-components)/execution-health-panel.tsx +56 -56
  167. package/templates/default/src/app/(dashboard-components)/ongoing-test-runs-card.tsx +87 -87
  168. package/templates/default/src/app/(dashboard-components)/quick-actions-drawer.tsx +44 -44
  169. package/templates/default/src/app/api/test-runs/[runId]/download/route.ts +133 -133
  170. package/templates/default/src/app/api/test-runs/[runId]/logs/route.ts +420 -420
  171. package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +146 -146
  172. package/templates/default/src/app/globals.css +147 -147
  173. package/templates/default/src/app/layout.tsx +171 -171
  174. package/templates/default/src/app/page.tsx +64 -64
  175. package/templates/default/src/assets/icons/empty-tube.tsx +23 -23
  176. package/templates/default/src/assets/icons/tube-plus.tsx +29 -29
  177. package/templates/default/src/components/base-node.tsx +21 -21
  178. package/templates/default/src/components/chart/pie-chart.tsx +73 -73
  179. package/templates/default/src/components/data-extraction/locator-inspector.tsx +460 -460
  180. package/templates/default/src/components/data-state/empty-state.tsx +40 -40
  181. package/templates/default/src/components/data-visualization/info-card.tsx +70 -70
  182. package/templates/default/src/components/data-visualization/info-grid.tsx +22 -22
  183. package/templates/default/src/components/devtools/providers.tsx +19 -13
  184. package/templates/default/src/components/diagram/button-edge.tsx +54 -54
  185. package/templates/default/src/components/diagram/dynamic-parameters.tsx +438 -438
  186. package/templates/default/src/components/diagram/edit-header-option.tsx +36 -36
  187. package/templates/default/src/components/diagram/flow-diagram.tsx +470 -470
  188. package/templates/default/src/components/diagram/node-form.tsx +262 -262
  189. package/templates/default/src/components/diagram/options-header-node.tsx +57 -57
  190. package/templates/default/src/components/diagram/template-step-combobox.tsx +155 -155
  191. package/templates/default/src/components/form/error-message.tsx +7 -7
  192. package/templates/default/src/components/kokonutui/smooth-tab.tsx +453 -453
  193. package/templates/default/src/components/loading-skeleton/data-table/data-table-skeleton.tsx +30 -30
  194. package/templates/default/src/components/loading-skeleton/form/button-skeleton.tsx +8 -8
  195. package/templates/default/src/components/loading-skeleton/form/icon-button-skeleton.tsx +8 -8
  196. package/templates/default/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -8
  197. package/templates/default/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -14
  198. package/templates/default/src/components/logo.tsx +15 -15
  199. package/templates/default/src/components/navigation/command-badge.tsx +34 -34
  200. package/templates/default/src/components/navigation/command-chain-input.tsx +51 -51
  201. package/templates/default/src/components/navigation/entity-search-command.tsx +116 -116
  202. package/templates/default/src/components/navigation/nav-card.tsx +31 -31
  203. package/templates/default/src/components/navigation/nav-command.tsx +508 -508
  204. package/templates/default/src/components/navigation/nav-link.tsx +60 -60
  205. package/templates/default/src/components/navigation/nav-menu-card-deck.tsx +112 -112
  206. package/templates/default/src/components/node-header.tsx +159 -159
  207. package/templates/default/src/components/reports/test-case-logs-modal.tsx +253 -253
  208. package/templates/default/src/components/table/table-actions.tsx +172 -172
  209. package/templates/default/src/components/test-run/download-logs-button.tsx +99 -99
  210. package/templates/default/src/components/test-run/log-viewer.tsx +445 -445
  211. package/templates/default/src/components/test-run/test-run-details.tsx +611 -611
  212. package/templates/default/src/components/test-run/test-run-header.tsx +149 -149
  213. package/templates/default/src/components/test-run/view-report-button.tsx +102 -102
  214. package/templates/default/src/components/theme/mode-toggle.tsx +54 -54
  215. package/templates/default/src/components/theme/theme-provider.tsx +8 -8
  216. package/templates/default/src/components/typography/page-header-subtitle.tsx +7 -7
  217. package/templates/default/src/components/typography/page-header.tsx +7 -7
  218. package/templates/default/src/components/ui/alert-dialog.tsx +106 -106
  219. package/templates/default/src/components/ui/alert.tsx +43 -43
  220. package/templates/default/src/components/ui/avatar.tsx +40 -40
  221. package/templates/default/src/components/ui/badge.tsx +29 -29
  222. package/templates/default/src/components/ui/button.tsx +47 -47
  223. package/templates/default/src/components/ui/calendar.tsx +158 -158
  224. package/templates/default/src/components/ui/card.tsx +43 -43
  225. package/templates/default/src/components/ui/checkbox.tsx +28 -28
  226. package/templates/default/src/components/ui/command.tsx +135 -135
  227. package/templates/default/src/components/ui/data-table-column-header.tsx +61 -61
  228. package/templates/default/src/components/ui/data-table-pagination.tsx +87 -87
  229. package/templates/default/src/components/ui/data-table-view-options.tsx +50 -50
  230. package/templates/default/src/components/ui/data-table.tsx +267 -267
  231. package/templates/default/src/components/ui/dialog.tsx +97 -97
  232. package/templates/default/src/components/ui/dropdown-menu.tsx +182 -182
  233. package/templates/default/src/components/ui/input.tsx +22 -22
  234. package/templates/default/src/components/ui/kbd.tsx +28 -28
  235. package/templates/default/src/components/ui/label.tsx +19 -19
  236. package/templates/default/src/components/ui/loading.tsx +12 -12
  237. package/templates/default/src/components/ui/multi-select-with-preview.tsx +116 -116
  238. package/templates/default/src/components/ui/multi-select.tsx +142 -142
  239. package/templates/default/src/components/ui/navigation-menu.tsx +120 -120
  240. package/templates/default/src/components/ui/popover.tsx +33 -33
  241. package/templates/default/src/components/ui/progress.tsx +25 -25
  242. package/templates/default/src/components/ui/radio-group.tsx +44 -44
  243. package/templates/default/src/components/ui/scroll-area.tsx +40 -40
  244. package/templates/default/src/components/ui/select.tsx +151 -144
  245. package/templates/default/src/components/ui/separator.tsx +22 -22
  246. package/templates/default/src/components/ui/skeleton.tsx +7 -7
  247. package/templates/default/src/components/ui/table.tsx +76 -76
  248. package/templates/default/src/components/ui/tabs.tsx +55 -55
  249. package/templates/default/src/components/ui/textarea.tsx +21 -21
  250. package/templates/default/src/components/ui/toast.tsx +113 -113
  251. package/templates/default/src/components/ui/toaster.tsx +26 -26
  252. package/templates/default/src/components/user-prompt/delete-prompt.tsx +87 -87
  253. package/templates/default/src/config/db-config.ts +10 -10
  254. package/templates/default/src/constants/form-opts/diagram/node-form.ts +30 -30
  255. package/templates/default/src/constants/form-opts/environment-form-opts.ts +24 -24
  256. package/templates/default/src/constants/form-opts/locator-form-opts.ts +20 -20
  257. package/templates/default/src/constants/form-opts/locator-group-form-opts.ts +28 -28
  258. package/templates/default/src/constants/form-opts/module-form-opts.ts +21 -21
  259. package/templates/default/src/constants/form-opts/review-form-opts.ts +23 -23
  260. package/templates/default/src/constants/form-opts/tag-form-opts.ts +42 -42
  261. package/templates/default/src/constants/form-opts/template-selection-form-opts.ts +16 -16
  262. package/templates/default/src/constants/form-opts/template-step-group-form-opts.ts +24 -24
  263. package/templates/default/src/constants/form-opts/template-test-case-form-opts.ts +39 -39
  264. package/templates/default/src/constants/form-opts/template-test-step-form-opts.ts +36 -36
  265. package/templates/default/src/constants/form-opts/test-case-form-opts.ts +43 -43
  266. package/templates/default/src/constants/form-opts/test-run-form-opts.ts +31 -31
  267. package/templates/default/src/constants/form-opts/test-suite-form-opts.ts +24 -24
  268. package/templates/default/src/hooks/use-toast.ts +187 -187
  269. package/templates/default/src/lib/bidirectional-sync.ts +432 -432
  270. package/templates/default/src/lib/database-sync.ts +531 -531
  271. package/templates/default/src/lib/environment-file-utils.ts +221 -221
  272. package/templates/default/src/lib/feature-file-generator.ts +411 -411
  273. package/templates/default/src/lib/gherkin-parser.ts +259 -259
  274. package/templates/default/src/lib/locator-group-file-utils.ts +370 -370
  275. package/templates/default/src/lib/metrics/metric-calculator.ts +613 -613
  276. package/templates/default/src/lib/module-hierarchy-builder.ts +205 -205
  277. package/templates/default/src/lib/path-helpers/module-path.ts +71 -71
  278. package/templates/default/src/lib/test-case-utils.ts +6 -6
  279. package/templates/default/src/lib/test-run/log-formatter.ts +83 -83
  280. package/templates/default/src/lib/test-run/process-manager.ts +191 -191
  281. package/templates/default/src/lib/test-run/report-parser.ts +316 -316
  282. package/templates/default/src/lib/test-run/test-run-executor.ts +144 -144
  283. package/templates/default/src/lib/test-run/winston-logger.ts +95 -95
  284. package/templates/default/src/lib/transformers/gherkin-converter.ts +42 -42
  285. package/templates/default/src/lib/transformers/key-to-icon-transformer.tsx +95 -95
  286. package/templates/default/src/lib/transformers/template-test-case-converter.ts +160 -160
  287. package/templates/default/src/lib/utils/node-param-validation.ts +81 -81
  288. package/templates/default/src/lib/utils/template-step-file-generator.ts +167 -167
  289. package/templates/default/src/lib/utils/template-step-file-manager-intelligent.ts +723 -723
  290. package/templates/default/src/lib/utils/template-step-file-manager.ts +166 -166
  291. package/templates/default/src/lib/utils.ts +31 -31
  292. package/templates/default/src/tests/config/executor/world.ts +41 -41
  293. package/templates/default/src/tests/executor.ts +80 -80
  294. package/templates/default/src/tests/hooks/hooks.ts +99 -99
  295. package/templates/default/src/tests/mapping/locator-map.json +1 -1
  296. package/templates/default/src/tests/steps/actions/click.step.ts +62 -62
  297. package/templates/default/src/tests/steps/actions/navigation.step.ts +73 -72
  298. package/templates/default/src/tests/steps/validations/active_state_assertion.step.ts +34 -34
  299. package/templates/default/src/tests/steps/validations/navigation_assertion.step.ts +24 -23
  300. package/templates/default/src/tests/steps/validations/text_assertion.step.ts +111 -111
  301. package/templates/default/src/tests/steps/validations/visibility_assertion.step.ts +30 -30
  302. package/templates/default/src/tests/support/parameter-types.ts +12 -12
  303. package/templates/default/src/tests/utils/cache.util.ts +260 -260
  304. package/templates/default/src/tests/utils/cli.util.ts +177 -177
  305. package/templates/default/src/tests/utils/environment.util.ts +65 -65
  306. package/templates/default/src/tests/utils/locator.util.ts +248 -248
  307. package/templates/default/src/tests/utils/random-data.util.ts +44 -44
  308. package/templates/default/src/tests/utils/spawner.util.ts +617 -617
  309. package/templates/default/src/types/diagram/diagram.ts +34 -34
  310. package/templates/default/src/types/diagram/template-step.ts +11 -11
  311. package/templates/default/src/types/executor/browser.type.ts +1 -1
  312. package/templates/default/src/types/form/actionHandler.ts +6 -6
  313. package/templates/default/src/types/locator/locator.type.ts +11 -11
  314. package/templates/default/src/types/step/step.type.ts +1 -1
  315. package/templates/default/src/types/table/data-table.ts +6 -6
  316. package/templates/default/tailwind.config.ts +62 -62
  317. package/templates/default/.env +0 -2
  318. package/templates/default/next-env.d.ts +0 -6
  319. package/templates/default/prisma/prisma/dev.db +0 -0
  320. package/templates/default/src/tests/config/environments/environments.json +0 -14
@@ -1,554 +1,554 @@
1
- generator client {
2
- provider = "prisma-client-js"
3
- }
4
-
5
- datasource db {
6
- provider = "sqlite"
7
- url = env("DATABASE_URL")
8
- }
9
-
10
- model TestSuite {
11
- id String @id @default(uuid())
12
- name String
13
- description String?
14
- createdAt DateTime @default(now())
15
- updatedAt DateTime @updatedAt
16
- moduleId String
17
- module Module @relation(fields: [moduleId], references: [id], onDelete: Cascade)
18
- testCases TestCase[] @relation("TestSuiteTestCases")
19
- tags Tag[]
20
- metrics TestSuiteMetrics?
21
- }
22
-
23
- model Review {
24
- id String @id @default(uuid())
25
- testCaseId String
26
- reviewerId String
27
- status ReviewStatus
28
- comments String?
29
- createdAt DateTime @default(now())
30
- updatedAt DateTime @updatedAt
31
- testCase TestCase @relation(fields: [testCaseId], references: [id])
32
- }
33
-
34
- model LinkedJiraTicket {
35
- id String @id @default(uuid())
36
- testCaseId String
37
- jiraTicketId String
38
- jiraTicketUrl String
39
- jiraStatus String?
40
- createdAt DateTime @default(now())
41
- updatedAt DateTime @updatedAt
42
- testCase TestCase @relation(fields: [testCaseId], references: [id])
43
- }
44
-
45
- model TemplateStep {
46
- id String @id @default(uuid())
47
- name String
48
- description String?
49
- createdAt DateTime @default(now())
50
- updatedAt DateTime @updatedAt
51
- signature String
52
- functionDefinition String?
53
- type TemplateStepType
54
- icon TemplateStepIcon
55
- templateStepGroupId String
56
- templateStepGroup TemplateStepGroup @relation("TemplateStepGroupSteps", fields: [templateStepGroupId], references: [id], onDelete: Cascade)
57
- parameters TemplateStepParameter[]
58
- TemplateTestCaseStep TemplateTestCaseStep[]
59
- TestCaseStep TestCaseStep[]
60
- }
61
-
62
- model TemplateStepParameter {
63
- id String @id @default(uuid())
64
- name String
65
- createdAt DateTime @default(now())
66
- updatedAt DateTime @updatedAt
67
- templateStepId String
68
- order Int
69
- type StepParameterType
70
- templateStep TemplateStep @relation(fields: [templateStepId], references: [id], onDelete: Cascade)
71
- }
72
-
73
- model TemplateStepGroup {
74
- id String @id @default(uuid())
75
- name String
76
- description String?
77
- type TemplateStepGroupType @default(ACTION)
78
- createdAt DateTime @default(now())
79
- updatedAt DateTime @updatedAt
80
- templateSteps TemplateStep[] @relation("TemplateStepGroupSteps")
81
- }
82
-
83
- model TestCase {
84
- id String @id @default(uuid())
85
- title String
86
- description String
87
- createdAt DateTime @default(now())
88
- updatedAt DateTime @updatedAt
89
- linkedJiraTickets LinkedJiraTicket[]
90
- reviews Review[]
91
- steps TestCaseStep[]
92
- TestSuite TestSuite[] @relation("TestSuiteTestCases")
93
- TestRunTestCase TestRunTestCase[]
94
- tags Tag[]
95
- metrics TestCaseMetrics?
96
- }
97
-
98
- model TestCaseStep {
99
- id String @id @default(uuid())
100
- testCaseId String
101
- order Int
102
- gherkinStep String
103
- icon TemplateStepIcon
104
- label String
105
- templateStepId String
106
- TemplateStep TemplateStep @relation(fields: [templateStepId], references: [id], onDelete: Cascade)
107
- testCase TestCase @relation(fields: [testCaseId], references: [id])
108
- parameters TestCaseStepParameter[]
109
- }
110
-
111
- model TemplateTestCase {
112
- id String @id @default(uuid())
113
- name String
114
- description String?
115
- createdAt DateTime @default(now())
116
- updatedAt DateTime @updatedAt
117
- steps TemplateTestCaseStep[]
118
- }
119
-
120
- model TemplateTestCaseStep {
121
- id String @id @default(uuid())
122
- order Int
123
- gherkinStep String
124
- icon TemplateStepIcon
125
- label String
126
- templateTestCaseId String
127
- templateStepId String
128
- TemplateStep TemplateStep @relation(fields: [templateStepId], references: [id], onDelete: Cascade)
129
- templateTestCase TemplateTestCase @relation(fields: [templateTestCaseId], references: [id])
130
- parameters TemplateTestCaseStepParameter[]
131
- }
132
-
133
- model TemplateTestCaseStepParameter {
134
- id String @id @default(uuid())
135
- name String
136
- defaultValue String
137
- order Int
138
- testCaseStepId String
139
- locatorId String?
140
- type StepParameterType
141
- defaultLocatorId String?
142
- defaultLocator Locator? @relation(fields: [defaultLocatorId], references: [id])
143
- templateTestCaseStep TemplateTestCaseStep @relation(fields: [testCaseStepId], references: [id], onDelete: Cascade)
144
- }
145
-
146
- model TestCaseStepParameter {
147
- id String @id @default(uuid())
148
- name String
149
- value String
150
- order Int
151
- testCaseStepId String
152
- locatorId String?
153
- type StepParameterType
154
- Locator Locator? @relation(fields: [locatorId], references: [id])
155
- testCaseStep TestCaseStep @relation(fields: [testCaseStepId], references: [id], onDelete: Cascade)
156
- }
157
-
158
- model Locator {
159
- id String @id @default(uuid())
160
- name String
161
- value String
162
- createdAt DateTime @default(now())
163
- updatedAt DateTime @updatedAt
164
- locatorGroupId String?
165
- locatorGroup LocatorGroup? @relation(fields: [locatorGroupId], references: [id], onDelete: Cascade)
166
- TemplateTestCaseStepParameter TemplateTestCaseStepParameter[]
167
- stepParameters TestCaseStepParameter[]
168
- conflicts ConflictResolution[]
169
- }
170
-
171
- model LocatorGroup {
172
- id String @id @default(uuid())
173
- name String @unique
174
- route String @default("/")
175
- createdAt DateTime @default(now())
176
- updatedAt DateTime @updatedAt
177
- moduleId String
178
- locators Locator[]
179
- module Module @relation(fields: [moduleId], references: [id], onDelete: Cascade)
180
- }
181
-
182
- model Module {
183
- id String @id @default(uuid())
184
- name String
185
- parentId String?
186
- createdAt DateTime @default(now())
187
- updatedAt DateTime @updatedAt
188
- locatorGroups LocatorGroup[]
189
- parent Module? @relation("ModuleHierarchy", fields: [parentId], references: [id], onDelete: Cascade)
190
- children Module[] @relation("ModuleHierarchy")
191
- testSuites TestSuite[]
192
- }
193
-
194
- model TestRunTestCase {
195
- id String @id @default(uuid())
196
- testRunId String
197
- testCaseId String
198
- status TestRunTestCaseStatus @default(PENDING)
199
- result TestRunTestCaseResult @default(UNTESTED)
200
- tracePath String?
201
- testRun TestRun @relation(fields: [testRunId], references: [id], onDelete: Cascade)
202
- testCase TestCase @relation(fields: [testCaseId], references: [id], onDelete: Cascade)
203
- reportTestCases ReportTestCase[]
204
- }
205
-
206
- model TestRun {
207
- id String @id @default(uuid())
208
- name String @unique
209
- runId String @unique @default(uuid())
210
- startedAt DateTime @default(now())
211
- completedAt DateTime?
212
- status TestRunStatus @default(QUEUED)
213
- result TestRunResult @default(PENDING)
214
- testCases TestRunTestCase[]
215
- updatedAt DateTime @updatedAt
216
- environment Environment @relation(fields: [environmentId], references: [id])
217
- environmentId String
218
- tags Tag[]
219
- testWorkersCount Int? @default(1)
220
- browserEngine BrowserEngine @default(CHROMIUM)
221
- logs TestRunLog?
222
- logPath String?
223
- reportPath String?
224
- reports Report[]
225
-
226
- @@index([completedAt])
227
- @@index([result])
228
- }
229
-
230
- model TestRunLog {
231
- id String @id @default(uuid())
232
- testRunId String @unique
233
- logs String
234
- createdAt DateTime @default(now())
235
- updatedAt DateTime @updatedAt
236
- testRun TestRun @relation(fields: [testRunId], references: [runId], onDelete: Cascade)
237
- }
238
-
239
- model Environment {
240
- id String @id @default(uuid())
241
- name String @unique
242
- baseUrl String
243
- apiBaseUrl String?
244
- username String?
245
- password String?
246
- createdAt DateTime @default(now())
247
- updatedAt DateTime @updatedAt
248
- testRuns TestRun[]
249
- }
250
-
251
- model Tag {
252
- id String @id @default(uuid())
253
- name String
254
- tagExpression String
255
- type TagType @default(FILTER)
256
- createdAt DateTime @default(now())
257
- updatedAt DateTime @updatedAt
258
- testRuns TestRun[]
259
- testSuites TestSuite[]
260
- testCases TestCase[]
261
- }
262
-
263
- model ConflictResolution {
264
- id String @id @default(uuid())
265
- entityType EntityType
266
- entityId String
267
- conflictType ConflictType
268
- conflictingEntityId String?
269
- resolved Boolean @default(false)
270
- createdAt DateTime @default(now())
271
- updatedAt DateTime @updatedAt
272
- locator Locator? @relation(fields: [entityId], references: [id], onDelete: Cascade)
273
- }
274
-
275
- model ReportTestCase {
276
- id String @id @default(uuid())
277
- reportId String
278
- testCaseId String
279
- testRunTestCaseId String
280
- reportScenarioId String?
281
- testRunTestCase TestRunTestCase @relation(fields: [testRunTestCaseId], references: [id], onDelete: Cascade)
282
- report Report @relation(fields: [reportId], references: [id], onDelete: Cascade)
283
- reportScenario ReportScenario? @relation(fields: [reportScenarioId], references: [id], onDelete: SetNull)
284
- duration String
285
- }
286
-
287
- model Report {
288
- id String @id @default(uuid())
289
- name String
290
- description String?
291
- reportPath String?
292
- createdAt DateTime @default(now())
293
- updatedAt DateTime @updatedAt
294
- testRunId String
295
- testRun TestRun @relation(fields: [testRunId], references: [id], onDelete: Cascade)
296
- testCases ReportTestCase[]
297
- features ReportFeature[]
298
- }
299
-
300
- model ReportFeature {
301
- id String @id @default(uuid())
302
- reportId String
303
- name String
304
- description String?
305
- uri String
306
- line Int
307
- keyword String
308
- createdAt DateTime @default(now())
309
- updatedAt DateTime @updatedAt
310
- report Report @relation(fields: [reportId], references: [id], onDelete: Cascade)
311
- tags ReportFeatureTag[]
312
- scenarios ReportScenario[]
313
- }
314
-
315
- model ReportFeatureTag {
316
- id String @id @default(uuid())
317
- reportFeatureId String
318
- tagName String
319
- line Int
320
- createdAt DateTime @default(now())
321
- reportFeature ReportFeature @relation(fields: [reportFeatureId], references: [id], onDelete: Cascade)
322
- }
323
-
324
- model ReportScenario {
325
- id String @id @default(uuid())
326
- reportFeatureId String
327
- name String
328
- description String?
329
- line Int
330
- keyword String
331
- type String
332
- cucumberId String
333
- createdAt DateTime @default(now())
334
- updatedAt DateTime @updatedAt
335
- reportFeature ReportFeature @relation(fields: [reportFeatureId], references: [id], onDelete: Cascade)
336
- tags ReportScenarioTag[]
337
- steps ReportStep[]
338
- hooks ReportHook[]
339
- reportTestCases ReportTestCase[]
340
- }
341
-
342
- model ReportScenarioTag {
343
- id String @id @default(uuid())
344
- reportScenarioId String
345
- tagName String
346
- line Int
347
- createdAt DateTime @default(now())
348
- reportScenario ReportScenario @relation(fields: [reportScenarioId], references: [id], onDelete: Cascade)
349
- }
350
-
351
- model ReportStep {
352
- id String @id @default(uuid())
353
- reportScenarioId String
354
- keyword StepKeyword
355
- line Int?
356
- name String
357
- matchLocation String?
358
- status StepStatus
359
- duration String
360
- errorMessage String?
361
- errorTrace String?
362
- hidden Boolean @default(false)
363
- order Int
364
- createdAt DateTime @default(now())
365
- updatedAt DateTime @updatedAt
366
- reportScenario ReportScenario @relation(fields: [reportScenarioId], references: [id], onDelete: Cascade)
367
- }
368
-
369
- model ReportHook {
370
- id String @id @default(uuid())
371
- reportScenarioId String
372
- keyword StepKeyword
373
- status StepStatus
374
- duration String
375
- errorMessage String?
376
- errorTrace String?
377
- hidden Boolean @default(false)
378
- createdAt DateTime @default(now())
379
- updatedAt DateTime @updatedAt
380
- reportScenario ReportScenario @relation(fields: [reportScenarioId], references: [id], onDelete: Cascade)
381
- }
382
-
383
- model TestCaseMetrics {
384
- id String @id @default(uuid())
385
- testCaseId String @unique
386
- isRepeatedlyFailing Boolean @default(false)
387
- isFlaky Boolean @default(false)
388
- consecutiveFailures Int @default(0)
389
- failureRate Float @default(0)
390
- totalRecentRuns Int @default(0)
391
- failedRecentRuns Int @default(0)
392
- lastExecutedAt DateTime?
393
- lastFailedAt DateTime?
394
- lastPassedAt DateTime?
395
- createdAt DateTime @default(now())
396
- updatedAt DateTime @updatedAt
397
- testCase TestCase @relation(fields: [testCaseId], references: [id], onDelete: Cascade)
398
-
399
- @@index([isRepeatedlyFailing])
400
- @@index([isFlaky])
401
- }
402
-
403
- model TestSuiteMetrics {
404
- id String @id @default(uuid())
405
- testSuiteId String @unique
406
- lastExecutedAt DateTime?
407
- createdAt DateTime @default(now())
408
- updatedAt DateTime @updatedAt
409
- testSuite TestSuite @relation(fields: [testSuiteId], references: [id], onDelete: Cascade)
410
-
411
- @@index([lastExecutedAt])
412
- }
413
-
414
- model DashboardMetrics {
415
- id String @id @default(uuid())
416
- failedRecentRunsCount Int @default(0)
417
- repeatedlyFailingTestsCount Int @default(0)
418
- flakyTestsCount Int @default(0)
419
- suitesNotExecutedRecentlyCount Int @default(0)
420
- lastUpdatedAt DateTime @default(now())
421
- createdAt DateTime @default(now())
422
- }
423
-
424
- enum TagType {
425
- IDENTIFIER
426
- FILTER
427
- }
428
-
429
- enum TestRunStatus {
430
- QUEUED
431
- RUNNING
432
- CANCELLING
433
- COMPLETED
434
- CANCELLED
435
- }
436
-
437
- enum TestRunTestCaseStatus {
438
- PENDING
439
- RUNNING
440
- COMPLETED
441
- CANCELLED
442
- }
443
-
444
- enum TestRunTestCaseResult {
445
- PASSED
446
- FAILED
447
- UNTESTED
448
- }
449
-
450
- enum TestRunResult {
451
- PENDING
452
- PASSED
453
- FAILED
454
- CANCELLED
455
- }
456
-
457
- enum Role {
458
- ADMIN
459
- TESTER
460
- REVIEWER
461
- }
462
-
463
- enum ReviewStatus {
464
- PENDING
465
- APPROVED
466
- CHANGES_REQUESTED
467
- }
468
-
469
- enum TestCaseStatus {
470
- PENDING
471
- IN_PROGRESS
472
- COMPLETED
473
- }
474
-
475
- enum TestCaseResult {
476
- PASSED
477
- FAILED
478
- BLOCKED
479
- SKIPPED
480
- RETEST
481
- UNTESTED
482
- }
483
-
484
- enum TemplateStepType {
485
- ACTION
486
- ASSERTION
487
- }
488
-
489
- enum StepParameterType {
490
- NUMBER
491
- STRING
492
- DATE
493
- BOOLEAN
494
- LOCATOR
495
- }
496
-
497
- enum StepParameterValueType {
498
- STRING
499
- NUMBER
500
- LOCATOR
501
- }
502
-
503
- enum TemplateStepIcon {
504
- MOUSE
505
- NAVIGATION
506
- INPUT
507
- DOWNLOAD
508
- API
509
- STORE
510
- FORMAT
511
- DATA
512
- UPLOAD
513
- WAIT
514
- VALIDATION
515
- DEBUG
516
- }
517
-
518
- enum BrowserEngine {
519
- CHROMIUM
520
- FIREFOX
521
- WEBKIT
522
- }
523
-
524
- enum TemplateStepGroupType {
525
- ACTION
526
- VALIDATION
527
- }
528
-
529
- enum EntityType {
530
- LOCATOR
531
- }
532
-
533
- enum ConflictType {
534
- DUPLICATE_NAME
535
- DUPLICATE_VALUE
536
- }
537
-
538
- enum StepStatus {
539
- PASSED
540
- FAILED
541
- SKIPPED
542
- PENDING
543
- UNDEFINED
544
- }
545
-
546
- enum StepKeyword {
547
- GIVEN
548
- WHEN
549
- THEN
550
- AND
551
- BUT
552
- BEFORE
553
- AFTER
554
- }
1
+ generator client {
2
+ provider = "prisma-client-js"
3
+ }
4
+
5
+ datasource db {
6
+ provider = "sqlite"
7
+ url = env("DATABASE_URL")
8
+ }
9
+
10
+ model TestSuite {
11
+ id String @id @default(uuid())
12
+ name String
13
+ description String?
14
+ createdAt DateTime @default(now())
15
+ updatedAt DateTime @updatedAt
16
+ moduleId String
17
+ module Module @relation(fields: [moduleId], references: [id], onDelete: Cascade)
18
+ testCases TestCase[] @relation("TestSuiteTestCases")
19
+ tags Tag[]
20
+ metrics TestSuiteMetrics?
21
+ }
22
+
23
+ model Review {
24
+ id String @id @default(uuid())
25
+ testCaseId String
26
+ reviewerId String
27
+ status ReviewStatus
28
+ comments String?
29
+ createdAt DateTime @default(now())
30
+ updatedAt DateTime @updatedAt
31
+ testCase TestCase @relation(fields: [testCaseId], references: [id])
32
+ }
33
+
34
+ model LinkedJiraTicket {
35
+ id String @id @default(uuid())
36
+ testCaseId String
37
+ jiraTicketId String
38
+ jiraTicketUrl String
39
+ jiraStatus String?
40
+ createdAt DateTime @default(now())
41
+ updatedAt DateTime @updatedAt
42
+ testCase TestCase @relation(fields: [testCaseId], references: [id])
43
+ }
44
+
45
+ model TemplateStep {
46
+ id String @id @default(uuid())
47
+ name String
48
+ description String?
49
+ createdAt DateTime @default(now())
50
+ updatedAt DateTime @updatedAt
51
+ signature String
52
+ functionDefinition String?
53
+ type TemplateStepType
54
+ icon TemplateStepIcon
55
+ templateStepGroupId String
56
+ templateStepGroup TemplateStepGroup @relation("TemplateStepGroupSteps", fields: [templateStepGroupId], references: [id], onDelete: Cascade)
57
+ parameters TemplateStepParameter[]
58
+ TemplateTestCaseStep TemplateTestCaseStep[]
59
+ TestCaseStep TestCaseStep[]
60
+ }
61
+
62
+ model TemplateStepParameter {
63
+ id String @id @default(uuid())
64
+ name String
65
+ createdAt DateTime @default(now())
66
+ updatedAt DateTime @updatedAt
67
+ templateStepId String
68
+ order Int
69
+ type StepParameterType
70
+ templateStep TemplateStep @relation(fields: [templateStepId], references: [id], onDelete: Cascade)
71
+ }
72
+
73
+ model TemplateStepGroup {
74
+ id String @id @default(uuid())
75
+ name String
76
+ description String?
77
+ type TemplateStepGroupType @default(ACTION)
78
+ createdAt DateTime @default(now())
79
+ updatedAt DateTime @updatedAt
80
+ templateSteps TemplateStep[] @relation("TemplateStepGroupSteps")
81
+ }
82
+
83
+ model TestCase {
84
+ id String @id @default(uuid())
85
+ title String
86
+ description String
87
+ createdAt DateTime @default(now())
88
+ updatedAt DateTime @updatedAt
89
+ linkedJiraTickets LinkedJiraTicket[]
90
+ reviews Review[]
91
+ steps TestCaseStep[]
92
+ TestSuite TestSuite[] @relation("TestSuiteTestCases")
93
+ TestRunTestCase TestRunTestCase[]
94
+ tags Tag[]
95
+ metrics TestCaseMetrics?
96
+ }
97
+
98
+ model TestCaseStep {
99
+ id String @id @default(uuid())
100
+ testCaseId String
101
+ order Int
102
+ gherkinStep String
103
+ icon TemplateStepIcon
104
+ label String
105
+ templateStepId String
106
+ TemplateStep TemplateStep @relation(fields: [templateStepId], references: [id], onDelete: Cascade)
107
+ testCase TestCase @relation(fields: [testCaseId], references: [id])
108
+ parameters TestCaseStepParameter[]
109
+ }
110
+
111
+ model TemplateTestCase {
112
+ id String @id @default(uuid())
113
+ name String
114
+ description String?
115
+ createdAt DateTime @default(now())
116
+ updatedAt DateTime @updatedAt
117
+ steps TemplateTestCaseStep[]
118
+ }
119
+
120
+ model TemplateTestCaseStep {
121
+ id String @id @default(uuid())
122
+ order Int
123
+ gherkinStep String
124
+ icon TemplateStepIcon
125
+ label String
126
+ templateTestCaseId String
127
+ templateStepId String
128
+ TemplateStep TemplateStep @relation(fields: [templateStepId], references: [id], onDelete: Cascade)
129
+ templateTestCase TemplateTestCase @relation(fields: [templateTestCaseId], references: [id])
130
+ parameters TemplateTestCaseStepParameter[]
131
+ }
132
+
133
+ model TemplateTestCaseStepParameter {
134
+ id String @id @default(uuid())
135
+ name String
136
+ defaultValue String
137
+ order Int
138
+ testCaseStepId String
139
+ locatorId String?
140
+ type StepParameterType
141
+ defaultLocatorId String?
142
+ defaultLocator Locator? @relation(fields: [defaultLocatorId], references: [id])
143
+ templateTestCaseStep TemplateTestCaseStep @relation(fields: [testCaseStepId], references: [id], onDelete: Cascade)
144
+ }
145
+
146
+ model TestCaseStepParameter {
147
+ id String @id @default(uuid())
148
+ name String
149
+ value String
150
+ order Int
151
+ testCaseStepId String
152
+ locatorId String?
153
+ type StepParameterType
154
+ Locator Locator? @relation(fields: [locatorId], references: [id])
155
+ testCaseStep TestCaseStep @relation(fields: [testCaseStepId], references: [id], onDelete: Cascade)
156
+ }
157
+
158
+ model Locator {
159
+ id String @id @default(uuid())
160
+ name String
161
+ value String
162
+ createdAt DateTime @default(now())
163
+ updatedAt DateTime @updatedAt
164
+ locatorGroupId String?
165
+ locatorGroup LocatorGroup? @relation(fields: [locatorGroupId], references: [id], onDelete: Cascade)
166
+ TemplateTestCaseStepParameter TemplateTestCaseStepParameter[]
167
+ stepParameters TestCaseStepParameter[]
168
+ conflicts ConflictResolution[]
169
+ }
170
+
171
+ model LocatorGroup {
172
+ id String @id @default(uuid())
173
+ name String @unique
174
+ route String @default("/")
175
+ createdAt DateTime @default(now())
176
+ updatedAt DateTime @updatedAt
177
+ moduleId String
178
+ locators Locator[]
179
+ module Module @relation(fields: [moduleId], references: [id], onDelete: Cascade)
180
+ }
181
+
182
+ model Module {
183
+ id String @id @default(uuid())
184
+ name String
185
+ parentId String?
186
+ createdAt DateTime @default(now())
187
+ updatedAt DateTime @updatedAt
188
+ locatorGroups LocatorGroup[]
189
+ parent Module? @relation("ModuleHierarchy", fields: [parentId], references: [id], onDelete: Cascade)
190
+ children Module[] @relation("ModuleHierarchy")
191
+ testSuites TestSuite[]
192
+ }
193
+
194
+ model TestRunTestCase {
195
+ id String @id @default(uuid())
196
+ testRunId String
197
+ testCaseId String
198
+ status TestRunTestCaseStatus @default(PENDING)
199
+ result TestRunTestCaseResult @default(UNTESTED)
200
+ tracePath String?
201
+ testRun TestRun @relation(fields: [testRunId], references: [id], onDelete: Cascade)
202
+ testCase TestCase @relation(fields: [testCaseId], references: [id], onDelete: Cascade)
203
+ reportTestCases ReportTestCase[]
204
+ }
205
+
206
+ model TestRun {
207
+ id String @id @default(uuid())
208
+ name String @unique
209
+ runId String @unique @default(uuid())
210
+ startedAt DateTime @default(now())
211
+ completedAt DateTime?
212
+ status TestRunStatus @default(QUEUED)
213
+ result TestRunResult @default(PENDING)
214
+ testCases TestRunTestCase[]
215
+ updatedAt DateTime @updatedAt
216
+ environment Environment @relation(fields: [environmentId], references: [id])
217
+ environmentId String
218
+ tags Tag[]
219
+ testWorkersCount Int? @default(1)
220
+ browserEngine BrowserEngine @default(CHROMIUM)
221
+ logs TestRunLog?
222
+ logPath String?
223
+ reportPath String?
224
+ reports Report[]
225
+
226
+ @@index([completedAt])
227
+ @@index([result])
228
+ }
229
+
230
+ model TestRunLog {
231
+ id String @id @default(uuid())
232
+ testRunId String @unique
233
+ logs String
234
+ createdAt DateTime @default(now())
235
+ updatedAt DateTime @updatedAt
236
+ testRun TestRun @relation(fields: [testRunId], references: [runId], onDelete: Cascade)
237
+ }
238
+
239
+ model Environment {
240
+ id String @id @default(uuid())
241
+ name String @unique
242
+ baseUrl String
243
+ apiBaseUrl String?
244
+ username String?
245
+ password String?
246
+ createdAt DateTime @default(now())
247
+ updatedAt DateTime @updatedAt
248
+ testRuns TestRun[]
249
+ }
250
+
251
+ model Tag {
252
+ id String @id @default(uuid())
253
+ name String
254
+ tagExpression String
255
+ type TagType @default(FILTER)
256
+ createdAt DateTime @default(now())
257
+ updatedAt DateTime @updatedAt
258
+ testRuns TestRun[]
259
+ testSuites TestSuite[]
260
+ testCases TestCase[]
261
+ }
262
+
263
+ model ConflictResolution {
264
+ id String @id @default(uuid())
265
+ entityType EntityType
266
+ entityId String
267
+ conflictType ConflictType
268
+ conflictingEntityId String?
269
+ resolved Boolean @default(false)
270
+ createdAt DateTime @default(now())
271
+ updatedAt DateTime @updatedAt
272
+ locator Locator? @relation(fields: [entityId], references: [id], onDelete: Cascade)
273
+ }
274
+
275
+ model ReportTestCase {
276
+ id String @id @default(uuid())
277
+ reportId String
278
+ testCaseId String
279
+ testRunTestCaseId String
280
+ reportScenarioId String?
281
+ testRunTestCase TestRunTestCase @relation(fields: [testRunTestCaseId], references: [id], onDelete: Cascade)
282
+ report Report @relation(fields: [reportId], references: [id], onDelete: Cascade)
283
+ reportScenario ReportScenario? @relation(fields: [reportScenarioId], references: [id], onDelete: SetNull)
284
+ duration String
285
+ }
286
+
287
+ model Report {
288
+ id String @id @default(uuid())
289
+ name String
290
+ description String?
291
+ reportPath String?
292
+ createdAt DateTime @default(now())
293
+ updatedAt DateTime @updatedAt
294
+ testRunId String
295
+ testRun TestRun @relation(fields: [testRunId], references: [id], onDelete: Cascade)
296
+ testCases ReportTestCase[]
297
+ features ReportFeature[]
298
+ }
299
+
300
+ model ReportFeature {
301
+ id String @id @default(uuid())
302
+ reportId String
303
+ name String
304
+ description String?
305
+ uri String
306
+ line Int
307
+ keyword String
308
+ createdAt DateTime @default(now())
309
+ updatedAt DateTime @updatedAt
310
+ report Report @relation(fields: [reportId], references: [id], onDelete: Cascade)
311
+ tags ReportFeatureTag[]
312
+ scenarios ReportScenario[]
313
+ }
314
+
315
+ model ReportFeatureTag {
316
+ id String @id @default(uuid())
317
+ reportFeatureId String
318
+ tagName String
319
+ line Int
320
+ createdAt DateTime @default(now())
321
+ reportFeature ReportFeature @relation(fields: [reportFeatureId], references: [id], onDelete: Cascade)
322
+ }
323
+
324
+ model ReportScenario {
325
+ id String @id @default(uuid())
326
+ reportFeatureId String
327
+ name String
328
+ description String?
329
+ line Int
330
+ keyword String
331
+ type String
332
+ cucumberId String
333
+ createdAt DateTime @default(now())
334
+ updatedAt DateTime @updatedAt
335
+ reportFeature ReportFeature @relation(fields: [reportFeatureId], references: [id], onDelete: Cascade)
336
+ tags ReportScenarioTag[]
337
+ steps ReportStep[]
338
+ hooks ReportHook[]
339
+ reportTestCases ReportTestCase[]
340
+ }
341
+
342
+ model ReportScenarioTag {
343
+ id String @id @default(uuid())
344
+ reportScenarioId String
345
+ tagName String
346
+ line Int
347
+ createdAt DateTime @default(now())
348
+ reportScenario ReportScenario @relation(fields: [reportScenarioId], references: [id], onDelete: Cascade)
349
+ }
350
+
351
+ model ReportStep {
352
+ id String @id @default(uuid())
353
+ reportScenarioId String
354
+ keyword StepKeyword
355
+ line Int?
356
+ name String
357
+ matchLocation String?
358
+ status StepStatus
359
+ duration String
360
+ errorMessage String?
361
+ errorTrace String?
362
+ hidden Boolean @default(false)
363
+ order Int
364
+ createdAt DateTime @default(now())
365
+ updatedAt DateTime @updatedAt
366
+ reportScenario ReportScenario @relation(fields: [reportScenarioId], references: [id], onDelete: Cascade)
367
+ }
368
+
369
+ model ReportHook {
370
+ id String @id @default(uuid())
371
+ reportScenarioId String
372
+ keyword StepKeyword
373
+ status StepStatus
374
+ duration String
375
+ errorMessage String?
376
+ errorTrace String?
377
+ hidden Boolean @default(false)
378
+ createdAt DateTime @default(now())
379
+ updatedAt DateTime @updatedAt
380
+ reportScenario ReportScenario @relation(fields: [reportScenarioId], references: [id], onDelete: Cascade)
381
+ }
382
+
383
+ model TestCaseMetrics {
384
+ id String @id @default(uuid())
385
+ testCaseId String @unique
386
+ isRepeatedlyFailing Boolean @default(false)
387
+ isFlaky Boolean @default(false)
388
+ consecutiveFailures Int @default(0)
389
+ failureRate Float @default(0)
390
+ totalRecentRuns Int @default(0)
391
+ failedRecentRuns Int @default(0)
392
+ lastExecutedAt DateTime?
393
+ lastFailedAt DateTime?
394
+ lastPassedAt DateTime?
395
+ createdAt DateTime @default(now())
396
+ updatedAt DateTime @updatedAt
397
+ testCase TestCase @relation(fields: [testCaseId], references: [id], onDelete: Cascade)
398
+
399
+ @@index([isRepeatedlyFailing])
400
+ @@index([isFlaky])
401
+ }
402
+
403
+ model TestSuiteMetrics {
404
+ id String @id @default(uuid())
405
+ testSuiteId String @unique
406
+ lastExecutedAt DateTime?
407
+ createdAt DateTime @default(now())
408
+ updatedAt DateTime @updatedAt
409
+ testSuite TestSuite @relation(fields: [testSuiteId], references: [id], onDelete: Cascade)
410
+
411
+ @@index([lastExecutedAt])
412
+ }
413
+
414
+ model DashboardMetrics {
415
+ id String @id @default(uuid())
416
+ failedRecentRunsCount Int @default(0)
417
+ repeatedlyFailingTestsCount Int @default(0)
418
+ flakyTestsCount Int @default(0)
419
+ suitesNotExecutedRecentlyCount Int @default(0)
420
+ lastUpdatedAt DateTime @default(now())
421
+ createdAt DateTime @default(now())
422
+ }
423
+
424
+ enum TagType {
425
+ IDENTIFIER
426
+ FILTER
427
+ }
428
+
429
+ enum TestRunStatus {
430
+ QUEUED
431
+ RUNNING
432
+ CANCELLING
433
+ COMPLETED
434
+ CANCELLED
435
+ }
436
+
437
+ enum TestRunTestCaseStatus {
438
+ PENDING
439
+ RUNNING
440
+ COMPLETED
441
+ CANCELLED
442
+ }
443
+
444
+ enum TestRunTestCaseResult {
445
+ PASSED
446
+ FAILED
447
+ UNTESTED
448
+ }
449
+
450
+ enum TestRunResult {
451
+ PENDING
452
+ PASSED
453
+ FAILED
454
+ CANCELLED
455
+ }
456
+
457
+ enum Role {
458
+ ADMIN
459
+ TESTER
460
+ REVIEWER
461
+ }
462
+
463
+ enum ReviewStatus {
464
+ PENDING
465
+ APPROVED
466
+ CHANGES_REQUESTED
467
+ }
468
+
469
+ enum TestCaseStatus {
470
+ PENDING
471
+ IN_PROGRESS
472
+ COMPLETED
473
+ }
474
+
475
+ enum TestCaseResult {
476
+ PASSED
477
+ FAILED
478
+ BLOCKED
479
+ SKIPPED
480
+ RETEST
481
+ UNTESTED
482
+ }
483
+
484
+ enum TemplateStepType {
485
+ ACTION
486
+ ASSERTION
487
+ }
488
+
489
+ enum StepParameterType {
490
+ NUMBER
491
+ STRING
492
+ DATE
493
+ BOOLEAN
494
+ LOCATOR
495
+ }
496
+
497
+ enum StepParameterValueType {
498
+ STRING
499
+ NUMBER
500
+ LOCATOR
501
+ }
502
+
503
+ enum TemplateStepIcon {
504
+ MOUSE
505
+ NAVIGATION
506
+ INPUT
507
+ DOWNLOAD
508
+ API
509
+ STORE
510
+ FORMAT
511
+ DATA
512
+ UPLOAD
513
+ WAIT
514
+ VALIDATION
515
+ DEBUG
516
+ }
517
+
518
+ enum BrowserEngine {
519
+ CHROMIUM
520
+ FIREFOX
521
+ WEBKIT
522
+ }
523
+
524
+ enum TemplateStepGroupType {
525
+ ACTION
526
+ VALIDATION
527
+ }
528
+
529
+ enum EntityType {
530
+ LOCATOR
531
+ }
532
+
533
+ enum ConflictType {
534
+ DUPLICATE_NAME
535
+ DUPLICATE_VALUE
536
+ }
537
+
538
+ enum StepStatus {
539
+ PASSED
540
+ FAILED
541
+ SKIPPED
542
+ PENDING
543
+ UNDEFINED
544
+ }
545
+
546
+ enum StepKeyword {
547
+ GIVEN
548
+ WHEN
549
+ THEN
550
+ AND
551
+ BUT
552
+ BEFORE
553
+ AFTER
554
+ }