create-appraisejs 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -45
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/copy-template.d.ts.map +1 -1
- package/dist/copy-template.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
package/templates/default/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx
CHANGED
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
|
|
3
|
-
import { DataTableColumnHeader } from '@/components/ui/data-table-column-header'
|
|
4
|
-
import { TemplateTestCase, TemplateTestCaseStep } from '@prisma/client'
|
|
5
|
-
import { ColumnDef } from '@tanstack/react-table'
|
|
6
|
-
|
|
7
|
-
import { Checkbox } from '@/components/ui/checkbox'
|
|
8
|
-
import TableActions from '@/components/table/table-actions'
|
|
9
|
-
import { deleteTemplateTestCaseAction } from '@/actions/template-test-case/template-test-case-actions'
|
|
10
|
-
import { formatDateTime } from '@/lib/utils'
|
|
11
|
-
|
|
12
|
-
export const templateTestCaseTableCols: ColumnDef<TemplateTestCase & { steps: TemplateTestCaseStep[] }>[] = [
|
|
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
|
-
accessorKey: 'name',
|
|
36
|
-
header: ({ column }) => <DataTableColumnHeader column={column} title="Name" />,
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
accessorKey: 'description',
|
|
40
|
-
header: ({ column }) => <DataTableColumnHeader column={column} title="Description" />,
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
accessorKey: 'steps',
|
|
44
|
-
header: ({ column }) => <DataTableColumnHeader column={column} title="Steps" />,
|
|
45
|
-
cell: ({ row }) => {
|
|
46
|
-
const templateTestCase = row.original
|
|
47
|
-
return <div>{templateTestCase.steps.length}</div>
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
accessorKey: 'createdAt',
|
|
52
|
-
header: ({ column }) => <DataTableColumnHeader column={column} title="Created At" />,
|
|
53
|
-
cell: ({ row }) => {
|
|
54
|
-
return formatDateTime(row.original.createdAt)
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
accessorKey: 'updatedAt',
|
|
59
|
-
header: ({ column }) => <DataTableColumnHeader column={column} title="Updated At" />,
|
|
60
|
-
cell: ({ row }) => {
|
|
61
|
-
return formatDateTime(row.original.updatedAt)
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
id: 'actions',
|
|
66
|
-
cell: ({ row }) => {
|
|
67
|
-
const templateTestCase = row.original
|
|
68
|
-
return (
|
|
69
|
-
<TableActions
|
|
70
|
-
modifyLink={`/template-test-cases/modify/${templateTestCase.id}`}
|
|
71
|
-
deleteHandler={() => deleteTemplateTestCaseAction([templateTestCase.id])}
|
|
72
|
-
/>
|
|
73
|
-
)
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
]
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { DataTableColumnHeader } from '@/components/ui/data-table-column-header'
|
|
4
|
+
import { TemplateTestCase, TemplateTestCaseStep } from '@prisma/client'
|
|
5
|
+
import { ColumnDef } from '@tanstack/react-table'
|
|
6
|
+
|
|
7
|
+
import { Checkbox } from '@/components/ui/checkbox'
|
|
8
|
+
import TableActions from '@/components/table/table-actions'
|
|
9
|
+
import { deleteTemplateTestCaseAction } from '@/actions/template-test-case/template-test-case-actions'
|
|
10
|
+
import { formatDateTime } from '@/lib/utils'
|
|
11
|
+
|
|
12
|
+
export const templateTestCaseTableCols: ColumnDef<TemplateTestCase & { steps: TemplateTestCaseStep[] }>[] = [
|
|
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
|
+
accessorKey: 'name',
|
|
36
|
+
header: ({ column }) => <DataTableColumnHeader column={column} title="Name" />,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
accessorKey: 'description',
|
|
40
|
+
header: ({ column }) => <DataTableColumnHeader column={column} title="Description" />,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
accessorKey: 'steps',
|
|
44
|
+
header: ({ column }) => <DataTableColumnHeader column={column} title="Steps" />,
|
|
45
|
+
cell: ({ row }) => {
|
|
46
|
+
const templateTestCase = row.original
|
|
47
|
+
return <div>{templateTestCase.steps.length}</div>
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
accessorKey: 'createdAt',
|
|
52
|
+
header: ({ column }) => <DataTableColumnHeader column={column} title="Created At" />,
|
|
53
|
+
cell: ({ row }) => {
|
|
54
|
+
return formatDateTime(row.original.createdAt)
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
accessorKey: 'updatedAt',
|
|
59
|
+
header: ({ column }) => <DataTableColumnHeader column={column} title="Updated At" />,
|
|
60
|
+
cell: ({ row }) => {
|
|
61
|
+
return formatDateTime(row.original.updatedAt)
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: 'actions',
|
|
66
|
+
cell: ({ row }) => {
|
|
67
|
+
const templateTestCase = row.original
|
|
68
|
+
return (
|
|
69
|
+
<TableActions
|
|
70
|
+
modifyLink={`/template-test-cases/modify/${templateTestCase.id}`}
|
|
71
|
+
deleteHandler={() => deleteTemplateTestCaseAction([templateTestCase.id])}
|
|
72
|
+
/>
|
|
73
|
+
)
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
]
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { DataTable } from '@/components/ui/data-table'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import { templateTestCaseTableCols } from './template-test-case-table-columns'
|
|
4
|
-
import {
|
|
5
|
-
getAllTemplateTestCasesAction,
|
|
6
|
-
deleteTemplateTestCaseAction,
|
|
7
|
-
} from '@/actions/template-test-case/template-test-case-actions'
|
|
8
|
-
import { TemplateTestCase, TemplateTestCaseStep } from '@prisma/client'
|
|
9
|
-
|
|
10
|
-
type TemplateTestCaseWithSteps = TemplateTestCase & {
|
|
11
|
-
steps: TemplateTestCaseStep[]
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const TemplateTestCaseTable = async () => {
|
|
15
|
-
const { data: templateTestCases } = await getAllTemplateTestCasesAction()
|
|
16
|
-
|
|
17
|
-
return (
|
|
18
|
-
<>
|
|
19
|
-
<DataTable
|
|
20
|
-
columns={templateTestCaseTableCols}
|
|
21
|
-
data={templateTestCases as TemplateTestCaseWithSteps[]}
|
|
22
|
-
filterColumn="name"
|
|
23
|
-
filterPlaceholder="Filter by name..."
|
|
24
|
-
createLink="/template-test-cases/create"
|
|
25
|
-
modifyLink="/template-test-cases/modify"
|
|
26
|
-
deleteAction={deleteTemplateTestCaseAction}
|
|
27
|
-
/>
|
|
28
|
-
</>
|
|
29
|
-
)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export default TemplateTestCaseTable
|
|
1
|
+
import { DataTable } from '@/components/ui/data-table'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import { templateTestCaseTableCols } from './template-test-case-table-columns'
|
|
4
|
+
import {
|
|
5
|
+
getAllTemplateTestCasesAction,
|
|
6
|
+
deleteTemplateTestCaseAction,
|
|
7
|
+
} from '@/actions/template-test-case/template-test-case-actions'
|
|
8
|
+
import { TemplateTestCase, TemplateTestCaseStep } from '@prisma/client'
|
|
9
|
+
|
|
10
|
+
type TemplateTestCaseWithSteps = TemplateTestCase & {
|
|
11
|
+
steps: TemplateTestCaseStep[]
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const TemplateTestCaseTable = async () => {
|
|
15
|
+
const { data: templateTestCases } = await getAllTemplateTestCasesAction()
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<>
|
|
19
|
+
<DataTable
|
|
20
|
+
columns={templateTestCaseTableCols}
|
|
21
|
+
data={templateTestCases as TemplateTestCaseWithSteps[]}
|
|
22
|
+
filterColumn="name"
|
|
23
|
+
filterPlaceholder="Filter by name..."
|
|
24
|
+
createLink="/template-test-cases/create"
|
|
25
|
+
modifyLink="/template-test-cases/modify"
|
|
26
|
+
deleteAction={deleteTemplateTestCaseAction}
|
|
27
|
+
/>
|
|
28
|
+
</>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export default TemplateTestCaseTable
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import PageHeader from '@/components/typography/page-header'
|
|
2
|
-
import HeaderSubtitle from '@/components/typography/page-header-subtitle'
|
|
3
|
-
import React from 'react'
|
|
4
|
-
import TestCaseForm from '../test-case-form'
|
|
5
|
-
import {
|
|
6
|
-
getAllTemplateStepParamsAction,
|
|
7
|
-
getAllTemplateStepsAction,
|
|
8
|
-
} from '@/actions/template-step/template-step-actions'
|
|
9
|
-
import { Locator, LocatorGroup, TemplateStep, TemplateStepParameter, TestSuite, Tag } from '@prisma/client'
|
|
10
|
-
import { getAllLocatorsAction } from '@/actions/locator/locator-actions'
|
|
11
|
-
import { getAllTestSuitesAction } from '@/actions/test-suite/test-suite-actions'
|
|
12
|
-
import { createTestCaseAction } from '@/actions/test-case/test-case-actions'
|
|
13
|
-
import { getAllLocatorGroupsAction } from '@/actions/locator-groups/locator-group-actions'
|
|
14
|
-
import { getAllTagsAction } from '@/actions/tags/tag-actions'
|
|
15
|
-
import { Metadata } from 'next'
|
|
16
|
-
|
|
17
|
-
export const metadata: Metadata = {
|
|
18
|
-
title: 'Appraise | Create Test Case',
|
|
19
|
-
description: 'Create a new test from scratch to execute against your application',
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const CreateTestCase = async () => {
|
|
23
|
-
const { data: templateStepParams, error: templateStepParamsError } = await getAllTemplateStepParamsAction()
|
|
24
|
-
|
|
25
|
-
const { data: templateSteps, error: templateStepsError } = await getAllTemplateStepsAction()
|
|
26
|
-
|
|
27
|
-
const { data: testSuites, error: testSuitesError } = await getAllTestSuitesAction()
|
|
28
|
-
|
|
29
|
-
const { data: locators, error: locatorsError } = await getAllLocatorsAction()
|
|
30
|
-
|
|
31
|
-
const { data: locatorGroups, error: locatorGroupsError } = await getAllLocatorGroupsAction()
|
|
32
|
-
|
|
33
|
-
const { data: tags, error: tagsError } = await getAllTagsAction()
|
|
34
|
-
|
|
35
|
-
if (
|
|
36
|
-
templateStepParamsError ||
|
|
37
|
-
templateStepsError ||
|
|
38
|
-
locatorsError ||
|
|
39
|
-
testSuitesError ||
|
|
40
|
-
locatorGroupsError ||
|
|
41
|
-
tagsError
|
|
42
|
-
) {
|
|
43
|
-
return (
|
|
44
|
-
<div>
|
|
45
|
-
Error:{' '}
|
|
46
|
-
{templateStepParamsError ||
|
|
47
|
-
templateStepsError ||
|
|
48
|
-
locatorsError ||
|
|
49
|
-
testSuitesError ||
|
|
50
|
-
locatorGroupsError ||
|
|
51
|
-
tagsError}
|
|
52
|
-
</div>
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return (
|
|
57
|
-
<div>
|
|
58
|
-
<div className="mb-8">
|
|
59
|
-
<PageHeader>Create New Test Case</PageHeader>
|
|
60
|
-
<HeaderSubtitle>Create a new test from scratch to execute against your application</HeaderSubtitle>
|
|
61
|
-
</div>
|
|
62
|
-
<TestCaseForm
|
|
63
|
-
defaultNodesOrder={{}}
|
|
64
|
-
templateStepParams={templateStepParams as TemplateStepParameter[]}
|
|
65
|
-
templateSteps={templateSteps as TemplateStep[]}
|
|
66
|
-
locators={locators as Locator[]}
|
|
67
|
-
locatorGroups={locatorGroups as LocatorGroup[]}
|
|
68
|
-
testSuites={testSuites as TestSuite[]}
|
|
69
|
-
tags={tags as Tag[]}
|
|
70
|
-
onSubmitAction={createTestCaseAction}
|
|
71
|
-
/>
|
|
72
|
-
</div>
|
|
73
|
-
)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export default CreateTestCase
|
|
1
|
+
import PageHeader from '@/components/typography/page-header'
|
|
2
|
+
import HeaderSubtitle from '@/components/typography/page-header-subtitle'
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import TestCaseForm from '../test-case-form'
|
|
5
|
+
import {
|
|
6
|
+
getAllTemplateStepParamsAction,
|
|
7
|
+
getAllTemplateStepsAction,
|
|
8
|
+
} from '@/actions/template-step/template-step-actions'
|
|
9
|
+
import { Locator, LocatorGroup, TemplateStep, TemplateStepParameter, TestSuite, Tag } from '@prisma/client'
|
|
10
|
+
import { getAllLocatorsAction } from '@/actions/locator/locator-actions'
|
|
11
|
+
import { getAllTestSuitesAction } from '@/actions/test-suite/test-suite-actions'
|
|
12
|
+
import { createTestCaseAction } from '@/actions/test-case/test-case-actions'
|
|
13
|
+
import { getAllLocatorGroupsAction } from '@/actions/locator-groups/locator-group-actions'
|
|
14
|
+
import { getAllTagsAction } from '@/actions/tags/tag-actions'
|
|
15
|
+
import { Metadata } from 'next'
|
|
16
|
+
|
|
17
|
+
export const metadata: Metadata = {
|
|
18
|
+
title: 'Appraise | Create Test Case',
|
|
19
|
+
description: 'Create a new test from scratch to execute against your application',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const CreateTestCase = async () => {
|
|
23
|
+
const { data: templateStepParams, error: templateStepParamsError } = await getAllTemplateStepParamsAction()
|
|
24
|
+
|
|
25
|
+
const { data: templateSteps, error: templateStepsError } = await getAllTemplateStepsAction()
|
|
26
|
+
|
|
27
|
+
const { data: testSuites, error: testSuitesError } = await getAllTestSuitesAction()
|
|
28
|
+
|
|
29
|
+
const { data: locators, error: locatorsError } = await getAllLocatorsAction()
|
|
30
|
+
|
|
31
|
+
const { data: locatorGroups, error: locatorGroupsError } = await getAllLocatorGroupsAction()
|
|
32
|
+
|
|
33
|
+
const { data: tags, error: tagsError } = await getAllTagsAction()
|
|
34
|
+
|
|
35
|
+
if (
|
|
36
|
+
templateStepParamsError ||
|
|
37
|
+
templateStepsError ||
|
|
38
|
+
locatorsError ||
|
|
39
|
+
testSuitesError ||
|
|
40
|
+
locatorGroupsError ||
|
|
41
|
+
tagsError
|
|
42
|
+
) {
|
|
43
|
+
return (
|
|
44
|
+
<div>
|
|
45
|
+
Error:{' '}
|
|
46
|
+
{templateStepParamsError ||
|
|
47
|
+
templateStepsError ||
|
|
48
|
+
locatorsError ||
|
|
49
|
+
testSuitesError ||
|
|
50
|
+
locatorGroupsError ||
|
|
51
|
+
tagsError}
|
|
52
|
+
</div>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<div>
|
|
58
|
+
<div className="mb-8">
|
|
59
|
+
<PageHeader>Create New Test Case</PageHeader>
|
|
60
|
+
<HeaderSubtitle>Create a new test from scratch to execute against your application</HeaderSubtitle>
|
|
61
|
+
</div>
|
|
62
|
+
<TestCaseForm
|
|
63
|
+
defaultNodesOrder={{}}
|
|
64
|
+
templateStepParams={templateStepParams as TemplateStepParameter[]}
|
|
65
|
+
templateSteps={templateSteps as TemplateStep[]}
|
|
66
|
+
locators={locators as Locator[]}
|
|
67
|
+
locatorGroups={locatorGroups as LocatorGroup[]}
|
|
68
|
+
testSuites={testSuites as TestSuite[]}
|
|
69
|
+
tags={tags as Tag[]}
|
|
70
|
+
onSubmitAction={createTestCaseAction}
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export default CreateTestCase
|
package/templates/default/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx
CHANGED
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
import { getTemplateTestCaseByIdAction } from '@/actions/template-test-case/template-test-case-actions'
|
|
2
|
-
import {
|
|
3
|
-
TemplateTestCase,
|
|
4
|
-
TemplateTestCaseStep,
|
|
5
|
-
TemplateTestCaseStepParameter,
|
|
6
|
-
TemplateStep,
|
|
7
|
-
TemplateStepParameter,
|
|
8
|
-
Locator,
|
|
9
|
-
TestSuite,
|
|
10
|
-
LocatorGroup,
|
|
11
|
-
Tag,
|
|
12
|
-
} from '@prisma/client'
|
|
13
|
-
import React from 'react'
|
|
14
|
-
import {
|
|
15
|
-
templateTestCaseToTestCaseConverter,
|
|
16
|
-
validateConvertedTestCaseData,
|
|
17
|
-
} from '@/lib/transformers/template-test-case-converter'
|
|
18
|
-
import TestCaseForm from '../../../test-case-form'
|
|
19
|
-
import { createTestCaseAction } from '@/actions/test-case/test-case-actions'
|
|
20
|
-
import {
|
|
21
|
-
getAllTemplateStepParamsAction,
|
|
22
|
-
getAllTemplateStepsAction,
|
|
23
|
-
} from '@/actions/template-step/template-step-actions'
|
|
24
|
-
import { getAllLocatorsAction } from '@/actions/locator/locator-actions'
|
|
25
|
-
import { getAllTestSuitesAction } from '@/actions/test-suite/test-suite-actions'
|
|
26
|
-
import HeaderSubtitle from '@/components/typography/page-header-subtitle'
|
|
27
|
-
import PageHeader from '@/components/typography/page-header'
|
|
28
|
-
import { getAllLocatorGroupsAction } from '@/actions/locator-groups/locator-group-actions'
|
|
29
|
-
import { getAllTagsAction } from '@/actions/tags/tag-actions'
|
|
30
|
-
import { Metadata } from 'next'
|
|
31
|
-
|
|
32
|
-
export const metadata: Metadata = {
|
|
33
|
-
title: 'Appraise | Create Test Case From Template',
|
|
34
|
-
description: 'Create a new test from a template to execute against your application',
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const GenerateTestCaseFromTemplate = async ({ params }: { params: Promise<{ id: string }> }) => {
|
|
38
|
-
const { id } = await params
|
|
39
|
-
const { data: templateTestCase, error } = await getTemplateTestCaseByIdAction(id)
|
|
40
|
-
const { data: templateStepParams, error: templateStepParamsError } = await getAllTemplateStepParamsAction()
|
|
41
|
-
const { data: templateSteps, error: templateStepsError } = await getAllTemplateStepsAction()
|
|
42
|
-
const { data: locators, error: locatorsError } = await getAllLocatorsAction()
|
|
43
|
-
const { data: testSuites, error: testSuitesError } = await getAllTestSuitesAction()
|
|
44
|
-
const { data: locatorGroups, error: locatorGroupsError } = await getAllLocatorGroupsAction()
|
|
45
|
-
const { data: tags, error: tagsError } = await getAllTagsAction()
|
|
46
|
-
|
|
47
|
-
if (templateStepParamsError || templateStepsError || locatorsError || testSuitesError || locatorGroupsError || tagsError) {
|
|
48
|
-
return (
|
|
49
|
-
<div>
|
|
50
|
-
Error: {templateStepParamsError || templateStepsError || locatorsError || testSuitesError || locatorGroupsError || tagsError}
|
|
51
|
-
</div>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (error) {
|
|
56
|
-
return <div>Error: {error}</div>
|
|
57
|
-
}
|
|
58
|
-
const templateTestCaseData = templateTestCase as TemplateTestCase & {
|
|
59
|
-
steps: (TemplateTestCaseStep & {
|
|
60
|
-
parameters: TemplateTestCaseStepParameter[]
|
|
61
|
-
})[]
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Convert template test case to test case format
|
|
65
|
-
const convertedData = templateTestCaseToTestCaseConverter(templateTestCaseData)
|
|
66
|
-
|
|
67
|
-
// Validate the converted data
|
|
68
|
-
const validation = validateConvertedTestCaseData(convertedData)
|
|
69
|
-
|
|
70
|
-
if (!validation.isValid) {
|
|
71
|
-
return <div>Invalid test case</div>
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return (
|
|
75
|
-
<div>
|
|
76
|
-
<PageHeader>Create New Test Case</PageHeader>
|
|
77
|
-
<HeaderSubtitle>Create a new test from a template to execute against your application</HeaderSubtitle>
|
|
78
|
-
|
|
79
|
-
<TestCaseForm
|
|
80
|
-
onSubmitAction={createTestCaseAction}
|
|
81
|
-
defaultNodesOrder={convertedData.nodesOrder}
|
|
82
|
-
templateStepParams={templateStepParams as TemplateStepParameter[]}
|
|
83
|
-
templateSteps={templateSteps as TemplateStep[]}
|
|
84
|
-
locators={locators as Locator[]}
|
|
85
|
-
testSuites={testSuites as TestSuite[]}
|
|
86
|
-
tags={tags as Tag[]}
|
|
87
|
-
defaultTitle={templateTestCaseData.name || ''}
|
|
88
|
-
defaultDescription={templateTestCaseData.description || ''}
|
|
89
|
-
defaultTestSuiteIds={convertedData.testSuiteIds}
|
|
90
|
-
locatorGroups={locatorGroups as LocatorGroup[]}
|
|
91
|
-
/>
|
|
92
|
-
</div>
|
|
93
|
-
)
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
export default GenerateTestCaseFromTemplate
|
|
1
|
+
import { getTemplateTestCaseByIdAction } from '@/actions/template-test-case/template-test-case-actions'
|
|
2
|
+
import {
|
|
3
|
+
TemplateTestCase,
|
|
4
|
+
TemplateTestCaseStep,
|
|
5
|
+
TemplateTestCaseStepParameter,
|
|
6
|
+
TemplateStep,
|
|
7
|
+
TemplateStepParameter,
|
|
8
|
+
Locator,
|
|
9
|
+
TestSuite,
|
|
10
|
+
LocatorGroup,
|
|
11
|
+
Tag,
|
|
12
|
+
} from '@prisma/client'
|
|
13
|
+
import React from 'react'
|
|
14
|
+
import {
|
|
15
|
+
templateTestCaseToTestCaseConverter,
|
|
16
|
+
validateConvertedTestCaseData,
|
|
17
|
+
} from '@/lib/transformers/template-test-case-converter'
|
|
18
|
+
import TestCaseForm from '../../../test-case-form'
|
|
19
|
+
import { createTestCaseAction } from '@/actions/test-case/test-case-actions'
|
|
20
|
+
import {
|
|
21
|
+
getAllTemplateStepParamsAction,
|
|
22
|
+
getAllTemplateStepsAction,
|
|
23
|
+
} from '@/actions/template-step/template-step-actions'
|
|
24
|
+
import { getAllLocatorsAction } from '@/actions/locator/locator-actions'
|
|
25
|
+
import { getAllTestSuitesAction } from '@/actions/test-suite/test-suite-actions'
|
|
26
|
+
import HeaderSubtitle from '@/components/typography/page-header-subtitle'
|
|
27
|
+
import PageHeader from '@/components/typography/page-header'
|
|
28
|
+
import { getAllLocatorGroupsAction } from '@/actions/locator-groups/locator-group-actions'
|
|
29
|
+
import { getAllTagsAction } from '@/actions/tags/tag-actions'
|
|
30
|
+
import { Metadata } from 'next'
|
|
31
|
+
|
|
32
|
+
export const metadata: Metadata = {
|
|
33
|
+
title: 'Appraise | Create Test Case From Template',
|
|
34
|
+
description: 'Create a new test from a template to execute against your application',
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const GenerateTestCaseFromTemplate = async ({ params }: { params: Promise<{ id: string }> }) => {
|
|
38
|
+
const { id } = await params
|
|
39
|
+
const { data: templateTestCase, error } = await getTemplateTestCaseByIdAction(id)
|
|
40
|
+
const { data: templateStepParams, error: templateStepParamsError } = await getAllTemplateStepParamsAction()
|
|
41
|
+
const { data: templateSteps, error: templateStepsError } = await getAllTemplateStepsAction()
|
|
42
|
+
const { data: locators, error: locatorsError } = await getAllLocatorsAction()
|
|
43
|
+
const { data: testSuites, error: testSuitesError } = await getAllTestSuitesAction()
|
|
44
|
+
const { data: locatorGroups, error: locatorGroupsError } = await getAllLocatorGroupsAction()
|
|
45
|
+
const { data: tags, error: tagsError } = await getAllTagsAction()
|
|
46
|
+
|
|
47
|
+
if (templateStepParamsError || templateStepsError || locatorsError || testSuitesError || locatorGroupsError || tagsError) {
|
|
48
|
+
return (
|
|
49
|
+
<div>
|
|
50
|
+
Error: {templateStepParamsError || templateStepsError || locatorsError || testSuitesError || locatorGroupsError || tagsError}
|
|
51
|
+
</div>
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (error) {
|
|
56
|
+
return <div>Error: {error}</div>
|
|
57
|
+
}
|
|
58
|
+
const templateTestCaseData = templateTestCase as TemplateTestCase & {
|
|
59
|
+
steps: (TemplateTestCaseStep & {
|
|
60
|
+
parameters: TemplateTestCaseStepParameter[]
|
|
61
|
+
})[]
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Convert template test case to test case format
|
|
65
|
+
const convertedData = templateTestCaseToTestCaseConverter(templateTestCaseData)
|
|
66
|
+
|
|
67
|
+
// Validate the converted data
|
|
68
|
+
const validation = validateConvertedTestCaseData(convertedData)
|
|
69
|
+
|
|
70
|
+
if (!validation.isValid) {
|
|
71
|
+
return <div>Invalid test case</div>
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<div>
|
|
76
|
+
<PageHeader>Create New Test Case</PageHeader>
|
|
77
|
+
<HeaderSubtitle>Create a new test from a template to execute against your application</HeaderSubtitle>
|
|
78
|
+
|
|
79
|
+
<TestCaseForm
|
|
80
|
+
onSubmitAction={createTestCaseAction}
|
|
81
|
+
defaultNodesOrder={convertedData.nodesOrder}
|
|
82
|
+
templateStepParams={templateStepParams as TemplateStepParameter[]}
|
|
83
|
+
templateSteps={templateSteps as TemplateStep[]}
|
|
84
|
+
locators={locators as Locator[]}
|
|
85
|
+
testSuites={testSuites as TestSuite[]}
|
|
86
|
+
tags={tags as Tag[]}
|
|
87
|
+
defaultTitle={templateTestCaseData.name || ''}
|
|
88
|
+
defaultDescription={templateTestCaseData.description || ''}
|
|
89
|
+
defaultTestSuiteIds={convertedData.testSuiteIds}
|
|
90
|
+
locatorGroups={locatorGroups as LocatorGroup[]}
|
|
91
|
+
/>
|
|
92
|
+
</div>
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export default GenerateTestCaseFromTemplate
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { getAllTemplateTestCasesAction } from '@/actions/template-test-case/template-test-case-actions'
|
|
2
|
-
import PageHeader from '@/components/typography/page-header'
|
|
3
|
-
import HeaderSubtitle from '@/components/typography/page-header-subtitle'
|
|
4
|
-
import { LayoutPanelTop } from 'lucide-react'
|
|
5
|
-
import React from 'react'
|
|
6
|
-
import TemplateSelectionForm from './template-selection-form'
|
|
7
|
-
import { TemplateTestCase } from '@prisma/client'
|
|
8
|
-
import { Metadata } from 'next'
|
|
9
|
-
|
|
10
|
-
export const metadata: Metadata = {
|
|
11
|
-
title: 'Appraise | Create Test Case From Template',
|
|
12
|
-
description: 'Select a template test case to create a new test case from',
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const CreateTestCaseFromTemplate = async () => {
|
|
16
|
-
const { data: templateTestCases, status } = await getAllTemplateTestCasesAction()
|
|
17
|
-
|
|
18
|
-
if (status !== 200) {
|
|
19
|
-
return <div className="text-red-500">Error</div>
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<div>
|
|
24
|
-
<div className="mb-8">
|
|
25
|
-
<PageHeader>
|
|
26
|
-
<span className="flex items-center">
|
|
27
|
-
<LayoutPanelTop className="mr-2 h-8 w-8" />
|
|
28
|
-
Create Test Case From Template
|
|
29
|
-
</span>
|
|
30
|
-
</PageHeader>
|
|
31
|
-
<HeaderSubtitle>Select a template test case to create a new test case from</HeaderSubtitle>
|
|
32
|
-
</div>
|
|
33
|
-
<TemplateSelectionForm templateTestCases={templateTestCases as TemplateTestCase[]} />
|
|
34
|
-
</div>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export default CreateTestCaseFromTemplate
|
|
1
|
+
import { getAllTemplateTestCasesAction } from '@/actions/template-test-case/template-test-case-actions'
|
|
2
|
+
import PageHeader from '@/components/typography/page-header'
|
|
3
|
+
import HeaderSubtitle from '@/components/typography/page-header-subtitle'
|
|
4
|
+
import { LayoutPanelTop } from 'lucide-react'
|
|
5
|
+
import React from 'react'
|
|
6
|
+
import TemplateSelectionForm from './template-selection-form'
|
|
7
|
+
import { TemplateTestCase } from '@prisma/client'
|
|
8
|
+
import { Metadata } from 'next'
|
|
9
|
+
|
|
10
|
+
export const metadata: Metadata = {
|
|
11
|
+
title: 'Appraise | Create Test Case From Template',
|
|
12
|
+
description: 'Select a template test case to create a new test case from',
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const CreateTestCaseFromTemplate = async () => {
|
|
16
|
+
const { data: templateTestCases, status } = await getAllTemplateTestCasesAction()
|
|
17
|
+
|
|
18
|
+
if (status !== 200) {
|
|
19
|
+
return <div className="text-red-500">Error</div>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<div>
|
|
24
|
+
<div className="mb-8">
|
|
25
|
+
<PageHeader>
|
|
26
|
+
<span className="flex items-center">
|
|
27
|
+
<LayoutPanelTop className="mr-2 h-8 w-8" />
|
|
28
|
+
Create Test Case From Template
|
|
29
|
+
</span>
|
|
30
|
+
</PageHeader>
|
|
31
|
+
<HeaderSubtitle>Select a template test case to create a new test case from</HeaderSubtitle>
|
|
32
|
+
</div>
|
|
33
|
+
<TemplateSelectionForm templateTestCases={templateTestCases as TemplateTestCase[]} />
|
|
34
|
+
</div>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default CreateTestCaseFromTemplate
|