create-appraisejs 0.1.6 → 0.1.8-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -45
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/copy-template.d.ts +2 -1
- package/dist/copy-template.d.ts.map +1 -1
- package/dist/copy-template.js +10 -7
- package/dist/copy-template.js.map +1 -1
- package/dist/copy-template.test.js +19 -0
- package/dist/copy-template.test.js.map +1 -1
- package/package.json +69 -67
- package/templates/default/.vscode/settings.json +5 -0
- package/templates/default/appraisejs.config.json +1 -1
- package/templates/default/components.json +24 -24
- package/templates/default/cucumber.mjs +16 -0
- package/templates/default/eslint.config.mjs +15 -15
- package/templates/default/next.config.ts +13 -7
- package/templates/default/package-lock.json +13732 -14321
- package/templates/default/package.json +11 -9
- package/templates/default/postcss.config.mjs +8 -8
- package/templates/default/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -16
- package/templates/default/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -27
- package/templates/default/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -17
- package/templates/default/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -12
- package/templates/default/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -28
- package/templates/default/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -12
- package/templates/default/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -10
- package/templates/default/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -10
- package/templates/default/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -108
- package/templates/default/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -55
- package/templates/default/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -27
- package/templates/default/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -59
- package/templates/default/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -34
- package/templates/default/prisma/schema.prisma +554 -554
- package/templates/default/scripts/regenerate-features.ts +94 -94
- package/templates/default/scripts/setup-env.ts +19 -19
- package/templates/default/scripts/sync-all.ts +341 -341
- package/templates/default/scripts/sync-appraise-base-template.ts +52 -2
- package/templates/default/scripts/sync-environments.ts +323 -323
- package/templates/default/scripts/sync-locator-groups.ts +413 -413
- package/templates/default/scripts/sync-locators.ts +402 -402
- package/templates/default/scripts/sync-modules.ts +349 -349
- package/templates/default/scripts/sync-tags.ts +292 -292
- package/templates/default/scripts/sync-template-step-groups.ts +399 -399
- package/templates/default/scripts/sync-template-steps.ts +806 -806
- package/templates/default/scripts/sync-test-cases.ts +905 -905
- package/templates/default/scripts/sync-test-suites.ts +411 -411
- package/templates/default/src/actions/conflict/conflict.action.ts +33 -33
- package/templates/default/src/actions/dashboard/dashboard-actions.ts +240 -240
- package/templates/default/src/actions/environments/environment-actions.ts +205 -205
- package/templates/default/src/actions/locator/locator-actions.ts +547 -547
- package/templates/default/src/actions/locator-groups/locator-group-actions.ts +344 -344
- package/templates/default/src/actions/modules/module-actions.ts +133 -133
- package/templates/default/src/actions/reports/report-actions.ts +613 -613
- package/templates/default/src/actions/review/review-actions.ts +147 -147
- package/templates/default/src/actions/tags/tag-actions.ts +104 -104
- package/templates/default/src/actions/template-step/template-step-actions.ts +332 -332
- package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +278 -278
- package/templates/default/src/actions/template-test-case/template-test-case-actions.ts +238 -238
- package/templates/default/src/actions/test-case/test-case-actions.ts +419 -419
- package/templates/default/src/actions/test-run/test-run-actions.ts +1185 -1185
- package/templates/default/src/actions/test-suite/test-suite-actions.ts +253 -253
- package/templates/default/src/actions/user/user-actions.ts +13 -13
- package/templates/default/src/app/(base)/environments/create/page.tsx +28 -28
- package/templates/default/src/app/(base)/environments/environment-form.tsx +219 -219
- package/templates/default/src/app/(base)/environments/environment-table-columns.tsx +96 -96
- package/templates/default/src/app/(base)/environments/environment-table.tsx +24 -24
- package/templates/default/src/app/(base)/environments/modify/[id]/page.tsx +46 -46
- package/templates/default/src/app/(base)/environments/page.tsx +59 -59
- package/templates/default/src/app/(base)/layout.tsx +10 -10
- package/templates/default/src/app/(base)/locator-groups/create/page.tsx +44 -44
- package/templates/default/src/app/(base)/locator-groups/locator-group-form.tsx +215 -215
- package/templates/default/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -77
- package/templates/default/src/app/(base)/locator-groups/locator-group-table.tsx +28 -28
- package/templates/default/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -46
- package/templates/default/src/app/(base)/locator-groups/page.tsx +61 -61
- package/templates/default/src/app/(base)/locators/create/page.tsx +38 -38
- package/templates/default/src/app/(base)/locators/locator-form.tsx +163 -163
- package/templates/default/src/app/(base)/locators/locator-table-columns.tsx +73 -90
- package/templates/default/src/app/(base)/locators/locator-table.tsx +28 -28
- package/templates/default/src/app/(base)/locators/modify/[id]/page.tsx +45 -45
- package/templates/default/src/app/(base)/locators/page.tsx +65 -65
- package/templates/default/src/app/(base)/locators/sync-locators-button.tsx +66 -66
- package/templates/default/src/app/(base)/modules/create/page.tsx +34 -34
- package/templates/default/src/app/(base)/modules/modify/[id]/page.tsx +46 -46
- package/templates/default/src/app/(base)/modules/module-form.tsx +126 -126
- package/templates/default/src/app/(base)/modules/module-table-columns.tsx +85 -85
- package/templates/default/src/app/(base)/modules/module-table.tsx +24 -24
- package/templates/default/src/app/(base)/modules/page.tsx +59 -59
- package/templates/default/src/app/(base)/reports/[id]/page.tsx +517 -517
- package/templates/default/src/app/(base)/reports/duration-chart.tsx +33 -33
- package/templates/default/src/app/(base)/reports/feature-chart.tsx +78 -78
- package/templates/default/src/app/(base)/reports/overview-chart.tsx +46 -46
- package/templates/default/src/app/(base)/reports/page.tsx +98 -98
- package/templates/default/src/app/(base)/reports/report-metric-card.tsx +16 -16
- package/templates/default/src/app/(base)/reports/report-table-columns.tsx +189 -189
- package/templates/default/src/app/(base)/reports/report-table.tsx +72 -72
- package/templates/default/src/app/(base)/reports/report-view-table-columns.tsx +131 -131
- package/templates/default/src/app/(base)/reports/report-view-table.tsx +82 -82
- package/templates/default/src/app/(base)/reports/test-cases/page.tsx +42 -42
- package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +115 -115
- package/templates/default/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -27
- package/templates/default/src/app/(base)/reports/test-suites/page.tsx +42 -42
- package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +79 -79
- package/templates/default/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +27 -27
- package/templates/default/src/app/(base)/reports/view-logs-button.tsx +60 -60
- package/templates/default/src/app/(base)/reviews/create/page.tsx +26 -26
- package/templates/default/src/app/(base)/reviews/created-reviews-table.tsx +15 -15
- package/templates/default/src/app/(base)/reviews/modify/[id]/page.tsx +26 -26
- package/templates/default/src/app/(base)/reviews/page.tsx +26 -26
- package/templates/default/src/app/(base)/reviews/review/[id]/page.tsx +26 -26
- package/templates/default/src/app/(base)/reviews/review-form.tsx +11 -11
- package/templates/default/src/app/(base)/reviews/review-table-by-creator-columns.tsx +9 -9
- package/templates/default/src/app/(base)/reviews/review-table-by-reviewer-columns.tsx +9 -9
- package/templates/default/src/app/(base)/reviews/reviewer-reviews-table.tsx +15 -15
- package/templates/default/src/app/(base)/tags/create/page.tsx +39 -39
- package/templates/default/src/app/(base)/tags/modify/[id]/page.tsx +50 -50
- package/templates/default/src/app/(base)/tags/page.tsx +58 -58
- package/templates/default/src/app/(base)/tags/tag-form.tsx +147 -147
- package/templates/default/src/app/(base)/tags/tag-table-columns.tsx +63 -63
- package/templates/default/src/app/(base)/tags/tag-table.tsx +29 -29
- package/templates/default/src/app/(base)/template-step-groups/create/page.tsx +28 -28
- package/templates/default/src/app/(base)/template-step-groups/modify/[id]/page.tsx +45 -45
- package/templates/default/src/app/(base)/template-step-groups/page.tsx +60 -60
- package/templates/default/src/app/(base)/template-step-groups/template-step-group-form.tsx +167 -167
- package/templates/default/src/app/(base)/template-step-groups/template-step-group-table-columns.tsx +89 -89
- package/templates/default/src/app/(base)/template-step-groups/template-step-group-table.tsx +32 -32
- package/templates/default/src/app/(base)/template-steps/create/page.tsx +37 -37
- package/templates/default/src/app/(base)/template-steps/modify/[id]/page.tsx +49 -49
- package/templates/default/src/app/(base)/template-steps/page.tsx +59 -59
- package/templates/default/src/app/(base)/template-steps/paramChip.tsx +213 -213
- package/templates/default/src/app/(base)/template-steps/template-step-form.tsx +384 -384
- package/templates/default/src/app/(base)/template-steps/template-step-table-columns.tsx +158 -158
- package/templates/default/src/app/(base)/template-steps/template-step-table.tsx +24 -24
- package/templates/default/src/app/(base)/template-test-cases/create/page.tsx +56 -56
- package/templates/default/src/app/(base)/template-test-cases/modify/[id]/page.tsx +89 -89
- package/templates/default/src/app/(base)/template-test-cases/page.tsx +58 -58
- package/templates/default/src/app/(base)/template-test-cases/template-test-case-flow.tsx +84 -84
- package/templates/default/src/app/(base)/template-test-cases/template-test-case-form.tsx +262 -262
- package/templates/default/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -76
- package/templates/default/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -32
- package/templates/default/src/app/(base)/test-cases/create/page.tsx +76 -76
- package/templates/default/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx +96 -96
- package/templates/default/src/app/(base)/test-cases/create-from-template/page.tsx +38 -38
- package/templates/default/src/app/(base)/test-cases/create-from-template/template-selection-form.tsx +73 -73
- package/templates/default/src/app/(base)/test-cases/modify/[id]/page.tsx +106 -106
- package/templates/default/src/app/(base)/test-cases/page.tsx +60 -60
- package/templates/default/src/app/(base)/test-cases/test-case-flow.tsx +82 -82
- package/templates/default/src/app/(base)/test-cases/test-case-form.tsx +395 -395
- package/templates/default/src/app/(base)/test-cases/test-case-table-columns.tsx +90 -90
- package/templates/default/src/app/(base)/test-cases/test-case-table.tsx +35 -35
- package/templates/default/src/app/(base)/test-runs/[id]/page.tsx +56 -56
- package/templates/default/src/app/(base)/test-runs/create/page.tsx +47 -47
- package/templates/default/src/app/(base)/test-runs/page.tsx +60 -60
- package/templates/default/src/app/(base)/test-runs/test-run-form.tsx +508 -512
- package/templates/default/src/app/(base)/test-runs/test-run-table-columns.tsx +229 -229
- package/templates/default/src/app/(base)/test-runs/test-run-table.tsx +127 -127
- package/templates/default/src/app/(base)/test-suites/create/page.tsx +45 -45
- package/templates/default/src/app/(base)/test-suites/modify/[id]/page.tsx +55 -55
- package/templates/default/src/app/(base)/test-suites/page.tsx +82 -82
- package/templates/default/src/app/(base)/test-suites/test-suite-form.tsx +269 -269
- package/templates/default/src/app/(base)/test-suites/test-suite-table-columns.tsx +97 -97
- package/templates/default/src/app/(base)/test-suites/test-suite-table.tsx +29 -29
- package/templates/default/src/app/(dashboard-components)/app-drawer.tsx +187 -187
- package/templates/default/src/app/(dashboard-components)/data-card-grid.tsx +12 -12
- package/templates/default/src/app/(dashboard-components)/data-card.tsx +26 -26
- package/templates/default/src/app/(dashboard-components)/execution-health-panel.tsx +56 -56
- package/templates/default/src/app/(dashboard-components)/ongoing-test-runs-card.tsx +87 -87
- package/templates/default/src/app/(dashboard-components)/quick-actions-drawer.tsx +44 -44
- package/templates/default/src/app/api/test-runs/[runId]/download/route.ts +133 -133
- package/templates/default/src/app/api/test-runs/[runId]/logs/route.ts +420 -420
- package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +146 -146
- package/templates/default/src/app/globals.css +147 -147
- package/templates/default/src/app/layout.tsx +171 -171
- package/templates/default/src/app/page.tsx +64 -64
- package/templates/default/src/assets/icons/empty-tube.tsx +23 -23
- package/templates/default/src/assets/icons/tube-plus.tsx +29 -29
- package/templates/default/src/components/base-node.tsx +21 -21
- package/templates/default/src/components/chart/pie-chart.tsx +73 -73
- package/templates/default/src/components/data-extraction/locator-inspector.tsx +460 -460
- package/templates/default/src/components/data-state/empty-state.tsx +40 -40
- package/templates/default/src/components/data-visualization/info-card.tsx +70 -70
- package/templates/default/src/components/data-visualization/info-grid.tsx +22 -22
- package/templates/default/src/components/devtools/providers.tsx +19 -13
- package/templates/default/src/components/diagram/button-edge.tsx +54 -54
- package/templates/default/src/components/diagram/dynamic-parameters.tsx +438 -438
- package/templates/default/src/components/diagram/edit-header-option.tsx +36 -36
- package/templates/default/src/components/diagram/flow-diagram.tsx +470 -470
- package/templates/default/src/components/diagram/node-form.tsx +262 -262
- package/templates/default/src/components/diagram/options-header-node.tsx +57 -57
- package/templates/default/src/components/diagram/template-step-combobox.tsx +155 -155
- package/templates/default/src/components/form/error-message.tsx +7 -7
- package/templates/default/src/components/kokonutui/smooth-tab.tsx +453 -453
- package/templates/default/src/components/loading-skeleton/data-table/data-table-skeleton.tsx +30 -30
- package/templates/default/src/components/loading-skeleton/form/button-skeleton.tsx +8 -8
- package/templates/default/src/components/loading-skeleton/form/icon-button-skeleton.tsx +8 -8
- package/templates/default/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -8
- package/templates/default/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -14
- package/templates/default/src/components/logo.tsx +15 -15
- package/templates/default/src/components/navigation/command-badge.tsx +34 -34
- package/templates/default/src/components/navigation/command-chain-input.tsx +51 -51
- package/templates/default/src/components/navigation/entity-search-command.tsx +116 -116
- package/templates/default/src/components/navigation/nav-card.tsx +31 -31
- package/templates/default/src/components/navigation/nav-command.tsx +508 -508
- package/templates/default/src/components/navigation/nav-link.tsx +60 -60
- package/templates/default/src/components/navigation/nav-menu-card-deck.tsx +112 -112
- package/templates/default/src/components/node-header.tsx +159 -159
- package/templates/default/src/components/reports/test-case-logs-modal.tsx +253 -253
- package/templates/default/src/components/table/table-actions.tsx +172 -172
- package/templates/default/src/components/test-run/download-logs-button.tsx +99 -99
- package/templates/default/src/components/test-run/log-viewer.tsx +445 -445
- package/templates/default/src/components/test-run/test-run-details.tsx +611 -611
- package/templates/default/src/components/test-run/test-run-header.tsx +149 -149
- package/templates/default/src/components/test-run/view-report-button.tsx +102 -102
- package/templates/default/src/components/theme/mode-toggle.tsx +54 -54
- package/templates/default/src/components/theme/theme-provider.tsx +8 -8
- package/templates/default/src/components/typography/page-header-subtitle.tsx +7 -7
- package/templates/default/src/components/typography/page-header.tsx +7 -7
- package/templates/default/src/components/ui/alert-dialog.tsx +106 -106
- package/templates/default/src/components/ui/alert.tsx +43 -43
- package/templates/default/src/components/ui/avatar.tsx +40 -40
- package/templates/default/src/components/ui/badge.tsx +29 -29
- package/templates/default/src/components/ui/button.tsx +47 -47
- package/templates/default/src/components/ui/calendar.tsx +158 -158
- package/templates/default/src/components/ui/card.tsx +43 -43
- package/templates/default/src/components/ui/checkbox.tsx +28 -28
- package/templates/default/src/components/ui/command.tsx +135 -135
- package/templates/default/src/components/ui/data-table-column-header.tsx +61 -61
- package/templates/default/src/components/ui/data-table-pagination.tsx +87 -87
- package/templates/default/src/components/ui/data-table-view-options.tsx +50 -50
- package/templates/default/src/components/ui/data-table.tsx +267 -267
- package/templates/default/src/components/ui/dialog.tsx +97 -97
- package/templates/default/src/components/ui/dropdown-menu.tsx +182 -182
- package/templates/default/src/components/ui/input.tsx +22 -22
- package/templates/default/src/components/ui/kbd.tsx +28 -28
- package/templates/default/src/components/ui/label.tsx +19 -19
- package/templates/default/src/components/ui/loading.tsx +12 -12
- package/templates/default/src/components/ui/multi-select-with-preview.tsx +116 -116
- package/templates/default/src/components/ui/multi-select.tsx +142 -142
- package/templates/default/src/components/ui/navigation-menu.tsx +120 -120
- package/templates/default/src/components/ui/popover.tsx +33 -33
- package/templates/default/src/components/ui/progress.tsx +25 -25
- package/templates/default/src/components/ui/radio-group.tsx +44 -44
- package/templates/default/src/components/ui/scroll-area.tsx +40 -40
- package/templates/default/src/components/ui/select.tsx +151 -144
- package/templates/default/src/components/ui/separator.tsx +22 -22
- package/templates/default/src/components/ui/skeleton.tsx +7 -7
- package/templates/default/src/components/ui/table.tsx +76 -76
- package/templates/default/src/components/ui/tabs.tsx +55 -55
- package/templates/default/src/components/ui/textarea.tsx +21 -21
- package/templates/default/src/components/ui/toast.tsx +113 -113
- package/templates/default/src/components/ui/toaster.tsx +26 -26
- package/templates/default/src/components/user-prompt/delete-prompt.tsx +87 -87
- package/templates/default/src/config/db-config.ts +10 -10
- package/templates/default/src/constants/form-opts/diagram/node-form.ts +30 -30
- package/templates/default/src/constants/form-opts/environment-form-opts.ts +24 -24
- package/templates/default/src/constants/form-opts/locator-form-opts.ts +20 -20
- package/templates/default/src/constants/form-opts/locator-group-form-opts.ts +28 -28
- package/templates/default/src/constants/form-opts/module-form-opts.ts +21 -21
- package/templates/default/src/constants/form-opts/review-form-opts.ts +23 -23
- package/templates/default/src/constants/form-opts/tag-form-opts.ts +42 -42
- package/templates/default/src/constants/form-opts/template-selection-form-opts.ts +16 -16
- package/templates/default/src/constants/form-opts/template-step-group-form-opts.ts +24 -24
- package/templates/default/src/constants/form-opts/template-test-case-form-opts.ts +39 -39
- package/templates/default/src/constants/form-opts/template-test-step-form-opts.ts +36 -36
- package/templates/default/src/constants/form-opts/test-case-form-opts.ts +43 -43
- package/templates/default/src/constants/form-opts/test-run-form-opts.ts +31 -31
- package/templates/default/src/constants/form-opts/test-suite-form-opts.ts +24 -24
- package/templates/default/src/hooks/use-toast.ts +187 -187
- package/templates/default/src/lib/bidirectional-sync.ts +432 -432
- package/templates/default/src/lib/database-sync.ts +531 -531
- package/templates/default/src/lib/environment-file-utils.ts +221 -221
- package/templates/default/src/lib/feature-file-generator.ts +411 -411
- package/templates/default/src/lib/gherkin-parser.ts +259 -259
- package/templates/default/src/lib/locator-group-file-utils.ts +370 -370
- package/templates/default/src/lib/metrics/metric-calculator.ts +613 -613
- package/templates/default/src/lib/module-hierarchy-builder.ts +205 -205
- package/templates/default/src/lib/path-helpers/module-path.ts +71 -71
- package/templates/default/src/lib/test-case-utils.ts +6 -6
- package/templates/default/src/lib/test-run/log-formatter.ts +83 -83
- package/templates/default/src/lib/test-run/process-manager.ts +191 -191
- package/templates/default/src/lib/test-run/report-parser.ts +316 -316
- package/templates/default/src/lib/test-run/test-run-executor.ts +144 -144
- package/templates/default/src/lib/test-run/winston-logger.ts +95 -95
- package/templates/default/src/lib/transformers/gherkin-converter.ts +42 -42
- package/templates/default/src/lib/transformers/key-to-icon-transformer.tsx +95 -95
- package/templates/default/src/lib/transformers/template-test-case-converter.ts +160 -160
- package/templates/default/src/lib/utils/node-param-validation.ts +81 -81
- package/templates/default/src/lib/utils/template-step-file-generator.ts +167 -167
- package/templates/default/src/lib/utils/template-step-file-manager-intelligent.ts +723 -723
- package/templates/default/src/lib/utils/template-step-file-manager.ts +166 -166
- package/templates/default/src/lib/utils.ts +31 -31
- package/templates/default/src/tests/config/executor/world.ts +41 -41
- package/templates/default/src/tests/executor.ts +80 -80
- package/templates/default/src/tests/hooks/hooks.ts +99 -99
- package/templates/default/src/tests/mapping/locator-map.json +1 -1
- package/templates/default/src/tests/steps/actions/click.step.ts +62 -62
- package/templates/default/src/tests/steps/actions/navigation.step.ts +73 -72
- package/templates/default/src/tests/steps/validations/active_state_assertion.step.ts +34 -34
- package/templates/default/src/tests/steps/validations/navigation_assertion.step.ts +24 -23
- package/templates/default/src/tests/steps/validations/text_assertion.step.ts +111 -111
- package/templates/default/src/tests/steps/validations/visibility_assertion.step.ts +30 -30
- package/templates/default/src/tests/support/parameter-types.ts +12 -12
- package/templates/default/src/tests/utils/cache.util.ts +260 -260
- package/templates/default/src/tests/utils/cli.util.ts +177 -177
- package/templates/default/src/tests/utils/environment.util.ts +65 -65
- package/templates/default/src/tests/utils/locator.util.ts +248 -248
- package/templates/default/src/tests/utils/random-data.util.ts +44 -44
- package/templates/default/src/tests/utils/spawner.util.ts +617 -617
- package/templates/default/src/types/diagram/diagram.ts +34 -34
- package/templates/default/src/types/diagram/template-step.ts +11 -11
- package/templates/default/src/types/executor/browser.type.ts +1 -1
- package/templates/default/src/types/form/actionHandler.ts +6 -6
- package/templates/default/src/types/locator/locator.type.ts +11 -11
- package/templates/default/src/types/step/step.type.ts +1 -1
- package/templates/default/src/types/table/data-table.ts +6 -6
- package/templates/default/tailwind.config.ts +62 -62
- package/templates/default/.env +0 -2
- package/templates/default/next-env.d.ts +0 -6
- package/templates/default/prisma/prisma/dev.db +0 -0
- package/templates/default/src/tests/config/environments/environments.json +0 -14
|
@@ -1,253 +1,253 @@
|
|
|
1
|
-
// action.ts
|
|
2
|
-
'use server'
|
|
3
|
-
|
|
4
|
-
import prisma from '@/config/db-config'
|
|
5
|
-
import { testSuiteSchema } from '@/constants/form-opts/test-suite-form-opts'
|
|
6
|
-
import { ActionResponse } from '@/types/form/actionHandler'
|
|
7
|
-
import { Prisma } from '@prisma/client'
|
|
8
|
-
import { revalidatePath } from 'next/cache'
|
|
9
|
-
import { z, ZodError } from 'zod'
|
|
10
|
-
import { generateFeatureFile, deleteFeatureFile } from '@/lib/feature-file-generator'
|
|
11
|
-
|
|
12
|
-
const generateSafeFileName = (testSuiteName: string): string => {
|
|
13
|
-
return testSuiteName
|
|
14
|
-
.toLowerCase()
|
|
15
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
16
|
-
.replace(/^-+|-+$/g, '')
|
|
17
|
-
.replace(/-+/g, '-')
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Get all test suites
|
|
22
|
-
* @returns ActionResponse
|
|
23
|
-
*/
|
|
24
|
-
export async function getAllTestSuitesAction(): Promise<ActionResponse> {
|
|
25
|
-
try {
|
|
26
|
-
const testSuites = await prisma.testSuite.findMany({
|
|
27
|
-
include: {
|
|
28
|
-
module: true,
|
|
29
|
-
testCases: true,
|
|
30
|
-
tags: true,
|
|
31
|
-
},
|
|
32
|
-
})
|
|
33
|
-
return {
|
|
34
|
-
status: 200,
|
|
35
|
-
data: testSuites,
|
|
36
|
-
}
|
|
37
|
-
} catch (e) {
|
|
38
|
-
return {
|
|
39
|
-
status: 500,
|
|
40
|
-
error: `Server error occurred: ${e}`,
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Create a new test suite
|
|
47
|
-
* @param _prev - Previous state
|
|
48
|
-
* @param value - Test suite data
|
|
49
|
-
* @returns ActionResponse
|
|
50
|
-
*/
|
|
51
|
-
export async function createTestSuiteAction(
|
|
52
|
-
_prev: unknown,
|
|
53
|
-
value: z.infer<typeof testSuiteSchema>,
|
|
54
|
-
): Promise<ActionResponse> {
|
|
55
|
-
try {
|
|
56
|
-
testSuiteSchema.parse(value)
|
|
57
|
-
|
|
58
|
-
// Create the test suite
|
|
59
|
-
const newTestSuite = await prisma.testSuite.create({
|
|
60
|
-
data: {
|
|
61
|
-
name: value.name,
|
|
62
|
-
description: value.description,
|
|
63
|
-
module: {
|
|
64
|
-
connect: {
|
|
65
|
-
id: value.moduleId,
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
testCases: {
|
|
69
|
-
connect: value.testCases?.map(id => ({ id })),
|
|
70
|
-
},
|
|
71
|
-
tags: {
|
|
72
|
-
connect: value.tagIds?.map(id => ({ id })) || [],
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
include: {
|
|
76
|
-
module: true,
|
|
77
|
-
},
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
const sanitizedTestSuiteName = generateSafeFileName(newTestSuite.name)
|
|
81
|
-
// Generate feature file for the new test suite
|
|
82
|
-
try {
|
|
83
|
-
await generateFeatureFile(newTestSuite.id, sanitizedTestSuiteName, newTestSuite.description || undefined)
|
|
84
|
-
} catch (featureFileError) {
|
|
85
|
-
console.error('Error generating feature file:', featureFileError)
|
|
86
|
-
// Don't fail the test suite creation if feature file generation fails
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
revalidatePath('/test-suites')
|
|
90
|
-
return {
|
|
91
|
-
status: 200,
|
|
92
|
-
message: 'Test suite created successfully',
|
|
93
|
-
}
|
|
94
|
-
} catch (e) {
|
|
95
|
-
if (e instanceof ZodError) {
|
|
96
|
-
return {
|
|
97
|
-
status: 400,
|
|
98
|
-
error: e.message,
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (e instanceof Prisma.PrismaClientKnownRequestError) {
|
|
102
|
-
return {
|
|
103
|
-
status: 500,
|
|
104
|
-
error: e.message,
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return {
|
|
108
|
-
status: 500,
|
|
109
|
-
error: 'Server error occurred',
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Delete a test suite
|
|
116
|
-
* @param id - Test suite id
|
|
117
|
-
* @returns ActionResponse
|
|
118
|
-
*/
|
|
119
|
-
export async function deleteTestSuiteAction(id: string[]): Promise<ActionResponse> {
|
|
120
|
-
try {
|
|
121
|
-
// Delete corresponding feature files before deleting test suites
|
|
122
|
-
for (const testSuiteId of id) {
|
|
123
|
-
try {
|
|
124
|
-
await deleteFeatureFile(testSuiteId)
|
|
125
|
-
} catch (featureFileError) {
|
|
126
|
-
console.error(`Error deleting feature file for test suite ${testSuiteId}:`, featureFileError)
|
|
127
|
-
// Don't fail the test suite deletion if feature file deletion fails
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
await prisma.testSuite.deleteMany({
|
|
132
|
-
where: { id: { in: id } },
|
|
133
|
-
})
|
|
134
|
-
revalidatePath('/test-suites')
|
|
135
|
-
return {
|
|
136
|
-
status: 200,
|
|
137
|
-
message: 'Test suite(s) deleted successfully',
|
|
138
|
-
}
|
|
139
|
-
} catch (e) {
|
|
140
|
-
return {
|
|
141
|
-
status: 500,
|
|
142
|
-
error: `Server error occurred: ${e}`,
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Get a test suite by id
|
|
149
|
-
* @param id - Test suite id
|
|
150
|
-
* @returns ActionResponse
|
|
151
|
-
*/
|
|
152
|
-
export async function getTestSuiteByIdAction(id: string): Promise<ActionResponse> {
|
|
153
|
-
try {
|
|
154
|
-
const testSuite = await prisma.testSuite.findUnique({
|
|
155
|
-
where: { id },
|
|
156
|
-
include: { testCases: true, tags: true },
|
|
157
|
-
})
|
|
158
|
-
return {
|
|
159
|
-
status: 200,
|
|
160
|
-
data: testSuite,
|
|
161
|
-
}
|
|
162
|
-
} catch (e) {
|
|
163
|
-
console.error(e)
|
|
164
|
-
throw e
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Update a test suite
|
|
170
|
-
* @param _prev - Previous state
|
|
171
|
-
* @param value - Test suite data
|
|
172
|
-
* @param id - Test suite id
|
|
173
|
-
* @returns ActionResponse
|
|
174
|
-
*/
|
|
175
|
-
export async function updateTestSuiteAction(
|
|
176
|
-
_prev: unknown,
|
|
177
|
-
value: z.infer<typeof testSuiteSchema>,
|
|
178
|
-
id?: string,
|
|
179
|
-
): Promise<ActionResponse> {
|
|
180
|
-
try {
|
|
181
|
-
testSuiteSchema.parse(value)
|
|
182
|
-
|
|
183
|
-
// Get the current test suite to check if name or module changed
|
|
184
|
-
const currentTestSuite = await prisma.testSuite.findUnique({
|
|
185
|
-
where: { id },
|
|
186
|
-
include: {
|
|
187
|
-
module: true,
|
|
188
|
-
},
|
|
189
|
-
})
|
|
190
|
-
|
|
191
|
-
if (!currentTestSuite) {
|
|
192
|
-
return {
|
|
193
|
-
status: 404,
|
|
194
|
-
error: 'Test suite not found',
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Check if name or module changed - if so, delete old feature file
|
|
199
|
-
const nameChanged = currentTestSuite.name !== value.name
|
|
200
|
-
const moduleChanged = currentTestSuite.moduleId !== value.moduleId
|
|
201
|
-
|
|
202
|
-
if (nameChanged || moduleChanged) {
|
|
203
|
-
try {
|
|
204
|
-
await deleteFeatureFile(currentTestSuite.id)
|
|
205
|
-
} catch (featureFileError) {
|
|
206
|
-
console.error('Error deleting old feature file:', featureFileError)
|
|
207
|
-
// Don't fail the update if old file deletion fails
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// Update the test suite
|
|
212
|
-
const updatedTestSuite = await prisma.testSuite.update({
|
|
213
|
-
where: { id },
|
|
214
|
-
data: {
|
|
215
|
-
name: value.name,
|
|
216
|
-
description: value.description,
|
|
217
|
-
testCases: {
|
|
218
|
-
set: value.testCases?.map(id => ({ id })),
|
|
219
|
-
},
|
|
220
|
-
tags: {
|
|
221
|
-
set: value.tagIds?.map(id => ({ id })) || [],
|
|
222
|
-
},
|
|
223
|
-
module: {
|
|
224
|
-
connect: {
|
|
225
|
-
id: value.moduleId,
|
|
226
|
-
},
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
include: {
|
|
230
|
-
module: true,
|
|
231
|
-
},
|
|
232
|
-
})
|
|
233
|
-
|
|
234
|
-
// Generate new feature file with updated information
|
|
235
|
-
try {
|
|
236
|
-
await generateFeatureFile(updatedTestSuite.id, updatedTestSuite.name, updatedTestSuite.description || undefined)
|
|
237
|
-
} catch (featureFileError) {
|
|
238
|
-
console.error('Error generating updated feature file:', featureFileError)
|
|
239
|
-
// Don't fail the test suite update if feature file generation fails
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
revalidatePath('/test-suites')
|
|
243
|
-
return {
|
|
244
|
-
status: 200,
|
|
245
|
-
message: 'Test suite updated successfully',
|
|
246
|
-
}
|
|
247
|
-
} catch (e) {
|
|
248
|
-
return {
|
|
249
|
-
status: 500,
|
|
250
|
-
error: `Server error occurred: ${e}`,
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
1
|
+
// action.ts
|
|
2
|
+
'use server'
|
|
3
|
+
|
|
4
|
+
import prisma from '@/config/db-config'
|
|
5
|
+
import { testSuiteSchema } from '@/constants/form-opts/test-suite-form-opts'
|
|
6
|
+
import { ActionResponse } from '@/types/form/actionHandler'
|
|
7
|
+
import { Prisma } from '@prisma/client'
|
|
8
|
+
import { revalidatePath } from 'next/cache'
|
|
9
|
+
import { z, ZodError } from 'zod'
|
|
10
|
+
import { generateFeatureFile, deleteFeatureFile } from '@/lib/feature-file-generator'
|
|
11
|
+
|
|
12
|
+
const generateSafeFileName = (testSuiteName: string): string => {
|
|
13
|
+
return testSuiteName
|
|
14
|
+
.toLowerCase()
|
|
15
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
16
|
+
.replace(/^-+|-+$/g, '')
|
|
17
|
+
.replace(/-+/g, '-')
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Get all test suites
|
|
22
|
+
* @returns ActionResponse
|
|
23
|
+
*/
|
|
24
|
+
export async function getAllTestSuitesAction(): Promise<ActionResponse> {
|
|
25
|
+
try {
|
|
26
|
+
const testSuites = await prisma.testSuite.findMany({
|
|
27
|
+
include: {
|
|
28
|
+
module: true,
|
|
29
|
+
testCases: true,
|
|
30
|
+
tags: true,
|
|
31
|
+
},
|
|
32
|
+
})
|
|
33
|
+
return {
|
|
34
|
+
status: 200,
|
|
35
|
+
data: testSuites,
|
|
36
|
+
}
|
|
37
|
+
} catch (e) {
|
|
38
|
+
return {
|
|
39
|
+
status: 500,
|
|
40
|
+
error: `Server error occurred: ${e}`,
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Create a new test suite
|
|
47
|
+
* @param _prev - Previous state
|
|
48
|
+
* @param value - Test suite data
|
|
49
|
+
* @returns ActionResponse
|
|
50
|
+
*/
|
|
51
|
+
export async function createTestSuiteAction(
|
|
52
|
+
_prev: unknown,
|
|
53
|
+
value: z.infer<typeof testSuiteSchema>,
|
|
54
|
+
): Promise<ActionResponse> {
|
|
55
|
+
try {
|
|
56
|
+
testSuiteSchema.parse(value)
|
|
57
|
+
|
|
58
|
+
// Create the test suite
|
|
59
|
+
const newTestSuite = await prisma.testSuite.create({
|
|
60
|
+
data: {
|
|
61
|
+
name: value.name,
|
|
62
|
+
description: value.description,
|
|
63
|
+
module: {
|
|
64
|
+
connect: {
|
|
65
|
+
id: value.moduleId,
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
testCases: {
|
|
69
|
+
connect: value.testCases?.map(id => ({ id })),
|
|
70
|
+
},
|
|
71
|
+
tags: {
|
|
72
|
+
connect: value.tagIds?.map(id => ({ id })) || [],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
include: {
|
|
76
|
+
module: true,
|
|
77
|
+
},
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
const sanitizedTestSuiteName = generateSafeFileName(newTestSuite.name)
|
|
81
|
+
// Generate feature file for the new test suite
|
|
82
|
+
try {
|
|
83
|
+
await generateFeatureFile(newTestSuite.id, sanitizedTestSuiteName, newTestSuite.description || undefined)
|
|
84
|
+
} catch (featureFileError) {
|
|
85
|
+
console.error('Error generating feature file:', featureFileError)
|
|
86
|
+
// Don't fail the test suite creation if feature file generation fails
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
revalidatePath('/test-suites')
|
|
90
|
+
return {
|
|
91
|
+
status: 200,
|
|
92
|
+
message: 'Test suite created successfully',
|
|
93
|
+
}
|
|
94
|
+
} catch (e) {
|
|
95
|
+
if (e instanceof ZodError) {
|
|
96
|
+
return {
|
|
97
|
+
status: 400,
|
|
98
|
+
error: e.message,
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (e instanceof Prisma.PrismaClientKnownRequestError) {
|
|
102
|
+
return {
|
|
103
|
+
status: 500,
|
|
104
|
+
error: e.message,
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
status: 500,
|
|
109
|
+
error: 'Server error occurred',
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Delete a test suite
|
|
116
|
+
* @param id - Test suite id
|
|
117
|
+
* @returns ActionResponse
|
|
118
|
+
*/
|
|
119
|
+
export async function deleteTestSuiteAction(id: string[]): Promise<ActionResponse> {
|
|
120
|
+
try {
|
|
121
|
+
// Delete corresponding feature files before deleting test suites
|
|
122
|
+
for (const testSuiteId of id) {
|
|
123
|
+
try {
|
|
124
|
+
await deleteFeatureFile(testSuiteId)
|
|
125
|
+
} catch (featureFileError) {
|
|
126
|
+
console.error(`Error deleting feature file for test suite ${testSuiteId}:`, featureFileError)
|
|
127
|
+
// Don't fail the test suite deletion if feature file deletion fails
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
await prisma.testSuite.deleteMany({
|
|
132
|
+
where: { id: { in: id } },
|
|
133
|
+
})
|
|
134
|
+
revalidatePath('/test-suites')
|
|
135
|
+
return {
|
|
136
|
+
status: 200,
|
|
137
|
+
message: 'Test suite(s) deleted successfully',
|
|
138
|
+
}
|
|
139
|
+
} catch (e) {
|
|
140
|
+
return {
|
|
141
|
+
status: 500,
|
|
142
|
+
error: `Server error occurred: ${e}`,
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Get a test suite by id
|
|
149
|
+
* @param id - Test suite id
|
|
150
|
+
* @returns ActionResponse
|
|
151
|
+
*/
|
|
152
|
+
export async function getTestSuiteByIdAction(id: string): Promise<ActionResponse> {
|
|
153
|
+
try {
|
|
154
|
+
const testSuite = await prisma.testSuite.findUnique({
|
|
155
|
+
where: { id },
|
|
156
|
+
include: { testCases: true, tags: true },
|
|
157
|
+
})
|
|
158
|
+
return {
|
|
159
|
+
status: 200,
|
|
160
|
+
data: testSuite,
|
|
161
|
+
}
|
|
162
|
+
} catch (e) {
|
|
163
|
+
console.error(e)
|
|
164
|
+
throw e
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Update a test suite
|
|
170
|
+
* @param _prev - Previous state
|
|
171
|
+
* @param value - Test suite data
|
|
172
|
+
* @param id - Test suite id
|
|
173
|
+
* @returns ActionResponse
|
|
174
|
+
*/
|
|
175
|
+
export async function updateTestSuiteAction(
|
|
176
|
+
_prev: unknown,
|
|
177
|
+
value: z.infer<typeof testSuiteSchema>,
|
|
178
|
+
id?: string,
|
|
179
|
+
): Promise<ActionResponse> {
|
|
180
|
+
try {
|
|
181
|
+
testSuiteSchema.parse(value)
|
|
182
|
+
|
|
183
|
+
// Get the current test suite to check if name or module changed
|
|
184
|
+
const currentTestSuite = await prisma.testSuite.findUnique({
|
|
185
|
+
where: { id },
|
|
186
|
+
include: {
|
|
187
|
+
module: true,
|
|
188
|
+
},
|
|
189
|
+
})
|
|
190
|
+
|
|
191
|
+
if (!currentTestSuite) {
|
|
192
|
+
return {
|
|
193
|
+
status: 404,
|
|
194
|
+
error: 'Test suite not found',
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Check if name or module changed - if so, delete old feature file
|
|
199
|
+
const nameChanged = currentTestSuite.name !== value.name
|
|
200
|
+
const moduleChanged = currentTestSuite.moduleId !== value.moduleId
|
|
201
|
+
|
|
202
|
+
if (nameChanged || moduleChanged) {
|
|
203
|
+
try {
|
|
204
|
+
await deleteFeatureFile(currentTestSuite.id)
|
|
205
|
+
} catch (featureFileError) {
|
|
206
|
+
console.error('Error deleting old feature file:', featureFileError)
|
|
207
|
+
// Don't fail the update if old file deletion fails
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Update the test suite
|
|
212
|
+
const updatedTestSuite = await prisma.testSuite.update({
|
|
213
|
+
where: { id },
|
|
214
|
+
data: {
|
|
215
|
+
name: value.name,
|
|
216
|
+
description: value.description,
|
|
217
|
+
testCases: {
|
|
218
|
+
set: value.testCases?.map(id => ({ id })),
|
|
219
|
+
},
|
|
220
|
+
tags: {
|
|
221
|
+
set: value.tagIds?.map(id => ({ id })) || [],
|
|
222
|
+
},
|
|
223
|
+
module: {
|
|
224
|
+
connect: {
|
|
225
|
+
id: value.moduleId,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
include: {
|
|
230
|
+
module: true,
|
|
231
|
+
},
|
|
232
|
+
})
|
|
233
|
+
|
|
234
|
+
// Generate new feature file with updated information
|
|
235
|
+
try {
|
|
236
|
+
await generateFeatureFile(updatedTestSuite.id, updatedTestSuite.name, updatedTestSuite.description || undefined)
|
|
237
|
+
} catch (featureFileError) {
|
|
238
|
+
console.error('Error generating updated feature file:', featureFileError)
|
|
239
|
+
// Don't fail the test suite update if feature file generation fails
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
revalidatePath('/test-suites')
|
|
243
|
+
return {
|
|
244
|
+
status: 200,
|
|
245
|
+
message: 'Test suite updated successfully',
|
|
246
|
+
}
|
|
247
|
+
} catch (e) {
|
|
248
|
+
return {
|
|
249
|
+
status: 500,
|
|
250
|
+
error: `Server error occurred: ${e}`,
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
// User actions removed since authentication system was removed
|
|
2
|
-
// This file is kept for potential future use but all user-related functionality is disabled
|
|
3
|
-
|
|
4
|
-
import { ActionResponse } from '@/types/form/actionHandler'
|
|
5
|
-
|
|
6
|
-
export async function getAllUsersAction(): Promise<ActionResponse> {
|
|
7
|
-
// Since User model was removed, return empty array
|
|
8
|
-
return {
|
|
9
|
-
status: 200,
|
|
10
|
-
data: [],
|
|
11
|
-
message: 'No users available - authentication system removed',
|
|
12
|
-
}
|
|
13
|
-
}
|
|
1
|
+
// User actions removed since authentication system was removed
|
|
2
|
+
// This file is kept for potential future use but all user-related functionality is disabled
|
|
3
|
+
|
|
4
|
+
import { ActionResponse } from '@/types/form/actionHandler'
|
|
5
|
+
|
|
6
|
+
export async function getAllUsersAction(): Promise<ActionResponse> {
|
|
7
|
+
// Since User model was removed, return empty array
|
|
8
|
+
return {
|
|
9
|
+
status: 200,
|
|
10
|
+
data: [],
|
|
11
|
+
message: 'No users available - authentication system removed',
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { createEnvironmentAction } from '@/actions/environments/environment-actions'
|
|
2
|
-
import EnvironmentForm from '../environment-form'
|
|
3
|
-
import PageHeader from '@/components/typography/page-header'
|
|
4
|
-
import HeaderSubtitle from '@/components/typography/page-header-subtitle'
|
|
5
|
-
import { Metadata } from 'next'
|
|
6
|
-
|
|
7
|
-
export const metadata: Metadata = {
|
|
8
|
-
title: 'Appraise | Create Environment',
|
|
9
|
-
description: 'Create a new environment configuration for your test runs',
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const CreateEnvironment = async () => {
|
|
13
|
-
return (
|
|
14
|
-
<>
|
|
15
|
-
<div className="mb-8">
|
|
16
|
-
<PageHeader>Create Environment</PageHeader>
|
|
17
|
-
<HeaderSubtitle>Create a new environment configuration for your test runs.</HeaderSubtitle>
|
|
18
|
-
</div>
|
|
19
|
-
<EnvironmentForm
|
|
20
|
-
successTitle="Environment created"
|
|
21
|
-
successMessage="Environment created successfully"
|
|
22
|
-
onSubmitAction={createEnvironmentAction}
|
|
23
|
-
/>
|
|
24
|
-
</>
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export default CreateEnvironment
|
|
1
|
+
import { createEnvironmentAction } from '@/actions/environments/environment-actions'
|
|
2
|
+
import EnvironmentForm from '../environment-form'
|
|
3
|
+
import PageHeader from '@/components/typography/page-header'
|
|
4
|
+
import HeaderSubtitle from '@/components/typography/page-header-subtitle'
|
|
5
|
+
import { Metadata } from 'next'
|
|
6
|
+
|
|
7
|
+
export const metadata: Metadata = {
|
|
8
|
+
title: 'Appraise | Create Environment',
|
|
9
|
+
description: 'Create a new environment configuration for your test runs',
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const CreateEnvironment = async () => {
|
|
13
|
+
return (
|
|
14
|
+
<>
|
|
15
|
+
<div className="mb-8">
|
|
16
|
+
<PageHeader>Create Environment</PageHeader>
|
|
17
|
+
<HeaderSubtitle>Create a new environment configuration for your test runs.</HeaderSubtitle>
|
|
18
|
+
</div>
|
|
19
|
+
<EnvironmentForm
|
|
20
|
+
successTitle="Environment created"
|
|
21
|
+
successMessage="Environment created successfully"
|
|
22
|
+
onSubmitAction={createEnvironmentAction}
|
|
23
|
+
/>
|
|
24
|
+
</>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default CreateEnvironment
|