create-appraisejs 0.2.0-alpha.6 → 0.3.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -1
- package/package.json +1 -1
- package/templates/default/.appraise-template-meta.json +2 -2
- package/templates/default/.env.example +2 -2
- package/templates/default/README.md +57 -53
- 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/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 +110 -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 +20 -16
- package/templates/default/next-env.d.ts +6 -6
- package/templates/default/next.config.ts +20 -11
- package/templates/default/package-lock.json +1775 -74
- package/templates/default/package.json +8 -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/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/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/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 -1
- package/templates/default/scripts/build-step-registry.ts +33 -0
- package/templates/default/scripts/install-playwright.ts +17 -8
- package/templates/default/scripts/install-template-step.ts +128 -0
- package/templates/default/scripts/lib/filename-utils.test.ts +24 -0
- package/templates/default/scripts/lib/filename-utils.ts +24 -0
- package/templates/default/scripts/lib/jsdoc-parser.test.ts +63 -0
- package/templates/default/scripts/lib/jsdoc-parser.ts +88 -0
- package/templates/default/scripts/lib/step-file-parser.test.ts +71 -0
- package/templates/default/scripts/lib/step-file-parser.ts +315 -0
- package/templates/default/scripts/lib/step-matcher.test.ts +86 -0
- package/templates/default/scripts/lib/step-matcher.ts +120 -0
- package/templates/default/scripts/lib/sync-script-runner.ts +23 -0
- package/templates/default/scripts/lib/sync-summary.ts +29 -0
- package/templates/default/scripts/lib/tag-parsing.test.ts +20 -0
- package/templates/default/scripts/lib/tag-parsing.ts +10 -0
- package/templates/default/scripts/lib/template-step-installer.test.ts +225 -0
- package/templates/default/scripts/lib/template-step-installer.ts +404 -0
- package/templates/default/scripts/lib/template-step-registry.test.ts +118 -0
- package/templates/default/scripts/lib/template-step-registry.ts +137 -0
- package/templates/default/scripts/protect-seeded-files.ts +51 -38
- package/templates/default/scripts/regenerate-features.ts +98 -94
- package/templates/default/scripts/run-vitest.ts +59 -0
- package/templates/default/scripts/setup-env.ts +26 -19
- package/templates/default/scripts/sync-all.ts +44 -54
- package/templates/default/scripts/sync-appraise-base-template.ts +44 -16
- package/templates/default/scripts/sync-environments.ts +22 -66
- package/templates/default/scripts/sync-locator-groups.ts +358 -410
- package/templates/default/scripts/sync-locators.ts +348 -398
- package/templates/default/scripts/sync-modules.ts +302 -341
- package/templates/default/scripts/sync-tags.ts +29 -65
- package/templates/default/scripts/sync-template-step-groups.ts +24 -182
- package/templates/default/scripts/sync-template-steps.ts +36 -493
- package/templates/default/scripts/sync-test-cases.ts +296 -539
- package/templates/default/scripts/sync-test-suites.ts +32 -79
- package/templates/default/src/actions/dashboard/dashboard-actions.ts +70 -241
- package/templates/default/src/actions/environments/environment-actions.ts +102 -188
- package/templates/default/src/actions/locator/locator-actions.ts +77 -490
- package/templates/default/src/actions/locator-groups/locator-group-actions.ts +34 -212
- package/templates/default/src/actions/locator-picker/locator-picker-actions.test.ts +81 -0
- package/templates/default/src/actions/locator-picker/locator-picker-actions.ts +20 -161
- package/templates/default/src/actions/modules/module-actions.ts +99 -135
- package/templates/default/src/actions/reports/report-actions.ts +28 -565
- package/templates/default/src/actions/settings/sync-actions.test.ts +58 -0
- package/templates/default/src/actions/tags/tag-actions.ts +99 -107
- package/templates/default/src/actions/template-step/template-step-actions.ts +33 -194
- package/templates/default/src/actions/template-step-group/template-step-group-actions.ts +35 -92
- package/templates/default/src/actions/template-test-case/template-test-case-actions.ts +98 -238
- package/templates/default/src/actions/test-case/test-case-actions.ts +108 -356
- package/templates/default/src/actions/test-run/test-run-actions.ts +74 -1081
- package/templates/default/src/actions/test-suite/test-suite-actions.ts +35 -202
- package/templates/default/src/app/(base)/environments/create/page.tsx +28 -28
- package/templates/default/src/app/(base)/environments/environment-form.test.tsx +92 -0
- package/templates/default/src/app/(base)/environments/environment-form.tsx +228 -219
- package/templates/default/src/app/(base)/environments/environment-helpers.ts +58 -0
- package/templates/default/src/app/(base)/environments/environment-table-columns.tsx +96 -96
- package/templates/default/src/app/(base)/environments/environment-table.tsx +25 -24
- package/templates/default/src/app/(base)/environments/modify/[id]/page.tsx +49 -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)/locators/create/create-locator-workspace-helpers.test.ts +71 -0
- package/templates/default/src/app/(base)/locators/create/create-locator-workspace-helpers.ts +333 -0
- package/templates/default/src/app/(base)/locators/create/create-locator-workspace.test.tsx +125 -0
- package/templates/default/src/app/(base)/locators/create/create-locator-workspace.tsx +56 -274
- package/templates/default/src/app/(base)/locators/create/page.tsx +8 -4
- package/templates/default/src/app/(base)/locators/create/use-locator-workspace.ts +183 -0
- package/templates/default/src/app/(base)/locators/locator-helpers.test.ts +28 -0
- package/templates/default/src/app/(base)/locators/locator-helpers.ts +59 -0
- package/templates/default/src/app/(base)/locators/locator-table-columns.tsx +74 -73
- package/templates/default/src/app/(base)/locators/locator-table.tsx +30 -28
- package/templates/default/src/app/(base)/locators/modify/[id]/page.tsx +20 -8
- package/templates/default/src/app/(base)/locators/page.tsx +3 -6
- package/templates/default/src/app/(base)/locators/sync-locators-button.tsx +67 -66
- package/templates/default/src/app/(base)/modules/create/page.tsx +33 -34
- package/templates/default/src/app/(base)/modules/modify/[id]/page.tsx +43 -46
- package/templates/default/src/app/(base)/modules/module-form.test.tsx +84 -0
- package/templates/default/src/app/(base)/modules/module-form.tsx +159 -126
- package/templates/default/src/app/(base)/modules/module-helpers.ts +64 -0
- package/templates/default/src/app/(base)/modules/module-table-columns.tsx +81 -85
- package/templates/default/src/app/(base)/modules/module-table.tsx +25 -24
- package/templates/default/src/app/(base)/modules/page.tsx +59 -59
- package/templates/default/src/app/(base)/reports/[id]/page.tsx +20 -260
- package/templates/default/src/app/(base)/reports/duration-chart.tsx +33 -33
- package/templates/default/src/app/(base)/reports/feature-chart.tsx +79 -78
- package/templates/default/src/app/(base)/reports/overview-chart.tsx +49 -49
- package/templates/default/src/app/(base)/reports/page.tsx +98 -98
- package/templates/default/src/app/(base)/reports/report-detail-helpers.test.ts +109 -0
- package/templates/default/src/app/(base)/reports/report-detail-helpers.ts +247 -0
- package/templates/default/src/app/(base)/reports/report-metric-card.tsx +78 -78
- 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/test-cases/page.tsx +40 -40
- 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 -58
- package/templates/default/src/app/(base)/settings/settings-sync-panel-helpers.test.tsx +40 -0
- package/templates/default/src/app/(base)/settings/settings-sync-panel-helpers.tsx +110 -0
- package/templates/default/src/app/(base)/settings/settings-sync-panel.test.tsx +127 -0
- package/templates/default/src/app/(base)/settings/settings-sync-panel.tsx +19 -134
- package/templates/default/src/app/(base)/settings/use-settings-sync.ts +66 -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-helpers.ts +13 -0
- package/templates/default/src/app/(base)/tags/tag-form.test.tsx +83 -0
- package/templates/default/src/app/(base)/tags/tag-form.tsx +143 -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 +43 -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.test.tsx +82 -0
- package/templates/default/src/app/(base)/template-step-groups/template-step-group-form.tsx +181 -167
- package/templates/default/src/app/(base)/template-step-groups/template-step-group-helpers.ts +54 -0
- 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 +34 -32
- package/templates/default/src/app/(base)/template-steps/create/page.tsx +40 -37
- package/templates/default/src/app/(base)/template-steps/modify/[id]/page.tsx +54 -49
- package/templates/default/src/app/(base)/template-steps/page.tsx +59 -58
- package/templates/default/src/app/(base)/template-steps/paramChip.tsx +233 -213
- package/templates/default/src/app/(base)/template-steps/template-step-form.test.tsx +132 -0
- package/templates/default/src/app/(base)/template-steps/template-step-form.tsx +342 -384
- package/templates/default/src/app/(base)/template-steps/template-step-helpers.test.ts +99 -0
- package/templates/default/src/app/(base)/template-steps/template-step-helpers.ts +176 -0
- package/templates/default/src/app/(base)/template-steps/template-step-table-columns.tsx +153 -158
- package/templates/default/src/app/(base)/template-steps/template-step-table.tsx +26 -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.test.tsx +109 -0
- package/templates/default/src/app/(base)/template-test-cases/template-test-case-flow.tsx +45 -84
- package/templates/default/src/app/(base)/template-test-cases/template-test-case-form.test.tsx +140 -0
- package/templates/default/src/app/(base)/template-test-cases/template-test-case-form.tsx +154 -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 +90 -76
- package/templates/default/src/app/(base)/test-cases/create-from-template/create-from-template-helpers.test.ts +94 -0
- package/templates/default/src/app/(base)/test-cases/create-from-template/create-from-template-helpers.ts +171 -0
- package/templates/default/src/app/(base)/test-cases/create-from-template/generate/[id]/page.tsx +105 -96
- package/templates/default/src/app/(base)/test-cases/create-from-template/page.tsx +40 -38
- package/templates/default/src/app/(base)/test-cases/create-from-template/template-selection-form.test.tsx +87 -0
- package/templates/default/src/app/(base)/test-cases/create-from-template/template-selection-form.tsx +83 -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 +3 -2
- package/templates/default/src/app/(base)/test-cases/test-case-flow.test.tsx +108 -0
- package/templates/default/src/app/(base)/test-cases/test-case-flow.tsx +43 -82
- package/templates/default/src/app/(base)/test-cases/test-case-form.test.tsx +202 -0
- package/templates/default/src/app/(base)/test-cases/test-case-form.tsx +263 -395
- package/templates/default/src/app/(base)/test-cases/test-case-route-helpers.test.ts +95 -0
- package/templates/default/src/app/(base)/test-cases/test-case-route-helpers.ts +147 -0
- package/templates/default/src/app/(base)/test-cases/test-case-table.tsx +4 -2
- package/templates/default/src/app/(base)/test-runs/[id]/page.tsx +11 -10
- package/templates/default/src/app/(base)/test-runs/create/page.tsx +4 -5
- package/templates/default/src/app/(base)/test-runs/page.tsx +60 -60
- package/templates/default/src/app/(base)/test-runs/test-run-form-helpers.test.ts +50 -0
- package/templates/default/src/app/(base)/test-runs/test-run-form-helpers.ts +168 -0
- package/templates/default/src/app/(base)/test-runs/test-run-form.test.tsx +138 -0
- package/templates/default/src/app/(base)/test-runs/test-run-form.tsx +111 -256
- 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-runs/use-test-run-name-validation.ts +74 -0
- package/templates/default/src/app/(base)/test-suites/create/page.tsx +17 -12
- package/templates/default/src/app/(base)/test-suites/modify/[id]/page.tsx +22 -19
- package/templates/default/src/app/(base)/test-suites/page.tsx +14 -56
- package/templates/default/src/app/(base)/test-suites/test-suite-form.test.tsx +127 -0
- package/templates/default/src/app/(base)/test-suites/test-suite-form.tsx +45 -64
- package/templates/default/src/app/(base)/test-suites/test-suite-helpers.test.ts +67 -0
- package/templates/default/src/app/(base)/test-suites/test-suite-helpers.ts +215 -0
- package/templates/default/src/app/(base)/test-suites/test-suite-table.tsx +32 -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.test.ts +83 -0
- package/templates/default/src/app/api/reports/steps/[stepId]/screenshot/route.ts +52 -52
- package/templates/default/src/app/api/test-runs/[runId]/download/route.test.ts +169 -0
- package/templates/default/src/app/api/test-runs/[runId]/download/route.ts +1 -1
- package/templates/default/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.test.ts +135 -0
- 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/page.tsx +1 -1
- 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-helpers.test.ts +32 -0
- package/templates/default/src/components/data-extraction/locator-inspector-helpers.ts +183 -0
- package/templates/default/src/components/data-extraction/locator-inspector.tsx +349 -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-helpers.test.ts +83 -0
- package/templates/default/src/components/diagram/dynamic-parameters-helpers.ts +158 -0
- package/templates/default/src/components/diagram/dynamic-parameters.tsx +350 -474
- package/templates/default/src/components/diagram/edit-header-option.tsx +36 -36
- package/templates/default/src/components/diagram/flow-diagram-helpers.test.ts +117 -0
- package/templates/default/src/components/diagram/flow-diagram-helpers.ts +251 -0
- package/templates/default/src/components/diagram/flow-diagram.tsx +247 -470
- package/templates/default/src/components/diagram/flow-host-helpers.test.ts +74 -0
- package/templates/default/src/components/diagram/flow-host-helpers.ts +51 -0
- package/templates/default/src/components/diagram/node-form-helpers.test.ts +92 -0
- package/templates/default/src/components/diagram/node-form-helpers.ts +100 -0
- package/templates/default/src/components/diagram/node-form.test.tsx +168 -0
- package/templates/default/src/components/diagram/node-form.tsx +199 -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/diagram/use-flow-node-order.ts +49 -0
- 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/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 +118 -116
- package/templates/default/src/components/navigation/nav-card.tsx +31 -31
- package/templates/default/src/components/navigation/nav-command-helpers.ts +122 -0
- package/templates/default/src/components/navigation/nav-command-search.tsx +125 -0
- package/templates/default/src/components/navigation/nav-command.test.tsx +106 -0
- package/templates/default/src/components/navigation/nav-command.tsx +49 -472
- 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/navigation/use-nav-command.ts +58 -0
- package/templates/default/src/components/node-header.tsx +159 -159
- package/templates/default/src/components/reports/test-case-logs-modal.tsx +310 -310
- package/templates/default/src/components/table/table-actions.tsx +174 -172
- package/templates/default/src/components/test-case/test-case-form-helpers.test.ts +100 -0
- package/templates/default/src/components/test-case/test-case-form-helpers.ts +140 -0
- package/templates/default/src/components/test-case/test-case-picker-helpers.test.ts +40 -0
- package/templates/default/src/components/test-case/test-case-picker-helpers.ts +41 -0
- package/templates/default/src/components/test-case/test-case-picker.test.tsx +44 -0
- package/templates/default/src/components/test-case/test-case-picker.tsx +16 -35
- package/templates/default/src/components/test-case/test-scenario-preview.tsx +34 -0
- package/templates/default/src/components/test-run/download-logs-button.tsx +92 -92
- package/templates/default/src/components/test-run/log-viewer-helpers.test.ts +37 -0
- package/templates/default/src/components/test-run/log-viewer-helpers.ts +80 -0
- package/templates/default/src/components/test-run/log-viewer.test.tsx +118 -0
- package/templates/default/src/components/test-run/log-viewer.tsx +51 -350
- package/templates/default/src/components/test-run/test-run-details-helpers.test.ts +31 -0
- package/templates/default/src/components/test-run/test-run-details-helpers.ts +208 -0
- package/templates/default/src/components/test-run/test-run-details.test.tsx +174 -0
- package/templates/default/src/components/test-run/test-run-details.tsx +155 -457
- package/templates/default/src/components/test-run/test-run-header-helpers.test.ts +31 -0
- package/templates/default/src/components/test-run/test-run-header-helpers.ts +23 -0
- package/templates/default/src/components/test-run/test-run-header.test.tsx +103 -0
- package/templates/default/src/components/test-run/test-run-header.tsx +27 -149
- package/templates/default/src/components/test-run/use-log-viewer.ts +213 -0
- package/templates/default/src/components/test-run/use-test-run-details.ts +184 -0
- package/templates/default/src/components/test-run/use-test-run-header.ts +89 -0
- package/templates/default/src/components/test-run/view-report-button.tsx +102 -102
- package/templates/default/src/components/test-suite/test-suite-picker-helpers.test.ts +68 -0
- package/templates/default/src/components/test-suite/test-suite-picker-helpers.ts +76 -0
- package/templates/default/src/components/test-suite/test-suite-picker.test.tsx +65 -0
- package/templates/default/src/components/test-suite/test-suite-picker.tsx +4 -72
- 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.test.tsx +122 -0
- package/templates/default/src/components/ui/data-table.tsx +298 -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.test.tsx +45 -0
- package/templates/default/src/components/ui/multi-select.tsx +158 -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.test.tsx +60 -0
- package/templates/default/src/components/user-prompt/delete-prompt.tsx +118 -87
- 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-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/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-suite-form-opts.ts +24 -24
- package/templates/default/src/hooks/use-toast.ts +187 -187
- package/templates/default/src/lib/automation/automation-path-roots.ts +95 -0
- package/templates/default/src/lib/automation/automation-workspace.ts +147 -0
- package/templates/default/src/lib/automation/paths.ts +6 -211
- package/templates/default/src/lib/bidirectional-sync.ts +432 -432
- package/templates/default/src/lib/environment-file-utils.ts +2 -1
- package/templates/default/src/lib/executor/local-executor-adapter.ts +2 -5
- package/templates/default/src/lib/feature-file-generator.ts +2 -1
- package/templates/default/src/lib/gherkin-parser.ts +0 -2
- package/templates/default/src/lib/locator-group-file-utils.ts +304 -307
- package/templates/default/src/lib/locator-picker/session-manager.ts +0 -21
- package/templates/default/src/lib/locator-picker/suggestions.ts +13 -11
- package/templates/default/src/lib/metrics/metric-calculator.ts +2 -6
- 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/sync/sync-executor.test.ts +76 -0
- package/templates/default/src/lib/sync/sync-pending-counts.test.ts +227 -226
- package/templates/default/src/lib/sync/sync-pending-counts.ts +2 -5
- 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/report-parser.ts +352 -352
- package/templates/default/src/lib/test-run/test-run-executor.ts +13 -13
- package/templates/default/src/lib/test-run/winston-logger.ts +65 -64
- 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 +2 -2
- 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/services/dashboard/dashboard-service.test.ts +106 -0
- package/templates/default/src/services/dashboard/dashboard-service.ts +173 -0
- package/templates/default/src/services/environment/environment-service.test.ts +137 -0
- package/templates/default/src/services/environment/environment-service.ts +96 -0
- package/templates/default/src/services/locator/locator-path-utils.test.ts +14 -0
- package/templates/default/src/services/locator/locator-path-utils.ts +14 -0
- package/templates/default/src/services/locator/locator-service.test.ts +63 -0
- package/templates/default/src/services/locator/locator-service.ts +479 -0
- package/templates/default/src/services/locator/locator-sync-utils.test.ts +19 -0
- package/templates/default/src/services/locator/locator-sync-utils.ts +21 -0
- package/templates/default/src/services/locator-group/locator-group-service.test.ts +123 -0
- package/templates/default/src/services/locator-group/locator-group-service.ts +180 -0
- package/templates/default/src/services/module/module-service.test.ts +89 -0
- package/templates/default/src/services/module/module-service.ts +66 -0
- package/templates/default/src/services/report/report-service.test.ts +244 -0
- package/templates/default/src/services/report/report-service.ts +438 -0
- package/templates/default/src/services/shared/constants.ts +2 -0
- package/templates/default/src/services/shared/errors.test.ts +38 -0
- package/templates/default/src/services/shared/errors.ts +44 -0
- package/templates/default/src/services/shared/index.ts +7 -0
- package/templates/default/src/services/tag/tag-service.test.ts +22 -0
- package/templates/default/src/services/tag/tag-service.ts +41 -0
- package/templates/default/src/services/template-step/template-step-service.test.ts +22 -0
- package/templates/default/src/services/template-step/template-step-service.ts +171 -0
- package/templates/default/src/services/template-step-group/template-step-group-service.test.ts +22 -0
- package/templates/default/src/services/template-step-group/template-step-group-service.ts +81 -0
- package/templates/default/src/services/template-test-case/template-test-case-service.test.ts +22 -0
- package/templates/default/src/services/template-test-case/template-test-case-service.ts +128 -0
- package/templates/default/src/services/test-case/test-case-service.test.ts +175 -0
- package/templates/default/src/services/test-case/test-case-service.ts +298 -0
- package/templates/default/src/services/test-run/test-run-helpers.ts +61 -0
- package/templates/default/src/services/test-run/test-run-service.test.ts +647 -0
- package/templates/default/src/services/test-run/test-run-service.ts +917 -0
- package/templates/default/src/services/test-suite/test-suite-service.test.ts +127 -0
- package/templates/default/src/services/test-suite/test-suite-service.ts +197 -0
- 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 +19 -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/tsconfig.json +1 -1
- package/dist/cli.e2e.test.d.ts +0 -2
- package/dist/cli.e2e.test.d.ts.map +0 -1
- package/dist/cli.e2e.test.js +0 -73
- package/dist/cli.e2e.test.js.map +0 -1
- package/dist/config.test.d.ts +0 -2
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -65
- package/dist/config.test.js.map +0 -1
- package/dist/copy-template.test.d.ts +0 -2
- package/dist/copy-template.test.d.ts.map +0 -1
- package/dist/copy-template.test.js +0 -71
- package/dist/copy-template.test.js.map +0 -1
- package/dist/download-repo.test.d.ts +0 -2
- package/dist/download-repo.test.d.ts.map +0 -1
- package/dist/download-repo.test.js +0 -14
- package/dist/download-repo.test.js.map +0 -1
- package/dist/install.test.d.ts +0 -2
- package/dist/install.test.d.ts.map +0 -1
- package/dist/install.test.js +0 -119
- package/dist/install.test.js.map +0 -1
- package/dist/prompts.test.d.ts +0 -2
- package/dist/prompts.test.d.ts.map +0 -1
- package/dist/prompts.test.js +0 -58
- package/dist/prompts.test.js.map +0 -1
- package/templates/default/src/actions/conflict/conflict.action.ts +0 -33
- package/templates/default/src/actions/review/review-actions.ts +0 -147
- package/templates/default/src/actions/user/user-actions.ts +0 -13
- package/templates/default/src/app/(base)/locators/locator-form.tsx +0 -163
- package/templates/default/src/app/(base)/reviews/create/page.tsx +0 -26
- package/templates/default/src/app/(base)/reviews/created-reviews-table.tsx +0 -15
- package/templates/default/src/app/(base)/reviews/modify/[id]/page.tsx +0 -26
- package/templates/default/src/app/(base)/reviews/page.tsx +0 -26
- package/templates/default/src/app/(base)/reviews/review/[id]/page.tsx +0 -26
- package/templates/default/src/app/(base)/reviews/review-form.tsx +0 -11
- package/templates/default/src/app/(base)/reviews/review-table-by-creator-columns.tsx +0 -9
- package/templates/default/src/app/(base)/reviews/review-table-by-reviewer-columns.tsx +0 -9
- package/templates/default/src/app/(base)/reviews/reviewer-reviews-table.tsx +0 -15
- package/templates/default/src/constants/form-opts/locator-form-opts.ts +0 -20
- package/templates/default/src/constants/form-opts/review-form-opts.ts +0 -23
package/README.md
CHANGED
|
@@ -54,7 +54,7 @@ The generated project includes:
|
|
|
54
54
|
- a seeded SQLite database at `prisma/dev.db`
|
|
55
55
|
- the AppraiseJS dashboard and application code
|
|
56
56
|
- automation sync scripts and reusable step definitions
|
|
57
|
-
- package-manager-aware scripts such as `setup`, `setup:db`, `setup:full`, and `appraisejs:
|
|
57
|
+
- package-manager-aware scripts such as `setup`, `setup:db`, `setup:full`, `appraisejs:sync`, and `appraisejs:install-step`
|
|
58
58
|
|
|
59
59
|
The generated project does not include:
|
|
60
60
|
|
|
@@ -92,9 +92,20 @@ CREATE_APPRAISE_BRANCH=main CREATE_APPRAISE_TEMPLATE_SUBPATH=templates/default n
|
|
|
92
92
|
| `npm run install-playwright -- <browser...>` | Install selected Playwright browsers |
|
|
93
93
|
| `npm run sync-all` | Run the full sync pipeline |
|
|
94
94
|
| `npm run appraisejs:sync` | Alias for `sync-all` |
|
|
95
|
+
| `npm run appraisejs:install-step -- --payload-file <path>` | Internal script used by the public `appraisejs add step` CLI |
|
|
95
96
|
| `npm run start` | Start the local production server |
|
|
96
97
|
| `npm run dev` | Start the Next.js development server |
|
|
97
98
|
|
|
99
|
+
## Install Additional Template Steps
|
|
100
|
+
|
|
101
|
+
After dependencies are installed in a generated project, you can pull an individual published template step into `automation/steps` with:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
npx appraisejs@latest add step <group-slug>/<step-slug>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The CLI downloads the step fragment, merges it into the correct step group file, and then runs `sync-template-step-groups` followed by `sync-template-steps`.
|
|
108
|
+
|
|
98
109
|
## Notes
|
|
99
110
|
|
|
100
111
|
- Node.js `18+` is required.
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"preparedAt": "2026-
|
|
3
|
-
"inputHash": "
|
|
2
|
+
"preparedAt": "2026-04-04T14:58:45.169Z",
|
|
3
|
+
"inputHash": "9173dcae0e64b99bb955c10e9726ad493032476fe0e85ec5dde07f1c587c7cc3",
|
|
4
4
|
"databasePath": "prisma/dev.db"
|
|
5
5
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
# Database configuration for local development
|
|
2
|
-
DATABASE_URL="file:./dev.db"
|
|
1
|
+
# Database configuration for local development
|
|
2
|
+
DATABASE_URL="file:./dev.db"
|
|
@@ -1,53 +1,57 @@
|
|
|
1
|
-
# Appraise Starter Template
|
|
2
|
-
|
|
3
|
-
This is a production-first Appraise starter project. Copy this folder into a new directory to start a new project.
|
|
4
|
-
|
|
5
|
-
## Prerequisites
|
|
6
|
-
|
|
7
|
-
- Node.js 18+
|
|
8
|
-
- npm, pnpm, yarn, or bun
|
|
9
|
-
|
|
10
|
-
## Quick start
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
# 1. Install dependencies, create .env, and build the production app
|
|
14
|
-
npm run setup
|
|
15
|
-
|
|
16
|
-
# 2. Optional: install Playwright browsers when you need test execution
|
|
17
|
-
npm run install-playwright -- chromium
|
|
18
|
-
|
|
19
|
-
# 3.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- **
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
| `npm run
|
|
38
|
-
| `npm run
|
|
39
|
-
| `npm run
|
|
40
|
-
| `npm run
|
|
41
|
-
| `npm run
|
|
42
|
-
| `npm run
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
|
|
1
|
+
# Appraise Starter Template
|
|
2
|
+
|
|
3
|
+
This is a production-first Appraise starter project. Copy this folder into a new directory to start a new project.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- Node.js 18+
|
|
8
|
+
- npm, pnpm, yarn, or bun
|
|
9
|
+
|
|
10
|
+
## Quick start
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# 1. Install dependencies, create .env, and build the production app
|
|
14
|
+
npm run setup
|
|
15
|
+
|
|
16
|
+
# 2. Optional: install Playwright browsers when you need test execution
|
|
17
|
+
npm run install-playwright -- chromium
|
|
18
|
+
|
|
19
|
+
# 3. Optional: install an extra published template step
|
|
20
|
+
npx appraisejs@latest add step <group-slug>/<step-slug>
|
|
21
|
+
|
|
22
|
+
# 4. Start the local production server
|
|
23
|
+
npm run start
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## What you get
|
|
27
|
+
|
|
28
|
+
- **URL**: Open [http://localhost:3000](http://localhost:3000) in your browser.
|
|
29
|
+
- **Runtime**: A seeded local SQLite database at `prisma/dev.db`.
|
|
30
|
+
- **Automation**: Starter automation assets under `automation/`, including features, locators, environments, and reusable steps.
|
|
31
|
+
- **UI**: The full Appraise dashboard and UI, ready to run from a production build.
|
|
32
|
+
|
|
33
|
+
## Scripts
|
|
34
|
+
|
|
35
|
+
| Script | Description |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| `npm run setup` | Install deps, create `.env`, and build the cucumber runtime plus the local production app |
|
|
38
|
+
| `npm run build:local` | Build the cucumber runtime and the local production app |
|
|
39
|
+
| `npm run start` | Start the local production server |
|
|
40
|
+
| `npm run dev` | Start the Next.js development server |
|
|
41
|
+
| `npm run install-playwright -- <browser...>` | Install selected Playwright browsers |
|
|
42
|
+
| `npm run setup:db` | Recreate the local SQLite database from migrations and rerun `sync-all` |
|
|
43
|
+
| `npm run setup:full` | Reinstall dependencies, rebuild the DB, rerun `sync-all`, and rebuild the production app |
|
|
44
|
+
| `npm run sync-all` | Sync all starter entities from the bundled automation workspace into the database |
|
|
45
|
+
| `npm run appraisejs:sync` | Alias for `sync-all` |
|
|
46
|
+
| `npm run appraisejs:install-step -- --payload-file <path>` | Internal script used by `npx appraisejs@latest add step ...` |
|
|
47
|
+
|
|
48
|
+
## Configuration
|
|
49
|
+
|
|
50
|
+
- Copy `.env.example` to `.env` before running, or let `npm run setup` create it.
|
|
51
|
+
- Default local database URL: `DATABASE_URL="file:./dev.db"`.
|
|
52
|
+
- The database file is created at `prisma/dev.db`.
|
|
53
|
+
|
|
54
|
+
## Notes
|
|
55
|
+
|
|
56
|
+
- `npm run setup` does not install Playwright browsers automatically. Install them only when you need browser-based test execution.
|
|
57
|
+
- `npm run dev` is still available for development workflows, but `npm run start` is the primary path for day-to-day local usage.
|
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
2
|
-
/**
|
|
3
|
-
* @name click
|
|
4
|
-
* @description Template step for handling element click
|
|
5
|
-
* @type ACTION
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @name click
|
|
12
|
-
* @description Template step for clicking on an element
|
|
13
|
-
* @icon MOUSE
|
|
14
|
-
*/
|
|
15
|
-
When('the user clicks on the {string} element', async function (this: CustomWorld, elementName: SelectorName) {
|
|
16
|
-
const selector = await resolveLocator(this.page, elementName)
|
|
17
|
-
if (!selector) {
|
|
18
|
-
throw new Error(`Selector ${elementName} not found. Current url: ${this.page.url()}`)
|
|
19
|
-
}
|
|
20
|
-
try {
|
|
21
|
-
await this.page.locator(selector).click()
|
|
22
|
-
} catch (error) {
|
|
23
|
-
throw new Error(`Failed to click on the ${elementName} element: ${error}`)
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @name double click
|
|
29
|
-
* @description Template step for double clicking on an element
|
|
30
|
-
* @icon MOUSE
|
|
31
|
-
*/
|
|
32
|
-
When('the user double clicks on the {string} element', async function (this: CustomWorld, elementName: SelectorName) {
|
|
33
|
-
const selector = await resolveLocator(this.page, elementName)
|
|
34
|
-
if (!selector) {
|
|
35
|
-
throw new Error(`Selector ${elementName} not found. Current url: ${this.page.url()}`)
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
await this.page.locator(selector).dblclick()
|
|
39
|
-
} catch (error) {
|
|
40
|
-
throw new Error(`Failed to double click on the ${elementName} element: ${error}`)
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @name right click
|
|
46
|
-
* @description Template step for right clicking on an element
|
|
47
|
-
* @icon MOUSE
|
|
48
|
-
*/
|
|
49
|
-
When('the user right clicks on the {string} element', async function (this: CustomWorld, elementName: SelectorName) {
|
|
50
|
-
const selector = await resolveLocator(this.page, elementName)
|
|
51
|
-
if (!selector) {
|
|
52
|
-
throw new Error(`Selector ${elementName} not found. Current url: ${this.page.url()}`)
|
|
53
|
-
}
|
|
54
|
-
try {
|
|
55
|
-
await this.page.locator(selector).click({ button: 'right' })
|
|
56
|
-
} catch (error) {
|
|
57
|
-
throw new Error(`Failed to right click on the ${elementName} element: ${error}`)
|
|
58
|
-
}
|
|
59
|
-
})
|
|
2
|
+
/**
|
|
3
|
+
* @name click
|
|
4
|
+
* @description Template step for handling element click
|
|
5
|
+
* @type ACTION
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @name click
|
|
12
|
+
* @description Template step for clicking on an element
|
|
13
|
+
* @icon MOUSE
|
|
14
|
+
*/
|
|
15
|
+
When('the user clicks on the {string} element', async function (this: CustomWorld, elementName: SelectorName) {
|
|
16
|
+
const selector = await resolveLocator(this.page, elementName)
|
|
17
|
+
if (!selector) {
|
|
18
|
+
throw new Error(`Selector ${elementName} not found. Current url: ${this.page.url()}`)
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
await this.page.locator(selector).click()
|
|
22
|
+
} catch (error) {
|
|
23
|
+
throw new Error(`Failed to click on the ${elementName} element: ${error}`)
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @name double click
|
|
29
|
+
* @description Template step for double clicking on an element
|
|
30
|
+
* @icon MOUSE
|
|
31
|
+
*/
|
|
32
|
+
When('the user double clicks on the {string} element', async function (this: CustomWorld, elementName: SelectorName) {
|
|
33
|
+
const selector = await resolveLocator(this.page, elementName)
|
|
34
|
+
if (!selector) {
|
|
35
|
+
throw new Error(`Selector ${elementName} not found. Current url: ${this.page.url()}`)
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
await this.page.locator(selector).dblclick()
|
|
39
|
+
} catch (error) {
|
|
40
|
+
throw new Error(`Failed to double click on the ${elementName} element: ${error}`)
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @name right click
|
|
46
|
+
* @description Template step for right clicking on an element
|
|
47
|
+
* @icon MOUSE
|
|
48
|
+
*/
|
|
49
|
+
When('the user right clicks on the {string} element', async function (this: CustomWorld, elementName: SelectorName) {
|
|
50
|
+
const selector = await resolveLocator(this.page, elementName)
|
|
51
|
+
if (!selector) {
|
|
52
|
+
throw new Error(`Selector ${elementName} not found. Current url: ${this.page.url()}`)
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
await this.page.locator(selector).click({ button: 'right' })
|
|
56
|
+
} catch (error) {
|
|
57
|
+
throw new Error(`Failed to right click on the ${elementName} element: ${error}`)
|
|
58
|
+
}
|
|
59
|
+
})
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { When, Then, CustomWorld, expect, SelectorName, resolveLocator, getEnvironment, generateRandomData, RandomDataType } from '../../../packages/cucumber-runtime/src/index.js'
|
|
2
|
-
/**
|
|
3
|
-
* @name hover
|
|
4
|
-
* @description Template steps that handles hover actions
|
|
5
|
-
* @type ACTION
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @name hover
|
|
12
|
-
* @description Template step for hovering over an element
|
|
13
|
-
* @icon MOUSE
|
|
14
|
-
*/
|
|
15
|
-
When(
|
|
16
|
-
'the user hovers the cursor over the {string} element',
|
|
17
|
-
async function (this: CustomWorld, elementName: SelectorName) {
|
|
18
|
-
try {
|
|
19
|
-
const selector = await resolveLocator(this.page, elementName);
|
|
20
|
-
if (!selector) {
|
|
21
|
-
throw new Error(`Selector ${elementName} not found`);
|
|
22
|
-
}
|
|
23
|
-
await this.page.locator(selector).hover();
|
|
24
|
-
} catch (error) {
|
|
25
|
-
throw new Error(`Failed to hover over the ${elementName} element: ${error}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
);
|
|
2
|
+
/**
|
|
3
|
+
* @name hover
|
|
4
|
+
* @description Template steps that handles hover actions
|
|
5
|
+
* @type ACTION
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// This file is generated automatically. Add template steps to this group to generate content.
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @name hover
|
|
12
|
+
* @description Template step for hovering over an element
|
|
13
|
+
* @icon MOUSE
|
|
14
|
+
*/
|
|
15
|
+
When(
|
|
16
|
+
'the user hovers the cursor over the {string} element',
|
|
17
|
+
async function (this: CustomWorld, elementName: SelectorName) {
|
|
18
|
+
try {
|
|
19
|
+
const selector = await resolveLocator(this.page, elementName);
|
|
20
|
+
if (!selector) {
|
|
21
|
+
throw new Error(`Selector ${elementName} not found`);
|
|
22
|
+
}
|
|
23
|
+
await this.page.locator(selector).hover();
|
|
24
|
+
} catch (error) {
|
|
25
|
+
throw new Error(`Failed to hover over the ${elementName} element: ${error}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
);
|
|
@@ -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
|
+
})
|