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
|
@@ -1,177 +1,177 @@
|
|
|
1
|
-
import { Command, Option, OptionValues } from 'commander'
|
|
2
|
-
import { getAllEnvironments } from './environment.util.js'
|
|
3
|
-
import parseTagExpression from '@cucumber/tag-expressions'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Configuration options for the CLI tool
|
|
7
|
-
* @extends OptionValues - Extends Commander.js OptionValues for CLI integration
|
|
8
|
-
*/
|
|
9
|
-
export interface CliOptions extends OptionValues {
|
|
10
|
-
/** The target environment to run tests against */
|
|
11
|
-
environment: string
|
|
12
|
-
/** Cucumber tag expression to filter test scenarios */
|
|
13
|
-
tags: string
|
|
14
|
-
/** Number of parallel workers to run tests with */
|
|
15
|
-
parallel: number
|
|
16
|
-
/** Browser engine to use for test execution */
|
|
17
|
-
browser: 'chromium' | 'firefox' | 'webkit'
|
|
18
|
-
/** Whether to run browser in headless mode */
|
|
19
|
-
headless: 'true' | 'false'
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** Available browser choices for test execution */
|
|
23
|
-
const BROWSER_CHOICES = ['chromium', 'firefox', 'webkit'] as const
|
|
24
|
-
|
|
25
|
-
/** Available headless mode choices */
|
|
26
|
-
const HEADLESS_CHOICES = ['true', 'false'] as const
|
|
27
|
-
|
|
28
|
-
/** Default number of parallel workers */
|
|
29
|
-
const DEFAULT_PARALLEL_WORKERS = 1
|
|
30
|
-
|
|
31
|
-
/** Default browser engine */
|
|
32
|
-
const DEFAULT_BROWSER = 'chromium'
|
|
33
|
-
|
|
34
|
-
/** Default headless mode setting */
|
|
35
|
-
const DEFAULT_HEADLESS = 'true'
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Commander.js program instance for CLI argument parsing
|
|
39
|
-
* Configured with all available options and validation rules
|
|
40
|
-
*/
|
|
41
|
-
const program = new Command()
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Available environment names loaded from configuration
|
|
45
|
-
* Used to validate the --environment option
|
|
46
|
-
*/
|
|
47
|
-
let environmentNames: string[] = []
|
|
48
|
-
try {
|
|
49
|
-
environmentNames = Object.keys(getAllEnvironments())
|
|
50
|
-
if (environmentNames.length === 0) {
|
|
51
|
-
console.warn('⚠️ No environments found in configuration')
|
|
52
|
-
}
|
|
53
|
-
} catch (error) {
|
|
54
|
-
console.error('❌ Failed to load environments:', error instanceof Error ? error.message : 'Unknown error')
|
|
55
|
-
process.exit(1)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Validates and parses a positive integer value from command line input
|
|
60
|
-
*
|
|
61
|
-
* Used as a custom parser for the --parallel option to ensure only valid
|
|
62
|
-
* positive integers are accepted.
|
|
63
|
-
*
|
|
64
|
-
* @param val - The string value to parse from command line
|
|
65
|
-
* @returns The parsed positive integer
|
|
66
|
-
* @throws Error if the value is not a valid positive integer
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```typescript
|
|
70
|
-
* parsePositiveInt("4") // Returns 4
|
|
71
|
-
* parsePositiveInt("0") // Throws Error
|
|
72
|
-
* parsePositiveInt("abc") // Throws Error
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
function parsePositiveInt(val: string): number {
|
|
76
|
-
const n = Number(val)
|
|
77
|
-
if (!Number.isInteger(n) || n <= 0) {
|
|
78
|
-
throw new Error(`--parallel must be a positive integer, got "${val}"`)
|
|
79
|
-
}
|
|
80
|
-
return n
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Validates a Cucumber tag expression for proper syntax
|
|
85
|
-
*
|
|
86
|
-
* Uses the @cucumber/tag-expressions library to validate that the provided
|
|
87
|
-
* tag expression follows Cucumber's tag expression syntax rules.
|
|
88
|
-
*
|
|
89
|
-
* @param val - The tag expression string to validate
|
|
90
|
-
* @returns The validated tag expression (unchanged if valid)
|
|
91
|
-
* @throws Error if the tag expression is invalid
|
|
92
|
-
*
|
|
93
|
-
* @example
|
|
94
|
-
* ```typescript
|
|
95
|
-
* validateCucumberTagExpression('@smoke') // Returns '@smoke'
|
|
96
|
-
* validateCucumberTagExpression('@smoke and @regression') // Returns '@smoke and @regression'
|
|
97
|
-
* validateCucumberTagExpression('invalid expression') // Throws Error
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
function validateCucumberTagExpression(val: string): string {
|
|
101
|
-
try {
|
|
102
|
-
parseTagExpression(val)
|
|
103
|
-
return val
|
|
104
|
-
} catch (error) {
|
|
105
|
-
throw new Error(`Invalid tag expression: ${error instanceof Error ? error.message : 'Unknown error'}`)
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Configure the Commander.js CLI program with all available options
|
|
111
|
-
*
|
|
112
|
-
* Sets up the command name, description, version, and all command line options
|
|
113
|
-
* with their respective validation rules and default values.
|
|
114
|
-
*/
|
|
115
|
-
program
|
|
116
|
-
.name('cucumber-cli')
|
|
117
|
-
.description('A CLI tool for running Cucumber tests with different configurations')
|
|
118
|
-
.version('1.0.0')
|
|
119
|
-
.addOption(
|
|
120
|
-
new Option('-e, --environment <environment>', 'The environment to run the tests on')
|
|
121
|
-
.choices(environmentNames)
|
|
122
|
-
.makeOptionMandatory(),
|
|
123
|
-
)
|
|
124
|
-
.addOption(
|
|
125
|
-
new Option('-t, --tags <tags>', 'The tags to run the tests on (Cucumber tag expression)')
|
|
126
|
-
.argParser(validateCucumberTagExpression)
|
|
127
|
-
.makeOptionMandatory(),
|
|
128
|
-
)
|
|
129
|
-
.option(
|
|
130
|
-
'-p, --parallel <parallel>',
|
|
131
|
-
'The number of parallel workers to run the tests on',
|
|
132
|
-
parsePositiveInt,
|
|
133
|
-
DEFAULT_PARALLEL_WORKERS,
|
|
134
|
-
)
|
|
135
|
-
.addOption(
|
|
136
|
-
new Option('-b, --browser <browser>', 'The browser to run the tests on')
|
|
137
|
-
.choices(BROWSER_CHOICES)
|
|
138
|
-
.default(DEFAULT_BROWSER),
|
|
139
|
-
)
|
|
140
|
-
.addOption(
|
|
141
|
-
new Option('-h, --headless <headless>', 'The headless mode to run the tests on')
|
|
142
|
-
.choices(HEADLESS_CHOICES)
|
|
143
|
-
.default(DEFAULT_HEADLESS),
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Starts the CLI and parses command line arguments
|
|
148
|
-
*
|
|
149
|
-
* This is the main entry point for the CLI tool. It parses command line arguments,
|
|
150
|
-
* validates them according to the configured rules, and returns the parsed options.
|
|
151
|
-
* The function handles errors gracefully and exits the process with appropriate
|
|
152
|
-
* error codes if parsing fails.
|
|
153
|
-
*
|
|
154
|
-
* @returns The parsed and validated CLI options
|
|
155
|
-
* @throws Error if parsing fails or required options are missing
|
|
156
|
-
*
|
|
157
|
-
* @example
|
|
158
|
-
* ```typescript
|
|
159
|
-
* const options = startCli();
|
|
160
|
-
* console.log(`Running tests on ${options.environment} with ${options.parallel} workers`);
|
|
161
|
-
* ```
|
|
162
|
-
*/
|
|
163
|
-
export function startCli(): CliOptions {
|
|
164
|
-
try {
|
|
165
|
-
program.parse()
|
|
166
|
-
const options = program.opts() as CliOptions
|
|
167
|
-
|
|
168
|
-
return options
|
|
169
|
-
} catch (error) {
|
|
170
|
-
if (error instanceof Error) {
|
|
171
|
-
console.error('❌ CLI Error:', error.message)
|
|
172
|
-
} else {
|
|
173
|
-
console.error('❌ CLI Error: Unknown error occurred')
|
|
174
|
-
}
|
|
175
|
-
process.exit(1)
|
|
176
|
-
}
|
|
177
|
-
}
|
|
1
|
+
import { Command, Option, OptionValues } from 'commander'
|
|
2
|
+
import { getAllEnvironments } from './environment.util.js'
|
|
3
|
+
import parseTagExpression from '@cucumber/tag-expressions'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Configuration options for the CLI tool
|
|
7
|
+
* @extends OptionValues - Extends Commander.js OptionValues for CLI integration
|
|
8
|
+
*/
|
|
9
|
+
export interface CliOptions extends OptionValues {
|
|
10
|
+
/** The target environment to run tests against */
|
|
11
|
+
environment: string
|
|
12
|
+
/** Cucumber tag expression to filter test scenarios */
|
|
13
|
+
tags: string
|
|
14
|
+
/** Number of parallel workers to run tests with */
|
|
15
|
+
parallel: number
|
|
16
|
+
/** Browser engine to use for test execution */
|
|
17
|
+
browser: 'chromium' | 'firefox' | 'webkit'
|
|
18
|
+
/** Whether to run browser in headless mode */
|
|
19
|
+
headless: 'true' | 'false'
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Available browser choices for test execution */
|
|
23
|
+
const BROWSER_CHOICES = ['chromium', 'firefox', 'webkit'] as const
|
|
24
|
+
|
|
25
|
+
/** Available headless mode choices */
|
|
26
|
+
const HEADLESS_CHOICES = ['true', 'false'] as const
|
|
27
|
+
|
|
28
|
+
/** Default number of parallel workers */
|
|
29
|
+
const DEFAULT_PARALLEL_WORKERS = 1
|
|
30
|
+
|
|
31
|
+
/** Default browser engine */
|
|
32
|
+
const DEFAULT_BROWSER = 'chromium'
|
|
33
|
+
|
|
34
|
+
/** Default headless mode setting */
|
|
35
|
+
const DEFAULT_HEADLESS = 'true'
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Commander.js program instance for CLI argument parsing
|
|
39
|
+
* Configured with all available options and validation rules
|
|
40
|
+
*/
|
|
41
|
+
const program = new Command()
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Available environment names loaded from configuration
|
|
45
|
+
* Used to validate the --environment option
|
|
46
|
+
*/
|
|
47
|
+
let environmentNames: string[] = []
|
|
48
|
+
try {
|
|
49
|
+
environmentNames = Object.keys(getAllEnvironments())
|
|
50
|
+
if (environmentNames.length === 0) {
|
|
51
|
+
console.warn('⚠️ No environments found in configuration')
|
|
52
|
+
}
|
|
53
|
+
} catch (error) {
|
|
54
|
+
console.error('❌ Failed to load environments:', error instanceof Error ? error.message : 'Unknown error')
|
|
55
|
+
process.exit(1)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Validates and parses a positive integer value from command line input
|
|
60
|
+
*
|
|
61
|
+
* Used as a custom parser for the --parallel option to ensure only valid
|
|
62
|
+
* positive integers are accepted.
|
|
63
|
+
*
|
|
64
|
+
* @param val - The string value to parse from command line
|
|
65
|
+
* @returns The parsed positive integer
|
|
66
|
+
* @throws Error if the value is not a valid positive integer
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* parsePositiveInt("4") // Returns 4
|
|
71
|
+
* parsePositiveInt("0") // Throws Error
|
|
72
|
+
* parsePositiveInt("abc") // Throws Error
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
function parsePositiveInt(val: string): number {
|
|
76
|
+
const n = Number(val)
|
|
77
|
+
if (!Number.isInteger(n) || n <= 0) {
|
|
78
|
+
throw new Error(`--parallel must be a positive integer, got "${val}"`)
|
|
79
|
+
}
|
|
80
|
+
return n
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Validates a Cucumber tag expression for proper syntax
|
|
85
|
+
*
|
|
86
|
+
* Uses the @cucumber/tag-expressions library to validate that the provided
|
|
87
|
+
* tag expression follows Cucumber's tag expression syntax rules.
|
|
88
|
+
*
|
|
89
|
+
* @param val - The tag expression string to validate
|
|
90
|
+
* @returns The validated tag expression (unchanged if valid)
|
|
91
|
+
* @throws Error if the tag expression is invalid
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* validateCucumberTagExpression('@smoke') // Returns '@smoke'
|
|
96
|
+
* validateCucumberTagExpression('@smoke and @regression') // Returns '@smoke and @regression'
|
|
97
|
+
* validateCucumberTagExpression('invalid expression') // Throws Error
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
function validateCucumberTagExpression(val: string): string {
|
|
101
|
+
try {
|
|
102
|
+
parseTagExpression(val)
|
|
103
|
+
return val
|
|
104
|
+
} catch (error) {
|
|
105
|
+
throw new Error(`Invalid tag expression: ${error instanceof Error ? error.message : 'Unknown error'}`)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Configure the Commander.js CLI program with all available options
|
|
111
|
+
*
|
|
112
|
+
* Sets up the command name, description, version, and all command line options
|
|
113
|
+
* with their respective validation rules and default values.
|
|
114
|
+
*/
|
|
115
|
+
program
|
|
116
|
+
.name('cucumber-cli')
|
|
117
|
+
.description('A CLI tool for running Cucumber tests with different configurations')
|
|
118
|
+
.version('1.0.0')
|
|
119
|
+
.addOption(
|
|
120
|
+
new Option('-e, --environment <environment>', 'The environment to run the tests on')
|
|
121
|
+
.choices(environmentNames)
|
|
122
|
+
.makeOptionMandatory(),
|
|
123
|
+
)
|
|
124
|
+
.addOption(
|
|
125
|
+
new Option('-t, --tags <tags>', 'The tags to run the tests on (Cucumber tag expression)')
|
|
126
|
+
.argParser(validateCucumberTagExpression)
|
|
127
|
+
.makeOptionMandatory(),
|
|
128
|
+
)
|
|
129
|
+
.option(
|
|
130
|
+
'-p, --parallel <parallel>',
|
|
131
|
+
'The number of parallel workers to run the tests on',
|
|
132
|
+
parsePositiveInt,
|
|
133
|
+
DEFAULT_PARALLEL_WORKERS,
|
|
134
|
+
)
|
|
135
|
+
.addOption(
|
|
136
|
+
new Option('-b, --browser <browser>', 'The browser to run the tests on')
|
|
137
|
+
.choices(BROWSER_CHOICES)
|
|
138
|
+
.default(DEFAULT_BROWSER),
|
|
139
|
+
)
|
|
140
|
+
.addOption(
|
|
141
|
+
new Option('-h, --headless <headless>', 'The headless mode to run the tests on')
|
|
142
|
+
.choices(HEADLESS_CHOICES)
|
|
143
|
+
.default(DEFAULT_HEADLESS),
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Starts the CLI and parses command line arguments
|
|
148
|
+
*
|
|
149
|
+
* This is the main entry point for the CLI tool. It parses command line arguments,
|
|
150
|
+
* validates them according to the configured rules, and returns the parsed options.
|
|
151
|
+
* The function handles errors gracefully and exits the process with appropriate
|
|
152
|
+
* error codes if parsing fails.
|
|
153
|
+
*
|
|
154
|
+
* @returns The parsed and validated CLI options
|
|
155
|
+
* @throws Error if parsing fails or required options are missing
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* const options = startCli();
|
|
160
|
+
* console.log(`Running tests on ${options.environment} with ${options.parallel} workers`);
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export function startCli(): CliOptions {
|
|
164
|
+
try {
|
|
165
|
+
program.parse()
|
|
166
|
+
const options = program.opts() as CliOptions
|
|
167
|
+
|
|
168
|
+
return options
|
|
169
|
+
} catch (error) {
|
|
170
|
+
if (error instanceof Error) {
|
|
171
|
+
console.error('❌ CLI Error:', error.message)
|
|
172
|
+
} else {
|
|
173
|
+
console.error('❌ CLI Error: Unknown error occurred')
|
|
174
|
+
}
|
|
175
|
+
process.exit(1)
|
|
176
|
+
}
|
|
177
|
+
}
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
import { readFileSync } from 'fs'
|
|
2
|
-
|
|
3
|
-
interface EnvironmentConfig {
|
|
4
|
-
baseUrl: string
|
|
5
|
-
apiBaseUrl: string
|
|
6
|
-
email: string
|
|
7
|
-
password: string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Retrieves the configuration for a specific environment from the environments.json file
|
|
12
|
-
*
|
|
13
|
-
* This function reads the environments configuration file and returns the configuration
|
|
14
|
-
* object for the specified environment. The configuration typically contains URLs, API keys,
|
|
15
|
-
* database connections, and other environment-specific settings.
|
|
16
|
-
*
|
|
17
|
-
* @param environment - The name of the environment to retrieve configuration for
|
|
18
|
-
* @returns The environment configuration object, or undefined if environment not found
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const devConfig = getEnvironment('development');
|
|
23
|
-
* console.log(devConfig.baseUrl); // 'https://dev.example.com'
|
|
24
|
-
*
|
|
25
|
-
* const prodConfig = getEnvironment('production');
|
|
26
|
-
* console.log(prodConfig.apiKey); // 'prod-api-key-123'
|
|
27
|
-
* ```
|
|
28
|
-
*
|
|
29
|
-
* @throws Will throw an error if the environments.json file cannot be read or parsed
|
|
30
|
-
*/
|
|
31
|
-
export function getEnvironment(environment: string) {
|
|
32
|
-
const environmentConfig: { [key: string]: EnvironmentConfig } = JSON.parse(
|
|
33
|
-
readFileSync(`${process.cwd()}/src/tests/config/environments/environments.json`, 'utf8'),
|
|
34
|
-
)
|
|
35
|
-
return environmentConfig[environment] as EnvironmentConfig
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Retrieves all environment configurations from the environments.json file
|
|
40
|
-
*
|
|
41
|
-
* This function reads the entire environments configuration file and returns all
|
|
42
|
-
* available environment configurations. Useful for listing available environments
|
|
43
|
-
* or performing operations across all environments.
|
|
44
|
-
*
|
|
45
|
-
* @returns An object containing all environment configurations, keyed by environment name
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```typescript
|
|
49
|
-
* const allEnvs = getAllEnvironments();
|
|
50
|
-
* console.log(Object.keys(allEnvs)); // ['development', 'staging', 'production']
|
|
51
|
-
*
|
|
52
|
-
* // Iterate through all environments
|
|
53
|
-
* Object.entries(allEnvs).forEach(([name, config]) => {
|
|
54
|
-
* console.log(`${name}: ${config.baseUrl}`);
|
|
55
|
-
* });
|
|
56
|
-
* ```
|
|
57
|
-
*
|
|
58
|
-
* @throws Will throw an error if the environments.json file cannot be read or parsed
|
|
59
|
-
*/
|
|
60
|
-
export function getAllEnvironments() {
|
|
61
|
-
const environmentConfig = JSON.parse(
|
|
62
|
-
readFileSync(`${process.cwd()}/src/tests/config/environments/environments.json`, 'utf8'),
|
|
63
|
-
)
|
|
64
|
-
return environmentConfig
|
|
65
|
-
}
|
|
1
|
+
import { readFileSync } from 'fs'
|
|
2
|
+
|
|
3
|
+
interface EnvironmentConfig {
|
|
4
|
+
baseUrl: string
|
|
5
|
+
apiBaseUrl: string
|
|
6
|
+
email: string
|
|
7
|
+
password: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Retrieves the configuration for a specific environment from the environments.json file
|
|
12
|
+
*
|
|
13
|
+
* This function reads the environments configuration file and returns the configuration
|
|
14
|
+
* object for the specified environment. The configuration typically contains URLs, API keys,
|
|
15
|
+
* database connections, and other environment-specific settings.
|
|
16
|
+
*
|
|
17
|
+
* @param environment - The name of the environment to retrieve configuration for
|
|
18
|
+
* @returns The environment configuration object, or undefined if environment not found
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const devConfig = getEnvironment('development');
|
|
23
|
+
* console.log(devConfig.baseUrl); // 'https://dev.example.com'
|
|
24
|
+
*
|
|
25
|
+
* const prodConfig = getEnvironment('production');
|
|
26
|
+
* console.log(prodConfig.apiKey); // 'prod-api-key-123'
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @throws Will throw an error if the environments.json file cannot be read or parsed
|
|
30
|
+
*/
|
|
31
|
+
export function getEnvironment(environment: string) {
|
|
32
|
+
const environmentConfig: { [key: string]: EnvironmentConfig } = JSON.parse(
|
|
33
|
+
readFileSync(`${process.cwd()}/src/tests/config/environments/environments.json`, 'utf8'),
|
|
34
|
+
)
|
|
35
|
+
return environmentConfig[environment.toLowerCase()] as EnvironmentConfig
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves all environment configurations from the environments.json file
|
|
40
|
+
*
|
|
41
|
+
* This function reads the entire environments configuration file and returns all
|
|
42
|
+
* available environment configurations. Useful for listing available environments
|
|
43
|
+
* or performing operations across all environments.
|
|
44
|
+
*
|
|
45
|
+
* @returns An object containing all environment configurations, keyed by environment name
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const allEnvs = getAllEnvironments();
|
|
50
|
+
* console.log(Object.keys(allEnvs)); // ['development', 'staging', 'production']
|
|
51
|
+
*
|
|
52
|
+
* // Iterate through all environments
|
|
53
|
+
* Object.entries(allEnvs).forEach(([name, config]) => {
|
|
54
|
+
* console.log(`${name}: ${config.baseUrl}`);
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @throws Will throw an error if the environments.json file cannot be read or parsed
|
|
59
|
+
*/
|
|
60
|
+
export function getAllEnvironments() {
|
|
61
|
+
const environmentConfig = JSON.parse(
|
|
62
|
+
readFileSync(`${process.cwd()}/src/tests/config/environments/environments.json`, 'utf8'),
|
|
63
|
+
)
|
|
64
|
+
return environmentConfig
|
|
65
|
+
}
|