create-appraisejs 0.1.10-alpha.8 → 0.2.0-alpha.1
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 +52 -52
- package/dist/cli.e2e.test.d.ts +2 -0
- package/dist/cli.e2e.test.d.ts.map +1 -0
- package/dist/cli.e2e.test.js +73 -0
- package/dist/cli.e2e.test.js.map +1 -0
- package/dist/config.test.d.ts +2 -0
- package/dist/config.test.d.ts.map +1 -0
- package/dist/config.test.js +65 -0
- package/dist/config.test.js.map +1 -0
- package/dist/copy-template.test.d.ts +2 -0
- package/dist/copy-template.test.d.ts.map +1 -0
- package/dist/copy-template.test.js +71 -0
- package/dist/copy-template.test.js.map +1 -0
- package/dist/download-repo.test.d.ts +2 -0
- package/dist/download-repo.test.d.ts.map +1 -0
- package/dist/download-repo.test.js +14 -0
- package/dist/download-repo.test.js.map +1 -0
- package/dist/install.test.d.ts +2 -0
- package/dist/install.test.d.ts.map +1 -0
- package/dist/install.test.js +119 -0
- package/dist/install.test.js.map +1 -0
- package/dist/prepare-template-utils.d.ts.map +1 -1
- package/dist/prepare-template-utils.js +5 -0
- package/dist/prepare-template-utils.js.map +1 -1
- package/dist/prompts.test.d.ts +2 -0
- package/dist/prompts.test.d.ts.map +1 -0
- package/dist/prompts.test.js +58 -0
- package/dist/prompts.test.js.map +1 -0
- package/dist/scaffold-gitignore.d.ts +1 -0
- package/dist/scaffold-gitignore.d.ts.map +1 -1
- package/dist/scaffold-gitignore.js +3 -0
- package/dist/scaffold-gitignore.js.map +1 -1
- package/package.json +3 -2
- package/templates/default/.appraise-template-meta.json +2 -2
- package/templates/default/.env.example +2 -2
- package/templates/default/.vscode/settings.json +2 -1
- package/templates/default/README.md +53 -53
- package/templates/default/automation/mapping/locator-map.json +1 -14
- package/templates/default/automation/steps/actions/click.step.ts +58 -58
- package/templates/default/automation/steps/actions/hover.step.ts +27 -27
- package/templates/default/automation/steps/actions/input.step.ts +84 -84
- package/templates/default/automation/steps/actions/navigation.step.ts +70 -70
- package/templates/default/automation/steps/actions/random_data.step.ts +142 -142
- package/templates/default/automation/steps/actions/store.step.ts +86 -86
- package/templates/default/automation/steps/actions/wait.step.ts +90 -90
- package/templates/default/automation/steps/validations/active_state_assertion.step.ts +30 -30
- package/templates/default/automation/steps/validations/navigation_assertion.step.ts +22 -22
- package/templates/default/automation/steps/validations/text_assertion.step.ts +107 -107
- package/templates/default/automation/steps/validations/visibility_assertion.step.ts +26 -26
- package/templates/default/components.json +24 -24
- package/templates/default/cucumber.mjs +16 -16
- package/templates/default/eslint.config.mjs +16 -16
- package/templates/default/gitignore +3 -0
- package/templates/default/next-env.d.ts +6 -6
- package/templates/default/next.config.ts +11 -11
- package/templates/default/package-lock.json +146 -75
- package/templates/default/package.json +2 -1
- package/templates/default/packages/cucumber-runtime/package.json +13 -13
- package/templates/default/packages/cucumber-runtime/src/cache.util.ts +93 -93
- package/templates/default/packages/cucumber-runtime/src/cli.ts +68 -68
- package/templates/default/packages/cucumber-runtime/src/environment.util.ts +21 -21
- package/templates/default/packages/cucumber-runtime/src/executor.ts +32 -32
- package/templates/default/packages/cucumber-runtime/src/hooks.ts +25 -3
- package/templates/default/packages/cucumber-runtime/src/index.ts +17 -17
- package/templates/default/packages/cucumber-runtime/src/locator.util.ts +234 -234
- package/templates/default/packages/cucumber-runtime/src/parameter-types.ts +7 -7
- package/templates/default/packages/cucumber-runtime/src/paths.ts +66 -1
- package/templates/default/packages/cucumber-runtime/src/random-data.util.ts +35 -35
- package/templates/default/packages/cucumber-runtime/src/types.ts +13 -13
- package/templates/default/packages/cucumber-runtime/src/world.ts +44 -44
- package/templates/default/packages/cucumber-runtime/tsconfig.json +11 -11
- package/templates/default/packages/locator-picker-companion/dist/cli.d.ts +1 -0
- package/templates/default/packages/locator-picker-companion/dist/cli.js +302 -0
- package/templates/default/packages/locator-picker-companion/dist/index.d.ts +3 -0
- package/templates/default/packages/locator-picker-companion/dist/index.js +3 -0
- package/templates/default/packages/locator-picker-companion/dist/injected-picker-script.d.ts +1 -0
- package/templates/default/packages/locator-picker-companion/dist/injected-picker-script.js +615 -0
- package/templates/default/packages/locator-picker-companion/dist/launcher.d.ts +11 -0
- package/templates/default/packages/locator-picker-companion/dist/launcher.js +59 -0
- package/templates/default/packages/locator-picker-companion/dist/selector-generator.d.ts +3 -0
- package/templates/default/packages/locator-picker-companion/dist/selector-generator.js +257 -0
- package/templates/default/packages/locator-picker-companion/dist/session-file.d.ts +22 -0
- package/templates/default/packages/locator-picker-companion/dist/session-file.js +150 -0
- package/templates/default/packages/locator-picker-companion/dist/types.d.ts +31 -0
- package/templates/default/packages/locator-picker-companion/dist/types.js +1 -0
- package/templates/default/packages/locator-picker-companion/package.json +17 -0
- package/templates/default/packages/locator-picker-companion/src/cli.ts +428 -0
- package/templates/default/packages/locator-picker-companion/src/index.ts +3 -0
- package/templates/default/packages/locator-picker-companion/src/injected-picker-script.ts +771 -0
- package/templates/default/packages/locator-picker-companion/src/launcher.ts +77 -0
- package/templates/default/packages/locator-picker-companion/src/selector-generator.ts +339 -0
- package/templates/default/packages/locator-picker-companion/src/session-file.ts +226 -0
- package/templates/default/packages/locator-picker-companion/src/types.ts +42 -0
- package/templates/default/packages/locator-picker-companion/tsconfig.json +14 -0
- package/templates/default/postcss.config.mjs +8 -8
- package/templates/default/prisma/dev.db +0 -0
- 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/migrations/20260313093000_add_report_step_screenshot_path/migration.sql +1 -0
- package/templates/default/prisma/migrations/20260318120000_add_test_suite_context_to_test_run_test_case/migration.sql +20 -0
- package/templates/default/prisma/migrations/20260318173512_add_support_of_test_suite_level_runs/migration.sql +2 -0
- package/templates/default/prisma/schema.prisma +4 -0
- package/templates/default/scripts/install-playwright.ts +20 -0
- package/templates/default/scripts/protect-seeded-files.ts +38 -38
- 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 +22 -66
- package/templates/default/scripts/sync-appraise-base-template.ts +57 -19
- package/templates/default/scripts/sync-environments.ts +40 -21
- package/templates/default/scripts/sync-locator-groups.ts +410 -410
- package/templates/default/scripts/sync-locators.ts +398 -398
- package/templates/default/scripts/sync-modules.ts +341 -341
- package/templates/default/scripts/sync-tags.ts +2 -3
- package/templates/default/scripts/sync-template-step-groups.ts +0 -3
- package/templates/default/scripts/sync-template-steps.ts +37 -11
- package/templates/default/scripts/sync-test-cases.ts +68 -16
- package/templates/default/scripts/sync-test-suites.ts +7 -5
- 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 +188 -188
- package/templates/default/src/actions/locator/locator-actions.ts +490 -490
- package/templates/default/src/actions/locator-groups/locator-group-actions.ts +6 -3
- package/templates/default/src/actions/locator-picker/locator-picker-actions.ts +243 -0
- package/templates/default/src/actions/modules/module-actions.ts +135 -135
- package/templates/default/src/actions/reports/report-actions.ts +51 -49
- package/templates/default/src/actions/review/review-actions.ts +147 -147
- package/templates/default/src/actions/settings/sync-actions.ts +46 -0
- package/templates/default/src/actions/tags/tag-actions.ts +107 -107
- package/templates/default/src/actions/template-step/template-step-actions.ts +38 -4
- package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +10 -3
- 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 +356 -356
- package/templates/default/src/actions/test-run/test-run-actions.ts +222 -129
- package/templates/default/src/actions/test-suite/test-suite-actions.ts +95 -17
- 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 +20 -8
- package/templates/default/src/app/(base)/locators/create/create-locator-workspace.tsx +542 -0
- package/templates/default/src/app/(base)/locators/create/page.tsx +32 -19
- package/templates/default/src/app/(base)/locators/locator-form.tsx +163 -163
- package/templates/default/src/app/(base)/locators/locator-table-columns.tsx +73 -73
- package/templates/default/src/app/(base)/locators/locator-table.tsx +28 -28
- package/templates/default/src/app/(base)/locators/modify/[id]/page.tsx +56 -27
- package/templates/default/src/app/(base)/locators/page.tsx +13 -13
- package/templates/default/src/app/(base)/locators/picker/page.tsx +7 -0
- 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 +40 -33
- 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 +49 -46
- package/templates/default/src/app/(base)/reports/page.tsx +98 -98
- package/templates/default/src/app/(base)/reports/report-metric-card.tsx +78 -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 +12 -1
- package/templates/default/src/app/(base)/reports/report-view-table.tsx +1 -0
- package/templates/default/src/app/(base)/reports/test-cases/page.tsx +40 -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 +58 -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)/settings/page.tsx +30 -0
- package/templates/default/src/app/(base)/settings/settings-sync-panel.tsx +261 -0
- 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 +58 -58
- 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 +2 -2
- 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 +6 -71
- package/templates/default/src/app/(base)/test-cases/test-case-table.tsx +2 -2
- package/templates/default/src/app/(base)/test-runs/[id]/page.tsx +4 -1
- package/templates/default/src/app/(base)/test-runs/create/page.tsx +11 -9
- package/templates/default/src/app/(base)/test-runs/page.tsx +60 -60
- package/templates/default/src/app/(base)/test-runs/test-run-form.tsx +37 -44
- 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 +3 -2
- package/templates/default/src/app/(base)/test-suites/modify/[id]/page.tsx +2 -1
- package/templates/default/src/app/(base)/test-suites/page.tsx +57 -21
- package/templates/default/src/app/(base)/test-suites/test-suite-form.tsx +16 -17
- package/templates/default/src/app/(base)/test-suites/test-suite-table-columns.tsx +2 -1
- 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/reports/steps/[stepId]/screenshot/route.ts +52 -0
- package/templates/default/src/app/api/test-runs/[runId]/download/route.ts +97 -34
- package/templates/default/src/app/api/test-runs/[runId]/logs/route.ts +4 -1
- package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.ts +146 -147
- package/templates/default/src/app/globals.css +147 -147
- package/templates/default/src/app/layout.tsx +4 -0
- package/templates/default/src/app/page.tsx +2 -0
- 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/diagram/button-edge.tsx +54 -54
- package/templates/default/src/components/diagram/dynamic-parameters.tsx +474 -474
- 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 +13 -0
- 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 +310 -253
- package/templates/default/src/components/table/table-actions.tsx +172 -172
- package/templates/default/src/components/test-case/test-case-columns.tsx +76 -0
- package/templates/default/src/components/test-case/test-case-picker.tsx +244 -0
- package/templates/default/src/components/test-run/download-logs-button.tsx +92 -99
- package/templates/default/src/components/test-run/log-viewer.tsx +1 -14
- package/templates/default/src/components/test-run/test-run-details.tsx +15 -2
- 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/test-suite/test-suite-picker.tsx +444 -0
- 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 +261 -261
- 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 -151
- 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 +5 -3
- 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/automation/paths.ts +42 -12
- package/templates/default/src/lib/automation/projection-service.ts +2 -1
- package/templates/default/src/lib/bidirectional-sync.ts +432 -432
- package/templates/default/src/lib/database-sync.ts +2 -7
- package/templates/default/src/lib/environment-file-utils.ts +184 -184
- package/templates/default/src/lib/executor/local-executor-adapter.ts +24 -25
- package/templates/default/src/lib/executor/types.ts +2 -2
- package/templates/default/src/lib/feature-file-generator.ts +5 -66
- package/templates/default/src/lib/gherkin-parser.ts +259 -259
- package/templates/default/src/lib/locator-group-file-utils.ts +307 -307
- package/templates/default/src/lib/locator-picker/session-manager.ts +452 -0
- package/templates/default/src/lib/locator-picker/suggestions.ts +124 -0
- package/templates/default/src/lib/metrics/metric-calculator.ts +5 -0
- 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/process/task-spawner.ts +39 -2
- package/templates/default/src/lib/sync/projected-feature-utils.ts +113 -0
- package/templates/default/src/lib/sync/sync-executor.ts +130 -0
- package/templates/default/src/lib/sync/sync-pending-counts.test.ts +239 -0
- package/templates/default/src/lib/sync/sync-pending-counts.ts +1358 -0
- package/templates/default/src/lib/sync/sync-registry.ts +149 -0
- package/templates/default/src/lib/tag-utils.ts +28 -0
- package/templates/default/src/lib/template-sync-utils.d.ts +6 -6
- package/templates/default/src/lib/template-sync-utils.js +46 -46
- package/templates/default/src/lib/template-sync-utils.ts +63 -63
- 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/matching.ts +117 -0
- package/templates/default/src/lib/test-run/process-manager.ts +2 -0
- package/templates/default/src/lib/test-run/report-parser.ts +352 -316
- package/templates/default/src/lib/test-run/test-run-executor.ts +13 -15
- package/templates/default/src/lib/test-run/winston-logger.ts +64 -66
- package/templates/default/src/lib/test-suite-identifier-service.ts +76 -0
- package/templates/default/src/lib/test-suite-utils.ts +6 -0
- 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 +104 -104
- package/templates/default/src/lib/utils/template-step-file-manager-intelligent.ts +0 -8
- 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/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/locator-picker.ts +65 -0
- 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/src/types/test-case-picker.ts +6 -0
- package/templates/default/src/types/test-suite-picker.ts +18 -0
- package/templates/default/tailwind.config.ts +62 -62
- package/templates/default/tsconfig.json +4 -1
- package/templates/default/appraisejs.config.json +0 -1
|
@@ -1,71 +1,71 @@
|
|
|
1
1
|
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
2
|
-
/**
|
|
3
|
-
* @name navigation
|
|
4
|
-
* @description Template steps that deals with browser navigation
|
|
5
|
-
* @type ACTION
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @name navigate to url
|
|
12
|
-
* @description Navigate to the specified URL
|
|
13
|
-
* @icon NAVIGATION
|
|
14
|
-
*/
|
|
15
|
-
When('the user navigates to the {string} url', async function (this: CustomWorld, url: string) {
|
|
16
|
-
try {
|
|
17
|
-
await this.page.goto(url, { waitUntil: 'domcontentloaded' })
|
|
18
|
-
} catch (error) {
|
|
19
|
-
throw new Error(`Failed to navigate to the ${url} url: ${error}`)
|
|
20
|
-
}
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @name navigate to environment base url
|
|
25
|
-
* @description Navigate to the base url of the selected environment
|
|
26
|
-
* @icon NAVIGATION
|
|
27
|
-
*/
|
|
28
|
-
When('the user navigates to the base url of the selected environment', async function (this: CustomWorld) {
|
|
29
|
-
try {
|
|
30
|
-
const environment = process.env.ENVIRONMENT as string
|
|
31
|
-
if (!environment) {
|
|
32
|
-
throw new Error('Environment is not set')
|
|
33
|
-
}
|
|
34
|
-
const environmentConfig = getEnvironment(environment)
|
|
35
|
-
if (!environmentConfig) {
|
|
36
|
-
throw new Error(`Environment ${environment} not found`)
|
|
37
|
-
}
|
|
38
|
-
await this.page.goto(environmentConfig.baseUrl, {
|
|
39
|
-
waitUntil: 'domcontentloaded',
|
|
40
|
-
})
|
|
41
|
-
} catch (error) {
|
|
42
|
-
throw new Error(`Failed to navigate to the base url of the selected environment: ${error}`)
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @name reload
|
|
48
|
-
* @description Template step for reloading the current page
|
|
49
|
-
* @icon NAVIGATION
|
|
50
|
-
*/
|
|
51
|
-
When('the user reloads the page', async function (this: CustomWorld) {
|
|
52
|
-
try {
|
|
53
|
-
await this.page.reload()
|
|
54
|
-
await this.page.waitForLoadState('domcontentloaded')
|
|
55
|
-
} catch (error) {
|
|
56
|
-
throw new Error(`Failed to reload the page: ${error}`)
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @name go back
|
|
62
|
-
* @description Template step for going back to the previous page
|
|
63
|
-
* @icon NAVIGATION
|
|
64
|
-
*/
|
|
65
|
-
When('the user goes back to the previous page', async function (this: CustomWorld) {
|
|
66
|
-
try {
|
|
67
|
-
await this.page.goBack({ waitUntil: 'domcontentloaded' })
|
|
68
|
-
} catch (error) {
|
|
69
|
-
throw new Error(`Failed to go back to the previous page: ${error}`)
|
|
70
|
-
}
|
|
71
|
-
})
|
|
2
|
+
/**
|
|
3
|
+
* @name navigation
|
|
4
|
+
* @description Template steps that deals with browser navigation
|
|
5
|
+
* @type ACTION
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @name navigate to url
|
|
12
|
+
* @description Navigate to the specified URL
|
|
13
|
+
* @icon NAVIGATION
|
|
14
|
+
*/
|
|
15
|
+
When('the user navigates to the {string} url', async function (this: CustomWorld, url: string) {
|
|
16
|
+
try {
|
|
17
|
+
await this.page.goto(url, { waitUntil: 'domcontentloaded' })
|
|
18
|
+
} catch (error) {
|
|
19
|
+
throw new Error(`Failed to navigate to the ${url} url: ${error}`)
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @name navigate to environment base url
|
|
25
|
+
* @description Navigate to the base url of the selected environment
|
|
26
|
+
* @icon NAVIGATION
|
|
27
|
+
*/
|
|
28
|
+
When('the user navigates to the base url of the selected environment', async function (this: CustomWorld) {
|
|
29
|
+
try {
|
|
30
|
+
const environment = process.env.ENVIRONMENT as string
|
|
31
|
+
if (!environment) {
|
|
32
|
+
throw new Error('Environment is not set')
|
|
33
|
+
}
|
|
34
|
+
const environmentConfig = getEnvironment(environment)
|
|
35
|
+
if (!environmentConfig) {
|
|
36
|
+
throw new Error(`Environment ${environment} not found`)
|
|
37
|
+
}
|
|
38
|
+
await this.page.goto(environmentConfig.baseUrl, {
|
|
39
|
+
waitUntil: 'domcontentloaded',
|
|
40
|
+
})
|
|
41
|
+
} catch (error) {
|
|
42
|
+
throw new Error(`Failed to navigate to the base url of the selected environment: ${error}`)
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @name reload
|
|
48
|
+
* @description Template step for reloading the current page
|
|
49
|
+
* @icon NAVIGATION
|
|
50
|
+
*/
|
|
51
|
+
When('the user reloads the page', async function (this: CustomWorld) {
|
|
52
|
+
try {
|
|
53
|
+
await this.page.reload()
|
|
54
|
+
await this.page.waitForLoadState('domcontentloaded')
|
|
55
|
+
} catch (error) {
|
|
56
|
+
throw new Error(`Failed to reload the page: ${error}`)
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @name go back
|
|
62
|
+
* @description Template step for going back to the previous page
|
|
63
|
+
* @icon NAVIGATION
|
|
64
|
+
*/
|
|
65
|
+
When('the user goes back to the previous page', async function (this: CustomWorld) {
|
|
66
|
+
try {
|
|
67
|
+
await this.page.goBack({ waitUntil: 'domcontentloaded' })
|
|
68
|
+
} catch (error) {
|
|
69
|
+
throw new Error(`Failed to go back to the previous page: ${error}`)
|
|
70
|
+
}
|
|
71
|
+
})
|
|
@@ -1,144 +1,144 @@
|
|
|
1
1
|
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
2
|
-
/**
|
|
3
|
-
* @name random data
|
|
4
|
-
* @description Template steps that handles random data generation
|
|
5
|
-
* @type ACTION
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @name generate random first name and save in variable
|
|
12
|
-
* @description Template step for generating a random first name and saving it inside a variable
|
|
13
|
-
* @icon DATA
|
|
14
|
-
*/
|
|
15
|
-
When(
|
|
16
|
-
'the user generates a random first name and stores it inside the variable {string}',
|
|
17
|
-
async function (this: CustomWorld, variableName: string) {
|
|
18
|
-
const data = generateRandomData(RandomDataType.FIRST_NAME);
|
|
19
|
-
try {
|
|
20
|
-
this.setVar(variableName, data);
|
|
21
|
-
} catch (error) {
|
|
22
|
-
throw new Error(`Failed to generate a random first name and store it inside the variable ${variableName}: ${error}`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @name generate random last name and save in variable
|
|
29
|
-
* @description Template step for generating a random last name and saving it inside a variable
|
|
30
|
-
* @icon DATA
|
|
31
|
-
*/
|
|
32
|
-
When(
|
|
33
|
-
'the user generates a random last name and stores it inside the variable {string}',
|
|
34
|
-
async function (this: CustomWorld, variableName: string) {
|
|
35
|
-
const data = generateRandomData(RandomDataType.LAST_NAME);
|
|
36
|
-
try {
|
|
37
|
-
this.setVar(variableName, data);
|
|
38
|
-
} catch (error) {
|
|
39
|
-
throw new Error(`Failed to generate a random last name and store it inside the variable ${variableName}: ${error}`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @name generate random email and save in variable
|
|
46
|
-
* @description Template step for generating a random email and saving it inside a variable
|
|
47
|
-
* @icon DATA
|
|
48
|
-
*/
|
|
49
|
-
When(
|
|
50
|
-
'the user generates a random email and stores it inside the variable {string}',
|
|
51
|
-
async function (this: CustomWorld, variableName: string) {
|
|
52
|
-
const data = generateRandomData(RandomDataType.EMAIL);
|
|
53
|
-
try {
|
|
54
|
-
this.setVar(variableName, data);
|
|
55
|
-
} catch (error) {
|
|
56
|
-
throw new Error(`Failed to generate a random email and store it inside the variable ${variableName}: ${error}`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @name generate random password and save in variable
|
|
63
|
-
* @description Template step for generating a random password and saving it inside a variable
|
|
64
|
-
* @icon DATA
|
|
65
|
-
*/
|
|
66
|
-
When(
|
|
67
|
-
'the user generates a random password and stores it inside the variable {string}',
|
|
68
|
-
async function (this: CustomWorld, variableName: string) {
|
|
69
|
-
const data = generateRandomData(RandomDataType.PASSWORD);
|
|
70
|
-
try {
|
|
71
|
-
this.setVar(variableName, data);
|
|
72
|
-
} catch (error) {
|
|
73
|
-
throw new Error(`Failed to generate a random password and store it inside the variable ${variableName}: ${error}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* @name generate random phone and save in variable
|
|
80
|
-
* @description Template step for generating a random phone and saving it inside a variable
|
|
81
|
-
* @icon DATA
|
|
82
|
-
*/
|
|
83
|
-
When(
|
|
84
|
-
'the user generates a random phone and stores it inside the variable {string}',
|
|
85
|
-
async function (this: CustomWorld, variableName: string) {
|
|
86
|
-
const data = generateRandomData(RandomDataType.PHONE);
|
|
87
|
-
try {
|
|
88
|
-
this.setVar(variableName, data);
|
|
89
|
-
} catch (error) {
|
|
90
|
-
throw new Error(`Failed to generate a random phone and store it inside the variable ${variableName}: ${error}`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* @name generate random address and save in variable
|
|
97
|
-
* @description Template step for generating a random address and saving it inside a variable
|
|
98
|
-
* @icon DATA
|
|
99
|
-
*/
|
|
100
|
-
When(
|
|
101
|
-
'the user generates a random address and stores it inside the variable {string}',
|
|
102
|
-
async function (this: CustomWorld, variableName: string) {
|
|
103
|
-
const data = generateRandomData(RandomDataType.ADDRESS);
|
|
104
|
-
try {
|
|
105
|
-
this.setVar(variableName, data);
|
|
106
|
-
} catch (error) {
|
|
107
|
-
throw new Error(`Failed to generate a random address and store it inside the variable ${variableName}: ${error}`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* @name generate random unique text and save in variable
|
|
114
|
-
* @description Template step for generating a random unique text and saving it inside a variable
|
|
115
|
-
* @icon DATA
|
|
116
|
-
*/
|
|
117
|
-
When(
|
|
118
|
-
'the user generates a random unique text and stores it inside the variable {string}',
|
|
119
|
-
async function (this: CustomWorld, variableName: string) {
|
|
120
|
-
const data = generateRandomData(RandomDataType.UNIQUE_TEXT);
|
|
121
|
-
try {
|
|
122
|
-
this.setVar(variableName, data);
|
|
123
|
-
} catch (error) {
|
|
124
|
-
throw new Error(`Failed to generate a random unique text and store it inside the variable ${variableName}: ${error}`);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* @name generate random full name and save in variable
|
|
131
|
-
* @description Template step for generating a random full name and saving it inside a variable
|
|
132
|
-
* @icon DATA
|
|
133
|
-
*/
|
|
134
|
-
When(
|
|
135
|
-
'the user generates a random full name and stores it inside the variable {string}',
|
|
136
|
-
async function (this: CustomWorld, variableName: string) {
|
|
137
|
-
const data = generateRandomData(RandomDataType.FULL_NAME);
|
|
138
|
-
try {
|
|
139
|
-
this.setVar(variableName, data);
|
|
140
|
-
} catch (error) {
|
|
141
|
-
throw new Error(`Failed to generate a random full name and store it inside the variable ${variableName}: ${error}`);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
2
|
+
/**
|
|
3
|
+
* @name random data
|
|
4
|
+
* @description Template steps that handles random data generation
|
|
5
|
+
* @type ACTION
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @name generate random first name and save in variable
|
|
12
|
+
* @description Template step for generating a random first name and saving it inside a variable
|
|
13
|
+
* @icon DATA
|
|
14
|
+
*/
|
|
15
|
+
When(
|
|
16
|
+
'the user generates a random first name and stores it inside the variable {string}',
|
|
17
|
+
async function (this: CustomWorld, variableName: string) {
|
|
18
|
+
const data = generateRandomData(RandomDataType.FIRST_NAME);
|
|
19
|
+
try {
|
|
20
|
+
this.setVar(variableName, data);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
throw new Error(`Failed to generate a random first name and store it inside the variable ${variableName}: ${error}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @name generate random last name and save in variable
|
|
29
|
+
* @description Template step for generating a random last name and saving it inside a variable
|
|
30
|
+
* @icon DATA
|
|
31
|
+
*/
|
|
32
|
+
When(
|
|
33
|
+
'the user generates a random last name and stores it inside the variable {string}',
|
|
34
|
+
async function (this: CustomWorld, variableName: string) {
|
|
35
|
+
const data = generateRandomData(RandomDataType.LAST_NAME);
|
|
36
|
+
try {
|
|
37
|
+
this.setVar(variableName, data);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
throw new Error(`Failed to generate a random last name and store it inside the variable ${variableName}: ${error}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @name generate random email and save in variable
|
|
46
|
+
* @description Template step for generating a random email and saving it inside a variable
|
|
47
|
+
* @icon DATA
|
|
48
|
+
*/
|
|
49
|
+
When(
|
|
50
|
+
'the user generates a random email and stores it inside the variable {string}',
|
|
51
|
+
async function (this: CustomWorld, variableName: string) {
|
|
52
|
+
const data = generateRandomData(RandomDataType.EMAIL);
|
|
53
|
+
try {
|
|
54
|
+
this.setVar(variableName, data);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
throw new Error(`Failed to generate a random email and store it inside the variable ${variableName}: ${error}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @name generate random password and save in variable
|
|
63
|
+
* @description Template step for generating a random password and saving it inside a variable
|
|
64
|
+
* @icon DATA
|
|
65
|
+
*/
|
|
66
|
+
When(
|
|
67
|
+
'the user generates a random password and stores it inside the variable {string}',
|
|
68
|
+
async function (this: CustomWorld, variableName: string) {
|
|
69
|
+
const data = generateRandomData(RandomDataType.PASSWORD);
|
|
70
|
+
try {
|
|
71
|
+
this.setVar(variableName, data);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
throw new Error(`Failed to generate a random password and store it inside the variable ${variableName}: ${error}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @name generate random phone and save in variable
|
|
80
|
+
* @description Template step for generating a random phone and saving it inside a variable
|
|
81
|
+
* @icon DATA
|
|
82
|
+
*/
|
|
83
|
+
When(
|
|
84
|
+
'the user generates a random phone and stores it inside the variable {string}',
|
|
85
|
+
async function (this: CustomWorld, variableName: string) {
|
|
86
|
+
const data = generateRandomData(RandomDataType.PHONE);
|
|
87
|
+
try {
|
|
88
|
+
this.setVar(variableName, data);
|
|
89
|
+
} catch (error) {
|
|
90
|
+
throw new Error(`Failed to generate a random phone and store it inside the variable ${variableName}: ${error}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @name generate random address and save in variable
|
|
97
|
+
* @description Template step for generating a random address and saving it inside a variable
|
|
98
|
+
* @icon DATA
|
|
99
|
+
*/
|
|
100
|
+
When(
|
|
101
|
+
'the user generates a random address and stores it inside the variable {string}',
|
|
102
|
+
async function (this: CustomWorld, variableName: string) {
|
|
103
|
+
const data = generateRandomData(RandomDataType.ADDRESS);
|
|
104
|
+
try {
|
|
105
|
+
this.setVar(variableName, data);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
throw new Error(`Failed to generate a random address and store it inside the variable ${variableName}: ${error}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @name generate random unique text and save in variable
|
|
114
|
+
* @description Template step for generating a random unique text and saving it inside a variable
|
|
115
|
+
* @icon DATA
|
|
116
|
+
*/
|
|
117
|
+
When(
|
|
118
|
+
'the user generates a random unique text and stores it inside the variable {string}',
|
|
119
|
+
async function (this: CustomWorld, variableName: string) {
|
|
120
|
+
const data = generateRandomData(RandomDataType.UNIQUE_TEXT);
|
|
121
|
+
try {
|
|
122
|
+
this.setVar(variableName, data);
|
|
123
|
+
} catch (error) {
|
|
124
|
+
throw new Error(`Failed to generate a random unique text and store it inside the variable ${variableName}: ${error}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @name generate random full name and save in variable
|
|
131
|
+
* @description Template step for generating a random full name and saving it inside a variable
|
|
132
|
+
* @icon DATA
|
|
133
|
+
*/
|
|
134
|
+
When(
|
|
135
|
+
'the user generates a random full name and stores it inside the variable {string}',
|
|
136
|
+
async function (this: CustomWorld, variableName: string) {
|
|
137
|
+
const data = generateRandomData(RandomDataType.FULL_NAME);
|
|
138
|
+
try {
|
|
139
|
+
this.setVar(variableName, data);
|
|
140
|
+
} catch (error) {
|
|
141
|
+
throw new Error(`Failed to generate a random full name and store it inside the variable ${variableName}: ${error}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
144
|
);
|
|
@@ -1,87 +1,87 @@
|
|
|
1
1
|
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
2
|
-
/**
|
|
3
|
-
* @name store
|
|
4
|
-
* @description Template steps that handle data storage
|
|
5
|
-
* @type ACTION
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @name store element text
|
|
12
|
-
* @description Template step for storing element text inside a data variable to be referenced in later steps
|
|
13
|
-
* @icon STORE
|
|
14
|
-
*/
|
|
15
|
-
When(
|
|
16
|
-
'the user stores the {string} element text inside the variable {string}',
|
|
17
|
-
async function (
|
|
18
|
-
this: CustomWorld,
|
|
19
|
-
elementName: SelectorName,
|
|
20
|
-
storeVariableName: string
|
|
21
|
-
) {
|
|
22
|
-
const selector = await resolveLocator(this.page, elementName);
|
|
23
|
-
if (!selector) {
|
|
24
|
-
throw new Error(`Selector ${elementName} not found`);
|
|
25
|
-
}
|
|
26
|
-
try {
|
|
27
|
-
const text = await this.page.locator(selector).textContent();
|
|
28
|
-
this.setVar(storeVariableName, text);
|
|
29
|
-
} catch (error) {
|
|
30
|
-
throw new Error(
|
|
31
|
-
`Failed to store the ${elementName} element text: ${error}`
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* @name store text input text
|
|
39
|
-
* @description Template step for storing text input element values inside a variable
|
|
40
|
-
* @icon STORE
|
|
41
|
-
*/
|
|
42
|
-
When(
|
|
43
|
-
'the user stores the {string} text input value inside the variable {string}',
|
|
44
|
-
async function (
|
|
45
|
-
this: CustomWorld,
|
|
46
|
-
fieldName: SelectorName,
|
|
47
|
-
variableName: string
|
|
48
|
-
) {
|
|
49
|
-
const selector = await resolveLocator(this.page, fieldName);
|
|
50
|
-
if (!selector) {
|
|
51
|
-
throw new Error(`Selector ${fieldName} not found`);
|
|
52
|
-
}
|
|
53
|
-
try {
|
|
54
|
-
const value = await this.page.locator(selector).inputValue();
|
|
55
|
-
this.setVar(variableName, value);
|
|
56
|
-
} catch (error) {
|
|
57
|
-
throw new Error(
|
|
58
|
-
`Failed to store the ${fieldName} text input value: ${error}`
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* @name store textarea text
|
|
66
|
-
* @description Template step for storing textarea content inside a variable
|
|
67
|
-
* @icon STORE
|
|
68
|
-
*/
|
|
69
|
-
When(
|
|
70
|
-
'the user stores the {string} textarea input value inside the variable {string}',
|
|
71
|
-
async function (
|
|
72
|
-
this: CustomWorld,
|
|
73
|
-
elementName: SelectorName,
|
|
74
|
-
variableName: string
|
|
75
|
-
) {
|
|
76
|
-
const selector = await resolveLocator(this.page, elementName);
|
|
77
|
-
if (!selector) {
|
|
78
|
-
throw new Error(`Selector ${elementName} not found`);
|
|
79
|
-
}
|
|
80
|
-
try {
|
|
81
|
-
const text = await this.page.locator(selector).inputValue();
|
|
82
|
-
this.setVar(variableName, text);
|
|
83
|
-
} catch (error) {
|
|
84
|
-
throw new Error(`Failed to store the ${elementName} textarea input value inside the variable ${variableName}: ${error}`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
);
|
|
2
|
+
/**
|
|
3
|
+
* @name store
|
|
4
|
+
* @description Template steps that handle data storage
|
|
5
|
+
* @type ACTION
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @name store element text
|
|
12
|
+
* @description Template step for storing element text inside a data variable to be referenced in later steps
|
|
13
|
+
* @icon STORE
|
|
14
|
+
*/
|
|
15
|
+
When(
|
|
16
|
+
'the user stores the {string} element text inside the variable {string}',
|
|
17
|
+
async function (
|
|
18
|
+
this: CustomWorld,
|
|
19
|
+
elementName: SelectorName,
|
|
20
|
+
storeVariableName: string
|
|
21
|
+
) {
|
|
22
|
+
const selector = await resolveLocator(this.page, elementName);
|
|
23
|
+
if (!selector) {
|
|
24
|
+
throw new Error(`Selector ${elementName} not found`);
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const text = await this.page.locator(selector).textContent();
|
|
28
|
+
this.setVar(storeVariableName, text);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
`Failed to store the ${elementName} element text: ${error}`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @name store text input text
|
|
39
|
+
* @description Template step for storing text input element values inside a variable
|
|
40
|
+
* @icon STORE
|
|
41
|
+
*/
|
|
42
|
+
When(
|
|
43
|
+
'the user stores the {string} text input value inside the variable {string}',
|
|
44
|
+
async function (
|
|
45
|
+
this: CustomWorld,
|
|
46
|
+
fieldName: SelectorName,
|
|
47
|
+
variableName: string
|
|
48
|
+
) {
|
|
49
|
+
const selector = await resolveLocator(this.page, fieldName);
|
|
50
|
+
if (!selector) {
|
|
51
|
+
throw new Error(`Selector ${fieldName} not found`);
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const value = await this.page.locator(selector).inputValue();
|
|
55
|
+
this.setVar(variableName, value);
|
|
56
|
+
} catch (error) {
|
|
57
|
+
throw new Error(
|
|
58
|
+
`Failed to store the ${fieldName} text input value: ${error}`
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @name store textarea text
|
|
66
|
+
* @description Template step for storing textarea content inside a variable
|
|
67
|
+
* @icon STORE
|
|
68
|
+
*/
|
|
69
|
+
When(
|
|
70
|
+
'the user stores the {string} textarea input value inside the variable {string}',
|
|
71
|
+
async function (
|
|
72
|
+
this: CustomWorld,
|
|
73
|
+
elementName: SelectorName,
|
|
74
|
+
variableName: string
|
|
75
|
+
) {
|
|
76
|
+
const selector = await resolveLocator(this.page, elementName);
|
|
77
|
+
if (!selector) {
|
|
78
|
+
throw new Error(`Selector ${elementName} not found`);
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const text = await this.page.locator(selector).inputValue();
|
|
82
|
+
this.setVar(variableName, text);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
throw new Error(`Failed to store the ${elementName} textarea input value inside the variable ${variableName}: ${error}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
);
|