@futdevpro/dynamo-e2e 1.18.9 → 1.18.11
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/CHANGELOG.md +12 -2
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/build/_modules/game/_models/game-contracts.interface.d.ts +82 -0
- package/build/_modules/game/_models/game-contracts.interface.d.ts.map +1 -0
- package/build/_modules/game/_models/game-contracts.interface.js +3 -0
- package/build/_modules/game/_models/game-contracts.interface.js.map +1 -0
- package/build/_modules/game/game-seam.helper.d.ts +40 -0
- package/build/_modules/game/game-seam.helper.d.ts.map +1 -0
- package/build/_modules/game/game-seam.helper.js +254 -0
- package/build/_modules/game/game-seam.helper.js.map +1 -0
- package/build/_modules/game/index.d.ts +4 -0
- package/build/_modules/game/index.d.ts.map +1 -0
- package/build/_modules/game/index.js +20 -0
- package/build/_modules/game/index.js.map +1 -0
- package/build/_modules/game/journey-catalog.validator.d.ts +5 -0
- package/build/_modules/game/journey-catalog.validator.d.ts.map +1 -0
- package/build/_modules/game/journey-catalog.validator.js +244 -0
- package/build/_modules/game/journey-catalog.validator.js.map +1 -0
- package/build/_modules/generators/_collections/form-level-emission.util.d.ts.map +1 -1
- package/build/_modules/generators/_collections/form-level-emission.util.js +8 -0
- package/build/_modules/generators/_collections/form-level-emission.util.js.map +1 -1
- package/build/_modules/generators/_models/form-settings-shape.interface.d.ts +7 -0
- package/build/_modules/generators/_models/form-settings-shape.interface.d.ts.map +1 -1
- package/build/_modules/presets/_collections/playwright-config.factory.d.ts.map +1 -1
- package/build/_modules/presets/_collections/playwright-config.factory.js +30 -1
- package/build/_modules/presets/_collections/playwright-config.factory.js.map +1 -1
- package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts +13 -0
- package/build/_modules/presets/_models/interfaces/playwright-config-options.interface.d.ts.map +1 -1
- package/build/_modules/presets/_models/interfaces/project-split-options.interface.d.ts +27 -0
- package/build/_modules/presets/_models/interfaces/project-split-options.interface.d.ts.map +1 -0
- package/build/_modules/presets/_models/interfaces/project-split-options.interface.js +3 -0
- package/build/_modules/presets/_models/interfaces/project-split-options.interface.js.map +1 -0
- package/build/_modules/presets/index.d.ts +1 -0
- package/build/_modules/presets/index.d.ts.map +1 -1
- package/build/_modules/presets/index.js.map +1 -1
- package/build/_modules/vqa/generators/ai-agent-readme.template.js +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -1
- package/build/index.js.map +1 -1
- package/package.json +12 -5
- package/.c8rc.json +0 -25
- package/.dynamo/pipeline.cicd.config.json +0 -167
- package/.dynamo/version-bump.config.json +0 -5
- package/.github/workflows/main.yml +0 -35
- package/BUILD.md +0 -36
- package/CONTRIBUTING.md +0 -90
- package/build/_modules/contracts/contracts.spec.d.ts +0 -2
- package/build/_modules/contracts/contracts.spec.d.ts.map +0 -1
- package/build/_modules/contracts/contracts.spec.js +0 -144
- package/build/_modules/contracts/contracts.spec.js.map +0 -1
- package/build/_modules/cwv/cwv-comparison.spec.d.ts +0 -2
- package/build/_modules/cwv/cwv-comparison.spec.d.ts.map +0 -1
- package/build/_modules/cwv/cwv-comparison.spec.js +0 -77
- package/build/_modules/cwv/cwv-comparison.spec.js.map +0 -1
- package/build/_modules/cwv/cwv-diagnose.spec.d.ts +0 -2
- package/build/_modules/cwv/cwv-diagnose.spec.d.ts.map +0 -1
- package/build/_modules/cwv/cwv-diagnose.spec.js +0 -78
- package/build/_modules/cwv/cwv-diagnose.spec.js.map +0 -1
- package/build/_modules/cwv/cwv-suite.generator.spec.d.ts +0 -2
- package/build/_modules/cwv/cwv-suite.generator.spec.d.ts.map +0 -1
- package/build/_modules/cwv/cwv-suite.generator.spec.js +0 -81
- package/build/_modules/cwv/cwv-suite.generator.spec.js.map +0 -1
- package/build/_modules/cwv/cwv-summarize.spec.d.ts +0 -2
- package/build/_modules/cwv/cwv-summarize.spec.d.ts.map +0 -1
- package/build/_modules/cwv/cwv-summarize.spec.js +0 -70
- package/build/_modules/cwv/cwv-summarize.spec.js.map +0 -1
- package/build/_modules/cwv/inp-emit-integration.spec.d.ts +0 -2
- package/build/_modules/cwv/inp-emit-integration.spec.d.ts.map +0 -1
- package/build/_modules/cwv/inp-emit-integration.spec.js +0 -43
- package/build/_modules/cwv/inp-emit-integration.spec.js.map +0 -1
- package/build/_modules/cwv/inp-interaction-driver.spec.d.ts +0 -2
- package/build/_modules/cwv/inp-interaction-driver.spec.d.ts.map +0 -1
- package/build/_modules/cwv/inp-interaction-driver.spec.js +0 -44
- package/build/_modules/cwv/inp-interaction-driver.spec.js.map +0 -1
- package/build/_modules/cwv/inp-script.spec.d.ts +0 -2
- package/build/_modules/cwv/inp-script.spec.d.ts.map +0 -1
- package/build/_modules/cwv/inp-script.spec.js +0 -35
- package/build/_modules/cwv/inp-script.spec.js.map +0 -1
- package/build/_modules/cwv/per-route-thresholds.spec.d.ts +0 -2
- package/build/_modules/cwv/per-route-thresholds.spec.d.ts.map +0 -1
- package/build/_modules/cwv/per-route-thresholds.spec.js +0 -37
- package/build/_modules/cwv/per-route-thresholds.spec.js.map +0 -1
- package/build/_modules/generators/bootstrap.spec.d.ts +0 -2
- package/build/_modules/generators/bootstrap.spec.d.ts.map +0 -1
- package/build/_modules/generators/bootstrap.spec.js +0 -46
- package/build/_modules/generators/bootstrap.spec.js.map +0 -1
- package/build/_modules/generators/cli-runner.spec.d.ts +0 -2
- package/build/_modules/generators/cli-runner.spec.d.ts.map +0 -1
- package/build/_modules/generators/cli-runner.spec.js +0 -93
- package/build/_modules/generators/cli-runner.spec.js.map +0 -1
- package/build/_modules/generators/config-validator.spec.d.ts +0 -2
- package/build/_modules/generators/config-validator.spec.d.ts.map +0 -1
- package/build/_modules/generators/config-validator.spec.js +0 -115
- package/build/_modules/generators/config-validator.spec.js.map +0 -1
- package/build/_modules/generators/doctor.spec.d.ts +0 -2
- package/build/_modules/generators/doctor.spec.d.ts.map +0 -1
- package/build/_modules/generators/doctor.spec.js +0 -68
- package/build/_modules/generators/doctor.spec.js.map +0 -1
- package/build/_modules/generators/field-emission-edge.spec.d.ts +0 -2
- package/build/_modules/generators/field-emission-edge.spec.d.ts.map +0 -1
- package/build/_modules/generators/field-emission-edge.spec.js +0 -164
- package/build/_modules/generators/field-emission-edge.spec.js.map +0 -1
- package/build/_modules/generators/form-suite.generator.spec.d.ts +0 -2
- package/build/_modules/generators/form-suite.generator.spec.d.ts.map +0 -1
- package/build/_modules/generators/form-suite.generator.spec.js +0 -188
- package/build/_modules/generators/form-suite.generator.spec.js.map +0 -1
- package/build/_modules/generators/info.spec.d.ts +0 -2
- package/build/_modules/generators/info.spec.d.ts.map +0 -1
- package/build/_modules/generators/info.spec.js +0 -42
- package/build/_modules/generators/info.spec.js.map +0 -1
- package/build/_modules/generators/json-schema.spec.d.ts +0 -2
- package/build/_modules/generators/json-schema.spec.d.ts.map +0 -1
- package/build/_modules/generators/json-schema.spec.js +0 -81
- package/build/_modules/generators/json-schema.spec.js.map +0 -1
- package/build/_modules/generators/preset-configs.spec.d.ts +0 -2
- package/build/_modules/generators/preset-configs.spec.d.ts.map +0 -1
- package/build/_modules/generators/preset-configs.spec.js +0 -53
- package/build/_modules/generators/preset-configs.spec.js.map +0 -1
- package/build/_modules/generators/test-case-filter-edge.spec.d.ts +0 -2
- package/build/_modules/generators/test-case-filter-edge.spec.d.ts.map +0 -1
- package/build/_modules/generators/test-case-filter-edge.spec.js +0 -105
- package/build/_modules/generators/test-case-filter-edge.spec.js.map +0 -1
- package/build/_modules/generators/viewport-suite.generator.spec.d.ts +0 -2
- package/build/_modules/generators/viewport-suite.generator.spec.d.ts.map +0 -1
- package/build/_modules/generators/viewport-suite.generator.spec.js +0 -59
- package/build/_modules/generators/viewport-suite.generator.spec.js.map +0 -1
- package/build/_modules/generators/wave-2b-emission.spec.d.ts +0 -2
- package/build/_modules/generators/wave-2b-emission.spec.d.ts.map +0 -1
- package/build/_modules/generators/wave-2b-emission.spec.js +0 -115
- package/build/_modules/generators/wave-2b-emission.spec.js.map +0 -1
- package/build/_modules/presets/presets.spec.d.ts +0 -2
- package/build/_modules/presets/presets.spec.d.ts.map +0 -1
- package/build/_modules/presets/presets.spec.js +0 -230
- package/build/_modules/presets/presets.spec.js.map +0 -1
- package/build/_modules/runtime/assertion-helpers.spec.d.ts +0 -2
- package/build/_modules/runtime/assertion-helpers.spec.d.ts.map +0 -1
- package/build/_modules/runtime/assertion-helpers.spec.js +0 -57
- package/build/_modules/runtime/assertion-helpers.spec.js.map +0 -1
- package/build/_modules/runtime/logger.service.spec.d.ts +0 -2
- package/build/_modules/runtime/logger.service.spec.d.ts.map +0 -1
- package/build/_modules/runtime/logger.service.spec.js +0 -61
- package/build/_modules/runtime/logger.service.spec.js.map +0 -1
- package/build/_modules/runtime/login-flow-helper.spec.d.ts +0 -2
- package/build/_modules/runtime/login-flow-helper.spec.d.ts.map +0 -1
- package/build/_modules/runtime/login-flow-helper.spec.js +0 -74
- package/build/_modules/runtime/login-flow-helper.spec.js.map +0 -1
- package/build/_modules/runtime/page-objects.spec.d.ts +0 -2
- package/build/_modules/runtime/page-objects.spec.d.ts.map +0 -1
- package/build/_modules/runtime/page-objects.spec.js +0 -241
- package/build/_modules/runtime/page-objects.spec.js.map +0 -1
- package/build/_modules/runtime/runtime.spec.d.ts +0 -2
- package/build/_modules/runtime/runtime.spec.d.ts.map +0 -1
- package/build/_modules/runtime/runtime.spec.js +0 -73
- package/build/_modules/runtime/runtime.spec.js.map +0 -1
- package/build/_modules/runtime/unique-generator.spec.d.ts +0 -2
- package/build/_modules/runtime/unique-generator.spec.d.ts.map +0 -1
- package/build/_modules/runtime/unique-generator.spec.js +0 -41
- package/build/_modules/runtime/unique-generator.spec.js.map +0 -1
- package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts +0 -2
- package/build/_modules/runtime/wave-2b-page-objects.spec.d.ts.map +0 -1
- package/build/_modules/runtime/wave-2b-page-objects.spec.js +0 -130
- package/build/_modules/runtime/wave-2b-page-objects.spec.js.map +0 -1
- package/build/_modules/vqa/capture-spec.generator.spec.d.ts +0 -2
- package/build/_modules/vqa/capture-spec.generator.spec.d.ts.map +0 -1
- package/build/_modules/vqa/capture-spec.generator.spec.js +0 -126
- package/build/_modules/vqa/capture-spec.generator.spec.js.map +0 -1
- package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts +0 -2
- package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts.map +0 -1
- package/build/_modules/vqa/comparison-bundle.generator.spec.js +0 -130
- package/build/_modules/vqa/comparison-bundle.generator.spec.js.map +0 -1
- package/build/_modules/vqa/finding-validator.spec.d.ts +0 -2
- package/build/_modules/vqa/finding-validator.spec.d.ts.map +0 -1
- package/build/_modules/vqa/finding-validator.spec.js +0 -136
- package/build/_modules/vqa/finding-validator.spec.js.map +0 -1
- package/build/_modules/vqa/manifest-validator.spec.d.ts +0 -2
- package/build/_modules/vqa/manifest-validator.spec.d.ts.map +0 -1
- package/build/_modules/vqa/manifest-validator.spec.js +0 -125
- package/build/_modules/vqa/manifest-validator.spec.js.map +0 -1
- package/build/_modules/vqa/review-bundle.generator.spec.d.ts +0 -2
- package/build/_modules/vqa/review-bundle.generator.spec.d.ts.map +0 -1
- package/build/_modules/vqa/review-bundle.generator.spec.js +0 -166
- package/build/_modules/vqa/review-bundle.generator.spec.js.map +0 -1
- package/build/_modules/vqa/wave-7.spec.d.ts +0 -2
- package/build/_modules/vqa/wave-7.spec.d.ts.map +0 -1
- package/build/_modules/vqa/wave-7.spec.js +0 -203
- package/build/_modules/vqa/wave-7.spec.js.map +0 -1
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/contracts/_collections/index.html +0 -116
- package/coverage/contracts/_collections/index.ts.html +0 -97
- package/coverage/contracts/_collections/utils/index.html +0 -116
- package/coverage/contracts/_collections/utils/test-id.util.ts.html +0 -172
- package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +0 -145
- package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +0 -394
- package/coverage/contracts/_enums/index.html +0 -191
- package/coverage/contracts/_enums/index.ts.html +0 -100
- package/coverage/contracts/_enums/standard-viewport.enum.ts.html +0 -127
- package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +0 -133
- package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +0 -130
- package/coverage/contracts/index.html +0 -116
- package/coverage/contracts/index.ts.html +0 -121
- package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +0 -241
- package/coverage/cwv/_collections/cwv-comparison.util.ts.html +0 -355
- package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +0 -553
- package/coverage/cwv/_collections/cwv-emission.util.ts.html +0 -448
- package/coverage/cwv/_collections/cwv-summarize.util.ts.html +0 -325
- package/coverage/cwv/_collections/index.html +0 -206
- package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +0 -304
- package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +0 -331
- package/coverage/cwv/cwv-suite.generator.ts.html +0 -277
- package/coverage/cwv/index.html +0 -116
- package/coverage/favicon.png +0 -0
- package/coverage/generators/_collections/cli-runner.util.ts.html +0 -919
- package/coverage/generators/_collections/config-validator.util.ts.html +0 -397
- package/coverage/generators/_collections/field-emission.util.ts.html +0 -604
- package/coverage/generators/_collections/form-level-emission.util.ts.html +0 -220
- package/coverage/generators/_collections/index.html +0 -236
- package/coverage/generators/_collections/json-schema.util.ts.html +0 -652
- package/coverage/generators/_collections/preset-configs.const.ts.html +0 -328
- package/coverage/generators/_collections/spec-emission.util.ts.html +0 -298
- package/coverage/generators/_collections/test-case-filter.util.ts.html +0 -523
- package/coverage/generators/_collections/viewport-emission.util.ts.html +0 -313
- package/coverage/generators/form-suite.generator.ts.html +0 -406
- package/coverage/generators/index.html +0 -131
- package/coverage/generators/viewport-suite.generator.ts.html +0 -307
- package/coverage/index.html +0 -266
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/contracts/_collections/index.html +0 -116
- package/coverage/lcov-report/contracts/_collections/index.ts.html +0 -97
- package/coverage/lcov-report/contracts/_collections/utils/index.html +0 -116
- package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +0 -172
- package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +0 -145
- package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +0 -394
- package/coverage/lcov-report/contracts/_enums/index.html +0 -191
- package/coverage/lcov-report/contracts/_enums/index.ts.html +0 -100
- package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +0 -127
- package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +0 -133
- package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +0 -130
- package/coverage/lcov-report/contracts/index.html +0 -116
- package/coverage/lcov-report/contracts/index.ts.html +0 -121
- package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +0 -241
- package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +0 -355
- package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +0 -553
- package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +0 -448
- package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +0 -325
- package/coverage/lcov-report/cwv/_collections/index.html +0 -206
- package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +0 -304
- package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +0 -331
- package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +0 -277
- package/coverage/lcov-report/cwv/index.html +0 -116
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +0 -919
- package/coverage/lcov-report/generators/_collections/config-validator.util.ts.html +0 -397
- package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +0 -604
- package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +0 -220
- package/coverage/lcov-report/generators/_collections/index.html +0 -236
- package/coverage/lcov-report/generators/_collections/json-schema.util.ts.html +0 -652
- package/coverage/lcov-report/generators/_collections/preset-configs.const.ts.html +0 -328
- package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +0 -298
- package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +0 -523
- package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +0 -313
- package/coverage/lcov-report/generators/form-suite.generator.ts.html +0 -406
- package/coverage/lcov-report/generators/index.html +0 -131
- package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +0 -307
- package/coverage/lcov-report/index.html +0 -266
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +0 -205
- package/coverage/lcov-report/runtime/_collections/index.html +0 -146
- package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +0 -256
- package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +0 -238
- package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +0 -157
- package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +0 -253
- package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +0 -184
- package/coverage/lcov-report/runtime/_services/index.html +0 -236
- package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +0 -142
- package/coverage/lcov-report/runtime/_services/logger.service.ts.html +0 -385
- package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +0 -331
- package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +0 -145
- package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +0 -130
- package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +0 -397
- package/coverage/lcov-report/runtime/index.html +0 -116
- package/coverage/lcov-report/runtime/index.ts.html +0 -178
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov.info +0 -4047
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/runtime/_collections/assertion-helpers.util.ts.html +0 -205
- package/coverage/runtime/_collections/index.html +0 -146
- package/coverage/runtime/_collections/unique-generator.util.ts.html +0 -256
- package/coverage/runtime/_collections/wait-helpers.util.ts.html +0 -238
- package/coverage/runtime/_services/dialog-page-object.ts.html +0 -157
- package/coverage/runtime/_services/field-page-object.ts.html +0 -253
- package/coverage/runtime/_services/form-page-object.ts.html +0 -184
- package/coverage/runtime/_services/index.html +0 -236
- package/coverage/runtime/_services/loader-page-object.ts.html +0 -142
- package/coverage/runtime/_services/logger.service.ts.html +0 -385
- package/coverage/runtime/_services/login-flow-helper.base.ts.html +0 -331
- package/coverage/runtime/_services/nav-page-object.ts.html +0 -145
- package/coverage/runtime/_services/toast-page-object.ts.html +0 -130
- package/coverage/runtime/_services/wave-2b-page-objects.ts.html +0 -397
- package/coverage/runtime/index.html +0 -116
- package/coverage/runtime/index.ts.html +0 -178
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/tmp/coverage-228636-1781075225757-0.json +0 -1
- package/coverage/tmp/coverage-228704-1781075227108-0.json +0 -1
- package/dogfood/PARITY-MATRIX.md +0 -67
- package/dogfood/generated/date-range-field-new.spec.ts +0 -54
- package/dogfood/generated/password-field-new.spec.ts +0 -97
- package/dogfood/generated/radio-select-field-new.spec.ts +0 -69
- package/dogfood/generated/slider-field-new.spec.ts +0 -47
- package/dogfood/generated/text-field-new.spec.ts +0 -0
- package/dogfood/generated-full/checkbox-field-new.spec.ts +0 -56
- package/dogfood/generated-full/date-field-new.spec.ts +0 -71
- package/dogfood/generated-full/date-range-field-new.spec.ts +0 -54
- package/dogfood/generated-full/datetime-field-new.spec.ts +0 -55
- package/dogfood/generated-full/multiselect-field-new.spec.ts +0 -69
- package/dogfood/generated-full/number-field-new.spec.ts +0 -113
- package/dogfood/generated-full/password-field-new.spec.ts +0 -97
- package/dogfood/generated-full/radio-select-field-new.spec.ts +0 -69
- package/dogfood/generated-full/sandbox-viewport-audit.spec.ts +0 -4643
- package/dogfood/generated-full/select-field-new.spec.ts +0 -69
- package/dogfood/generated-full/slider-field-new.spec.ts +0 -47
- package/dogfood/generated-full/slider-range-field-new.spec.ts +0 -54
- package/dogfood/generated-full/text-field-new.spec.ts +0 -0
- package/dogfood/generated-full/textarea-field-new.spec.ts +0 -72
- package/dogfood/sandbox-bootstrap-full.js +0 -248
- package/dogfood/sandbox-bootstrap.js +0 -170
- package/examples/minimal-form/README.md +0 -55
- package/examples/minimal-form/form-config.json +0 -38
- package/examples/multi-form-app/README.md +0 -63
- package/examples/multi-form-app/cwv-config.json +0 -14
- package/examples/multi-form-app/settings/login-form.json +0 -11
- package/examples/multi-form-app/settings/profile-form.json +0 -25
- package/examples/multi-form-app/viewport-config.json +0 -12
- package/logs/cicd-job.json +0 -3
- package/logs/cicd-report.json +0 -3
- package/logs/cicd-status.json +0 -3
package/dogfood/PARITY-MATRIX.md
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# MP-08 SP-A — Sandbox dogfood parity matrix
|
|
2
|
-
|
|
3
|
-
A `dynamo-ngx-sandbox` jelenleg **54 hand-rolled e2e tesztet** futtat a
|
|
4
|
-
Forms v2 wave-1B + wave-2a field-ekre (`dynamo-ngx/e2e/tests/forms-v2/*.spec.ts`).
|
|
5
|
-
Ez a doku méri fel, hogy a `dynamo-e2e` generated suite **paritást ad-e**.
|
|
6
|
-
|
|
7
|
-
## Hand-rolled vs. generated coverage
|
|
8
|
-
|
|
9
|
-
| Sandbox route | Hand-rolled tesztek (jelenlegi) | Generated tesztek (Wave-1) | Δ |
|
|
10
|
-
|---|---|---|---|
|
|
11
|
-
| `/c/text-field-new` | a `form-new.spec.ts` keretében (label/keyboard/validators) | 16 (text matrix) | parity+ |
|
|
12
|
-
| `/c/password-field-new` | 12 (`password-field.spec.ts`) | 9 (password matrix) + 3 form-level | -3 (a reveal-toggle interakció hiányzik a generator-ban) |
|
|
13
|
-
| `/c/slider-field-new` | 4 (`wave-2a-fields.spec.ts`) | 3 (slider matrix) | -1 (drag-with-keyboard) |
|
|
14
|
-
| `/c/slider-range-field-new` | 4 | 3 (sliderRange matrix) + 3 form-level | parity |
|
|
15
|
-
| `/c/radio-select-field-new` | 4 | 5 (radio matrix) | +1 |
|
|
16
|
-
| `/c/datetime-field-new` | 3 | 4 (datetime matrix) | +1 |
|
|
17
|
-
| `/c/date-range-field-new` | 6 | 3 (dateRange matrix) | -3 (allowSameDay-edge a custom-case-be kell tenni) |
|
|
18
|
-
| **TOTAL** | **~54** | **~62 (per-field) + 21 (form-level)** | **+30** |
|
|
19
|
-
|
|
20
|
-
## Hiányzó capability-k a generator-ban (Wave-2 TODO)
|
|
21
|
-
|
|
22
|
-
1. **Reveal-toggle interaction** (password) — a `password-field-new` 👁
|
|
23
|
-
button click-flow-ja nincs a curated mátrixban. Wave-2 SP-2 javaslat:
|
|
24
|
-
`DyE2E_FieldTestCase_Type.revealToggle` enum-érték + dedikált
|
|
25
|
-
password-emission-ág.
|
|
26
|
-
|
|
27
|
-
2. **Drag-with-keyboard** (slider) — `ArrowLeft` / `ArrowRight` / `Home` /
|
|
28
|
-
`End` press-sequencé a sliderben. Wave-2 SP-3: `keyboardOnly`
|
|
29
|
-
test-case-type emission generic-keyboardarrow flow-val.
|
|
30
|
-
|
|
31
|
-
3. **allowSameDay edge** (dateRange) — `settings.allowSameDay === false`
|
|
32
|
-
esetén a `startEqualsEnd` case `valid` → `invalid` flip-eli a
|
|
33
|
-
shape-eljárás. A `DyE2E_TestCaseFilter_Util.filter()` jelenleg NEM
|
|
34
|
-
nézi az `allowSameDay` settings-flag-et. Wave-2 SP-1.
|
|
35
|
-
|
|
36
|
-
4. **Label / keyboard / focus-trap** (text) — a `form-new.spec.ts`
|
|
37
|
-
keretes-tesztjei a label-render-t és focus-flow-t ellenőrzik. Ez
|
|
38
|
-
form-level orchestrator extension, NEM per-field — generator-szinten
|
|
39
|
-
új form-level emit-szignatúra kell.
|
|
40
|
-
|
|
41
|
-
## Replacement stratégia (Wave-1.5)
|
|
42
|
-
|
|
43
|
-
- **Side-by-side**: hand-rolled + generated egyaránt megmarad, a
|
|
44
|
-
Playwright projekt mind a kettőt futtatja. A generated suite
|
|
45
|
-
igazolásra: 0 regresszió.
|
|
46
|
-
- **Drop-in (Wave-2)**: a Wave-2 hiányzó capability-k pótlása után
|
|
47
|
-
a hand-rolled suite tönkre-mehet, kivéve a 4-féle "nem-mappázott"
|
|
48
|
-
edge-case-t (lásd fent), amelyek custom-override-ban élnek tovább.
|
|
49
|
-
|
|
50
|
-
## Generated specs lokálisan
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
node dogfood/sandbox-bootstrap.js
|
|
54
|
-
ls dogfood/generated/
|
|
55
|
-
# → text-field-new.spec.ts password-field-new.spec.ts slider-field-new.spec.ts
|
|
56
|
-
# radio-select-field-new.spec.ts date-range-field-new.spec.ts
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
A generated spec-ek **deterministicak** (lásd a `STAMP_BUILT_AT` const-ot a
|
|
60
|
-
generator-ban) — a bootstrap script azonos input-ra azonos output-ot ad.
|
|
61
|
-
|
|
62
|
-
## Következő lépés (MP-08 SP-C..F)
|
|
63
|
-
|
|
64
|
-
- SP-C — minden Forms v2 sandbox route generated suite-eljárás
|
|
65
|
-
- SP-D — `dynamo-ngx/e2e/tests/forms-v2/` mellé bekötés side-by-side mód
|
|
66
|
-
- SP-E — Hand-rolled törlés Wave-2 lezárása után
|
|
67
|
-
- SP-F — Sandbox CICD pipeline-update (`coverage` step a generated suite-ra is)
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
-
* Form key: sandbox-date-range-default
|
|
4
|
-
* Route: /c/date-range-field-new
|
|
5
|
-
* Built at: WAVE-1-STAMP
|
|
6
|
-
*
|
|
7
|
-
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
-
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
test.describe('Sandbox: DyNX_DateRangeFieldNew (Default variant)', (): void => {
|
|
14
|
-
|
|
15
|
-
test.describe('Field: vacationRange (dateRange)', (): void => {
|
|
16
|
-
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
-
const response = await page.goto('/c/date-range-field-new');
|
|
18
|
-
expect(response?.ok()).toBeTruthy();
|
|
19
|
-
await page.locator('dynamo-date-range-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('field[vacationRange] dateRange:valid → valid — normál tartomány', async ({ page }): Promise<void> => {
|
|
23
|
-
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
24
|
-
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
25
|
-
await startInput.fill('2026-06-01');
|
|
26
|
-
await endInput.fill('2026-06-30');
|
|
27
|
-
await endInput.blur();
|
|
28
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
29
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
test('field[vacationRange] dateRange:equal → valid — start === end (allowSameDay)', async ({ page }): Promise<void> => {
|
|
33
|
-
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
34
|
-
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
35
|
-
await startInput.fill('2026-06-15');
|
|
36
|
-
await endInput.fill('2026-06-15');
|
|
37
|
-
await endInput.blur();
|
|
38
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
39
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('field[vacationRange] dateRange:start-after-end → invalid:dateRange — start > end → cross-field error', async ({ page }): Promise<void> => {
|
|
43
|
-
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
44
|
-
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
45
|
-
await startInput.fill('2026-06-30');
|
|
46
|
-
await endInput.fill('2026-06-01');
|
|
47
|
-
await endInput.blur();
|
|
48
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
49
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
50
|
-
// expectedErrorKey: dateRange
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
});
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
-
* Form key: sandbox-pwd-required
|
|
4
|
-
* Route: /c/password-field-new
|
|
5
|
-
* Built at: WAVE-1-STAMP
|
|
6
|
-
*
|
|
7
|
-
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
-
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
test.describe('Sandbox: DyNX_PasswordFieldNew (Required variant)', (): void => {
|
|
14
|
-
|
|
15
|
-
test.describe('Field: password (password)', (): void => {
|
|
16
|
-
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
-
const response = await page.goto('/c/password-field-new');
|
|
18
|
-
expect(response?.ok()).toBeTruthy();
|
|
19
|
-
await page.locator('dynamo-password-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('field[password] pw:empty → valid — üres jelszó', async ({ page }): Promise<void> => {
|
|
23
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
24
|
-
await input.fill('');
|
|
25
|
-
await input.blur();
|
|
26
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
27
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('field[password] pw:ascii → valid — tipikus ASCII jelszó', async ({ page }): Promise<void> => {
|
|
31
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
32
|
-
await input.fill('SecurePw123!');
|
|
33
|
-
await input.blur();
|
|
34
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
35
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test('field[password] pw:unicode-basic → valid — unicode jelszó', async ({ page }): Promise<void> => {
|
|
39
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
40
|
-
await input.fill('JelszóBiztos123');
|
|
41
|
-
await input.blur();
|
|
42
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
43
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test('field[password] pw:unicode-emoji → valid — emoji jelszóban', async ({ page }): Promise<void> => {
|
|
47
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
48
|
-
await input.fill('Pw🔐Strong');
|
|
49
|
-
await input.blur();
|
|
50
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
51
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test('field[password] pw:short → invalid:minLength — < 8 char (default minLength)', async ({ page }): Promise<void> => {
|
|
55
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
56
|
-
await input.fill('aaaaaaa');
|
|
57
|
-
await input.blur();
|
|
58
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
59
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
60
|
-
// expectedErrorKey: minLength
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
test('field[password] pw:single-whitespace → valid — space-only password (some sites reject)', async ({ page }): Promise<void> => {
|
|
64
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
65
|
-
await input.fill(' ');
|
|
66
|
-
await input.blur();
|
|
67
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
68
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
test('field[password] pw:xss-tag → valid — XSS-tag jelszóban', async ({ page }): Promise<void> => {
|
|
72
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
73
|
-
await input.fill('<script>alert(1)</script>');
|
|
74
|
-
await input.blur();
|
|
75
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
76
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
test('field[password] pw:sql-injection-shape → valid — SQL-injection-szerű jelszó', async ({ page }): Promise<void> => {
|
|
80
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
81
|
-
await input.fill('\' OR \'1\'=\'1\' --');
|
|
82
|
-
await input.blur();
|
|
83
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
84
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
test('field[password] pw:oversize → invalid:maxLength — 256+ char jelszó', async ({ page }): Promise<void> => {
|
|
88
|
-
const input: Locator = page.getByTestId('sandbox-pwd-required');
|
|
89
|
-
await input.fill('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
90
|
-
await input.blur();
|
|
91
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-pwd-required"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
92
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
93
|
-
// expectedErrorKey: maxLength
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
});
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
-
* Form key: sandbox-radio-vertical
|
|
4
|
-
* Route: /c/radio-select-field-new
|
|
5
|
-
* Built at: WAVE-1-STAMP
|
|
6
|
-
*
|
|
7
|
-
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
-
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
test.describe('Sandbox: DyNX_RadioSelectFieldNew (Vertical variant)', (): void => {
|
|
14
|
-
|
|
15
|
-
test.describe('Field: priority (radioSelect)', (): void => {
|
|
16
|
-
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
-
const response = await page.goto('/c/radio-select-field-new');
|
|
18
|
-
expect(response?.ok()).toBeTruthy();
|
|
19
|
-
await page.locator('dynamo-radio-select-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('field[priority] select:none-selected → valid — semmi nincs választva', async ({ page }): Promise<void> => {
|
|
23
|
-
// options index → testId-suffix selection
|
|
24
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
25
|
-
// sentinel -1 — generator-runtime should clamp to options.length
|
|
26
|
-
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
27
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
28
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test('field[priority] select:first-option → valid — első opció kiválasztva', async ({ page }): Promise<void> => {
|
|
32
|
-
// options index → testId-suffix selection
|
|
33
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
34
|
-
// option index 0 (case-input[0])
|
|
35
|
-
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
36
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
37
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
test('field[priority] select:last-option → valid — utolsó opció kiválasztva', async ({ page }): Promise<void> => {
|
|
41
|
-
// options index → testId-suffix selection
|
|
42
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
43
|
-
// option index 3 (case-input[0])
|
|
44
|
-
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
45
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
46
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
test('field[priority] select:required-empty → invalid:required — required + semmi → invalid', async ({ page }): Promise<void> => {
|
|
50
|
-
// options index → testId-suffix selection
|
|
51
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
52
|
-
// sentinel -1 — generator-runtime should clamp to options.length
|
|
53
|
-
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
54
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
55
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
56
|
-
// expectedErrorKey: required
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
test('field[priority] select:disabled-option → valid — disabled opció nem klikkelheto', async ({ page }): Promise<void> => {
|
|
60
|
-
// options index → testId-suffix selection
|
|
61
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"], dynamo-radio-select-field-new').first();
|
|
62
|
-
// sentinel -1 — generator-runtime should clamp to options.length
|
|
63
|
-
// Wave-1: explicit selector-pattern is per-consumer; szándékosan minimalista.
|
|
64
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-radio-vertical"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
65
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
});
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
-
* Form key: sandbox-slider-default
|
|
4
|
-
* Route: /c/slider-field-new
|
|
5
|
-
* Built at: WAVE-1-STAMP
|
|
6
|
-
*
|
|
7
|
-
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
-
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
test.describe('Sandbox: DyNX_SliderFieldNew (Default 0-100)', (): void => {
|
|
14
|
-
|
|
15
|
-
test.describe('Field: volume (slider)', (): void => {
|
|
16
|
-
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
-
const response = await page.goto('/c/slider-field-new');
|
|
18
|
-
expect(response?.ok()).toBeTruthy();
|
|
19
|
-
await page.locator('dynamo-slider-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('field[volume] slider:min → valid — min-érték', async ({ page }): Promise<void> => {
|
|
23
|
-
const input: Locator = page.getByTestId('sandbox-slider-default');
|
|
24
|
-
await input.fill(String(0 ?? ''));
|
|
25
|
-
await input.blur();
|
|
26
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
27
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('field[volume] slider:max → valid — max-érték', async ({ page }): Promise<void> => {
|
|
31
|
-
const input: Locator = page.getByTestId('sandbox-slider-default');
|
|
32
|
-
await input.fill(String(100 ?? ''));
|
|
33
|
-
await input.blur();
|
|
34
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
35
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test('field[volume] slider:mid → valid — közepes érték', async ({ page }): Promise<void> => {
|
|
39
|
-
const input: Locator = page.getByTestId('sandbox-slider-default');
|
|
40
|
-
await input.fill(String(50 ?? ''));
|
|
41
|
-
await input.blur();
|
|
42
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-slider-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
43
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
});
|
|
Binary file
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
-
* Form key: sb-checkbox
|
|
4
|
-
* Route: /c/checkbox-field-new
|
|
5
|
-
* Built at: WAVE-1-STAMP
|
|
6
|
-
*
|
|
7
|
-
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
-
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
test.describe('Sandbox: DyNX_CheckboxFieldNew', (): void => {
|
|
14
|
-
|
|
15
|
-
test.describe('Field: agree (checkbox)', (): void => {
|
|
16
|
-
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
-
const response = await page.goto('/c/checkbox-field-new');
|
|
18
|
-
expect(response?.ok()).toBeTruthy();
|
|
19
|
-
await page.locator('dynamo-checkbox-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('field[agree] cb:initial-unchecked → valid — kezdeti unchecked', async ({ page }): Promise<void> => {
|
|
23
|
-
const checkbox: Locator = page.getByTestId('sandbox-checkbox-required');
|
|
24
|
-
await checkbox.uncheck();
|
|
25
|
-
await checkbox.blur();
|
|
26
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-checkbox-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
27
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('field[agree] cb:toggle-once → valid — 1× click → checked', async ({ page }): Promise<void> => {
|
|
31
|
-
const checkbox: Locator = page.getByTestId('sandbox-checkbox-required');
|
|
32
|
-
await checkbox.check();
|
|
33
|
-
await checkbox.blur();
|
|
34
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-checkbox-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
35
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test('field[agree] cb:toggle-twice → valid — 2× click → unchecked', async ({ page }): Promise<void> => {
|
|
39
|
-
const checkbox: Locator = page.getByTestId('sandbox-checkbox-required');
|
|
40
|
-
await checkbox.uncheck();
|
|
41
|
-
await checkbox.blur();
|
|
42
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-checkbox-required"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
43
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test('field[agree] cb:required-unchecked → invalid:required — required + unchecked → form-invalid', async ({ page }): Promise<void> => {
|
|
47
|
-
const checkbox: Locator = page.getByTestId('sandbox-checkbox-required');
|
|
48
|
-
await checkbox.uncheck();
|
|
49
|
-
await checkbox.blur();
|
|
50
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-checkbox-required"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
51
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
52
|
-
// expectedErrorKey: required
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
});
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
-
* Form key: sb-date
|
|
4
|
-
* Route: /c/date-field-new
|
|
5
|
-
* Built at: WAVE-1-STAMP
|
|
6
|
-
*
|
|
7
|
-
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
-
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
test.describe('Sandbox: DyNX_DateFieldNew', (): void => {
|
|
14
|
-
|
|
15
|
-
test.describe('Field: birthDate (date)', (): void => {
|
|
16
|
-
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
-
const response = await page.goto('/c/date-field-new');
|
|
18
|
-
expect(response?.ok()).toBeTruthy();
|
|
19
|
-
await page.locator('dynamo-date-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('field[birthDate] date:empty → valid — üres dátum', async ({ page }): Promise<void> => {
|
|
23
|
-
const input: Locator = page.getByTestId('sandbox-date-default');
|
|
24
|
-
await input.fill('');
|
|
25
|
-
await input.blur();
|
|
26
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
27
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('field[birthDate] date:today → valid — mai dátum', async ({ page }): Promise<void> => {
|
|
31
|
-
const input: Locator = page.getByTestId('sandbox-date-default');
|
|
32
|
-
await input.fill('2026-06-10');
|
|
33
|
-
await input.blur();
|
|
34
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
35
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test('field[birthDate] date:leap-feb29 → valid — szökőév feb 29.', async ({ page }): Promise<void> => {
|
|
39
|
-
const input: Locator = page.getByTestId('sandbox-date-default');
|
|
40
|
-
await input.fill('2024-02-29');
|
|
41
|
-
await input.blur();
|
|
42
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
43
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test('field[birthDate] date:before-y2k → valid — Y2K előtti dátum', async ({ page }): Promise<void> => {
|
|
47
|
-
const input: Locator = page.getByTestId('sandbox-date-default');
|
|
48
|
-
await input.fill('1999-12-31');
|
|
49
|
-
await input.blur();
|
|
50
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
51
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test('field[birthDate] date:before-unix-epoch → valid — Unix epoch előtt', async ({ page }): Promise<void> => {
|
|
55
|
-
const input: Locator = page.getByTestId('sandbox-date-default');
|
|
56
|
-
await input.fill('1969-12-31');
|
|
57
|
-
await input.blur();
|
|
58
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
59
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
test('field[birthDate] date:far-future → valid — messzi jövő', async ({ page }): Promise<void> => {
|
|
63
|
-
const input: Locator = page.getByTestId('sandbox-date-default');
|
|
64
|
-
await input.fill('2099-12-31');
|
|
65
|
-
await input.blur();
|
|
66
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
67
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
});
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
-
* Form key: sb-date-range
|
|
4
|
-
* Route: /c/date-range-field-new
|
|
5
|
-
* Built at: WAVE-1-STAMP
|
|
6
|
-
*
|
|
7
|
-
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
-
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
test.describe('Sandbox: DyNX_DateRangeFieldNew', (): void => {
|
|
14
|
-
|
|
15
|
-
test.describe('Field: vacation (dateRange)', (): void => {
|
|
16
|
-
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
-
const response = await page.goto('/c/date-range-field-new');
|
|
18
|
-
expect(response?.ok()).toBeTruthy();
|
|
19
|
-
await page.locator('dynamo-date-range-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('field[vacation] dateRange:valid → valid — normál tartomány', async ({ page }): Promise<void> => {
|
|
23
|
-
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
24
|
-
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
25
|
-
await startInput.fill('2026-06-01');
|
|
26
|
-
await endInput.fill('2026-06-30');
|
|
27
|
-
await endInput.blur();
|
|
28
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
29
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
test('field[vacation] dateRange:equal → valid — start === end (allowSameDay)', async ({ page }): Promise<void> => {
|
|
33
|
-
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
34
|
-
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
35
|
-
await startInput.fill('2026-06-15');
|
|
36
|
-
await endInput.fill('2026-06-15');
|
|
37
|
-
await endInput.blur();
|
|
38
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
39
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
test('field[vacation] dateRange:start-after-end → invalid:dateRange — start > end → cross-field error', async ({ page }): Promise<void> => {
|
|
43
|
-
const startInput: Locator = page.getByTestId('sandbox-date-range-default-start');
|
|
44
|
-
const endInput: Locator = page.getByTestId('sandbox-date-range-default-end');
|
|
45
|
-
await startInput.fill('2026-06-30');
|
|
46
|
-
await endInput.fill('2026-06-01');
|
|
47
|
-
await endInput.blur();
|
|
48
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-date-range-default"]').locator('xpath=ancestor-or-self::*[starts-with(local-name(),"dynamo-")]').first();
|
|
49
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1').first()).toBeVisible();
|
|
50
|
-
// expectedErrorKey: dateRange
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
});
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto-generated by @futdevpro/dynamo-e2e — FormSuite Generator
|
|
3
|
-
* Form key: sb-datetime
|
|
4
|
-
* Route: /c/datetime-field-new
|
|
5
|
-
* Built at: WAVE-1-STAMP
|
|
6
|
-
*
|
|
7
|
-
* DO NOT EDIT BY HAND. Re-emit via `dc e2e generate-form-suite` or
|
|
8
|
-
* `DyE2E_FormSuite_Generator.emit({...})` consumer-script.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { test, expect, Locator } from '@playwright/test';
|
|
12
|
-
|
|
13
|
-
test.describe('Sandbox: DyNX_DateTimeFieldNew (Bounded)', (): void => {
|
|
14
|
-
|
|
15
|
-
test.describe('Field: meetingAt (dateTime)', (): void => {
|
|
16
|
-
test.beforeEach(async ({ page }): Promise<void> => {
|
|
17
|
-
const response = await page.goto('/c/datetime-field-new');
|
|
18
|
-
expect(response?.ok()).toBeTruthy();
|
|
19
|
-
await page.locator('dynamo-datetime-field-new').first().waitFor({ state: 'visible' });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
test('field[meetingAt] datetime:empty → valid — üres datetime', async ({ page }): Promise<void> => {
|
|
23
|
-
const input: Locator = page.getByTestId('sandbox-datetime-bounded');
|
|
24
|
-
await input.fill('');
|
|
25
|
-
await input.blur();
|
|
26
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-datetime-bounded"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
27
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
test('field[meetingAt] datetime:midnight → valid — éjfél (00:00)', async ({ page }): Promise<void> => {
|
|
31
|
-
const input: Locator = page.getByTestId('sandbox-datetime-bounded');
|
|
32
|
-
await input.fill('2026-06-10T00:00');
|
|
33
|
-
await input.blur();
|
|
34
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-datetime-bounded"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
35
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test('field[meetingAt] datetime:noon → valid — dél (12:00)', async ({ page }): Promise<void> => {
|
|
39
|
-
const input: Locator = page.getByTestId('sandbox-datetime-bounded');
|
|
40
|
-
await input.fill('2026-06-10T12:00');
|
|
41
|
-
await input.blur();
|
|
42
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-datetime-bounded"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
43
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test('field[meetingAt] datetime:end-of-day → valid — nap vége (23:59)', async ({ page }): Promise<void> => {
|
|
47
|
-
const input: Locator = page.getByTestId('sandbox-datetime-bounded');
|
|
48
|
-
await input.fill('2026-06-10T23:59');
|
|
49
|
-
await input.blur();
|
|
50
|
-
const fieldRoot: Locator = page.locator('[data-testid="sandbox-datetime-bounded"]').locator('xpath=ancestor-or-self::*[contains(@class,"field") or starts-with(local-name(),"dynamo-")]').first();
|
|
51
|
-
await expect(fieldRoot.locator('.text-red-400.mt-1')).toHaveCount(0);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
});
|