create-appraisejs 0.1.7 → 0.1.8

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 (316) hide show
  1. package/README.md +45 -45
  2. package/dist/cli.js +2 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/copy-template.d.ts.map +1 -1
  5. package/dist/copy-template.js.map +1 -1
  6. package/package.json +69 -67
  7. package/templates/default/.vscode/settings.json +5 -0
  8. package/templates/default/appraisejs.config.json +1 -1
  9. package/templates/default/components.json +24 -24
  10. package/templates/default/cucumber.mjs +16 -0
  11. package/templates/default/eslint.config.mjs +15 -15
  12. package/templates/default/next.config.ts +13 -7
  13. package/templates/default/package-lock.json +13732 -14321
  14. package/templates/default/package.json +11 -9
  15. package/templates/default/postcss.config.mjs +8 -8
  16. package/templates/default/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -16
  17. package/templates/default/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -27
  18. package/templates/default/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -17
  19. package/templates/default/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -12
  20. package/templates/default/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -28
  21. package/templates/default/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -12
  22. package/templates/default/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -10
  23. package/templates/default/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -10
  24. package/templates/default/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -108
  25. package/templates/default/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -55
  26. package/templates/default/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -27
  27. package/templates/default/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -59
  28. package/templates/default/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -34
  29. package/templates/default/prisma/schema.prisma +554 -554
  30. package/templates/default/scripts/regenerate-features.ts +94 -94
  31. package/templates/default/scripts/setup-env.ts +19 -19
  32. package/templates/default/scripts/sync-all.ts +341 -341
  33. package/templates/default/scripts/sync-appraise-base-template.ts +52 -2
  34. package/templates/default/scripts/sync-environments.ts +323 -323
  35. package/templates/default/scripts/sync-locator-groups.ts +413 -413
  36. package/templates/default/scripts/sync-locators.ts +402 -402
  37. package/templates/default/scripts/sync-modules.ts +349 -349
  38. package/templates/default/scripts/sync-tags.ts +292 -292
  39. package/templates/default/scripts/sync-template-step-groups.ts +399 -399
  40. package/templates/default/scripts/sync-template-steps.ts +806 -806
  41. package/templates/default/scripts/sync-test-cases.ts +905 -905
  42. package/templates/default/scripts/sync-test-suites.ts +411 -411
  43. package/templates/default/src/actions/conflict/conflict.action.ts +33 -33
  44. package/templates/default/src/actions/dashboard/dashboard-actions.ts +240 -240
  45. package/templates/default/src/actions/environments/environment-actions.ts +205 -205
  46. package/templates/default/src/actions/locator/locator-actions.ts +547 -547
  47. package/templates/default/src/actions/locator-groups/locator-group-actions.ts +344 -344
  48. package/templates/default/src/actions/modules/module-actions.ts +133 -133
  49. package/templates/default/src/actions/reports/report-actions.ts +613 -613
  50. package/templates/default/src/actions/review/review-actions.ts +147 -147
  51. package/templates/default/src/actions/tags/tag-actions.ts +104 -104
  52. package/templates/default/src/actions/template-step/template-step-actions.ts +332 -332
  53. package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +278 -278
  54. package/templates/default/src/actions/template-test-case/template-test-case-actions.ts +238 -238
  55. package/templates/default/src/actions/test-case/test-case-actions.ts +419 -419
  56. package/templates/default/src/actions/test-run/test-run-actions.ts +1185 -1185
  57. package/templates/default/src/actions/test-suite/test-suite-actions.ts +253 -253
  58. package/templates/default/src/actions/user/user-actions.ts +13 -13
  59. package/templates/default/src/app/(base)/environments/create/page.tsx +28 -28
  60. package/templates/default/src/app/(base)/environments/environment-form.tsx +219 -219
  61. package/templates/default/src/app/(base)/environments/environment-table-columns.tsx +96 -96
  62. package/templates/default/src/app/(base)/environments/environment-table.tsx +24 -24
  63. package/templates/default/src/app/(base)/environments/modify/[id]/page.tsx +46 -46
  64. package/templates/default/src/app/(base)/environments/page.tsx +59 -59
  65. package/templates/default/src/app/(base)/layout.tsx +10 -10
  66. package/templates/default/src/app/(base)/locator-groups/create/page.tsx +44 -44
  67. package/templates/default/src/app/(base)/locator-groups/locator-group-form.tsx +215 -215
  68. package/templates/default/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -77
  69. package/templates/default/src/app/(base)/locator-groups/locator-group-table.tsx +28 -28
  70. package/templates/default/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -46
  71. package/templates/default/src/app/(base)/locator-groups/page.tsx +61 -61
  72. package/templates/default/src/app/(base)/locators/create/page.tsx +38 -38
  73. package/templates/default/src/app/(base)/locators/locator-form.tsx +163 -163
  74. package/templates/default/src/app/(base)/locators/locator-table-columns.tsx +73 -90
  75. package/templates/default/src/app/(base)/locators/locator-table.tsx +28 -28
  76. package/templates/default/src/app/(base)/locators/modify/[id]/page.tsx +45 -45
  77. package/templates/default/src/app/(base)/locators/page.tsx +65 -65
  78. package/templates/default/src/app/(base)/locators/sync-locators-button.tsx +66 -66
  79. package/templates/default/src/app/(base)/modules/create/page.tsx +34 -34
  80. package/templates/default/src/app/(base)/modules/modify/[id]/page.tsx +46 -46
  81. package/templates/default/src/app/(base)/modules/module-form.tsx +126 -126
  82. package/templates/default/src/app/(base)/modules/module-table-columns.tsx +85 -85
  83. package/templates/default/src/app/(base)/modules/module-table.tsx +24 -24
  84. package/templates/default/src/app/(base)/modules/page.tsx +59 -59
  85. package/templates/default/src/app/(base)/reports/[id]/page.tsx +517 -517
  86. package/templates/default/src/app/(base)/reports/duration-chart.tsx +33 -33
  87. package/templates/default/src/app/(base)/reports/feature-chart.tsx +78 -78
  88. package/templates/default/src/app/(base)/reports/overview-chart.tsx +46 -46
  89. package/templates/default/src/app/(base)/reports/page.tsx +98 -98
  90. package/templates/default/src/app/(base)/reports/report-metric-card.tsx +16 -16
  91. package/templates/default/src/app/(base)/reports/report-table-columns.tsx +189 -189
  92. package/templates/default/src/app/(base)/reports/report-table.tsx +72 -72
  93. package/templates/default/src/app/(base)/reports/report-view-table-columns.tsx +131 -131
  94. package/templates/default/src/app/(base)/reports/report-view-table.tsx +82 -82
  95. package/templates/default/src/app/(base)/reports/test-cases/page.tsx +42 -42
  96. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +115 -115
  97. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -27
  98. package/templates/default/src/app/(base)/reports/test-suites/page.tsx +42 -42
  99. package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +79 -79
  100. package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +27 -27
  101. package/templates/default/src/app/(base)/reports/view-logs-button.tsx +60 -60
  102. package/templates/default/src/app/(base)/reviews/create/page.tsx +26 -26
  103. package/templates/default/src/app/(base)/reviews/created-reviews-table.tsx +15 -15
  104. package/templates/default/src/app/(base)/reviews/modify/[id]/page.tsx +26 -26
  105. package/templates/default/src/app/(base)/reviews/page.tsx +26 -26
  106. package/templates/default/src/app/(base)/reviews/review/[id]/page.tsx +26 -26
  107. package/templates/default/src/app/(base)/reviews/review-form.tsx +11 -11
  108. package/templates/default/src/app/(base)/reviews/review-table-by-creator-columns.tsx +9 -9
  109. package/templates/default/src/app/(base)/reviews/review-table-by-reviewer-columns.tsx +9 -9
  110. package/templates/default/src/app/(base)/reviews/reviewer-reviews-table.tsx +15 -15
  111. package/templates/default/src/app/(base)/tags/create/page.tsx +39 -39
  112. package/templates/default/src/app/(base)/tags/modify/[id]/page.tsx +50 -50
  113. package/templates/default/src/app/(base)/tags/page.tsx +58 -58
  114. package/templates/default/src/app/(base)/tags/tag-form.tsx +147 -147
  115. package/templates/default/src/app/(base)/tags/tag-table-columns.tsx +63 -63
  116. package/templates/default/src/app/(base)/tags/tag-table.tsx +29 -29
  117. package/templates/default/src/app/(base)/template-step-groups/create/page.tsx +28 -28
  118. package/templates/default/src/app/(base)/template-step-groups/modify/[id]/page.tsx +45 -45
  119. package/templates/default/src/app/(base)/template-step-groups/page.tsx +60 -60
  120. package/templates/default/src/app/(base)/template-step-groups/template-step-group-form.tsx +167 -167
  121. package/templates/default/src/app/(base)/template-step-groups/template-step-group-table-columns.tsx +89 -89
  122. package/templates/default/src/app/(base)/template-step-groups/template-step-group-table.tsx +32 -32
  123. package/templates/default/src/app/(base)/template-steps/create/page.tsx +37 -37
  124. package/templates/default/src/app/(base)/template-steps/modify/[id]/page.tsx +49 -49
  125. package/templates/default/src/app/(base)/template-steps/page.tsx +59 -59
  126. package/templates/default/src/app/(base)/template-steps/paramChip.tsx +213 -213
  127. package/templates/default/src/app/(base)/template-steps/template-step-form.tsx +384 -384
  128. package/templates/default/src/app/(base)/template-steps/template-step-table-columns.tsx +158 -158
  129. package/templates/default/src/app/(base)/template-steps/template-step-table.tsx +24 -24
  130. package/templates/default/src/app/(base)/template-test-cases/create/page.tsx +56 -56
  131. package/templates/default/src/app/(base)/template-test-cases/modify/[id]/page.tsx +89 -89
  132. package/templates/default/src/app/(base)/template-test-cases/page.tsx +58 -58
  133. package/templates/default/src/app/(base)/template-test-cases/template-test-case-flow.tsx +84 -84
  134. package/templates/default/src/app/(base)/template-test-cases/template-test-case-form.tsx +262 -262
  135. package/templates/default/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -76
  136. package/templates/default/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -32
  137. package/templates/default/src/app/(base)/test-cases/create/page.tsx +76 -76
  138. package/templates/default/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx +96 -96
  139. package/templates/default/src/app/(base)/test-cases/create-from-template/page.tsx +38 -38
  140. package/templates/default/src/app/(base)/test-cases/create-from-template/template-selection-form.tsx +73 -73
  141. package/templates/default/src/app/(base)/test-cases/modify/[id]/page.tsx +106 -106
  142. package/templates/default/src/app/(base)/test-cases/page.tsx +60 -60
  143. package/templates/default/src/app/(base)/test-cases/test-case-flow.tsx +82 -82
  144. package/templates/default/src/app/(base)/test-cases/test-case-form.tsx +395 -395
  145. package/templates/default/src/app/(base)/test-cases/test-case-table-columns.tsx +90 -90
  146. package/templates/default/src/app/(base)/test-cases/test-case-table.tsx +35 -35
  147. package/templates/default/src/app/(base)/test-runs/[id]/page.tsx +56 -56
  148. package/templates/default/src/app/(base)/test-runs/create/page.tsx +47 -47
  149. package/templates/default/src/app/(base)/test-runs/page.tsx +60 -60
  150. package/templates/default/src/app/(base)/test-runs/test-run-form.tsx +508 -512
  151. package/templates/default/src/app/(base)/test-runs/test-run-table-columns.tsx +229 -229
  152. package/templates/default/src/app/(base)/test-runs/test-run-table.tsx +127 -127
  153. package/templates/default/src/app/(base)/test-suites/create/page.tsx +45 -45
  154. package/templates/default/src/app/(base)/test-suites/modify/[id]/page.tsx +55 -55
  155. package/templates/default/src/app/(base)/test-suites/page.tsx +82 -82
  156. package/templates/default/src/app/(base)/test-suites/test-suite-form.tsx +269 -269
  157. package/templates/default/src/app/(base)/test-suites/test-suite-table-columns.tsx +97 -97
  158. package/templates/default/src/app/(base)/test-suites/test-suite-table.tsx +29 -29
  159. package/templates/default/src/app/(dashboard-components)/app-drawer.tsx +187 -187
  160. package/templates/default/src/app/(dashboard-components)/data-card-grid.tsx +12 -12
  161. package/templates/default/src/app/(dashboard-components)/data-card.tsx +26 -26
  162. package/templates/default/src/app/(dashboard-components)/execution-health-panel.tsx +56 -56
  163. package/templates/default/src/app/(dashboard-components)/ongoing-test-runs-card.tsx +87 -87
  164. package/templates/default/src/app/(dashboard-components)/quick-actions-drawer.tsx +44 -44
  165. package/templates/default/src/app/api/test-runs/[runId]/download/route.ts +133 -133
  166. package/templates/default/src/app/api/test-runs/[runId]/logs/route.ts +420 -420
  167. package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +146 -146
  168. package/templates/default/src/app/globals.css +147 -147
  169. package/templates/default/src/app/layout.tsx +171 -171
  170. package/templates/default/src/app/page.tsx +64 -64
  171. package/templates/default/src/assets/icons/empty-tube.tsx +23 -23
  172. package/templates/default/src/assets/icons/tube-plus.tsx +29 -29
  173. package/templates/default/src/components/base-node.tsx +21 -21
  174. package/templates/default/src/components/chart/pie-chart.tsx +73 -73
  175. package/templates/default/src/components/data-extraction/locator-inspector.tsx +460 -460
  176. package/templates/default/src/components/data-state/empty-state.tsx +40 -40
  177. package/templates/default/src/components/data-visualization/info-card.tsx +70 -70
  178. package/templates/default/src/components/data-visualization/info-grid.tsx +22 -22
  179. package/templates/default/src/components/devtools/providers.tsx +19 -13
  180. package/templates/default/src/components/diagram/button-edge.tsx +54 -54
  181. package/templates/default/src/components/diagram/dynamic-parameters.tsx +438 -438
  182. package/templates/default/src/components/diagram/edit-header-option.tsx +36 -36
  183. package/templates/default/src/components/diagram/flow-diagram.tsx +470 -470
  184. package/templates/default/src/components/diagram/node-form.tsx +262 -262
  185. package/templates/default/src/components/diagram/options-header-node.tsx +57 -57
  186. package/templates/default/src/components/diagram/template-step-combobox.tsx +155 -155
  187. package/templates/default/src/components/form/error-message.tsx +7 -7
  188. package/templates/default/src/components/kokonutui/smooth-tab.tsx +453 -453
  189. package/templates/default/src/components/loading-skeleton/data-table/data-table-skeleton.tsx +30 -30
  190. package/templates/default/src/components/loading-skeleton/form/button-skeleton.tsx +8 -8
  191. package/templates/default/src/components/loading-skeleton/form/icon-button-skeleton.tsx +8 -8
  192. package/templates/default/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -8
  193. package/templates/default/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -14
  194. package/templates/default/src/components/logo.tsx +15 -15
  195. package/templates/default/src/components/navigation/command-badge.tsx +34 -34
  196. package/templates/default/src/components/navigation/command-chain-input.tsx +51 -51
  197. package/templates/default/src/components/navigation/entity-search-command.tsx +116 -116
  198. package/templates/default/src/components/navigation/nav-card.tsx +31 -31
  199. package/templates/default/src/components/navigation/nav-command.tsx +508 -508
  200. package/templates/default/src/components/navigation/nav-link.tsx +60 -60
  201. package/templates/default/src/components/navigation/nav-menu-card-deck.tsx +112 -112
  202. package/templates/default/src/components/node-header.tsx +159 -159
  203. package/templates/default/src/components/reports/test-case-logs-modal.tsx +253 -253
  204. package/templates/default/src/components/table/table-actions.tsx +172 -172
  205. package/templates/default/src/components/test-run/download-logs-button.tsx +99 -99
  206. package/templates/default/src/components/test-run/log-viewer.tsx +445 -445
  207. package/templates/default/src/components/test-run/test-run-details.tsx +611 -611
  208. package/templates/default/src/components/test-run/test-run-header.tsx +149 -149
  209. package/templates/default/src/components/test-run/view-report-button.tsx +102 -102
  210. package/templates/default/src/components/theme/mode-toggle.tsx +54 -54
  211. package/templates/default/src/components/theme/theme-provider.tsx +8 -8
  212. package/templates/default/src/components/typography/page-header-subtitle.tsx +7 -7
  213. package/templates/default/src/components/typography/page-header.tsx +7 -7
  214. package/templates/default/src/components/ui/alert-dialog.tsx +106 -106
  215. package/templates/default/src/components/ui/alert.tsx +43 -43
  216. package/templates/default/src/components/ui/avatar.tsx +40 -40
  217. package/templates/default/src/components/ui/badge.tsx +29 -29
  218. package/templates/default/src/components/ui/button.tsx +47 -47
  219. package/templates/default/src/components/ui/calendar.tsx +158 -158
  220. package/templates/default/src/components/ui/card.tsx +43 -43
  221. package/templates/default/src/components/ui/checkbox.tsx +28 -28
  222. package/templates/default/src/components/ui/command.tsx +135 -135
  223. package/templates/default/src/components/ui/data-table-column-header.tsx +61 -61
  224. package/templates/default/src/components/ui/data-table-pagination.tsx +87 -87
  225. package/templates/default/src/components/ui/data-table-view-options.tsx +50 -50
  226. package/templates/default/src/components/ui/data-table.tsx +267 -267
  227. package/templates/default/src/components/ui/dialog.tsx +97 -97
  228. package/templates/default/src/components/ui/dropdown-menu.tsx +182 -182
  229. package/templates/default/src/components/ui/input.tsx +22 -22
  230. package/templates/default/src/components/ui/kbd.tsx +28 -28
  231. package/templates/default/src/components/ui/label.tsx +19 -19
  232. package/templates/default/src/components/ui/loading.tsx +12 -12
  233. package/templates/default/src/components/ui/multi-select-with-preview.tsx +116 -116
  234. package/templates/default/src/components/ui/multi-select.tsx +142 -142
  235. package/templates/default/src/components/ui/navigation-menu.tsx +120 -120
  236. package/templates/default/src/components/ui/popover.tsx +33 -33
  237. package/templates/default/src/components/ui/progress.tsx +25 -25
  238. package/templates/default/src/components/ui/radio-group.tsx +44 -44
  239. package/templates/default/src/components/ui/scroll-area.tsx +40 -40
  240. package/templates/default/src/components/ui/select.tsx +151 -144
  241. package/templates/default/src/components/ui/separator.tsx +22 -22
  242. package/templates/default/src/components/ui/skeleton.tsx +7 -7
  243. package/templates/default/src/components/ui/table.tsx +76 -76
  244. package/templates/default/src/components/ui/tabs.tsx +55 -55
  245. package/templates/default/src/components/ui/textarea.tsx +21 -21
  246. package/templates/default/src/components/ui/toast.tsx +113 -113
  247. package/templates/default/src/components/ui/toaster.tsx +26 -26
  248. package/templates/default/src/components/user-prompt/delete-prompt.tsx +87 -87
  249. package/templates/default/src/config/db-config.ts +10 -10
  250. package/templates/default/src/constants/form-opts/diagram/node-form.ts +30 -30
  251. package/templates/default/src/constants/form-opts/environment-form-opts.ts +24 -24
  252. package/templates/default/src/constants/form-opts/locator-form-opts.ts +20 -20
  253. package/templates/default/src/constants/form-opts/locator-group-form-opts.ts +28 -28
  254. package/templates/default/src/constants/form-opts/module-form-opts.ts +21 -21
  255. package/templates/default/src/constants/form-opts/review-form-opts.ts +23 -23
  256. package/templates/default/src/constants/form-opts/tag-form-opts.ts +42 -42
  257. package/templates/default/src/constants/form-opts/template-selection-form-opts.ts +16 -16
  258. package/templates/default/src/constants/form-opts/template-step-group-form-opts.ts +24 -24
  259. package/templates/default/src/constants/form-opts/template-test-case-form-opts.ts +39 -39
  260. package/templates/default/src/constants/form-opts/template-test-step-form-opts.ts +36 -36
  261. package/templates/default/src/constants/form-opts/test-case-form-opts.ts +43 -43
  262. package/templates/default/src/constants/form-opts/test-run-form-opts.ts +31 -31
  263. package/templates/default/src/constants/form-opts/test-suite-form-opts.ts +24 -24
  264. package/templates/default/src/hooks/use-toast.ts +187 -187
  265. package/templates/default/src/lib/bidirectional-sync.ts +432 -432
  266. package/templates/default/src/lib/database-sync.ts +531 -531
  267. package/templates/default/src/lib/environment-file-utils.ts +221 -221
  268. package/templates/default/src/lib/feature-file-generator.ts +411 -411
  269. package/templates/default/src/lib/gherkin-parser.ts +259 -259
  270. package/templates/default/src/lib/locator-group-file-utils.ts +370 -370
  271. package/templates/default/src/lib/metrics/metric-calculator.ts +613 -613
  272. package/templates/default/src/lib/module-hierarchy-builder.ts +205 -205
  273. package/templates/default/src/lib/path-helpers/module-path.ts +71 -71
  274. package/templates/default/src/lib/test-case-utils.ts +6 -6
  275. package/templates/default/src/lib/test-run/log-formatter.ts +83 -83
  276. package/templates/default/src/lib/test-run/process-manager.ts +191 -191
  277. package/templates/default/src/lib/test-run/report-parser.ts +316 -316
  278. package/templates/default/src/lib/test-run/test-run-executor.ts +144 -144
  279. package/templates/default/src/lib/test-run/winston-logger.ts +95 -95
  280. package/templates/default/src/lib/transformers/gherkin-converter.ts +42 -42
  281. package/templates/default/src/lib/transformers/key-to-icon-transformer.tsx +95 -95
  282. package/templates/default/src/lib/transformers/template-test-case-converter.ts +160 -160
  283. package/templates/default/src/lib/utils/node-param-validation.ts +81 -81
  284. package/templates/default/src/lib/utils/template-step-file-generator.ts +167 -167
  285. package/templates/default/src/lib/utils/template-step-file-manager-intelligent.ts +723 -723
  286. package/templates/default/src/lib/utils/template-step-file-manager.ts +166 -166
  287. package/templates/default/src/lib/utils.ts +31 -31
  288. package/templates/default/src/tests/config/executor/world.ts +41 -41
  289. package/templates/default/src/tests/executor.ts +80 -80
  290. package/templates/default/src/tests/hooks/hooks.ts +99 -99
  291. package/templates/default/src/tests/mapping/locator-map.json +1 -1
  292. package/templates/default/src/tests/steps/actions/click.step.ts +62 -62
  293. package/templates/default/src/tests/steps/actions/navigation.step.ts +73 -72
  294. package/templates/default/src/tests/steps/validations/active_state_assertion.step.ts +34 -34
  295. package/templates/default/src/tests/steps/validations/navigation_assertion.step.ts +24 -23
  296. package/templates/default/src/tests/steps/validations/text_assertion.step.ts +111 -111
  297. package/templates/default/src/tests/steps/validations/visibility_assertion.step.ts +30 -30
  298. package/templates/default/src/tests/support/parameter-types.ts +12 -12
  299. package/templates/default/src/tests/utils/cache.util.ts +260 -260
  300. package/templates/default/src/tests/utils/cli.util.ts +177 -177
  301. package/templates/default/src/tests/utils/environment.util.ts +65 -65
  302. package/templates/default/src/tests/utils/locator.util.ts +248 -248
  303. package/templates/default/src/tests/utils/random-data.util.ts +44 -44
  304. package/templates/default/src/tests/utils/spawner.util.ts +617 -617
  305. package/templates/default/src/types/diagram/diagram.ts +34 -34
  306. package/templates/default/src/types/diagram/template-step.ts +11 -11
  307. package/templates/default/src/types/executor/browser.type.ts +1 -1
  308. package/templates/default/src/types/form/actionHandler.ts +6 -6
  309. package/templates/default/src/types/locator/locator.type.ts +11 -11
  310. package/templates/default/src/types/step/step.type.ts +1 -1
  311. package/templates/default/src/types/table/data-table.ts +6 -6
  312. package/templates/default/tailwind.config.ts +62 -62
  313. package/templates/default/.env +0 -2
  314. package/templates/default/next-env.d.ts +0 -6
  315. package/templates/default/prisma/prisma/dev.db +0 -0
  316. 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
+ }