create-appraise 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/README.md +52 -0
  2. package/package.json +63 -0
  3. package/templates/default/.env.example +2 -0
  4. package/templates/default/README.md +51 -0
  5. package/templates/default/appraise.config.json +4 -0
  6. package/templates/default/components.json +24 -0
  7. package/templates/default/eslint.config.mjs +15 -0
  8. package/templates/default/next-env.d.ts +6 -0
  9. package/templates/default/next.config.ts +7 -0
  10. package/templates/default/package-lock.json +14321 -0
  11. package/templates/default/package.json +124 -0
  12. package/templates/default/postcss.config.mjs +8 -0
  13. package/templates/default/prisma/migrations/20251026202316_migrate_back_to_sqlite/migration.sql +257 -0
  14. package/templates/default/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -0
  15. package/templates/default/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -0
  16. package/templates/default/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -0
  17. package/templates/default/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -0
  18. package/templates/default/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -0
  19. package/templates/default/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -0
  20. package/templates/default/prisma/migrations/20251130190737_add_trace_path_to_test_run_test_case/migration.sql +2 -0
  21. package/templates/default/prisma/migrations/20251213074835_add_log_path_to_test_run/migration.sql +2 -0
  22. package/templates/default/prisma/migrations/20251213183952_add_name_property_for_the_test_run_entities/migration.sql +30 -0
  23. package/templates/default/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -0
  24. package/templates/default/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -0
  25. package/templates/default/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -0
  26. package/templates/default/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -0
  27. package/templates/default/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -0
  28. package/templates/default/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -0
  29. package/templates/default/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -0
  30. package/templates/default/prisma/migrations/migration_lock.toml +3 -0
  31. package/templates/default/prisma/schema.prisma +554 -0
  32. package/templates/default/public/favicon.ico +0 -0
  33. package/templates/default/public/file.svg +1 -0
  34. package/templates/default/public/globe.svg +1 -0
  35. package/templates/default/public/next.svg +1 -0
  36. package/templates/default/public/vercel.svg +1 -0
  37. package/templates/default/public/window.svg +1 -0
  38. package/templates/default/scripts/regenerate-features.ts +94 -0
  39. package/templates/default/scripts/setup-env.ts +19 -0
  40. package/templates/default/scripts/sync-all.ts +341 -0
  41. package/templates/default/scripts/sync-environments.ts +323 -0
  42. package/templates/default/scripts/sync-locator-groups.ts +413 -0
  43. package/templates/default/scripts/sync-locators.ts +402 -0
  44. package/templates/default/scripts/sync-modules.ts +349 -0
  45. package/templates/default/scripts/sync-tags.ts +292 -0
  46. package/templates/default/scripts/sync-template-step-groups.ts +399 -0
  47. package/templates/default/scripts/sync-template-steps.ts +806 -0
  48. package/templates/default/scripts/sync-test-cases.ts +905 -0
  49. package/templates/default/scripts/sync-test-suites.ts +411 -0
  50. package/templates/default/src/actions/conflict/conflict.action.ts +33 -0
  51. package/templates/default/src/actions/dashboard/dashboard-actions.ts +241 -0
  52. package/templates/default/src/actions/environments/environment-actions.ts +205 -0
  53. package/templates/default/src/actions/locator/locator-actions.ts +547 -0
  54. package/templates/default/src/actions/locator-groups/locator-group-actions.ts +344 -0
  55. package/templates/default/src/actions/modules/module-actions.ts +133 -0
  56. package/templates/default/src/actions/reports/report-actions.ts +614 -0
  57. package/templates/default/src/actions/review/review-actions.ts +147 -0
  58. package/templates/default/src/actions/tags/tag-actions.ts +104 -0
  59. package/templates/default/src/actions/template-step/template-step-actions.ts +332 -0
  60. package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +278 -0
  61. package/templates/default/src/actions/template-test-case/template-test-case-actions.ts +238 -0
  62. package/templates/default/src/actions/test-case/test-case-actions.ts +419 -0
  63. package/templates/default/src/actions/test-run/test-run-actions.ts +1185 -0
  64. package/templates/default/src/actions/test-suite/test-suite-actions.ts +253 -0
  65. package/templates/default/src/actions/user/user-actions.ts +13 -0
  66. package/templates/default/src/app/(base)/environments/create/page.tsx +28 -0
  67. package/templates/default/src/app/(base)/environments/environment-form.tsx +219 -0
  68. package/templates/default/src/app/(base)/environments/environment-table-columns.tsx +96 -0
  69. package/templates/default/src/app/(base)/environments/environment-table.tsx +24 -0
  70. package/templates/default/src/app/(base)/environments/modify/[id]/page.tsx +46 -0
  71. package/templates/default/src/app/(base)/environments/page.tsx +59 -0
  72. package/templates/default/src/app/(base)/layout.tsx +10 -0
  73. package/templates/default/src/app/(base)/locator-groups/create/page.tsx +44 -0
  74. package/templates/default/src/app/(base)/locator-groups/locator-group-form.tsx +215 -0
  75. package/templates/default/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -0
  76. package/templates/default/src/app/(base)/locator-groups/locator-group-table.tsx +28 -0
  77. package/templates/default/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -0
  78. package/templates/default/src/app/(base)/locator-groups/page.tsx +61 -0
  79. package/templates/default/src/app/(base)/locators/create/page.tsx +38 -0
  80. package/templates/default/src/app/(base)/locators/locator-form.tsx +163 -0
  81. package/templates/default/src/app/(base)/locators/locator-table-columns.tsx +90 -0
  82. package/templates/default/src/app/(base)/locators/locator-table.tsx +28 -0
  83. package/templates/default/src/app/(base)/locators/modify/[id]/page.tsx +45 -0
  84. package/templates/default/src/app/(base)/locators/page.tsx +65 -0
  85. package/templates/default/src/app/(base)/locators/sync-locators-button.tsx +66 -0
  86. package/templates/default/src/app/(base)/modules/create/page.tsx +34 -0
  87. package/templates/default/src/app/(base)/modules/modify/[id]/page.tsx +46 -0
  88. package/templates/default/src/app/(base)/modules/module-form.tsx +126 -0
  89. package/templates/default/src/app/(base)/modules/module-table-columns.tsx +85 -0
  90. package/templates/default/src/app/(base)/modules/module-table.tsx +24 -0
  91. package/templates/default/src/app/(base)/modules/page.tsx +59 -0
  92. package/templates/default/src/app/(base)/reports/[id]/page.tsx +517 -0
  93. package/templates/default/src/app/(base)/reports/duration-chart.tsx +33 -0
  94. package/templates/default/src/app/(base)/reports/feature-chart.tsx +78 -0
  95. package/templates/default/src/app/(base)/reports/overview-chart.tsx +46 -0
  96. package/templates/default/src/app/(base)/reports/page.tsx +98 -0
  97. package/templates/default/src/app/(base)/reports/report-metric-card.tsx +16 -0
  98. package/templates/default/src/app/(base)/reports/report-table-columns.tsx +189 -0
  99. package/templates/default/src/app/(base)/reports/report-table.tsx +72 -0
  100. package/templates/default/src/app/(base)/reports/report-view-table-columns.tsx +131 -0
  101. package/templates/default/src/app/(base)/reports/report-view-table.tsx +82 -0
  102. package/templates/default/src/app/(base)/reports/test-cases/page.tsx +42 -0
  103. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +115 -0
  104. package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -0
  105. package/templates/default/src/app/(base)/reports/test-suites/page.tsx +42 -0
  106. package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +79 -0
  107. package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +27 -0
  108. package/templates/default/src/app/(base)/reports/view-logs-button.tsx +60 -0
  109. package/templates/default/src/app/(base)/reviews/create/page.tsx +26 -0
  110. package/templates/default/src/app/(base)/reviews/created-reviews-table.tsx +15 -0
  111. package/templates/default/src/app/(base)/reviews/modify/[id]/page.tsx +26 -0
  112. package/templates/default/src/app/(base)/reviews/page.tsx +26 -0
  113. package/templates/default/src/app/(base)/reviews/review/[id]/page.tsx +26 -0
  114. package/templates/default/src/app/(base)/reviews/review-form.tsx +11 -0
  115. package/templates/default/src/app/(base)/reviews/review-table-by-creator-columns.tsx +9 -0
  116. package/templates/default/src/app/(base)/reviews/review-table-by-reviewer-columns.tsx +9 -0
  117. package/templates/default/src/app/(base)/reviews/reviewer-reviews-table.tsx +15 -0
  118. package/templates/default/src/app/(base)/tags/create/page.tsx +39 -0
  119. package/templates/default/src/app/(base)/tags/modify/[id]/page.tsx +50 -0
  120. package/templates/default/src/app/(base)/tags/page.tsx +58 -0
  121. package/templates/default/src/app/(base)/tags/tag-form.tsx +147 -0
  122. package/templates/default/src/app/(base)/tags/tag-table-columns.tsx +63 -0
  123. package/templates/default/src/app/(base)/tags/tag-table.tsx +29 -0
  124. package/templates/default/src/app/(base)/template-step-groups/create/page.tsx +28 -0
  125. package/templates/default/src/app/(base)/template-step-groups/modify/[id]/page.tsx +45 -0
  126. package/templates/default/src/app/(base)/template-step-groups/page.tsx +60 -0
  127. package/templates/default/src/app/(base)/template-step-groups/template-step-group-form.tsx +167 -0
  128. package/templates/default/src/app/(base)/template-step-groups/template-step-group-table-columns.tsx +89 -0
  129. package/templates/default/src/app/(base)/template-step-groups/template-step-group-table.tsx +32 -0
  130. package/templates/default/src/app/(base)/template-steps/create/page.tsx +37 -0
  131. package/templates/default/src/app/(base)/template-steps/modify/[id]/page.tsx +49 -0
  132. package/templates/default/src/app/(base)/template-steps/page.tsx +59 -0
  133. package/templates/default/src/app/(base)/template-steps/paramChip.tsx +213 -0
  134. package/templates/default/src/app/(base)/template-steps/template-step-form.tsx +384 -0
  135. package/templates/default/src/app/(base)/template-steps/template-step-table-columns.tsx +158 -0
  136. package/templates/default/src/app/(base)/template-steps/template-step-table.tsx +24 -0
  137. package/templates/default/src/app/(base)/template-test-cases/create/page.tsx +56 -0
  138. package/templates/default/src/app/(base)/template-test-cases/modify/[id]/page.tsx +89 -0
  139. package/templates/default/src/app/(base)/template-test-cases/page.tsx +58 -0
  140. package/templates/default/src/app/(base)/template-test-cases/template-test-case-flow.tsx +84 -0
  141. package/templates/default/src/app/(base)/template-test-cases/template-test-case-form.tsx +262 -0
  142. package/templates/default/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -0
  143. package/templates/default/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -0
  144. package/templates/default/src/app/(base)/test-cases/create/page.tsx +76 -0
  145. package/templates/default/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx +96 -0
  146. package/templates/default/src/app/(base)/test-cases/create-from-template/page.tsx +38 -0
  147. package/templates/default/src/app/(base)/test-cases/create-from-template/template-selection-form.tsx +73 -0
  148. package/templates/default/src/app/(base)/test-cases/modify/[id]/page.tsx +106 -0
  149. package/templates/default/src/app/(base)/test-cases/page.tsx +60 -0
  150. package/templates/default/src/app/(base)/test-cases/test-case-flow.tsx +82 -0
  151. package/templates/default/src/app/(base)/test-cases/test-case-form.tsx +395 -0
  152. package/templates/default/src/app/(base)/test-cases/test-case-table-columns.tsx +90 -0
  153. package/templates/default/src/app/(base)/test-cases/test-case-table.tsx +35 -0
  154. package/templates/default/src/app/(base)/test-runs/[id]/page.tsx +56 -0
  155. package/templates/default/src/app/(base)/test-runs/create/page.tsx +47 -0
  156. package/templates/default/src/app/(base)/test-runs/page.tsx +60 -0
  157. package/templates/default/src/app/(base)/test-runs/test-run-form.tsx +512 -0
  158. package/templates/default/src/app/(base)/test-runs/test-run-table-columns.tsx +229 -0
  159. package/templates/default/src/app/(base)/test-runs/test-run-table.tsx +127 -0
  160. package/templates/default/src/app/(base)/test-suites/create/page.tsx +45 -0
  161. package/templates/default/src/app/(base)/test-suites/modify/[id]/page.tsx +55 -0
  162. package/templates/default/src/app/(base)/test-suites/page.tsx +82 -0
  163. package/templates/default/src/app/(base)/test-suites/test-suite-form.tsx +269 -0
  164. package/templates/default/src/app/(base)/test-suites/test-suite-table-columns.tsx +97 -0
  165. package/templates/default/src/app/(base)/test-suites/test-suite-table.tsx +29 -0
  166. package/templates/default/src/app/(dashboard-components)/app-drawer.tsx +187 -0
  167. package/templates/default/src/app/(dashboard-components)/data-card-grid.tsx +13 -0
  168. package/templates/default/src/app/(dashboard-components)/data-card.tsx +27 -0
  169. package/templates/default/src/app/(dashboard-components)/execution-health-panel.tsx +57 -0
  170. package/templates/default/src/app/(dashboard-components)/ongoing-test-runs-card.tsx +87 -0
  171. package/templates/default/src/app/(dashboard-components)/quick-actions-drawer.tsx +45 -0
  172. package/templates/default/src/app/api/test-runs/[runId]/download/route.ts +133 -0
  173. package/templates/default/src/app/api/test-runs/[runId]/logs/route.ts +420 -0
  174. package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +146 -0
  175. package/templates/default/src/app/favicon.ico +0 -0
  176. package/templates/default/src/app/globals.css +147 -0
  177. package/templates/default/src/app/layout.tsx +171 -0
  178. package/templates/default/src/app/page.tsx +64 -0
  179. package/templates/default/src/assets/icons/empty-tube.tsx +23 -0
  180. package/templates/default/src/assets/icons/tube-plus.tsx +29 -0
  181. package/templates/default/src/components/base-node.tsx +21 -0
  182. package/templates/default/src/components/chart/pie-chart.tsx +73 -0
  183. package/templates/default/src/components/data-extraction/locator-inspector.tsx +460 -0
  184. package/templates/default/src/components/data-state/empty-state.tsx +40 -0
  185. package/templates/default/src/components/data-visualization/info-card.tsx +70 -0
  186. package/templates/default/src/components/data-visualization/info-grid.tsx +22 -0
  187. package/templates/default/src/components/devtools/providers.tsx +13 -0
  188. package/templates/default/src/components/diagram/button-edge.tsx +54 -0
  189. package/templates/default/src/components/diagram/dynamic-parameters.tsx +438 -0
  190. package/templates/default/src/components/diagram/edit-header-option.tsx +36 -0
  191. package/templates/default/src/components/diagram/flow-diagram.tsx +470 -0
  192. package/templates/default/src/components/diagram/node-form.tsx +262 -0
  193. package/templates/default/src/components/diagram/options-header-node.tsx +57 -0
  194. package/templates/default/src/components/diagram/template-step-combobox.tsx +155 -0
  195. package/templates/default/src/components/form/error-message.tsx +7 -0
  196. package/templates/default/src/components/kokonutui/smooth-tab.tsx +453 -0
  197. package/templates/default/src/components/loading-skeleton/data-table/data-table-skeleton.tsx +30 -0
  198. package/templates/default/src/components/loading-skeleton/form/button-skeleton.tsx +8 -0
  199. package/templates/default/src/components/loading-skeleton/form/icon-button-skeleton.tsx +8 -0
  200. package/templates/default/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -0
  201. package/templates/default/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -0
  202. package/templates/default/src/components/logo.tsx +15 -0
  203. package/templates/default/src/components/navigation/command-badge.tsx +34 -0
  204. package/templates/default/src/components/navigation/command-chain-input.tsx +51 -0
  205. package/templates/default/src/components/navigation/entity-search-command.tsx +116 -0
  206. package/templates/default/src/components/navigation/nav-card.tsx +31 -0
  207. package/templates/default/src/components/navigation/nav-command.tsx +508 -0
  208. package/templates/default/src/components/navigation/nav-link.tsx +60 -0
  209. package/templates/default/src/components/navigation/nav-menu-card-deck.tsx +112 -0
  210. package/templates/default/src/components/node-header.tsx +159 -0
  211. package/templates/default/src/components/reports/test-case-logs-modal.tsx +253 -0
  212. package/templates/default/src/components/table/table-actions.tsx +172 -0
  213. package/templates/default/src/components/test-run/download-logs-button.tsx +99 -0
  214. package/templates/default/src/components/test-run/log-viewer.tsx +445 -0
  215. package/templates/default/src/components/test-run/test-run-details.tsx +611 -0
  216. package/templates/default/src/components/test-run/test-run-header.tsx +149 -0
  217. package/templates/default/src/components/test-run/view-report-button.tsx +102 -0
  218. package/templates/default/src/components/theme/mode-toggle.tsx +54 -0
  219. package/templates/default/src/components/theme/theme-provider.tsx +8 -0
  220. package/templates/default/src/components/typography/page-header-subtitle.tsx +7 -0
  221. package/templates/default/src/components/typography/page-header.tsx +7 -0
  222. package/templates/default/src/components/ui/alert-dialog.tsx +106 -0
  223. package/templates/default/src/components/ui/alert.tsx +43 -0
  224. package/templates/default/src/components/ui/avatar.tsx +40 -0
  225. package/templates/default/src/components/ui/badge.tsx +29 -0
  226. package/templates/default/src/components/ui/button.tsx +47 -0
  227. package/templates/default/src/components/ui/calendar.tsx +158 -0
  228. package/templates/default/src/components/ui/card.tsx +43 -0
  229. package/templates/default/src/components/ui/chart.tsx +369 -0
  230. package/templates/default/src/components/ui/checkbox.tsx +28 -0
  231. package/templates/default/src/components/ui/command.tsx +135 -0
  232. package/templates/default/src/components/ui/data-table-column-header.tsx +61 -0
  233. package/templates/default/src/components/ui/data-table-pagination.tsx +87 -0
  234. package/templates/default/src/components/ui/data-table-view-options.tsx +50 -0
  235. package/templates/default/src/components/ui/data-table.tsx +267 -0
  236. package/templates/default/src/components/ui/dialog.tsx +97 -0
  237. package/templates/default/src/components/ui/dropdown-menu.tsx +182 -0
  238. package/templates/default/src/components/ui/empty.tsx +104 -0
  239. package/templates/default/src/components/ui/input.tsx +22 -0
  240. package/templates/default/src/components/ui/kbd.tsx +28 -0
  241. package/templates/default/src/components/ui/label.tsx +19 -0
  242. package/templates/default/src/components/ui/loading.tsx +12 -0
  243. package/templates/default/src/components/ui/multi-select-with-preview.tsx +116 -0
  244. package/templates/default/src/components/ui/multi-select.tsx +142 -0
  245. package/templates/default/src/components/ui/navigation-menu.tsx +120 -0
  246. package/templates/default/src/components/ui/popover.tsx +33 -0
  247. package/templates/default/src/components/ui/progress.tsx +25 -0
  248. package/templates/default/src/components/ui/radio-group.tsx +44 -0
  249. package/templates/default/src/components/ui/scroll-area.tsx +40 -0
  250. package/templates/default/src/components/ui/select.tsx +144 -0
  251. package/templates/default/src/components/ui/separator.tsx +22 -0
  252. package/templates/default/src/components/ui/skeleton.tsx +7 -0
  253. package/templates/default/src/components/ui/table.tsx +76 -0
  254. package/templates/default/src/components/ui/tabs.tsx +55 -0
  255. package/templates/default/src/components/ui/textarea.tsx +21 -0
  256. package/templates/default/src/components/ui/toast.tsx +113 -0
  257. package/templates/default/src/components/ui/toaster.tsx +26 -0
  258. package/templates/default/src/components/ui/tooltip.tsx +32 -0
  259. package/templates/default/src/components/user-prompt/delete-prompt.tsx +87 -0
  260. package/templates/default/src/config/db-config.ts +10 -0
  261. package/templates/default/src/constants/form-opts/diagram/node-form.ts +30 -0
  262. package/templates/default/src/constants/form-opts/environment-form-opts.ts +24 -0
  263. package/templates/default/src/constants/form-opts/locator-form-opts.ts +20 -0
  264. package/templates/default/src/constants/form-opts/locator-group-form-opts.ts +28 -0
  265. package/templates/default/src/constants/form-opts/module-form-opts.ts +21 -0
  266. package/templates/default/src/constants/form-opts/review-form-opts.ts +23 -0
  267. package/templates/default/src/constants/form-opts/tag-form-opts.ts +42 -0
  268. package/templates/default/src/constants/form-opts/template-selection-form-opts.ts +16 -0
  269. package/templates/default/src/constants/form-opts/template-step-group-form-opts.ts +24 -0
  270. package/templates/default/src/constants/form-opts/template-test-case-form-opts.ts +39 -0
  271. package/templates/default/src/constants/form-opts/template-test-step-form-opts.ts +36 -0
  272. package/templates/default/src/constants/form-opts/test-case-form-opts.ts +43 -0
  273. package/templates/default/src/constants/form-opts/test-run-form-opts.ts +31 -0
  274. package/templates/default/src/constants/form-opts/test-suite-form-opts.ts +24 -0
  275. package/templates/default/src/hooks/use-toast.ts +187 -0
  276. package/templates/default/src/lib/bidirectional-sync.ts +432 -0
  277. package/templates/default/src/lib/database-sync.ts +531 -0
  278. package/templates/default/src/lib/environment-file-utils.ts +221 -0
  279. package/templates/default/src/lib/feature-file-generator.ts +411 -0
  280. package/templates/default/src/lib/gherkin-parser.ts +259 -0
  281. package/templates/default/src/lib/locator-group-file-utils.ts +370 -0
  282. package/templates/default/src/lib/metrics/metric-calculator.ts +613 -0
  283. package/templates/default/src/lib/module-hierarchy-builder.ts +205 -0
  284. package/templates/default/src/lib/path-helpers/module-path.ts +71 -0
  285. package/templates/default/src/lib/test-case-utils.ts +6 -0
  286. package/templates/default/src/lib/test-run/log-formatter.ts +83 -0
  287. package/templates/default/src/lib/test-run/process-manager.ts +191 -0
  288. package/templates/default/src/lib/test-run/report-parser.ts +316 -0
  289. package/templates/default/src/lib/test-run/test-run-executor.ts +144 -0
  290. package/templates/default/src/lib/test-run/winston-logger.ts +95 -0
  291. package/templates/default/src/lib/transformers/gherkin-converter.ts +42 -0
  292. package/templates/default/src/lib/transformers/key-to-icon-transformer.tsx +95 -0
  293. package/templates/default/src/lib/transformers/template-test-case-converter.ts +160 -0
  294. package/templates/default/src/lib/utils/node-param-validation.ts +81 -0
  295. package/templates/default/src/lib/utils/template-step-file-generator.ts +167 -0
  296. package/templates/default/src/lib/utils/template-step-file-manager-intelligent.ts +723 -0
  297. package/templates/default/src/lib/utils/template-step-file-manager.ts +166 -0
  298. package/templates/default/src/lib/utils.ts +31 -0
  299. package/templates/default/src/tests/config/environments/environments.json +14 -0
  300. package/templates/default/src/tests/config/executor/world.ts +41 -0
  301. package/templates/default/src/tests/executor.ts +80 -0
  302. package/templates/default/src/tests/hooks/hooks.ts +99 -0
  303. package/templates/default/src/tests/mapping/locator-map.json +1 -0
  304. package/templates/default/src/tests/steps/actions/click.step.ts +62 -0
  305. package/templates/default/src/tests/steps/actions/hover.step.ts +31 -0
  306. package/templates/default/src/tests/steps/actions/input.step.ts +149 -0
  307. package/templates/default/src/tests/steps/actions/navigation.step.ts +72 -0
  308. package/templates/default/src/tests/steps/actions/random_data.step.ts +146 -0
  309. package/templates/default/src/tests/steps/actions/store.step.ts +90 -0
  310. package/templates/default/src/tests/steps/actions/wait.step.ts +107 -0
  311. package/templates/default/src/tests/steps/validations/active_state_assertion.step.ts +34 -0
  312. package/templates/default/src/tests/steps/validations/navigation_assertion.step.ts +23 -0
  313. package/templates/default/src/tests/steps/validations/text_assertion.step.ts +111 -0
  314. package/templates/default/src/tests/steps/validations/visibility_assertion.step.ts +30 -0
  315. package/templates/default/src/tests/support/parameter-types.ts +12 -0
  316. package/templates/default/src/tests/utils/cache.util.ts +260 -0
  317. package/templates/default/src/tests/utils/cli.util.ts +177 -0
  318. package/templates/default/src/tests/utils/environment.util.ts +65 -0
  319. package/templates/default/src/tests/utils/locator.util.ts +248 -0
  320. package/templates/default/src/tests/utils/random-data.util.ts +45 -0
  321. package/templates/default/src/tests/utils/spawner.util.ts +617 -0
  322. package/templates/default/src/types/diagram/diagram.ts +34 -0
  323. package/templates/default/src/types/diagram/template-step.ts +11 -0
  324. package/templates/default/src/types/executor/browser.type.ts +1 -0
  325. package/templates/default/src/types/form/actionHandler.ts +6 -0
  326. package/templates/default/src/types/locator/locator.type.ts +11 -0
  327. package/templates/default/src/types/step/step.type.ts +1 -0
  328. package/templates/default/src/types/table/data-table.ts +6 -0
  329. package/templates/default/tailwind.config.ts +62 -0
  330. package/templates/default/tsconfig.json +28 -0
@@ -0,0 +1,82 @@
1
+ import { DataTable } from '@/components/ui/data-table'
2
+ import { reportViewTableCols } from './report-view-table-columns'
3
+ import { Prisma } from '@prisma/client'
4
+
5
+ type ReportDetailWithRelations = Prisma.ReportGetPayload<{
6
+ include: {
7
+ testRun: {
8
+ include: {
9
+ environment: true
10
+ tags: true
11
+ }
12
+ }
13
+ features: {
14
+ include: {
15
+ tags: true
16
+ scenarios: {
17
+ include: {
18
+ tags: true
19
+ steps: true
20
+ hooks: true
21
+ }
22
+ }
23
+ }
24
+ }
25
+ testCases: {
26
+ include: {
27
+ testRunTestCase: {
28
+ include: {
29
+ testCase: {
30
+ include: {
31
+ tags: true
32
+ }
33
+ }
34
+ }
35
+ }
36
+ reportScenario: {
37
+ include: {
38
+ tags: true
39
+ steps: {
40
+ orderBy: {
41
+ order: 'asc'
42
+ }
43
+ }
44
+ hooks: true
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }>
51
+
52
+ interface ReportViewTableProps {
53
+ report: ReportDetailWithRelations
54
+ }
55
+
56
+ const ReportViewTable = ({ report }: ReportViewTableProps) => {
57
+ // Type guard to validate the data structure
58
+ const isValidReportTestCaseData = (testCases: unknown): testCases is ReportDetailWithRelations['testCases'] => {
59
+ if (!Array.isArray(testCases)) return false
60
+ return testCases.every(
61
+ item => item && typeof item === 'object' && 'id' in item && 'testRunTestCase' in item && 'reportScenario' in item,
62
+ )
63
+ }
64
+
65
+ if (!isValidReportTestCaseData(report.testCases)) {
66
+ return <div>Error: Invalid report test case data format</div>
67
+ }
68
+
69
+ return (
70
+ <>
71
+ <DataTable
72
+ columns={reportViewTableCols}
73
+ data={report.testCases}
74
+ filterColumn="testCaseTitle"
75
+ filterPlaceholder="Filter by test case title..."
76
+ showSelectedRows={false}
77
+ />
78
+ </>
79
+ )
80
+ }
81
+
82
+ export default ReportViewTable
@@ -0,0 +1,42 @@
1
+ import PageHeader from '@/components/typography/page-header'
2
+ import HeaderSubtitle from '@/components/typography/page-header-subtitle'
3
+ import { Code } from 'lucide-react'
4
+ import { Suspense } from 'react'
5
+ import DataTableSkeleton from '@/components/loading-skeleton/data-table/data-table-skeleton'
6
+ import { Metadata } from 'next'
7
+ import TestCasesMetricTable from './test-cases-metric-table'
8
+
9
+ export const metadata: Metadata = {
10
+ title: 'Appraise | Test Cases Metrics Report',
11
+ description: 'Manage test cases report for identifying elements on pages',
12
+ }
13
+
14
+ const TestCasesMetricsReport = async ({searchParams}: {searchParams: Promise<{filter?: string}>}) => {
15
+ const resolvedSearchParams = await searchParams
16
+ const filter = resolvedSearchParams?.filter as 'repeatedlyFailing' | 'flaky' | undefined
17
+
18
+ return (
19
+ <>
20
+ <div className="mb-8">
21
+ <div className="flex items-center justify-between">
22
+ <div>
23
+ <PageHeader>
24
+ <span className="flex items-center">
25
+ <Code className="mr-2 h-8 w-8" />
26
+ Test Cases Report
27
+ </span>
28
+ </PageHeader>
29
+ <HeaderSubtitle>
30
+ Test cases are the individual tests that are used to test a specific feature or functionality
31
+ </HeaderSubtitle>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ <Suspense fallback={<DataTableSkeleton />}>
36
+ <TestCasesMetricTable filter={filter || 'repeatedlyFailing'} />
37
+ </Suspense>
38
+ </>
39
+ )
40
+ }
41
+
42
+ export default TestCasesMetricsReport
@@ -0,0 +1,115 @@
1
+ 'use client'
2
+
3
+ import { DataTableColumnHeader } from '@/components/ui/data-table-column-header'
4
+ import { ColumnDef } from '@tanstack/react-table'
5
+ import TableActions from '@/components/table/table-actions'
6
+ import { Tag, TestCase, TestCaseMetrics } from '@prisma/client'
7
+ import { deleteTestCaseAction } from '@/actions/test-case/test-case-actions'
8
+ import { formatDateTime } from '@/lib/utils'
9
+ import { Checkbox } from '@/components/ui/checkbox'
10
+
11
+ export const testCasesMetricTableCols: ColumnDef<TestCaseMetrics & { testCase: TestCase & { tags: Tag[] } }>[] =
12
+ [
13
+ {
14
+ id: 'select',
15
+ header: ({ table }) => (
16
+ <Checkbox
17
+ checked={table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate')}
18
+ onCheckedChange={value => table.toggleAllPageRowsSelected(!!value)}
19
+ aria-label="Select all"
20
+ className="mr-2"
21
+ />
22
+ ),
23
+ cell: ({ row }) => (
24
+ <Checkbox
25
+ checked={row.getIsSelected()}
26
+ onCheckedChange={value => row.toggleSelected(!!value)}
27
+ aria-label="Select row"
28
+ className="mr-2"
29
+ />
30
+ ),
31
+ enableSorting: false,
32
+ enableHiding: false,
33
+ },
34
+ {
35
+ id: 'testCase.title',
36
+ accessorKey: 'testCase.title',
37
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Test Case Title" />,
38
+ cell: ({ row }) => {
39
+ const testCase = row.original.testCase
40
+ return <div>{testCase.title}</div>
41
+ },
42
+ },
43
+ {
44
+ accessorKey: 'testCase.description',
45
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Test Case Description" />,
46
+ cell: ({ row }) => {
47
+ const testCase = row.original.testCase
48
+ return <div>{testCase.description}</div>
49
+ },
50
+ },
51
+ {
52
+ accessorKey: 'consecutiveFailures',
53
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Consecutive Failures" />,
54
+ },
55
+ {
56
+ accessorKey: 'failureRate',
57
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Failure Rate" />,
58
+ cell: ({ row }) => {
59
+ const testCaseMetrics = row.original
60
+ return <div>{testCaseMetrics.failureRate * 100}%</div>
61
+ },
62
+ },
63
+ {
64
+ accessorKey: 'totalRecentRuns',
65
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Total Recent Runs" />,
66
+ cell: ({ row }) => {
67
+ const testCaseMetrics = row.original
68
+ return <div>{testCaseMetrics.totalRecentRuns}</div>
69
+ },
70
+ },
71
+ {
72
+ accessorKey: 'failedRecentRuns',
73
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Failed Recent Runs" />,
74
+ cell: ({ row }) => {
75
+ const testCaseMetrics = row.original
76
+ return <div>{testCaseMetrics.failedRecentRuns}</div>
77
+ },
78
+ },
79
+ {
80
+ accessorKey: 'lastExecutedAt',
81
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Last Executed At" />,
82
+ cell: ({ row }) => {
83
+ const testCaseMetrics = row.original
84
+ return <div>{testCaseMetrics.lastExecutedAt ? formatDateTime(testCaseMetrics.lastExecutedAt) : '-'}</div>
85
+ },
86
+ },
87
+ {
88
+ accessorKey: 'lastFailedAt',
89
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Last Failed At" />,
90
+ cell: ({ row }) => {
91
+ const testCaseMetrics = row.original
92
+ return <div>{testCaseMetrics.lastFailedAt ? formatDateTime(testCaseMetrics.lastFailedAt) : '-'}</div>
93
+ },
94
+ },
95
+ {
96
+ accessorKey: 'lastPassedAt',
97
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Last Passed At" />,
98
+ cell: ({ row }) => {
99
+ const testCaseMetrics = row.original
100
+ return <div>{testCaseMetrics.lastPassedAt ? formatDateTime(testCaseMetrics.lastPassedAt) : '-'}</div>
101
+ },
102
+ },
103
+ {
104
+ id: 'actions',
105
+ cell: ({ row }) => {
106
+ const testCaseId = row.original.testCaseId
107
+ return (
108
+ <TableActions
109
+ modifyLink={`/test-cases/modify/${testCaseId}`}
110
+ deleteHandler={() => deleteTestCaseAction([testCaseId])}
111
+ />
112
+ )
113
+ },
114
+ },
115
+ ]
@@ -0,0 +1,27 @@
1
+ import { DataTable } from '@/components/ui/data-table'
2
+ import { testCasesMetricTableCols } from './test-cases-metric-table-columns'
3
+ import { TestCaseMetrics, TestCase, Tag } from '@prisma/client'
4
+ import { getAllTestCaseMetricsAction } from '@/actions/reports/report-actions'
5
+ import { deleteTestCaseAction } from '@/actions/test-case/test-case-actions'
6
+
7
+ const TestCasesMetricTable = async ({ filter }: { filter: 'repeatedlyFailing' | 'flaky' }) => {
8
+ const { data: testCaseMetrics, error: testCaseMetricsError } = await getAllTestCaseMetricsAction(filter)
9
+
10
+ if (testCaseMetricsError) {
11
+ return <div>Error: {testCaseMetricsError}</div>
12
+ }
13
+
14
+ return (
15
+ <>
16
+ <DataTable
17
+ columns={testCasesMetricTableCols}
18
+ data={testCaseMetrics as (TestCaseMetrics & { testCase: TestCase & { tags: Tag[] } })[]}
19
+ filterColumn="testCase.title"
20
+ filterPlaceholder="Filter by name..."
21
+ deleteAction={deleteTestCaseAction}
22
+ />
23
+ </>
24
+ )
25
+ }
26
+
27
+ export default TestCasesMetricTable
@@ -0,0 +1,42 @@
1
+ import PageHeader from '@/components/typography/page-header'
2
+ import HeaderSubtitle from '@/components/typography/page-header-subtitle'
3
+ import { TestTubes } from 'lucide-react'
4
+ import { Suspense } from 'react'
5
+ import DataTableSkeleton from '@/components/loading-skeleton/data-table/data-table-skeleton'
6
+ import { Metadata } from 'next'
7
+ import TestSuitesMetricTable from './test-suites-metric-table'
8
+
9
+ export const metadata: Metadata = {
10
+ title: 'Appraise | Test Suites Metrics Report',
11
+ description: 'Manage test suites report for identifying test suites that are not executed recently',
12
+ }
13
+
14
+ const TestSuitesMetricsReport = async ({searchParams}: {searchParams: Promise<{filter?: string}>}) => {
15
+ const resolvedSearchParams = await searchParams
16
+ const filter = resolvedSearchParams?.filter as 'notExecutedRecently' | undefined
17
+
18
+ return (
19
+ <>
20
+ <div className="mb-8">
21
+ <div className="flex items-center justify-between">
22
+ <div>
23
+ <PageHeader>
24
+ <span className="flex items-center">
25
+ <TestTubes className="mr-2 h-8 w-8" />
26
+ Test Suites Report
27
+ </span>
28
+ </PageHeader>
29
+ <HeaderSubtitle>
30
+ Test suites are collections of tests that are used to test a specific feature or functionality
31
+ </HeaderSubtitle>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ <Suspense fallback={<DataTableSkeleton />}>
36
+ <TestSuitesMetricTable filter={filter || 'notExecutedRecently'} />
37
+ </Suspense>
38
+ </>
39
+ )
40
+ }
41
+
42
+ export default TestSuitesMetricsReport
@@ -0,0 +1,79 @@
1
+ 'use client'
2
+
3
+ import { DataTableColumnHeader } from '@/components/ui/data-table-column-header'
4
+ import { ColumnDef } from '@tanstack/react-table'
5
+ import TableActions from '@/components/table/table-actions'
6
+ import { Tag, TestCase, TestSuite, TestSuiteMetrics } from '@prisma/client'
7
+ import { formatDateTime } from '@/lib/utils'
8
+ import { Checkbox } from '@/components/ui/checkbox'
9
+ import { deleteTestSuiteAction } from '@/actions/test-suite/test-suite-actions'
10
+
11
+ export const testSuitesMetricTableCols: ColumnDef<TestSuiteMetrics & { testSuite: TestSuite & { tags: Tag[]; testCases: TestCase[] } }>[] =
12
+ [
13
+ {
14
+ id: 'select',
15
+ header: ({ table }) => (
16
+ <Checkbox
17
+ checked={table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate')}
18
+ onCheckedChange={value => table.toggleAllPageRowsSelected(!!value)}
19
+ aria-label="Select all"
20
+ className="mr-2"
21
+ />
22
+ ),
23
+ cell: ({ row }) => (
24
+ <Checkbox
25
+ checked={row.getIsSelected()}
26
+ onCheckedChange={value => row.toggleSelected(!!value)}
27
+ aria-label="Select row"
28
+ className="mr-2"
29
+ />
30
+ ),
31
+ enableSorting: false,
32
+ enableHiding: false,
33
+ },
34
+ {
35
+ id: 'testSuite.name',
36
+ accessorKey: 'testSuite.name',
37
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Test Suite Name" />,
38
+ cell: ({ row }) => {
39
+ const testSuite = row.original.testSuite
40
+ return <div>{testSuite.name}</div>
41
+ },
42
+ },
43
+ {
44
+ accessorKey: 'testSuite.description',
45
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Test Suite Description" />,
46
+ cell: ({ row }) => {
47
+ const testSuite = row.original.testSuite
48
+ return <div>{testSuite.description}</div>
49
+ },
50
+ },
51
+ {
52
+ accessorKey: 'testSuite.testCases.length',
53
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Total Test Cases" />,
54
+ cell: ({ row }) => {
55
+ const testSuite = row.original.testSuite
56
+ return <div>{testSuite.testCases.length}</div>
57
+ },
58
+ },
59
+ {
60
+ accessorKey: 'lastExecutedAt',
61
+ header: ({ column }) => <DataTableColumnHeader column={column} title="Last Executed At" />,
62
+ cell: ({ row }) => {
63
+ const testSuiteMetrics = row.original
64
+ return <div>{formatDateTime(testSuiteMetrics.lastExecutedAt)}</div>
65
+ },
66
+ },
67
+ {
68
+ id: 'actions',
69
+ cell: ({ row }) => {
70
+ const testSuite = row.original.testSuite
71
+ return (
72
+ <TableActions
73
+ modifyLink={`/test-suites/modify/${testSuite.id}`}
74
+ deleteHandler={() => deleteTestSuiteAction([testSuite.id])}
75
+ />
76
+ )
77
+ },
78
+ },
79
+ ]
@@ -0,0 +1,27 @@
1
+ import { deleteTestSuiteAction } from '@/actions/test-suite/test-suite-actions'
2
+ import { DataTable } from '@/components/ui/data-table'
3
+ import { TestCase, Tag, TestSuiteMetrics, TestSuite } from '@prisma/client'
4
+ import { getAllTestSuiteMetricsAction } from '@/actions/reports/report-actions'
5
+ import { testSuitesMetricTableCols } from './test-suites-metric-table-columns'
6
+
7
+ const TestSuitesMetricTable = async ({ filter }: { filter: 'notExecutedRecently' }) => {
8
+ const { data: testSuiteMetrics, error: testSuiteMetricsError } = await getAllTestSuiteMetricsAction(filter)
9
+
10
+ if (testSuiteMetricsError) {
11
+ return <div>Error: {testSuiteMetricsError}</div>
12
+ }
13
+
14
+ return (
15
+ <>
16
+ <DataTable
17
+ columns={testSuitesMetricTableCols}
18
+ data={testSuiteMetrics as (TestSuiteMetrics & { testSuite: TestSuite & { tags: Tag[]; testCases: TestCase[] } })[]}
19
+ filterColumn="testSuite.name"
20
+ filterPlaceholder="Filter by name..."
21
+ deleteAction={deleteTestSuiteAction}
22
+ />
23
+ </>
24
+ )
25
+ }
26
+
27
+ export default TestSuitesMetricTable
@@ -0,0 +1,60 @@
1
+ 'use client'
2
+
3
+ import { useState } from 'react'
4
+ import { Button } from '@/components/ui/button'
5
+ import { Eye } from 'lucide-react'
6
+ import { TestCaseLogsModal } from '@/components/reports/test-case-logs-modal'
7
+ import { ReportScenario, StepStatus } from '@prisma/client'
8
+
9
+ type ReportScenarioWithDetails = (ReportScenario & {
10
+ tags: Array<{ tagName: string }>
11
+ steps: Array<{
12
+ id: string
13
+ keyword: string
14
+ name: string
15
+ status: StepStatus
16
+ duration: string
17
+ errorMessage: string | null
18
+ errorTrace: string | null
19
+ order: number
20
+ }>
21
+ hooks: Array<{
22
+ id: string
23
+ keyword: string
24
+ status: StepStatus
25
+ duration: string
26
+ errorMessage: string | null
27
+ errorTrace: string | null
28
+ }>
29
+ }) | null
30
+
31
+ interface ViewLogsButtonProps {
32
+ reportScenario: ReportScenarioWithDetails
33
+ }
34
+
35
+ export function ViewLogsButton({ reportScenario }: ViewLogsButtonProps) {
36
+ const [isModalOpen, setIsModalOpen] = useState(false)
37
+
38
+ return (
39
+ <>
40
+ <Button
41
+ variant="outline"
42
+ size="sm"
43
+ className="flex items-center gap-2"
44
+ onClick={() => setIsModalOpen(true)}
45
+ disabled={!reportScenario}
46
+ >
47
+ <Eye className="h-4 w-4" />
48
+ View Logs
49
+ </Button>
50
+ {reportScenario && (
51
+ <TestCaseLogsModal
52
+ open={isModalOpen}
53
+ onOpenChange={setIsModalOpen}
54
+ reportScenario={reportScenario}
55
+ />
56
+ )}
57
+ </>
58
+ )
59
+ }
60
+
@@ -0,0 +1,26 @@
1
+ // Create review page temporarily commented out - will be reworked later
2
+ import React from 'react'
3
+ import { Metadata } from 'next'
4
+
5
+ /*
6
+ Create review functionality temporarily disabled
7
+ Will be re-implemented without user dependencies
8
+ */
9
+
10
+ export const metadata: Metadata = {
11
+ title: 'Appraise | Create Review',
12
+ description: 'Review creation will be implemented later',
13
+ }
14
+
15
+ const CreateReview = () => {
16
+ return (
17
+ <div className="p-8">
18
+ <h1 className="text-2xl font-bold">Create Review</h1>
19
+ <p className="mt-4 text-muted-foreground">
20
+ Review creation will be implemented later without user authentication dependencies.
21
+ </p>
22
+ </div>
23
+ )
24
+ }
25
+
26
+ export default CreateReview
@@ -0,0 +1,15 @@
1
+ // Created reviews table temporarily commented out - will be reworked later
2
+ import React from 'react'
3
+
4
+ /*
5
+ Created reviews table functionality temporarily disabled
6
+ Will be re-implemented without user dependencies
7
+ */
8
+
9
+ export default function CreatedReviewsTable() {
10
+ return (
11
+ <div className="p-4">
12
+ <p className="text-muted-foreground">Created reviews table will be implemented later.</p>
13
+ </div>
14
+ )
15
+ }
@@ -0,0 +1,26 @@
1
+ // Modify review page temporarily commented out - will be reworked later
2
+ import React from 'react'
3
+ import { Metadata } from 'next'
4
+
5
+ /*
6
+ Modify review functionality temporarily disabled
7
+ Will be re-implemented without user dependencies
8
+ */
9
+
10
+ export const metadata: Metadata = {
11
+ title: 'Appraise | Modify Review',
12
+ description: 'Review modification will be implemented later',
13
+ }
14
+
15
+ const ModifyReview = () => {
16
+ return (
17
+ <div className="p-8">
18
+ <h1 className="text-2xl font-bold">Modify Review</h1>
19
+ <p className="mt-4 text-muted-foreground">
20
+ Review modification will be implemented later without user authentication dependencies.
21
+ </p>
22
+ </div>
23
+ )
24
+ }
25
+
26
+ export default ModifyReview
@@ -0,0 +1,26 @@
1
+ // Reviews page temporarily commented out - will be reworked later
2
+ import React from 'react'
3
+ import { Metadata } from 'next'
4
+
5
+ /*
6
+ Reviews functionality temporarily disabled
7
+ Will be re-implemented without user dependencies
8
+ */
9
+
10
+ export const metadata: Metadata = {
11
+ title: 'Appraise | Reviews',
12
+ description: 'Review functionality will be implemented later',
13
+ }
14
+
15
+ const Reviews = () => {
16
+ return (
17
+ <div className="p-8">
18
+ <h1 className="text-2xl font-bold">Reviews</h1>
19
+ <p className="mt-4 text-muted-foreground">
20
+ Review functionality will be implemented later without user authentication dependencies.
21
+ </p>
22
+ </div>
23
+ )
24
+ }
25
+
26
+ export default Reviews
@@ -0,0 +1,26 @@
1
+ // Review view page temporarily commented out - will be reworked later
2
+ import React from 'react'
3
+ import { Metadata } from 'next'
4
+
5
+ /*
6
+ Review view functionality temporarily disabled
7
+ Will be re-implemented without user dependencies
8
+ */
9
+
10
+ export const metadata: Metadata = {
11
+ title: 'Appraise | Review Details',
12
+ description: 'Review viewing will be implemented later',
13
+ }
14
+
15
+ const ReviewView = () => {
16
+ return (
17
+ <div className="p-8">
18
+ <h1 className="text-2xl font-bold">Review Details</h1>
19
+ <p className="mt-4 text-muted-foreground">
20
+ Review viewing will be implemented later without user authentication dependencies.
21
+ </p>
22
+ </div>
23
+ )
24
+ }
25
+
26
+ export default ReviewView
@@ -0,0 +1,11 @@
1
+ // Review form temporarily commented out - will be reworked later
2
+ // User references need to be updated when reviews are re-implemented
3
+
4
+ /*
5
+ Original review form content commented out to prevent build errors
6
+ This file will be restored and updated when the review system is reworked
7
+ */
8
+
9
+ export default function ReviewForm() {
10
+ return <div>Review form will be implemented later</div>
11
+ }
@@ -0,0 +1,9 @@
1
+ // Review table by creator columns temporarily commented out - will be reworked later
2
+
3
+ /*
4
+ Review table columns functionality temporarily disabled
5
+ Will be re-implemented without user dependencies
6
+ */
7
+
8
+ export const reviewTableByCreatorColumns = []
9
+ export default reviewTableByCreatorColumns
@@ -0,0 +1,9 @@
1
+ // Review table by reviewer columns temporarily commented out - will be reworked later
2
+
3
+ /*
4
+ Review table columns functionality temporarily disabled
5
+ Will be re-implemented without user dependencies
6
+ */
7
+
8
+ export const reviewTableByReviewerColumns = []
9
+ export default reviewTableByReviewerColumns
@@ -0,0 +1,15 @@
1
+ // Reviewer reviews table temporarily commented out - will be reworked later
2
+ import React from 'react'
3
+
4
+ /*
5
+ Reviewer reviews table functionality temporarily disabled
6
+ Will be re-implemented without user dependencies
7
+ */
8
+
9
+ export default function ReviewerReviewsTable() {
10
+ return (
11
+ <div className="p-4">
12
+ <p className="text-muted-foreground">Reviewer reviews table will be implemented later.</p>
13
+ </div>
14
+ )
15
+ }