create-appraisejs 0.3.1-alpha.0 → 0.4.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 +17 -17
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/prepare-template-utils.d.ts.map +1 -1
- package/dist/prepare-template-utils.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +2 -2
- package/dist/prompts.js.map +1 -1
- package/dist/sync-templates-utils.d.ts.map +1 -1
- package/dist/sync-templates-utils.js +1 -5
- package/dist/sync-templates-utils.js.map +1 -1
- package/package.json +1 -1
- package/templates/blank/.editorconfig +11 -0
- package/templates/blank/.env.example +2 -2
- package/templates/blank/.gitattributes +21 -0
- package/templates/blank/.gitconfig.appraise +14 -0
- package/templates/blank/.prettierrc +13 -0
- package/templates/blank/.vscode/settings.json +2 -0
- package/templates/blank/README.md +12 -12
- package/templates/blank/components.json +24 -24
- package/templates/blank/cucumber.mjs +27 -16
- package/templates/blank/e2e/README.md +56 -0
- package/templates/blank/e2e/apply-migrations.mjs +76 -0
- package/templates/blank/e2e/appraise-smoke.spec.ts +78 -0
- package/templates/blank/e2e/authoring.spec.ts +53 -0
- package/templates/blank/e2e/crud-configuration.spec.ts +138 -0
- package/templates/blank/e2e/crud-tests.spec.ts +76 -0
- package/templates/blank/e2e/helpers/forms.ts +186 -0
- package/templates/blank/e2e/helpers/navigation.ts +27 -0
- package/templates/blank/e2e/helpers/table.ts +45 -0
- package/templates/blank/e2e/helpers/test-data.ts +559 -0
- package/templates/blank/e2e/helpers/ui.ts +41 -0
- package/templates/blank/e2e/navigation.spec.ts +101 -0
- package/templates/blank/e2e/runs-and-reports.spec.ts +82 -0
- package/templates/blank/e2e/settings-sync.spec.ts +39 -0
- package/templates/blank/e2e/start-server.mjs +61 -0
- package/templates/blank/eslint.config.mjs +4 -4
- package/templates/blank/gitignore +0 -3
- package/templates/blank/next-env.d.ts +6 -6
- package/templates/blank/package-lock.json +60 -104
- package/templates/blank/package.json +11 -10
- package/templates/blank/packages/cucumber-runtime/package.json +14 -13
- package/templates/blank/packages/cucumber-runtime/src/cache.util.ts +93 -93
- package/templates/blank/packages/cucumber-runtime/src/cli.ts +77 -68
- package/templates/blank/packages/cucumber-runtime/src/environment.util.ts +21 -21
- package/templates/blank/packages/cucumber-runtime/src/executor.ts +32 -32
- package/templates/blank/packages/cucumber-runtime/src/index.ts +17 -17
- package/templates/blank/packages/cucumber-runtime/src/locator.util.ts +234 -234
- package/templates/blank/packages/cucumber-runtime/src/parameter-types.ts +7 -7
- package/templates/blank/packages/cucumber-runtime/src/paths.ts +22 -5
- package/templates/blank/packages/cucumber-runtime/src/random-data.util.ts +35 -35
- package/templates/blank/packages/cucumber-runtime/src/types.ts +13 -13
- package/templates/blank/packages/cucumber-runtime/src/world.ts +44 -44
- package/templates/blank/packages/cucumber-runtime/tsconfig.json +11 -11
- package/templates/blank/packages/locator-picker-companion/dist/cli.js +1 -1
- package/templates/blank/packages/locator-picker-companion/dist/index.d.ts +3 -3
- package/templates/blank/packages/locator-picker-companion/dist/index.js +3 -3
- package/templates/blank/packages/locator-picker-companion/dist/injected-picker-script.js +13 -3
- package/templates/blank/packages/locator-picker-companion/dist/selector-generator.d.ts +6 -3
- package/templates/blank/packages/locator-picker-companion/dist/selector-generator.js +233 -229
- package/templates/blank/packages/locator-picker-companion/package.json +2 -1
- package/templates/blank/packages/locator-picker-companion/src/cli.ts +1 -7
- package/templates/blank/packages/locator-picker-companion/src/injected-picker-script.ts +26 -5
- package/templates/blank/packages/locator-picker-companion/src/launcher.ts +1 -3
- package/templates/blank/packages/locator-picker-companion/src/session-file.ts +4 -15
- package/templates/blank/packages/locator-picker-companion/src/types.ts +1 -8
- package/templates/blank/playwright.config.ts +46 -0
- package/templates/blank/postcss.config.mjs +8 -8
- package/templates/blank/prisma/dev.db +0 -0
- package/templates/blank/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -16
- package/templates/blank/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -27
- package/templates/blank/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -17
- package/templates/blank/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -12
- package/templates/blank/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -28
- package/templates/blank/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -12
- package/templates/blank/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -10
- package/templates/blank/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -10
- package/templates/blank/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -108
- package/templates/blank/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -55
- package/templates/blank/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -27
- package/templates/blank/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -59
- package/templates/blank/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -34
- package/templates/blank/prisma/migrations/20260313093000_add_report_step_screenshot_path/migration.sql +1 -1
- package/templates/blank/scripts/configure-git-line-endings.mjs +91 -0
- package/templates/blank/scripts/install-template-step.ts +5 -1
- package/templates/blank/scripts/lib/step-matcher.test.ts +3 -3
- package/templates/blank/scripts/lib/step-matcher.ts +5 -1
- package/templates/blank/scripts/lib/template-step-installer.test.ts +4 -2
- package/templates/blank/scripts/lib/template-step-installer.ts +16 -4
- package/templates/blank/scripts/lib/template-step-registry.test.ts +1 -1
- package/templates/blank/scripts/lib/template-step-registry.ts +4 -1
- package/templates/blank/scripts/run-fallow-commit.mjs +4 -6
- package/templates/blank/scripts/setup-env.ts +0 -0
- package/templates/blank/scripts/sync-all.ts +7 -6
- package/templates/blank/scripts/sync-appraise-base-template.ts +84 -77
- package/templates/blank/scripts/sync-environments.ts +47 -44
- package/templates/blank/scripts/sync-locator-groups.ts +67 -76
- package/templates/blank/scripts/sync-locators.ts +50 -53
- package/templates/blank/scripts/sync-modules.ts +42 -42
- package/templates/blank/scripts/sync-tags.ts +51 -51
- package/templates/blank/scripts/sync-template-step-groups.ts +34 -32
- package/templates/blank/scripts/sync-template-steps.ts +97 -97
- package/templates/blank/scripts/sync-test-cases.ts +125 -84
- package/templates/blank/scripts/sync-test-suites.ts +85 -80
- package/templates/blank/src/actions/server-action-boundary.test.ts +1 -7
- package/templates/blank/src/actions/settings/sync-actions.ts +3 -1
- package/templates/blank/src/actions/tags/tag-actions.ts +1 -7
- package/templates/blank/src/actions/template-test-case/template-test-case-actions.ts +3 -1
- package/templates/blank/src/app/(base)/environments/create/page.tsx +28 -28
- package/templates/blank/src/app/(base)/environments/environment-form.tsx +3 -2
- package/templates/blank/src/app/(base)/environments/environment-helpers.ts +4 -1
- package/templates/blank/src/app/(base)/layout.tsx +10 -10
- package/templates/blank/src/app/(base)/locator-groups/locator-group-form.tsx +5 -3
- package/templates/blank/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -77
- package/templates/blank/src/app/(base)/locator-groups/locator-group-table.tsx +28 -28
- package/templates/blank/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -46
- package/templates/blank/src/app/(base)/locator-groups/page.tsx +9 -19
- package/templates/blank/src/app/(base)/locators/create/create-locator-workspace-helpers.test.ts +3 -6
- package/templates/blank/src/app/(base)/locators/create/create-locator-workspace-response.ts +22 -5
- package/templates/blank/src/app/(base)/locators/create/create-locator-workspace-state.ts +5 -1
- package/templates/blank/src/app/(base)/locators/create/use-locator-workspace.ts +7 -2
- package/templates/blank/src/app/(base)/locators/locator-file-sync.ts +1 -5
- package/templates/blank/src/app/(base)/locators/locator-helpers.ts +2 -12
- package/templates/blank/src/app/(base)/locators/locator-table-columns.tsx +59 -60
- package/templates/blank/src/app/(base)/modules/module-form.tsx +3 -1
- package/templates/blank/src/app/(base)/reports/overview-chart.tsx +49 -49
- package/templates/blank/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +114 -115
- package/templates/blank/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -27
- package/templates/blank/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +80 -79
- package/templates/blank/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +29 -27
- package/templates/blank/src/app/(base)/settings/settings-sync-panel-helpers.test.tsx +4 -6
- package/templates/blank/src/app/(base)/settings/settings-sync-panel.tsx +22 -23
- package/templates/blank/src/app/(base)/tags/tag-form.test.tsx +2 -10
- package/templates/blank/src/app/(base)/tags/tag-form.tsx +5 -3
- package/templates/blank/src/app/(base)/tags/tag-table-columns.tsx +63 -63
- package/templates/blank/src/app/(base)/tags/tag-table.tsx +29 -29
- package/templates/blank/src/app/(base)/template-step-groups/create/page.tsx +28 -28
- package/templates/blank/src/app/(base)/template-step-groups/template-step-group-form.tsx +3 -1
- package/templates/blank/src/app/(base)/template-step-groups/template-step-group-helpers.ts +4 -1
- package/templates/blank/src/app/(base)/template-steps/paramChip.tsx +6 -10
- package/templates/blank/src/app/(base)/template-steps/template-step-form-helpers.ts +4 -2
- package/templates/blank/src/app/(base)/template-steps/template-step-helpers.test.ts +19 -1
- package/templates/blank/src/app/(base)/template-steps/template-step-helpers.ts +1 -5
- package/templates/blank/src/app/(base)/template-steps/template-step-row-guards.ts +1 -5
- package/templates/blank/src/app/(base)/template-steps/template-step-types.ts +1 -5
- package/templates/blank/src/app/(base)/template-test-cases/create-template-test-case-page-data.test.ts +4 -1
- package/templates/blank/src/app/(base)/template-test-cases/create-template-test-case-page-data.ts +1 -2
- package/templates/blank/src/app/(base)/template-test-cases/modify/[id]/page.tsx +1 -0
- package/templates/blank/src/app/(base)/template-test-cases/template-test-case-flow.test.tsx +0 -1
- package/templates/blank/src/app/(base)/template-test-cases/template-test-case-form.tsx +3 -1
- package/templates/blank/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -76
- package/templates/blank/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -32
- package/templates/blank/src/app/(base)/test-cases/create/page.tsx +1 -5
- package/templates/blank/src/app/(base)/test-cases/create-from-template/create-from-template-selection-helpers.ts +1 -4
- package/templates/blank/src/app/(base)/test-cases/create-from-template/page.test.tsx +2 -2
- package/templates/blank/src/app/(base)/test-cases/inline-tag-creation-dialog.tsx +1 -7
- package/templates/blank/src/app/(base)/test-cases/inline-test-suite-creation-dialog.tsx +1 -7
- package/templates/blank/src/app/(base)/test-cases/modify/[id]/page.tsx +1 -5
- package/templates/blank/src/app/(base)/test-cases/test-case-form.tsx +63 -78
- package/templates/blank/src/app/(base)/test-cases/test-case-route-helpers.test.ts +2 -7
- package/templates/blank/src/app/(base)/test-suites/editable-test-suite-helpers.ts +1 -6
- package/templates/blank/src/app/(base)/test-suites/test-suite-form.test.tsx +2 -10
- package/templates/blank/src/app/(dashboard-components)/data-card-grid.tsx +10 -10
- package/templates/blank/src/app/api/test-runs/[runId]/download/route.ts +1 -4
- package/templates/blank/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.test.ts +18 -9
- package/templates/blank/src/assets/icons/empty-tube.tsx +23 -23
- package/templates/blank/src/assets/icons/tube-plus.tsx +29 -29
- package/templates/blank/src/components/data-visualization/info-card.tsx +56 -70
- package/templates/blank/src/components/data-visualization/info-grid.tsx +22 -22
- package/templates/blank/src/components/diagram/add-node-prompt-node.tsx +1 -1
- package/templates/blank/src/components/diagram/dynamic-parameters-helpers.ts +4 -3
- package/templates/blank/src/components/diagram/dynamic-parameters.test.tsx +4 -1
- package/templates/blank/src/components/diagram/dynamic-parameters.tsx +0 -1
- package/templates/blank/src/components/diagram/flow-diagram-block-dialog.test.tsx +26 -0
- package/templates/blank/src/components/diagram/flow-diagram-block-dialog.tsx +3 -1
- package/templates/blank/src/components/diagram/flow-diagram-connection-guards.ts +24 -6
- package/templates/blank/src/components/diagram/flow-diagram-helpers.test.ts +27 -0
- package/templates/blank/src/components/diagram/flow-diagram-node-search.tsx +73 -66
- package/templates/blank/src/components/diagram/flow-diagram-toolbar.tsx +35 -3
- package/templates/blank/src/components/diagram/flow-diagram-view.tsx +1 -7
- package/templates/blank/src/components/diagram/flow-diagram.test.tsx +225 -0
- package/templates/blank/src/components/diagram/flow-node-data-helpers.ts +1 -1
- package/templates/blank/src/components/diagram/node-form-fields-content.tsx +9 -2
- package/templates/blank/src/components/diagram/node-form-helpers.test.ts +3 -1
- package/templates/blank/src/components/diagram/node-form-helpers.ts +1 -4
- package/templates/blank/src/components/diagram/node-form-template-step-selection.ts +1 -4
- package/templates/blank/src/components/diagram/node-form.test.tsx +25 -0
- package/templates/blank/src/components/diagram/node-form.tsx +2 -12
- package/templates/blank/src/components/diagram/options-header-node.test.tsx +4 -1
- package/templates/blank/src/components/diagram/options-header-node.tsx +140 -130
- package/templates/blank/src/components/diagram/use-flow-diagram-search.ts +2 -0
- package/templates/blank/src/components/diagram/use-flow-diagram.ts +93 -1
- package/templates/blank/src/components/form/error-message.tsx +7 -7
- package/templates/blank/src/components/loading-skeleton/form/button-skeleton.tsx +8 -8
- package/templates/blank/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -8
- package/templates/blank/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -14
- package/templates/blank/src/components/navigation/entity-search-command.tsx +3 -9
- package/templates/blank/src/components/navigation/nav-link.tsx +60 -60
- package/templates/blank/src/components/test-case/test-case-form-helpers.test.ts +1 -5
- package/templates/blank/src/components/test-case/test-case-form-helpers.ts +1 -5
- package/templates/blank/src/components/test-case/test-case-picker-helpers.ts +8 -7
- package/templates/blank/src/components/test-case/test-case-picker.tsx +2 -6
- package/templates/blank/src/components/test-run/log-viewer.test.tsx +25 -0
- package/templates/blank/src/components/test-run/log-viewer.tsx +2 -2
- package/templates/blank/src/components/test-run/test-run-details-guards.ts +10 -1
- package/templates/blank/src/components/test-run/test-run-details.test.tsx +9 -19
- package/templates/blank/src/components/test-run/use-log-viewer.ts +2 -8
- package/templates/blank/src/components/test-run/use-test-run-header.ts +1 -4
- package/templates/blank/src/components/test-suite/test-suite-picker.tsx +1 -1
- package/templates/blank/src/components/theme/theme-provider.tsx +7 -1
- package/templates/blank/src/components/typography/page-header-subtitle.tsx +7 -7
- package/templates/blank/src/components/typography/page-header.tsx +7 -7
- package/templates/blank/src/components/ui/chart.tsx +2 -8
- package/templates/blank/src/components/ui/command.tsx +2 -5
- package/templates/blank/src/components/ui/data-table-column-header.tsx +3 -3
- package/templates/blank/src/components/ui/data-table.test.tsx +1 -8
- package/templates/blank/src/components/ui/dialog.tsx +1 -4
- package/templates/blank/src/components/ui/select.tsx +2 -2
- package/templates/blank/src/components/ui/separator.tsx +5 -1
- package/templates/blank/src/components/ui/skeleton.tsx +7 -7
- package/templates/blank/src/components/ui/table.tsx +1 -1
- package/templates/blank/src/components/ui/toaster.tsx +26 -26
- package/templates/blank/src/components/ui/tooltip.tsx +1 -1
- package/templates/blank/src/constants/form-opts/locator-group-form-opts.ts +1 -1
- package/templates/blank/src/lib/appraise-test-case-metadata.test.ts +78 -0
- package/templates/blank/src/lib/appraise-test-case-metadata.ts +220 -0
- package/templates/blank/src/lib/automation/automation-path-roots.test.ts +14 -0
- package/templates/blank/src/lib/automation/automation-path-roots.ts +10 -2
- package/templates/blank/src/lib/database-sync.ts +166 -15
- package/templates/blank/src/lib/executor/local-executor-adapter.ts +6 -2
- package/templates/blank/src/lib/feature-file-generator.ts +54 -10
- package/templates/blank/src/lib/gherkin-parser.test.ts +52 -0
- package/templates/blank/src/lib/gherkin-parser.ts +39 -1
- package/templates/blank/src/lib/locator-group-file-utils.ts +5 -1
- package/templates/blank/src/lib/locator-picker/session-manager.ts +1 -2
- package/templates/blank/src/lib/metrics/metric-calculator.test.ts +105 -6
- package/templates/blank/src/lib/metrics/metric-calculator.ts +39 -40
- package/templates/blank/src/lib/sync/projected-feature-utils.ts +5 -1
- package/templates/blank/src/lib/sync/sync-executor.ts +1 -4
- package/templates/blank/src/lib/sync/sync-pending-counts.test.ts +316 -7
- package/templates/blank/src/lib/sync/sync-pending-counts.ts +189 -26
- package/templates/blank/src/lib/template-automation-paths.ts +1 -1
- package/templates/blank/src/lib/template-sync-utils.d.ts +14 -7
- package/templates/blank/src/lib/test-case-utils.ts +6 -6
- package/templates/blank/src/lib/test-run/log-formatter.ts +82 -83
- package/templates/blank/src/lib/test-run/report-parser.ts +352 -352
- package/templates/blank/src/lib/transformers/gherkin-converter.ts +42 -42
- package/templates/blank/src/lib/transformers/key-to-icon-transformer.tsx +95 -95
- package/templates/blank/src/lib/utils/node-param-validation.ts +81 -81
- package/templates/blank/src/lib/utils/template-step-file-generator.ts +5 -3
- package/templates/blank/src/lib/utils/template-step-file-manager-intelligent.ts +11 -1
- package/templates/blank/src/services/dashboard/dashboard-service.test.ts +28 -1
- package/templates/blank/src/services/dashboard/dashboard-service.ts +2 -0
- package/templates/blank/src/services/locator/locator-service.test.ts +1 -3
- package/templates/blank/src/services/locator/locator-service.ts +3 -1
- package/templates/blank/src/services/locator/locator-sync-utils.test.ts +1 -4
- package/templates/blank/src/services/module/module-service.ts +1 -4
- package/templates/blank/src/services/report/report-service.test.ts +70 -6
- package/templates/blank/src/services/report/report-service.ts +52 -9
- package/templates/blank/src/services/shared/errors.ts +2 -4
- package/templates/blank/src/services/template-step/template-step-service.ts +3 -1
- package/templates/blank/src/services/template-step-group/template-step-group-service.ts +3 -1
- package/templates/blank/src/services/test-case/test-case-service.ts +0 -5
- package/templates/blank/src/services/test-run/test-run-service.test.ts +13 -6
- package/templates/blank/src/services/test-run/test-run-service.ts +53 -8
- package/templates/blank/src/services/test-suite/test-suite-service.test.ts +1 -5
- package/templates/blank/src/services/test-suite/test-suite-service.ts +2 -4
- package/templates/blank/src/types/form/actionHandler.ts +1 -5
- package/templates/blank/tsconfig.json +8 -8
- package/templates/starter/.editorconfig +11 -0
- package/templates/starter/.env.example +2 -2
- package/templates/starter/.gitattributes +21 -0
- package/templates/starter/.gitconfig.appraise +14 -0
- package/templates/starter/.prettierrc +13 -0
- package/templates/starter/.vscode/settings.json +2 -0
- package/templates/starter/README.md +12 -12
- package/templates/starter/automation/steps/actions/click.step.ts +56 -58
- package/templates/starter/automation/steps/actions/hover.step.ts +25 -27
- package/templates/starter/automation/steps/actions/input.step.ts +85 -108
- package/templates/starter/automation/steps/actions/navigation.step.ts +67 -70
- package/templates/starter/automation/steps/actions/random_data.step.ts +149 -143
- package/templates/starter/automation/steps/actions/store.step.ts +69 -1
- package/templates/starter/automation/steps/actions/wait.step.ts +84 -1
- package/templates/starter/automation/steps/validations/active_state_assertion.step.ts +28 -30
- package/templates/starter/automation/steps/validations/navigation_assertion.step.ts +20 -22
- package/templates/starter/automation/steps/validations/text_assertion.step.ts +67 -107
- package/templates/starter/automation/steps/validations/visibility_assertion.step.ts +24 -26
- package/templates/starter/components.json +24 -24
- package/templates/starter/cucumber.mjs +27 -16
- package/templates/starter/e2e/README.md +56 -0
- package/templates/starter/e2e/apply-migrations.mjs +76 -0
- package/templates/starter/e2e/appraise-smoke.spec.ts +78 -0
- package/templates/starter/e2e/authoring.spec.ts +53 -0
- package/templates/starter/e2e/crud-configuration.spec.ts +138 -0
- package/templates/starter/e2e/crud-tests.spec.ts +76 -0
- package/templates/starter/e2e/helpers/forms.ts +186 -0
- package/templates/starter/e2e/helpers/navigation.ts +27 -0
- package/templates/starter/e2e/helpers/table.ts +45 -0
- package/templates/starter/e2e/helpers/test-data.ts +559 -0
- package/templates/starter/e2e/helpers/ui.ts +41 -0
- package/templates/starter/e2e/navigation.spec.ts +101 -0
- package/templates/starter/e2e/runs-and-reports.spec.ts +82 -0
- package/templates/starter/e2e/settings-sync.spec.ts +39 -0
- package/templates/starter/e2e/start-server.mjs +61 -0
- package/templates/starter/eslint.config.mjs +4 -4
- package/templates/starter/gitignore +0 -3
- package/templates/starter/next-env.d.ts +6 -6
- package/templates/starter/package-lock.json +60 -104
- package/templates/starter/package.json +11 -10
- package/templates/starter/packages/cucumber-runtime/package.json +14 -13
- package/templates/starter/packages/cucumber-runtime/src/cache.util.ts +93 -93
- package/templates/starter/packages/cucumber-runtime/src/cli.ts +77 -68
- package/templates/starter/packages/cucumber-runtime/src/environment.util.ts +21 -21
- package/templates/starter/packages/cucumber-runtime/src/executor.ts +32 -32
- package/templates/starter/packages/cucumber-runtime/src/index.ts +17 -17
- package/templates/starter/packages/cucumber-runtime/src/locator.util.ts +234 -234
- package/templates/starter/packages/cucumber-runtime/src/parameter-types.ts +7 -7
- package/templates/starter/packages/cucumber-runtime/src/paths.ts +22 -5
- package/templates/starter/packages/cucumber-runtime/src/random-data.util.ts +35 -35
- package/templates/starter/packages/cucumber-runtime/src/types.ts +13 -13
- package/templates/starter/packages/cucumber-runtime/src/world.ts +44 -44
- package/templates/starter/packages/cucumber-runtime/tsconfig.json +11 -11
- package/templates/starter/packages/locator-picker-companion/dist/cli.js +1 -1
- package/templates/starter/packages/locator-picker-companion/dist/index.d.ts +3 -3
- package/templates/starter/packages/locator-picker-companion/dist/index.js +3 -3
- package/templates/starter/packages/locator-picker-companion/dist/injected-picker-script.js +13 -3
- package/templates/starter/packages/locator-picker-companion/dist/selector-generator.d.ts +6 -3
- package/templates/starter/packages/locator-picker-companion/dist/selector-generator.js +233 -229
- package/templates/starter/packages/locator-picker-companion/package.json +2 -1
- package/templates/starter/packages/locator-picker-companion/src/cli.ts +1 -7
- package/templates/starter/packages/locator-picker-companion/src/injected-picker-script.ts +26 -5
- package/templates/starter/packages/locator-picker-companion/src/launcher.ts +1 -3
- package/templates/starter/packages/locator-picker-companion/src/session-file.ts +4 -15
- package/templates/starter/packages/locator-picker-companion/src/types.ts +1 -8
- package/templates/starter/playwright.config.ts +46 -0
- package/templates/starter/postcss.config.mjs +8 -8
- package/templates/starter/prisma/dev.db +0 -0
- package/templates/starter/prisma/migrations/20251104113456_add_type_for_template_step_groups/migration.sql +16 -16
- package/templates/starter/prisma/migrations/20251104170946_add_tags_to_test_suite_and_test_case/migration.sql +27 -27
- package/templates/starter/prisma/migrations/20251112190024_add_cascade_delete_to_test_run_test_case/migration.sql +17 -17
- package/templates/starter/prisma/migrations/20251113181100_add_test_run_log/migration.sql +12 -12
- package/templates/starter/prisma/migrations/20251119191838_add_tag_type/migration.sql +28 -28
- package/templates/starter/prisma/migrations/20251121164059_add_conflict_resolution/migration.sql +12 -12
- package/templates/starter/prisma/migrations/20251223183400_add_report_model_to_db_schema/migration.sql +10 -10
- package/templates/starter/prisma/migrations/20251223183637_add_report_test_case_entity_for_storing_test_results_for_individual_test_cases/migration.sql +10 -10
- package/templates/starter/prisma/migrations/20251224083549_add_comprehensive_report_storage/migration.sql +108 -108
- package/templates/starter/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql +55 -55
- package/templates/starter/prisma/migrations/20251230124637_add_unique_constraint_to_test_run_name/migration.sql +27 -27
- package/templates/starter/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql +59 -59
- package/templates/starter/prisma/migrations/20260127172022_add_cascade_delete_to_step_parameters/migration.sql +34 -34
- package/templates/starter/prisma/migrations/20260313093000_add_report_step_screenshot_path/migration.sql +1 -1
- package/templates/starter/scripts/configure-git-line-endings.mjs +91 -0
- package/templates/starter/scripts/install-template-step.ts +5 -1
- package/templates/starter/scripts/lib/step-matcher.test.ts +3 -3
- package/templates/starter/scripts/lib/step-matcher.ts +5 -1
- package/templates/starter/scripts/lib/template-step-installer.test.ts +4 -2
- package/templates/starter/scripts/lib/template-step-installer.ts +16 -4
- package/templates/starter/scripts/lib/template-step-registry.test.ts +1 -1
- package/templates/starter/scripts/lib/template-step-registry.ts +4 -1
- package/templates/starter/scripts/run-fallow-commit.mjs +4 -6
- package/templates/starter/scripts/setup-env.ts +0 -0
- package/templates/starter/scripts/sync-all.ts +7 -6
- package/templates/starter/scripts/sync-appraise-base-template.ts +84 -77
- package/templates/starter/scripts/sync-environments.ts +47 -44
- package/templates/starter/scripts/sync-locator-groups.ts +67 -76
- package/templates/starter/scripts/sync-locators.ts +50 -53
- package/templates/starter/scripts/sync-modules.ts +42 -42
- package/templates/starter/scripts/sync-tags.ts +51 -51
- package/templates/starter/scripts/sync-template-step-groups.ts +34 -32
- package/templates/starter/scripts/sync-template-steps.ts +97 -97
- package/templates/starter/scripts/sync-test-cases.ts +125 -84
- package/templates/starter/scripts/sync-test-suites.ts +85 -80
- package/templates/starter/src/actions/server-action-boundary.test.ts +1 -7
- package/templates/starter/src/actions/settings/sync-actions.ts +3 -1
- package/templates/starter/src/actions/tags/tag-actions.ts +1 -7
- package/templates/starter/src/actions/template-test-case/template-test-case-actions.ts +3 -1
- package/templates/starter/src/app/(base)/environments/create/page.tsx +28 -28
- package/templates/starter/src/app/(base)/environments/environment-form.tsx +3 -2
- package/templates/starter/src/app/(base)/environments/environment-helpers.ts +4 -1
- package/templates/starter/src/app/(base)/layout.tsx +10 -10
- package/templates/starter/src/app/(base)/locator-groups/locator-group-form.tsx +5 -3
- package/templates/starter/src/app/(base)/locator-groups/locator-group-table-columns.tsx +77 -77
- package/templates/starter/src/app/(base)/locator-groups/locator-group-table.tsx +28 -28
- package/templates/starter/src/app/(base)/locator-groups/modify/[id]/page.tsx +46 -46
- package/templates/starter/src/app/(base)/locator-groups/page.tsx +9 -19
- package/templates/starter/src/app/(base)/locators/create/create-locator-workspace-helpers.test.ts +3 -6
- package/templates/starter/src/app/(base)/locators/create/create-locator-workspace-response.ts +22 -5
- package/templates/starter/src/app/(base)/locators/create/create-locator-workspace-state.ts +5 -1
- package/templates/starter/src/app/(base)/locators/create/use-locator-workspace.ts +7 -2
- package/templates/starter/src/app/(base)/locators/locator-file-sync.ts +1 -5
- package/templates/starter/src/app/(base)/locators/locator-helpers.ts +2 -12
- package/templates/starter/src/app/(base)/locators/locator-table-columns.tsx +59 -60
- package/templates/starter/src/app/(base)/modules/module-form.tsx +3 -1
- package/templates/starter/src/app/(base)/reports/overview-chart.tsx +49 -49
- package/templates/starter/src/app/(base)/reports/test-cases/test-cases-metric-table-columns.tsx +114 -115
- package/templates/starter/src/app/(base)/reports/test-cases/test-cases-metric-table.tsx +27 -27
- package/templates/starter/src/app/(base)/reports/test-suites/test-suites-metric-table-columns.tsx +80 -79
- package/templates/starter/src/app/(base)/reports/test-suites/test-suites-metric-table.tsx +29 -27
- package/templates/starter/src/app/(base)/settings/settings-sync-panel-helpers.test.tsx +4 -6
- package/templates/starter/src/app/(base)/settings/settings-sync-panel.tsx +22 -23
- package/templates/starter/src/app/(base)/tags/tag-form.test.tsx +2 -10
- package/templates/starter/src/app/(base)/tags/tag-form.tsx +5 -3
- package/templates/starter/src/app/(base)/tags/tag-table-columns.tsx +63 -63
- package/templates/starter/src/app/(base)/tags/tag-table.tsx +29 -29
- package/templates/starter/src/app/(base)/template-step-groups/create/page.tsx +28 -28
- package/templates/starter/src/app/(base)/template-step-groups/template-step-group-form.tsx +3 -1
- package/templates/starter/src/app/(base)/template-step-groups/template-step-group-helpers.ts +4 -1
- package/templates/starter/src/app/(base)/template-steps/paramChip.tsx +6 -10
- package/templates/starter/src/app/(base)/template-steps/template-step-form-helpers.ts +4 -2
- package/templates/starter/src/app/(base)/template-steps/template-step-helpers.test.ts +19 -1
- package/templates/starter/src/app/(base)/template-steps/template-step-helpers.ts +1 -5
- package/templates/starter/src/app/(base)/template-steps/template-step-row-guards.ts +1 -5
- package/templates/starter/src/app/(base)/template-steps/template-step-types.ts +1 -5
- package/templates/starter/src/app/(base)/template-test-cases/create-template-test-case-page-data.test.ts +4 -1
- package/templates/starter/src/app/(base)/template-test-cases/create-template-test-case-page-data.ts +1 -2
- package/templates/starter/src/app/(base)/template-test-cases/modify/[id]/page.tsx +1 -0
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-flow.test.tsx +0 -1
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-form.tsx +3 -1
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-table-columns.tsx +76 -76
- package/templates/starter/src/app/(base)/template-test-cases/template-test-case-table.tsx +32 -32
- package/templates/starter/src/app/(base)/test-cases/create/page.tsx +1 -5
- package/templates/starter/src/app/(base)/test-cases/create-from-template/create-from-template-selection-helpers.ts +1 -4
- package/templates/starter/src/app/(base)/test-cases/create-from-template/page.test.tsx +2 -2
- package/templates/starter/src/app/(base)/test-cases/inline-tag-creation-dialog.tsx +1 -7
- package/templates/starter/src/app/(base)/test-cases/inline-test-suite-creation-dialog.tsx +1 -7
- package/templates/starter/src/app/(base)/test-cases/modify/[id]/page.tsx +1 -5
- package/templates/starter/src/app/(base)/test-cases/test-case-form.tsx +63 -78
- package/templates/starter/src/app/(base)/test-cases/test-case-route-helpers.test.ts +2 -7
- package/templates/starter/src/app/(base)/test-suites/editable-test-suite-helpers.ts +1 -6
- package/templates/starter/src/app/(base)/test-suites/test-suite-form.test.tsx +2 -10
- package/templates/starter/src/app/(dashboard-components)/data-card-grid.tsx +10 -10
- package/templates/starter/src/app/api/test-runs/[runId]/download/route.ts +1 -4
- package/templates/starter/src/app/api/test-runs/[runId]/trace/[testCaseId]/route.test.ts +18 -9
- package/templates/starter/src/assets/icons/empty-tube.tsx +23 -23
- package/templates/starter/src/assets/icons/tube-plus.tsx +29 -29
- package/templates/starter/src/components/data-visualization/info-card.tsx +56 -70
- package/templates/starter/src/components/data-visualization/info-grid.tsx +22 -22
- package/templates/starter/src/components/diagram/add-node-prompt-node.tsx +1 -1
- package/templates/starter/src/components/diagram/dynamic-parameters-helpers.ts +4 -3
- package/templates/starter/src/components/diagram/dynamic-parameters.test.tsx +4 -1
- package/templates/starter/src/components/diagram/dynamic-parameters.tsx +0 -1
- package/templates/starter/src/components/diagram/flow-diagram-block-dialog.test.tsx +26 -0
- package/templates/starter/src/components/diagram/flow-diagram-block-dialog.tsx +3 -1
- package/templates/starter/src/components/diagram/flow-diagram-connection-guards.ts +24 -6
- package/templates/starter/src/components/diagram/flow-diagram-helpers.test.ts +27 -0
- package/templates/starter/src/components/diagram/flow-diagram-node-search.tsx +73 -66
- package/templates/starter/src/components/diagram/flow-diagram-toolbar.tsx +35 -3
- package/templates/starter/src/components/diagram/flow-diagram-view.tsx +1 -7
- package/templates/starter/src/components/diagram/flow-diagram.test.tsx +225 -0
- package/templates/starter/src/components/diagram/flow-node-data-helpers.ts +1 -1
- package/templates/starter/src/components/diagram/node-form-fields-content.tsx +9 -2
- package/templates/starter/src/components/diagram/node-form-helpers.test.ts +3 -1
- package/templates/starter/src/components/diagram/node-form-helpers.ts +1 -4
- package/templates/starter/src/components/diagram/node-form-template-step-selection.ts +1 -4
- package/templates/starter/src/components/diagram/node-form.test.tsx +25 -0
- package/templates/starter/src/components/diagram/node-form.tsx +2 -12
- package/templates/starter/src/components/diagram/options-header-node.test.tsx +4 -1
- package/templates/starter/src/components/diagram/options-header-node.tsx +140 -130
- package/templates/starter/src/components/diagram/use-flow-diagram-search.ts +2 -0
- package/templates/starter/src/components/diagram/use-flow-diagram.ts +93 -1
- package/templates/starter/src/components/form/error-message.tsx +7 -7
- package/templates/starter/src/components/loading-skeleton/form/button-skeleton.tsx +8 -8
- package/templates/starter/src/components/loading-skeleton/form/text-input-skeleton.tsx +8 -8
- package/templates/starter/src/components/loading-skeleton/visualization/table-skeleton.tsx +14 -14
- package/templates/starter/src/components/navigation/entity-search-command.tsx +3 -9
- package/templates/starter/src/components/navigation/nav-link.tsx +60 -60
- package/templates/starter/src/components/test-case/test-case-form-helpers.test.ts +1 -5
- package/templates/starter/src/components/test-case/test-case-form-helpers.ts +1 -5
- package/templates/starter/src/components/test-case/test-case-picker-helpers.ts +8 -7
- package/templates/starter/src/components/test-case/test-case-picker.tsx +2 -6
- package/templates/starter/src/components/test-run/log-viewer.test.tsx +25 -0
- package/templates/starter/src/components/test-run/log-viewer.tsx +2 -2
- package/templates/starter/src/components/test-run/test-run-details-guards.ts +10 -1
- package/templates/starter/src/components/test-run/test-run-details.test.tsx +9 -19
- package/templates/starter/src/components/test-run/use-log-viewer.ts +2 -8
- package/templates/starter/src/components/test-run/use-test-run-header.ts +1 -4
- package/templates/starter/src/components/test-suite/test-suite-picker.tsx +1 -1
- package/templates/starter/src/components/theme/theme-provider.tsx +7 -1
- package/templates/starter/src/components/typography/page-header-subtitle.tsx +7 -7
- package/templates/starter/src/components/typography/page-header.tsx +7 -7
- package/templates/starter/src/components/ui/chart.tsx +2 -8
- package/templates/starter/src/components/ui/command.tsx +2 -5
- package/templates/starter/src/components/ui/data-table-column-header.tsx +3 -3
- package/templates/starter/src/components/ui/data-table.test.tsx +1 -8
- package/templates/starter/src/components/ui/dialog.tsx +1 -4
- package/templates/starter/src/components/ui/select.tsx +2 -2
- package/templates/starter/src/components/ui/separator.tsx +5 -1
- package/templates/starter/src/components/ui/skeleton.tsx +7 -7
- package/templates/starter/src/components/ui/table.tsx +1 -1
- package/templates/starter/src/components/ui/toaster.tsx +26 -26
- package/templates/starter/src/components/ui/tooltip.tsx +1 -1
- package/templates/starter/src/constants/form-opts/locator-group-form-opts.ts +1 -1
- package/templates/starter/src/lib/appraise-test-case-metadata.test.ts +78 -0
- package/templates/starter/src/lib/appraise-test-case-metadata.ts +220 -0
- package/templates/starter/src/lib/automation/automation-path-roots.test.ts +14 -0
- package/templates/starter/src/lib/automation/automation-path-roots.ts +10 -2
- package/templates/starter/src/lib/database-sync.ts +166 -15
- package/templates/starter/src/lib/executor/local-executor-adapter.ts +6 -2
- package/templates/starter/src/lib/feature-file-generator.ts +54 -10
- package/templates/starter/src/lib/gherkin-parser.test.ts +52 -0
- package/templates/starter/src/lib/gherkin-parser.ts +39 -1
- package/templates/starter/src/lib/locator-group-file-utils.ts +5 -1
- package/templates/starter/src/lib/locator-picker/session-manager.ts +1 -2
- package/templates/starter/src/lib/metrics/metric-calculator.test.ts +105 -6
- package/templates/starter/src/lib/metrics/metric-calculator.ts +39 -40
- package/templates/starter/src/lib/sync/projected-feature-utils.ts +5 -1
- package/templates/starter/src/lib/sync/sync-executor.ts +1 -4
- package/templates/starter/src/lib/sync/sync-pending-counts.test.ts +316 -7
- package/templates/starter/src/lib/sync/sync-pending-counts.ts +189 -26
- package/templates/starter/src/lib/template-automation-paths.ts +1 -1
- package/templates/starter/src/lib/template-sync-utils.d.ts +14 -7
- package/templates/starter/src/lib/test-case-utils.ts +6 -6
- package/templates/starter/src/lib/test-run/log-formatter.ts +82 -83
- package/templates/starter/src/lib/test-run/report-parser.ts +352 -352
- package/templates/starter/src/lib/transformers/gherkin-converter.ts +42 -42
- package/templates/starter/src/lib/transformers/key-to-icon-transformer.tsx +95 -95
- package/templates/starter/src/lib/utils/node-param-validation.ts +81 -81
- package/templates/starter/src/lib/utils/template-step-file-generator.ts +5 -3
- package/templates/starter/src/lib/utils/template-step-file-manager-intelligent.ts +11 -1
- package/templates/starter/src/services/dashboard/dashboard-service.test.ts +28 -1
- package/templates/starter/src/services/dashboard/dashboard-service.ts +2 -0
- package/templates/starter/src/services/locator/locator-service.test.ts +1 -3
- package/templates/starter/src/services/locator/locator-service.ts +3 -1
- package/templates/starter/src/services/locator/locator-sync-utils.test.ts +1 -4
- package/templates/starter/src/services/module/module-service.ts +1 -4
- package/templates/starter/src/services/report/report-service.test.ts +70 -6
- package/templates/starter/src/services/report/report-service.ts +52 -9
- package/templates/starter/src/services/shared/errors.ts +2 -4
- package/templates/starter/src/services/template-step/template-step-service.ts +3 -1
- package/templates/starter/src/services/template-step-group/template-step-group-service.ts +3 -1
- package/templates/starter/src/services/test-case/test-case-service.ts +0 -5
- package/templates/starter/src/services/test-run/test-run-service.test.ts +13 -6
- package/templates/starter/src/services/test-run/test-run-service.ts +53 -8
- package/templates/starter/src/services/test-suite/test-suite-service.test.ts +1 -5
- package/templates/starter/src/services/test-suite/test-suite-service.ts +2 -4
- package/templates/starter/src/types/form/actionHandler.ts +1 -5
- package/templates/starter/tsconfig.json +8 -8
- 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/next-env.d.ts +0 -6
- package/templates/default/packages/locator-picker-companion/dist/cli.d.ts +0 -1
- package/templates/default/packages/locator-picker-companion/dist/cli.js +0 -302
- package/templates/default/packages/locator-picker-companion/dist/index.d.ts +0 -3
- package/templates/default/packages/locator-picker-companion/dist/index.js +0 -3
- package/templates/default/packages/locator-picker-companion/dist/injected-picker-script.d.ts +0 -1
- package/templates/default/packages/locator-picker-companion/dist/injected-picker-script.js +0 -615
- package/templates/default/packages/locator-picker-companion/dist/launcher.d.ts +0 -11
- package/templates/default/packages/locator-picker-companion/dist/launcher.js +0 -59
- package/templates/default/packages/locator-picker-companion/dist/selector-generator.d.ts +0 -3
- package/templates/default/packages/locator-picker-companion/dist/selector-generator.js +0 -257
- package/templates/default/packages/locator-picker-companion/dist/session-file.d.ts +0 -22
- package/templates/default/packages/locator-picker-companion/dist/session-file.js +0 -150
- package/templates/default/packages/locator-picker-companion/dist/types.d.ts +0 -31
- package/templates/default/packages/locator-picker-companion/dist/types.js +0 -1
- package/templates/default/prisma/dev.db +0 -0
package/templates/starter/prisma/migrations/20251229194422_migrate_duration_to_string/migration.sql
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
-- RedefineTables
|
|
2
|
-
PRAGMA defer_foreign_keys=ON;
|
|
3
|
-
PRAGMA foreign_keys=OFF;
|
|
4
|
-
CREATE TABLE "new_ReportHook" (
|
|
5
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
-
"reportScenarioId" TEXT NOT NULL,
|
|
7
|
-
"keyword" TEXT NOT NULL,
|
|
8
|
-
"status" TEXT NOT NULL,
|
|
9
|
-
"duration" TEXT NOT NULL,
|
|
10
|
-
"errorMessage" TEXT,
|
|
11
|
-
"errorTrace" TEXT,
|
|
12
|
-
"hidden" BOOLEAN NOT NULL DEFAULT false,
|
|
13
|
-
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
14
|
-
"updatedAt" DATETIME NOT NULL,
|
|
15
|
-
CONSTRAINT "ReportHook_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
16
|
-
);
|
|
17
|
-
INSERT INTO "new_ReportHook" ("createdAt", "duration", "errorMessage", "errorTrace", "hidden", "id", "keyword", "reportScenarioId", "status", "updatedAt") SELECT "createdAt", CAST("duration" AS TEXT), "errorMessage", "errorTrace", "hidden", "id", "keyword", "reportScenarioId", "status", "updatedAt" FROM "ReportHook";
|
|
18
|
-
DROP TABLE "ReportHook";
|
|
19
|
-
ALTER TABLE "new_ReportHook" RENAME TO "ReportHook";
|
|
20
|
-
CREATE TABLE "new_ReportStep" (
|
|
21
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
22
|
-
"reportScenarioId" TEXT NOT NULL,
|
|
23
|
-
"keyword" TEXT NOT NULL,
|
|
24
|
-
"line" INTEGER,
|
|
25
|
-
"name" TEXT NOT NULL,
|
|
26
|
-
"matchLocation" TEXT,
|
|
27
|
-
"status" TEXT NOT NULL,
|
|
28
|
-
"duration" TEXT NOT NULL,
|
|
29
|
-
"errorMessage" TEXT,
|
|
30
|
-
"errorTrace" TEXT,
|
|
31
|
-
"hidden" BOOLEAN NOT NULL DEFAULT false,
|
|
32
|
-
"order" INTEGER NOT NULL,
|
|
33
|
-
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
34
|
-
"updatedAt" DATETIME NOT NULL,
|
|
35
|
-
CONSTRAINT "ReportStep_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
36
|
-
);
|
|
37
|
-
INSERT INTO "new_ReportStep" ("createdAt", "duration", "errorMessage", "errorTrace", "hidden", "id", "keyword", "line", "matchLocation", "name", "order", "reportScenarioId", "status", "updatedAt") SELECT "createdAt", CAST("duration" AS TEXT), "errorMessage", "errorTrace", "hidden", "id", "keyword", "line", "matchLocation", "name", "order", "reportScenarioId", "status", "updatedAt" FROM "ReportStep";
|
|
38
|
-
DROP TABLE "ReportStep";
|
|
39
|
-
ALTER TABLE "new_ReportStep" RENAME TO "ReportStep";
|
|
40
|
-
CREATE TABLE "new_ReportTestCase" (
|
|
41
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
42
|
-
"reportId" TEXT NOT NULL,
|
|
43
|
-
"testCaseId" TEXT NOT NULL,
|
|
44
|
-
"testRunTestCaseId" TEXT NOT NULL,
|
|
45
|
-
"reportScenarioId" TEXT,
|
|
46
|
-
"duration" TEXT NOT NULL,
|
|
47
|
-
CONSTRAINT "ReportTestCase_testRunTestCaseId_fkey" FOREIGN KEY ("testRunTestCaseId") REFERENCES "TestRunTestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
48
|
-
CONSTRAINT "ReportTestCase_reportId_fkey" FOREIGN KEY ("reportId") REFERENCES "Report" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
49
|
-
CONSTRAINT "ReportTestCase_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
50
|
-
);
|
|
51
|
-
INSERT INTO "new_ReportTestCase" ("duration", "id", "reportId", "reportScenarioId", "testCaseId", "testRunTestCaseId") SELECT CAST("duration" AS TEXT), "id", "reportId", "reportScenarioId", "testCaseId", "testRunTestCaseId" FROM "ReportTestCase";
|
|
52
|
-
DROP TABLE "ReportTestCase";
|
|
53
|
-
ALTER TABLE "new_ReportTestCase" RENAME TO "ReportTestCase";
|
|
54
|
-
PRAGMA foreign_keys=ON;
|
|
55
|
-
PRAGMA defer_foreign_keys=OFF;
|
|
1
|
+
-- RedefineTables
|
|
2
|
+
PRAGMA defer_foreign_keys=ON;
|
|
3
|
+
PRAGMA foreign_keys=OFF;
|
|
4
|
+
CREATE TABLE "new_ReportHook" (
|
|
5
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
+
"reportScenarioId" TEXT NOT NULL,
|
|
7
|
+
"keyword" TEXT NOT NULL,
|
|
8
|
+
"status" TEXT NOT NULL,
|
|
9
|
+
"duration" TEXT NOT NULL,
|
|
10
|
+
"errorMessage" TEXT,
|
|
11
|
+
"errorTrace" TEXT,
|
|
12
|
+
"hidden" BOOLEAN NOT NULL DEFAULT false,
|
|
13
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
14
|
+
"updatedAt" DATETIME NOT NULL,
|
|
15
|
+
CONSTRAINT "ReportHook_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
16
|
+
);
|
|
17
|
+
INSERT INTO "new_ReportHook" ("createdAt", "duration", "errorMessage", "errorTrace", "hidden", "id", "keyword", "reportScenarioId", "status", "updatedAt") SELECT "createdAt", CAST("duration" AS TEXT), "errorMessage", "errorTrace", "hidden", "id", "keyword", "reportScenarioId", "status", "updatedAt" FROM "ReportHook";
|
|
18
|
+
DROP TABLE "ReportHook";
|
|
19
|
+
ALTER TABLE "new_ReportHook" RENAME TO "ReportHook";
|
|
20
|
+
CREATE TABLE "new_ReportStep" (
|
|
21
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
22
|
+
"reportScenarioId" TEXT NOT NULL,
|
|
23
|
+
"keyword" TEXT NOT NULL,
|
|
24
|
+
"line" INTEGER,
|
|
25
|
+
"name" TEXT NOT NULL,
|
|
26
|
+
"matchLocation" TEXT,
|
|
27
|
+
"status" TEXT NOT NULL,
|
|
28
|
+
"duration" TEXT NOT NULL,
|
|
29
|
+
"errorMessage" TEXT,
|
|
30
|
+
"errorTrace" TEXT,
|
|
31
|
+
"hidden" BOOLEAN NOT NULL DEFAULT false,
|
|
32
|
+
"order" INTEGER NOT NULL,
|
|
33
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
34
|
+
"updatedAt" DATETIME NOT NULL,
|
|
35
|
+
CONSTRAINT "ReportStep_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
36
|
+
);
|
|
37
|
+
INSERT INTO "new_ReportStep" ("createdAt", "duration", "errorMessage", "errorTrace", "hidden", "id", "keyword", "line", "matchLocation", "name", "order", "reportScenarioId", "status", "updatedAt") SELECT "createdAt", CAST("duration" AS TEXT), "errorMessage", "errorTrace", "hidden", "id", "keyword", "line", "matchLocation", "name", "order", "reportScenarioId", "status", "updatedAt" FROM "ReportStep";
|
|
38
|
+
DROP TABLE "ReportStep";
|
|
39
|
+
ALTER TABLE "new_ReportStep" RENAME TO "ReportStep";
|
|
40
|
+
CREATE TABLE "new_ReportTestCase" (
|
|
41
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
42
|
+
"reportId" TEXT NOT NULL,
|
|
43
|
+
"testCaseId" TEXT NOT NULL,
|
|
44
|
+
"testRunTestCaseId" TEXT NOT NULL,
|
|
45
|
+
"reportScenarioId" TEXT,
|
|
46
|
+
"duration" TEXT NOT NULL,
|
|
47
|
+
CONSTRAINT "ReportTestCase_testRunTestCaseId_fkey" FOREIGN KEY ("testRunTestCaseId") REFERENCES "TestRunTestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
48
|
+
CONSTRAINT "ReportTestCase_reportId_fkey" FOREIGN KEY ("reportId") REFERENCES "Report" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
49
|
+
CONSTRAINT "ReportTestCase_reportScenarioId_fkey" FOREIGN KEY ("reportScenarioId") REFERENCES "ReportScenario" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
50
|
+
);
|
|
51
|
+
INSERT INTO "new_ReportTestCase" ("duration", "id", "reportId", "reportScenarioId", "testCaseId", "testRunTestCaseId") SELECT CAST("duration" AS TEXT), "id", "reportId", "reportScenarioId", "testCaseId", "testRunTestCaseId" FROM "ReportTestCase";
|
|
52
|
+
DROP TABLE "ReportTestCase";
|
|
53
|
+
ALTER TABLE "new_ReportTestCase" RENAME TO "ReportTestCase";
|
|
54
|
+
PRAGMA foreign_keys=ON;
|
|
55
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
-- RedefineTables
|
|
2
|
-
PRAGMA defer_foreign_keys=ON;
|
|
3
|
-
PRAGMA foreign_keys=OFF;
|
|
4
|
-
CREATE TABLE "new_TestRun" (
|
|
5
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
-
"name" TEXT NOT NULL,
|
|
7
|
-
"runId" TEXT NOT NULL,
|
|
8
|
-
"startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
9
|
-
"completedAt" DATETIME,
|
|
10
|
-
"status" TEXT NOT NULL DEFAULT 'QUEUED',
|
|
11
|
-
"result" TEXT NOT NULL DEFAULT 'PENDING',
|
|
12
|
-
"updatedAt" DATETIME NOT NULL,
|
|
13
|
-
"environmentId" TEXT NOT NULL,
|
|
14
|
-
"testWorkersCount" INTEGER DEFAULT 1,
|
|
15
|
-
"browserEngine" TEXT NOT NULL DEFAULT 'CHROMIUM',
|
|
16
|
-
"logPath" TEXT,
|
|
17
|
-
"reportPath" TEXT,
|
|
18
|
-
CONSTRAINT "TestRun_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "Environment" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
19
|
-
);
|
|
20
|
-
INSERT INTO "new_TestRun" ("browserEngine", "completedAt", "environmentId", "id", "logPath", "name", "reportPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt") SELECT "browserEngine", "completedAt", "environmentId", "id", "logPath", "name", "reportPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt" FROM "TestRun";
|
|
21
|
-
DROP TABLE "TestRun";
|
|
22
|
-
ALTER TABLE "new_TestRun" RENAME TO "TestRun";
|
|
23
|
-
CREATE UNIQUE INDEX "TestRun_name_key" ON "TestRun"("name");
|
|
24
|
-
CREATE UNIQUE INDEX "TestRun_runId_key" ON "TestRun"("runId");
|
|
25
|
-
PRAGMA foreign_keys=ON;
|
|
26
|
-
PRAGMA defer_foreign_keys=OFF;
|
|
27
|
-
|
|
1
|
+
-- RedefineTables
|
|
2
|
+
PRAGMA defer_foreign_keys=ON;
|
|
3
|
+
PRAGMA foreign_keys=OFF;
|
|
4
|
+
CREATE TABLE "new_TestRun" (
|
|
5
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
+
"name" TEXT NOT NULL,
|
|
7
|
+
"runId" TEXT NOT NULL,
|
|
8
|
+
"startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
9
|
+
"completedAt" DATETIME,
|
|
10
|
+
"status" TEXT NOT NULL DEFAULT 'QUEUED',
|
|
11
|
+
"result" TEXT NOT NULL DEFAULT 'PENDING',
|
|
12
|
+
"updatedAt" DATETIME NOT NULL,
|
|
13
|
+
"environmentId" TEXT NOT NULL,
|
|
14
|
+
"testWorkersCount" INTEGER DEFAULT 1,
|
|
15
|
+
"browserEngine" TEXT NOT NULL DEFAULT 'CHROMIUM',
|
|
16
|
+
"logPath" TEXT,
|
|
17
|
+
"reportPath" TEXT,
|
|
18
|
+
CONSTRAINT "TestRun_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "Environment" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
19
|
+
);
|
|
20
|
+
INSERT INTO "new_TestRun" ("browserEngine", "completedAt", "environmentId", "id", "logPath", "name", "reportPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt") SELECT "browserEngine", "completedAt", "environmentId", "id", "logPath", "name", "reportPath", "result", "runId", "startedAt", "status", "testWorkersCount", "updatedAt" FROM "TestRun";
|
|
21
|
+
DROP TABLE "TestRun";
|
|
22
|
+
ALTER TABLE "new_TestRun" RENAME TO "TestRun";
|
|
23
|
+
CREATE UNIQUE INDEX "TestRun_name_key" ON "TestRun"("name");
|
|
24
|
+
CREATE UNIQUE INDEX "TestRun_runId_key" ON "TestRun"("runId");
|
|
25
|
+
PRAGMA foreign_keys=ON;
|
|
26
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
27
|
+
|
package/templates/starter/prisma/migrations/20260115094436_add_dashboard_metrics/migration.sql
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
-- CreateTable
|
|
2
|
-
CREATE TABLE "TestCaseMetrics" (
|
|
3
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
4
|
-
"testCaseId" TEXT NOT NULL,
|
|
5
|
-
"isRepeatedlyFailing" BOOLEAN NOT NULL DEFAULT false,
|
|
6
|
-
"isFlaky" BOOLEAN NOT NULL DEFAULT false,
|
|
7
|
-
"consecutiveFailures" INTEGER NOT NULL DEFAULT 0,
|
|
8
|
-
"failureRate" REAL NOT NULL DEFAULT 0,
|
|
9
|
-
"totalRecentRuns" INTEGER NOT NULL DEFAULT 0,
|
|
10
|
-
"failedRecentRuns" INTEGER NOT NULL DEFAULT 0,
|
|
11
|
-
"lastExecutedAt" DATETIME,
|
|
12
|
-
"lastFailedAt" DATETIME,
|
|
13
|
-
"lastPassedAt" DATETIME,
|
|
14
|
-
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
15
|
-
"updatedAt" DATETIME NOT NULL,
|
|
16
|
-
CONSTRAINT "TestCaseMetrics_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
-- CreateTable
|
|
20
|
-
CREATE TABLE "TestSuiteMetrics" (
|
|
21
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
22
|
-
"testSuiteId" TEXT NOT NULL,
|
|
23
|
-
"lastExecutedAt" DATETIME,
|
|
24
|
-
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
25
|
-
"updatedAt" DATETIME NOT NULL,
|
|
26
|
-
CONSTRAINT "TestSuiteMetrics_testSuiteId_fkey" FOREIGN KEY ("testSuiteId") REFERENCES "TestSuite" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
-- CreateTable
|
|
30
|
-
CREATE TABLE "DashboardMetrics" (
|
|
31
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
32
|
-
"failedRecentRunsCount" INTEGER NOT NULL DEFAULT 0,
|
|
33
|
-
"repeatedlyFailingTestsCount" INTEGER NOT NULL DEFAULT 0,
|
|
34
|
-
"flakyTestsCount" INTEGER NOT NULL DEFAULT 0,
|
|
35
|
-
"suitesNotExecutedRecentlyCount" INTEGER NOT NULL DEFAULT 0,
|
|
36
|
-
"lastUpdatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
37
|
-
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
-- CreateIndex
|
|
41
|
-
CREATE UNIQUE INDEX "TestCaseMetrics_testCaseId_key" ON "TestCaseMetrics"("testCaseId");
|
|
42
|
-
|
|
43
|
-
-- CreateIndex
|
|
44
|
-
CREATE INDEX "TestCaseMetrics_isRepeatedlyFailing_idx" ON "TestCaseMetrics"("isRepeatedlyFailing");
|
|
45
|
-
|
|
46
|
-
-- CreateIndex
|
|
47
|
-
CREATE INDEX "TestCaseMetrics_isFlaky_idx" ON "TestCaseMetrics"("isFlaky");
|
|
48
|
-
|
|
49
|
-
-- CreateIndex
|
|
50
|
-
CREATE UNIQUE INDEX "TestSuiteMetrics_testSuiteId_key" ON "TestSuiteMetrics"("testSuiteId");
|
|
51
|
-
|
|
52
|
-
-- CreateIndex
|
|
53
|
-
CREATE INDEX "TestSuiteMetrics_lastExecutedAt_idx" ON "TestSuiteMetrics"("lastExecutedAt");
|
|
54
|
-
|
|
55
|
-
-- CreateIndex
|
|
56
|
-
CREATE INDEX "TestRun_completedAt_idx" ON "TestRun"("completedAt");
|
|
57
|
-
|
|
58
|
-
-- CreateIndex
|
|
59
|
-
CREATE INDEX "TestRun_result_idx" ON "TestRun"("result");
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "TestCaseMetrics" (
|
|
3
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
4
|
+
"testCaseId" TEXT NOT NULL,
|
|
5
|
+
"isRepeatedlyFailing" BOOLEAN NOT NULL DEFAULT false,
|
|
6
|
+
"isFlaky" BOOLEAN NOT NULL DEFAULT false,
|
|
7
|
+
"consecutiveFailures" INTEGER NOT NULL DEFAULT 0,
|
|
8
|
+
"failureRate" REAL NOT NULL DEFAULT 0,
|
|
9
|
+
"totalRecentRuns" INTEGER NOT NULL DEFAULT 0,
|
|
10
|
+
"failedRecentRuns" INTEGER NOT NULL DEFAULT 0,
|
|
11
|
+
"lastExecutedAt" DATETIME,
|
|
12
|
+
"lastFailedAt" DATETIME,
|
|
13
|
+
"lastPassedAt" DATETIME,
|
|
14
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
15
|
+
"updatedAt" DATETIME NOT NULL,
|
|
16
|
+
CONSTRAINT "TestCaseMetrics_testCaseId_fkey" FOREIGN KEY ("testCaseId") REFERENCES "TestCase" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
-- CreateTable
|
|
20
|
+
CREATE TABLE "TestSuiteMetrics" (
|
|
21
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
22
|
+
"testSuiteId" TEXT NOT NULL,
|
|
23
|
+
"lastExecutedAt" DATETIME,
|
|
24
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
25
|
+
"updatedAt" DATETIME NOT NULL,
|
|
26
|
+
CONSTRAINT "TestSuiteMetrics_testSuiteId_fkey" FOREIGN KEY ("testSuiteId") REFERENCES "TestSuite" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
-- CreateTable
|
|
30
|
+
CREATE TABLE "DashboardMetrics" (
|
|
31
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
32
|
+
"failedRecentRunsCount" INTEGER NOT NULL DEFAULT 0,
|
|
33
|
+
"repeatedlyFailingTestsCount" INTEGER NOT NULL DEFAULT 0,
|
|
34
|
+
"flakyTestsCount" INTEGER NOT NULL DEFAULT 0,
|
|
35
|
+
"suitesNotExecutedRecentlyCount" INTEGER NOT NULL DEFAULT 0,
|
|
36
|
+
"lastUpdatedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
37
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
-- CreateIndex
|
|
41
|
+
CREATE UNIQUE INDEX "TestCaseMetrics_testCaseId_key" ON "TestCaseMetrics"("testCaseId");
|
|
42
|
+
|
|
43
|
+
-- CreateIndex
|
|
44
|
+
CREATE INDEX "TestCaseMetrics_isRepeatedlyFailing_idx" ON "TestCaseMetrics"("isRepeatedlyFailing");
|
|
45
|
+
|
|
46
|
+
-- CreateIndex
|
|
47
|
+
CREATE INDEX "TestCaseMetrics_isFlaky_idx" ON "TestCaseMetrics"("isFlaky");
|
|
48
|
+
|
|
49
|
+
-- CreateIndex
|
|
50
|
+
CREATE UNIQUE INDEX "TestSuiteMetrics_testSuiteId_key" ON "TestSuiteMetrics"("testSuiteId");
|
|
51
|
+
|
|
52
|
+
-- CreateIndex
|
|
53
|
+
CREATE INDEX "TestSuiteMetrics_lastExecutedAt_idx" ON "TestSuiteMetrics"("lastExecutedAt");
|
|
54
|
+
|
|
55
|
+
-- CreateIndex
|
|
56
|
+
CREATE INDEX "TestRun_completedAt_idx" ON "TestRun"("completedAt");
|
|
57
|
+
|
|
58
|
+
-- CreateIndex
|
|
59
|
+
CREATE INDEX "TestRun_result_idx" ON "TestRun"("result");
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
-- RedefineTables
|
|
2
|
-
PRAGMA defer_foreign_keys=ON;
|
|
3
|
-
PRAGMA foreign_keys=OFF;
|
|
4
|
-
CREATE TABLE "new_TemplateTestCaseStepParameter" (
|
|
5
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
-
"name" TEXT NOT NULL,
|
|
7
|
-
"defaultValue" TEXT NOT NULL,
|
|
8
|
-
"order" INTEGER NOT NULL,
|
|
9
|
-
"testCaseStepId" TEXT NOT NULL,
|
|
10
|
-
"locatorId" TEXT,
|
|
11
|
-
"type" TEXT NOT NULL,
|
|
12
|
-
"defaultLocatorId" TEXT,
|
|
13
|
-
CONSTRAINT "TemplateTestCaseStepParameter_defaultLocatorId_fkey" FOREIGN KEY ("defaultLocatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
14
|
-
CONSTRAINT "TemplateTestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TemplateTestCaseStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
15
|
-
);
|
|
16
|
-
INSERT INTO "new_TemplateTestCaseStepParameter" ("defaultLocatorId", "defaultValue", "id", "locatorId", "name", "order", "testCaseStepId", "type") SELECT "defaultLocatorId", "defaultValue", "id", "locatorId", "name", "order", "testCaseStepId", "type" FROM "TemplateTestCaseStepParameter";
|
|
17
|
-
DROP TABLE "TemplateTestCaseStepParameter";
|
|
18
|
-
ALTER TABLE "new_TemplateTestCaseStepParameter" RENAME TO "TemplateTestCaseStepParameter";
|
|
19
|
-
CREATE TABLE "new_TestCaseStepParameter" (
|
|
20
|
-
"id" TEXT NOT NULL PRIMARY KEY,
|
|
21
|
-
"name" TEXT NOT NULL,
|
|
22
|
-
"value" TEXT NOT NULL,
|
|
23
|
-
"order" INTEGER NOT NULL,
|
|
24
|
-
"testCaseStepId" TEXT NOT NULL,
|
|
25
|
-
"locatorId" TEXT,
|
|
26
|
-
"type" TEXT NOT NULL,
|
|
27
|
-
CONSTRAINT "TestCaseStepParameter_locatorId_fkey" FOREIGN KEY ("locatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
28
|
-
CONSTRAINT "TestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TestCaseStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
29
|
-
);
|
|
30
|
-
INSERT INTO "new_TestCaseStepParameter" ("id", "locatorId", "name", "order", "testCaseStepId", "type", "value") SELECT "id", "locatorId", "name", "order", "testCaseStepId", "type", "value" FROM "TestCaseStepParameter";
|
|
31
|
-
DROP TABLE "TestCaseStepParameter";
|
|
32
|
-
ALTER TABLE "new_TestCaseStepParameter" RENAME TO "TestCaseStepParameter";
|
|
33
|
-
PRAGMA foreign_keys=ON;
|
|
34
|
-
PRAGMA defer_foreign_keys=OFF;
|
|
1
|
+
-- RedefineTables
|
|
2
|
+
PRAGMA defer_foreign_keys=ON;
|
|
3
|
+
PRAGMA foreign_keys=OFF;
|
|
4
|
+
CREATE TABLE "new_TemplateTestCaseStepParameter" (
|
|
5
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
+
"name" TEXT NOT NULL,
|
|
7
|
+
"defaultValue" TEXT NOT NULL,
|
|
8
|
+
"order" INTEGER NOT NULL,
|
|
9
|
+
"testCaseStepId" TEXT NOT NULL,
|
|
10
|
+
"locatorId" TEXT,
|
|
11
|
+
"type" TEXT NOT NULL,
|
|
12
|
+
"defaultLocatorId" TEXT,
|
|
13
|
+
CONSTRAINT "TemplateTestCaseStepParameter_defaultLocatorId_fkey" FOREIGN KEY ("defaultLocatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
14
|
+
CONSTRAINT "TemplateTestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TemplateTestCaseStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
15
|
+
);
|
|
16
|
+
INSERT INTO "new_TemplateTestCaseStepParameter" ("defaultLocatorId", "defaultValue", "id", "locatorId", "name", "order", "testCaseStepId", "type") SELECT "defaultLocatorId", "defaultValue", "id", "locatorId", "name", "order", "testCaseStepId", "type" FROM "TemplateTestCaseStepParameter";
|
|
17
|
+
DROP TABLE "TemplateTestCaseStepParameter";
|
|
18
|
+
ALTER TABLE "new_TemplateTestCaseStepParameter" RENAME TO "TemplateTestCaseStepParameter";
|
|
19
|
+
CREATE TABLE "new_TestCaseStepParameter" (
|
|
20
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
21
|
+
"name" TEXT NOT NULL,
|
|
22
|
+
"value" TEXT NOT NULL,
|
|
23
|
+
"order" INTEGER NOT NULL,
|
|
24
|
+
"testCaseStepId" TEXT NOT NULL,
|
|
25
|
+
"locatorId" TEXT,
|
|
26
|
+
"type" TEXT NOT NULL,
|
|
27
|
+
CONSTRAINT "TestCaseStepParameter_locatorId_fkey" FOREIGN KEY ("locatorId") REFERENCES "Locator" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
28
|
+
CONSTRAINT "TestCaseStepParameter_testCaseStepId_fkey" FOREIGN KEY ("testCaseStepId") REFERENCES "TestCaseStep" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
29
|
+
);
|
|
30
|
+
INSERT INTO "new_TestCaseStepParameter" ("id", "locatorId", "name", "order", "testCaseStepId", "type", "value") SELECT "id", "locatorId", "name", "order", "testCaseStepId", "type", "value" FROM "TestCaseStepParameter";
|
|
31
|
+
DROP TABLE "TestCaseStepParameter";
|
|
32
|
+
ALTER TABLE "new_TestCaseStepParameter" RENAME TO "TestCaseStepParameter";
|
|
33
|
+
PRAGMA foreign_keys=ON;
|
|
34
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
ALTER TABLE "ReportStep" ADD COLUMN "screenshotPath" TEXT;
|
|
1
|
+
ALTER TABLE "ReportStep" ADD COLUMN "screenshotPath" TEXT;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Applies repo line-ending policy to the local clone so `git diff` matches
|
|
4
|
+
* .gitattributes / EditorConfig / Prettier (LF everywhere).
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* node scripts/configure-git-line-endings.mjs
|
|
8
|
+
* node scripts/configure-git-line-endings.mjs --renormalize
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { execSync } from 'node:child_process'
|
|
12
|
+
import { existsSync } from 'node:fs'
|
|
13
|
+
import { dirname, join } from 'node:path'
|
|
14
|
+
import { fileURLToPath } from 'node:url'
|
|
15
|
+
|
|
16
|
+
const scriptDir = dirname(fileURLToPath(import.meta.url))
|
|
17
|
+
const repoRoot = join(scriptDir, '..')
|
|
18
|
+
const gitConfigInclude = '../.gitconfig.appraise'
|
|
19
|
+
const quiet = process.argv.includes('--quiet')
|
|
20
|
+
|
|
21
|
+
function log(message) {
|
|
22
|
+
if (!quiet) {
|
|
23
|
+
console.log(message)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function runGit(args, options = {}) {
|
|
28
|
+
const stdio = options.stdio ?? ['pipe', 'pipe', 'pipe']
|
|
29
|
+
const result = execSync(['git', ...args].join(' '), {
|
|
30
|
+
cwd: repoRoot,
|
|
31
|
+
encoding: 'utf8',
|
|
32
|
+
stdio,
|
|
33
|
+
...options,
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
if (stdio !== 'inherit' && result != null) {
|
|
37
|
+
return String(result).trim()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return ''
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function isGitRepository() {
|
|
44
|
+
return existsSync(join(repoRoot, '.git'))
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function getLocalConfig(key) {
|
|
48
|
+
try {
|
|
49
|
+
return runGit(['config', '--local', '--get', key])
|
|
50
|
+
} catch {
|
|
51
|
+
return null
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function setLocalConfig(key, value) {
|
|
56
|
+
runGit(['config', '--local', key, value], { stdio: 'inherit' })
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function ensureGitInclude() {
|
|
60
|
+
const current = getLocalConfig('include.path')
|
|
61
|
+
if (current === gitConfigInclude) {
|
|
62
|
+
return false
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
setLocalConfig('include.path', gitConfigInclude)
|
|
66
|
+
log(`Linked local git config: include.path = ${gitConfigInclude}`)
|
|
67
|
+
return true
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function main() {
|
|
71
|
+
if (!isGitRepository()) {
|
|
72
|
+
log('Not a git repository; skipping git line-ending configuration.')
|
|
73
|
+
return
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const updatedInclude = ensureGitInclude()
|
|
77
|
+
|
|
78
|
+
if (!updatedInclude && !quiet) {
|
|
79
|
+
log('Git line-ending settings already use .gitconfig.appraise (LF, autocrlf=false).')
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (process.argv.includes('--renormalize')) {
|
|
83
|
+
log('Staging removals so renormalize does not fail on deleted tracked paths...')
|
|
84
|
+
runGit(['add', '-u'], { stdio: 'inherit' })
|
|
85
|
+
log('Renormalizing line endings in the index (may update staged content)...')
|
|
86
|
+
runGit(['add', '--renormalize', '.'], { stdio: 'inherit' })
|
|
87
|
+
log('Renormalize complete. Review with: git status')
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
main()
|
|
@@ -65,7 +65,11 @@ function getRunArgs(packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun', scriptName:
|
|
|
65
65
|
return ['run', scriptName]
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
async function runScript(
|
|
68
|
+
async function runScript(
|
|
69
|
+
projectRoot: string,
|
|
70
|
+
packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun',
|
|
71
|
+
scriptName: string,
|
|
72
|
+
): Promise<void> {
|
|
69
73
|
await new Promise<void>((resolve, reject) => {
|
|
70
74
|
const child = spawn(packageManager, getRunArgs(packageManager, scriptName), {
|
|
71
75
|
cwd: projectRoot,
|
|
@@ -79,8 +79,8 @@ describe('sameResolvedParameters', () => {
|
|
|
79
79
|
})
|
|
80
80
|
|
|
81
81
|
it('returns false for different values', () => {
|
|
82
|
-
expect(
|
|
83
|
-
|
|
84
|
-
)
|
|
82
|
+
expect(sameResolvedParameters(sample, [{ name: 'x', value: '2', order: 0, type: StepParameterType.NUMBER }])).toBe(
|
|
83
|
+
false,
|
|
84
|
+
)
|
|
85
85
|
})
|
|
86
86
|
})
|
|
@@ -75,7 +75,11 @@ export function findMatchingTemplateStep(
|
|
|
75
75
|
templateSteps: TemplateStepCandidate[],
|
|
76
76
|
): TemplateStepMatch | null {
|
|
77
77
|
for (const templateStep of templateSteps) {
|
|
78
|
-
const parameters = extractParametersFromGherkinStep(
|
|
78
|
+
const parameters = extractParametersFromGherkinStep(
|
|
79
|
+
gherkinStep.text,
|
|
80
|
+
templateStep.signature,
|
|
81
|
+
templateStep.parameters,
|
|
82
|
+
)
|
|
79
83
|
if (parameters) {
|
|
80
84
|
return {
|
|
81
85
|
templateStepId: templateStep.id,
|
|
@@ -116,7 +116,7 @@ When('click {string}', async function () {})`),
|
|
|
116
116
|
expect(result.status).toBe('installed')
|
|
117
117
|
const content = await fs.readFile(path.join(workspace, 'automation/steps/actions/click.step.ts'), 'utf8')
|
|
118
118
|
expect(content).toContain("import { helper } from './helper'")
|
|
119
|
-
expect(content).toContain(
|
|
119
|
+
expect(content).toContain('// Existing note')
|
|
120
120
|
expect(content).toContain("When('existing click'")
|
|
121
121
|
expect(content).toContain("When('click {string}'")
|
|
122
122
|
expect(content).toContain('Then')
|
|
@@ -185,7 +185,9 @@ When('click {string}', async function () {
|
|
|
185
185
|
await Promise.resolve('new')
|
|
186
186
|
})`)
|
|
187
187
|
|
|
188
|
-
await expect(installTemplateStepPayload(payload, { projectRoot: workspace })).rejects.toThrow(
|
|
188
|
+
await expect(installTemplateStepPayload(payload, { projectRoot: workspace })).rejects.toThrow(
|
|
189
|
+
'Re-run with --overwrite',
|
|
190
|
+
)
|
|
189
191
|
|
|
190
192
|
const overwriteResult = await installTemplateStepPayload(payload, {
|
|
191
193
|
projectRoot: workspace,
|
|
@@ -33,7 +33,10 @@ type ExistingStepMatch = {
|
|
|
33
33
|
source: string
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
const STEP_FILE_PATTERNS = [
|
|
36
|
+
const STEP_FILE_PATTERNS = [
|
|
37
|
+
'automation/steps/actions/**/*.step.ts',
|
|
38
|
+
'automation/steps/validations/**/*.step.ts',
|
|
39
|
+
] as const
|
|
37
40
|
const RUNTIME_IMPORT_PATH = '../../../packages/cucumber-runtime/src/index.js'
|
|
38
41
|
const REQUIRED_RUNTIME_IMPORTS = [
|
|
39
42
|
'When',
|
|
@@ -46,7 +49,8 @@ const REQUIRED_RUNTIME_IMPORTS = [
|
|
|
46
49
|
'generateRandomData',
|
|
47
50
|
'RandomDataType',
|
|
48
51
|
] as const
|
|
49
|
-
const PLACEHOLDER_COMMENT =
|
|
52
|
+
const PLACEHOLDER_COMMENT =
|
|
53
|
+
'// This file is generated automatically. Add template steps to this group to generate content.'
|
|
50
54
|
|
|
51
55
|
function parseTypeScriptModule(content: string) {
|
|
52
56
|
return parse(content, {
|
|
@@ -68,7 +72,13 @@ function getGroupDirectoryName(type: TemplateStepGroupType): 'actions' | 'valida
|
|
|
68
72
|
}
|
|
69
73
|
|
|
70
74
|
function getGroupFilePath(projectRoot: string, groupName: string, type: TemplateStepGroupType): string {
|
|
71
|
-
return path.join(
|
|
75
|
+
return path.join(
|
|
76
|
+
projectRoot,
|
|
77
|
+
'automation',
|
|
78
|
+
'steps',
|
|
79
|
+
getGroupDirectoryName(type),
|
|
80
|
+
`${getGroupFileName(groupName)}.step.ts`,
|
|
81
|
+
)
|
|
72
82
|
}
|
|
73
83
|
|
|
74
84
|
function generateGroupJSDoc(name: string, description: string | null, type: TemplateStepGroupType): string {
|
|
@@ -289,7 +299,9 @@ async function buildUpdatedGroupFileContent(
|
|
|
289
299
|
})
|
|
290
300
|
}
|
|
291
301
|
|
|
292
|
-
const sections = [
|
|
302
|
+
const sections = [
|
|
303
|
+
generateGroupJSDoc(payload.step.group.name, payload.step.group.description, payload.step.group.type),
|
|
304
|
+
]
|
|
293
305
|
const mergedImports = mergeImports(existingContent)
|
|
294
306
|
if (mergedImports.trim()) {
|
|
295
307
|
sections.push(mergedImports)
|
|
@@ -73,7 +73,7 @@ When('click {string}', async function (this: CustomWorld, elementName: SelectorN
|
|
|
73
73
|
expect(registry.fragments).toEqual([
|
|
74
74
|
{
|
|
75
75
|
path: 'fragments/click/click-element.ts',
|
|
76
|
-
content: expect.stringContaining(
|
|
76
|
+
content: expect.stringContaining('@name click element'),
|
|
77
77
|
},
|
|
78
78
|
])
|
|
79
79
|
expect(registry.fragments[0]?.content).toContain("When('click {string}'")
|
|
@@ -37,7 +37,10 @@ export type BuiltStepRegistry = {
|
|
|
37
37
|
fragments: StepRegistryFragment[]
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
const STEP_FILE_PATTERNS = [
|
|
40
|
+
const STEP_FILE_PATTERNS = [
|
|
41
|
+
'automation/steps/actions/**/*.step.ts',
|
|
42
|
+
'automation/steps/validations/**/*.step.ts',
|
|
43
|
+
] as const
|
|
41
44
|
|
|
42
45
|
export function slugifyRegistryName(value: string): string {
|
|
43
46
|
return value
|
|
@@ -4,16 +4,14 @@ import path from 'node:path'
|
|
|
4
4
|
|
|
5
5
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url))
|
|
6
6
|
const repoRoot = path.resolve(scriptDir, '..')
|
|
7
|
-
|
|
7
|
+
// Invoke the package CLI via node — Windows cannot spawn extensionless .bin shims directly.
|
|
8
|
+
const fallowCli = path.join(repoRoot, 'node_modules', 'fallow', 'bin', 'fallow')
|
|
9
|
+
const fallowArgs = ['audit', '--base', 'HEAD', '--format', 'json', '--quiet', '--explain', '--fail-on-issues']
|
|
8
10
|
|
|
9
11
|
const env = { ...process.env }
|
|
10
12
|
delete env.GIT_INDEX_FILE
|
|
11
13
|
|
|
12
|
-
const result = spawnSync(
|
|
13
|
-
fallowBin,
|
|
14
|
-
['audit', '--base', 'HEAD', '--format', 'json', '--quiet', '--explain', '--fail-on-issues'],
|
|
15
|
-
{ cwd: repoRoot, env, stdio: 'inherit' },
|
|
16
|
-
)
|
|
14
|
+
const result = spawnSync(process.execPath, [fallowCli, ...fallowArgs], { cwd: repoRoot, env, stdio: 'inherit' })
|
|
17
15
|
|
|
18
16
|
if (result.error) {
|
|
19
17
|
console.error(result.error)
|
|
File without changes
|