@futdevpro/dynamo-e2e 1.17.1 → 1.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dynamo/logs/cicd-pipeline/status.json +33 -32
- package/.dynamo/pipeline.cicd.config.json +10 -3
- package/CHANGELOG.md +98 -0
- package/bin/dye2e.js +170 -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 +3 -1
- package/build/_modules/generators/_collections/form-level-emission.util.js.map +1 -1
- package/build/_modules/generators/_collections/test-case-filter.util.d.ts.map +1 -1
- package/build/_modules/generators/_collections/test-case-filter.util.js +24 -0
- package/build/_modules/generators/_collections/test-case-filter.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/generators/form-suite.generator.spec.js +14 -0
- package/build/_modules/generators/form-suite.generator.spec.js.map +1 -1
- package/build/_modules/generators/test-case-filter-edge.spec.js +37 -4
- package/build/_modules/generators/test-case-filter-edge.spec.js.map +1 -1
- package/build/_modules/vqa/_collections/constants/anti-flake-css.const.d.ts +8 -0
- package/build/_modules/vqa/_collections/constants/anti-flake-css.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/anti-flake-css.const.js +21 -0
- package/build/_modules/vqa/_collections/constants/anti-flake-css.const.js.map +1 -0
- package/build/_modules/vqa/_collections/constants/axe-page-script.const.d.ts +21 -0
- package/build/_modules/vqa/_collections/constants/axe-page-script.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/axe-page-script.const.js +57 -0
- package/build/_modules/vqa/_collections/constants/axe-page-script.const.js.map +1 -0
- package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.d.ts +13 -0
- package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.js +318 -0
- package/build/_modules/vqa/_collections/constants/dom-evidence-page-scripts.const.js.map +1 -0
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.d.ts +14 -0
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.js +82 -0
- package/build/_modules/vqa/_collections/constants/vqa-standard-viewports.const.js.map +1 -0
- package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.d.ts +23 -0
- package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.js +37 -0
- package/build/_modules/vqa/_collections/constants/vqa-tailwind-viewports.const.js.map +1 -0
- package/build/_modules/vqa/_collections/index.d.ts +10 -0
- package/build/_modules/vqa/_collections/index.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/index.js +26 -0
- package/build/_modules/vqa/_collections/index.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/deterministic-finding.util.d.ts +23 -0
- package/build/_modules/vqa/_collections/utils/deterministic-finding.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/deterministic-finding.util.js +112 -0
- package/build/_modules/vqa/_collections/utils/deterministic-finding.util.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/finding-id.util.d.ts +18 -0
- package/build/_modules/vqa/_collections/utils/finding-id.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/finding-id.util.js +42 -0
- package/build/_modules/vqa/_collections/utils/finding-id.util.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/finding-validator.util.d.ts +21 -0
- package/build/_modules/vqa/_collections/utils/finding-validator.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/finding-validator.util.js +114 -0
- package/build/_modules/vqa/_collections/utils/finding-validator.util.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/manifest-validator.util.d.ts +27 -0
- package/build/_modules/vqa/_collections/utils/manifest-validator.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/manifest-validator.util.js +148 -0
- package/build/_modules/vqa/_collections/utils/manifest-validator.util.js.map +1 -0
- package/build/_modules/vqa/_collections/utils/risk-score.util.d.ts +48 -0
- package/build/_modules/vqa/_collections/utils/risk-score.util.d.ts.map +1 -0
- package/build/_modules/vqa/_collections/utils/risk-score.util.js +77 -0
- package/build/_modules/vqa/_collections/utils/risk-score.util.js.map +1 -0
- package/build/_modules/vqa/_enums/dom-evidence-detector.enum.d.ts +44 -0
- package/build/_modules/vqa/_enums/dom-evidence-detector.enum.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/dom-evidence-detector.enum.js +48 -0
- package/build/_modules/vqa/_enums/dom-evidence-detector.enum.js.map +1 -0
- package/build/_modules/vqa/_enums/finding-severity.enum.d.ts +17 -0
- package/build/_modules/vqa/_enums/finding-severity.enum.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/finding-severity.enum.js +21 -0
- package/build/_modules/vqa/_enums/finding-severity.enum.js.map +1 -0
- package/build/_modules/vqa/_enums/finding-status.enum.d.ts +23 -0
- package/build/_modules/vqa/_enums/finding-status.enum.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/finding-status.enum.js +27 -0
- package/build/_modules/vqa/_enums/finding-status.enum.js.map +1 -0
- package/build/_modules/vqa/_enums/index.d.ts +5 -0
- package/build/_modules/vqa/_enums/index.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/index.js +21 -0
- package/build/_modules/vqa/_enums/index.js.map +1 -0
- package/build/_modules/vqa/_enums/visual-state-type.enum.d.ts +38 -0
- package/build/_modules/vqa/_enums/visual-state-type.enum.d.ts.map +1 -0
- package/build/_modules/vqa/_enums/visual-state-type.enum.js +49 -0
- package/build/_modules/vqa/_enums/visual-state-type.enum.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/critical-element.interface.d.ts +22 -0
- package/build/_modules/vqa/_models/interfaces/critical-element.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/critical-element.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/critical-element.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.d.ts +21 -0
- package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/dom-evidence.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.d.ts +16 -0
- package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/expected-feedback.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.d.ts +56 -0
- package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/feature-manifest.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/finding.interface.d.ts +58 -0
- package/build/_modules/vqa/_models/interfaces/finding.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/finding.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/finding.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/flow-step.interface.d.ts +32 -0
- package/build/_modules/vqa/_models/interfaces/flow-step.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/flow-step.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/flow-step.interface.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/index.d.ts +8 -0
- package/build/_modules/vqa/_models/interfaces/index.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/index.js +24 -0
- package/build/_modules/vqa/_models/interfaces/index.js.map +1 -0
- package/build/_modules/vqa/_models/interfaces/visual-state.interface.d.ts +34 -0
- package/build/_modules/vqa/_models/interfaces/visual-state.interface.d.ts.map +1 -0
- package/build/_modules/vqa/_models/interfaces/visual-state.interface.js +3 -0
- package/build/_modules/vqa/_models/interfaces/visual-state.interface.js.map +1 -0
- package/build/_modules/vqa/capture-spec.generator.spec.d.ts +2 -0
- package/build/_modules/vqa/capture-spec.generator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/capture-spec.generator.spec.js +126 -0
- package/build/_modules/vqa/capture-spec.generator.spec.js.map +1 -0
- package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts +2 -0
- package/build/_modules/vqa/comparison-bundle.generator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/comparison-bundle.generator.spec.js +130 -0
- package/build/_modules/vqa/comparison-bundle.generator.spec.js.map +1 -0
- package/build/_modules/vqa/finding-validator.spec.d.ts +2 -0
- package/build/_modules/vqa/finding-validator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/finding-validator.spec.js +136 -0
- package/build/_modules/vqa/finding-validator.spec.js.map +1 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.d.ts +19 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.d.ts.map +1 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.js +179 -0
- package/build/_modules/vqa/generators/ai-agent-readme.template.js.map +1 -0
- package/build/_modules/vqa/generators/bundle-summary.template.d.ts +9 -0
- package/build/_modules/vqa/generators/bundle-summary.template.d.ts.map +1 -0
- package/build/_modules/vqa/generators/bundle-summary.template.js +73 -0
- package/build/_modules/vqa/generators/bundle-summary.template.js.map +1 -0
- package/build/_modules/vqa/generators/capture-spec.generator.d.ts +33 -0
- package/build/_modules/vqa/generators/capture-spec.generator.d.ts.map +1 -0
- package/build/_modules/vqa/generators/capture-spec.generator.js +194 -0
- package/build/_modules/vqa/generators/capture-spec.generator.js.map +1 -0
- package/build/_modules/vqa/generators/comparison-bundle.generator.d.ts +37 -0
- package/build/_modules/vqa/generators/comparison-bundle.generator.d.ts.map +1 -0
- package/build/_modules/vqa/generators/comparison-bundle.generator.js +238 -0
- package/build/_modules/vqa/generators/comparison-bundle.generator.js.map +1 -0
- package/build/_modules/vqa/generators/index.d.ts +6 -0
- package/build/_modules/vqa/generators/index.d.ts.map +1 -0
- package/build/_modules/vqa/generators/index.js +22 -0
- package/build/_modules/vqa/generators/index.js.map +1 -0
- package/build/_modules/vqa/generators/review-bundle.generator.d.ts +49 -0
- package/build/_modules/vqa/generators/review-bundle.generator.d.ts.map +1 -0
- package/build/_modules/vqa/generators/review-bundle.generator.js +127 -0
- package/build/_modules/vqa/generators/review-bundle.generator.js.map +1 -0
- package/build/_modules/vqa/index.d.ts +6 -0
- package/build/_modules/vqa/index.d.ts.map +1 -0
- package/build/_modules/vqa/index.js +25 -0
- package/build/_modules/vqa/index.js.map +1 -0
- package/build/_modules/vqa/manifest-validator.spec.d.ts +2 -0
- package/build/_modules/vqa/manifest-validator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/manifest-validator.spec.js +125 -0
- package/build/_modules/vqa/manifest-validator.spec.js.map +1 -0
- package/build/_modules/vqa/review-bundle.generator.spec.d.ts +2 -0
- package/build/_modules/vqa/review-bundle.generator.spec.d.ts.map +1 -0
- package/build/_modules/vqa/review-bundle.generator.spec.js +166 -0
- package/build/_modules/vqa/review-bundle.generator.spec.js.map +1 -0
- package/build/_modules/vqa/wave-7.spec.d.ts +2 -0
- package/build/_modules/vqa/wave-7.spec.d.ts.map +1 -0
- package/build/_modules/vqa/wave-7.spec.js +203 -0
- package/build/_modules/vqa/wave-7.spec.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/coverage/contracts/_collections/index.html +1 -1
- package/coverage/contracts/_collections/index.ts.html +1 -1
- package/coverage/contracts/_collections/utils/index.html +1 -1
- package/coverage/contracts/_collections/utils/test-id.util.ts.html +10 -10
- package/coverage/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/index.html +1 -1
- package/coverage/contracts/_enums/index.ts.html +1 -1
- package/coverage/contracts/_enums/standard-viewport.enum.ts.html +1 -1
- package/coverage/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
- package/coverage/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
- package/coverage/contracts/index.html +1 -1
- package/coverage/contracts/index.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-comparison.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-emission.util.ts.html +1 -1
- package/coverage/cwv/_collections/cwv-summarize.util.ts.html +1 -1
- package/coverage/cwv/_collections/index.html +1 -1
- package/coverage/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
- package/coverage/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
- package/coverage/cwv/cwv-suite.generator.ts.html +1 -1
- package/coverage/cwv/index.html +1 -1
- package/coverage/generators/_collections/cli-runner.util.ts.html +1 -1
- package/coverage/generators/_collections/config-validator.util.ts.html +1 -1
- package/coverage/generators/_collections/field-emission.util.ts.html +86 -86
- package/coverage/generators/_collections/form-level-emission.util.ts.html +39 -33
- package/coverage/generators/_collections/index.html +17 -17
- package/coverage/generators/_collections/json-schema.util.ts.html +1 -1
- package/coverage/generators/_collections/preset-configs.const.ts.html +1 -1
- package/coverage/generators/_collections/spec-emission.util.ts.html +35 -35
- package/coverage/generators/_collections/test-case-filter.util.ts.html +153 -51
- package/coverage/generators/_collections/viewport-emission.util.ts.html +1 -1
- package/coverage/generators/form-suite.generator.ts.html +78 -78
- package/coverage/generators/index.html +1 -1
- package/coverage/generators/viewport-suite.generator.ts.html +1 -1
- package/coverage/index.html +61 -16
- package/coverage/lcov-report/contracts/_collections/index.html +1 -1
- package/coverage/lcov-report/contracts/_collections/index.ts.html +1 -1
- package/coverage/lcov-report/contracts/_collections/utils/index.html +1 -1
- package/coverage/lcov-report/contracts/_collections/utils/test-id.util.ts.html +10 -10
- package/coverage/lcov-report/contracts/_enums/cwv-metric-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/field-test-case-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/index.html +1 -1
- package/coverage/lcov-report/contracts/_enums/index.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/standard-viewport.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/test-expectation-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/_enums/test-run-mode-type.enum.ts.html +1 -1
- package/coverage/lcov-report/contracts/index.html +1 -1
- package/coverage/lcov-report/contracts/index.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-aggregator.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-comparison.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-diagnose.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-emission.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/cwv-summarize.util.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/index.html +1 -1
- package/coverage/lcov-report/cwv/_collections/inp-interaction-script.const.ts.html +1 -1
- package/coverage/lcov-report/cwv/_collections/web-vitals-page-script.const.ts.html +1 -1
- package/coverage/lcov-report/cwv/cwv-suite.generator.ts.html +1 -1
- package/coverage/lcov-report/cwv/index.html +1 -1
- package/coverage/lcov-report/generators/_collections/cli-runner.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/config-validator.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/field-emission.util.ts.html +86 -86
- package/coverage/lcov-report/generators/_collections/form-level-emission.util.ts.html +39 -33
- package/coverage/lcov-report/generators/_collections/index.html +17 -17
- package/coverage/lcov-report/generators/_collections/json-schema.util.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/preset-configs.const.ts.html +1 -1
- package/coverage/lcov-report/generators/_collections/spec-emission.util.ts.html +35 -35
- package/coverage/lcov-report/generators/_collections/test-case-filter.util.ts.html +153 -51
- package/coverage/lcov-report/generators/_collections/viewport-emission.util.ts.html +1 -1
- package/coverage/lcov-report/generators/form-suite.generator.ts.html +78 -78
- package/coverage/lcov-report/generators/index.html +1 -1
- package/coverage/lcov-report/generators/viewport-suite.generator.ts.html +1 -1
- package/coverage/lcov-report/index.html +61 -16
- package/coverage/lcov-report/runtime/_collections/assertion-helpers.util.ts.html +1 -1
- package/coverage/lcov-report/runtime/_collections/index.html +1 -1
- package/coverage/lcov-report/runtime/_collections/unique-generator.util.ts.html +1 -1
- package/coverage/lcov-report/runtime/_collections/wait-helpers.util.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/dialog-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/field-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/form-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/index.html +1 -1
- package/coverage/lcov-report/runtime/_services/loader-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/logger.service.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/login-flow-helper.base.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/nav-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/toast-page-object.ts.html +1 -1
- package/coverage/lcov-report/runtime/_services/wave-2b-page-objects.ts.html +1 -1
- package/coverage/lcov-report/runtime/index.html +1 -1
- package/coverage/lcov-report/runtime/index.ts.html +1 -1
- package/coverage/lcov-report/vqa/_collections/utils/deterministic-finding.util.ts.html +481 -0
- package/coverage/lcov-report/vqa/_collections/utils/finding-id.util.ts.html +214 -0
- package/coverage/lcov-report/vqa/_collections/utils/finding-validator.util.ts.html +463 -0
- package/coverage/lcov-report/vqa/_collections/utils/index.html +176 -0
- package/coverage/lcov-report/vqa/_collections/utils/manifest-validator.util.ts.html +652 -0
- package/coverage/lcov-report/vqa/_collections/utils/risk-score.util.ts.html +424 -0
- package/coverage/lcov-report/vqa/_enums/dom-evidence-detector.enum.ts.html +214 -0
- package/coverage/lcov-report/vqa/_enums/finding-severity.enum.ts.html +133 -0
- package/coverage/lcov-report/vqa/_enums/finding-status.enum.ts.html +151 -0
- package/coverage/lcov-report/vqa/_enums/index.html +161 -0
- package/coverage/lcov-report/vqa/_enums/visual-state-type.enum.ts.html +235 -0
- package/coverage/lcov-report/vqa/generators/ai-agent-readme.template.ts.html +643 -0
- package/coverage/lcov-report/vqa/generators/bundle-summary.template.ts.html +316 -0
- package/coverage/lcov-report/vqa/generators/capture-spec.generator.ts.html +835 -0
- package/coverage/lcov-report/vqa/generators/comparison-bundle.generator.ts.html +898 -0
- package/coverage/lcov-report/vqa/generators/index.html +176 -0
- package/coverage/lcov-report/vqa/generators/review-bundle.generator.ts.html +559 -0
- package/coverage/lcov.info +2680 -466
- package/coverage/runtime/_collections/assertion-helpers.util.ts.html +1 -1
- package/coverage/runtime/_collections/index.html +1 -1
- package/coverage/runtime/_collections/unique-generator.util.ts.html +1 -1
- package/coverage/runtime/_collections/wait-helpers.util.ts.html +1 -1
- package/coverage/runtime/_services/dialog-page-object.ts.html +1 -1
- package/coverage/runtime/_services/field-page-object.ts.html +1 -1
- package/coverage/runtime/_services/form-page-object.ts.html +1 -1
- package/coverage/runtime/_services/index.html +1 -1
- package/coverage/runtime/_services/loader-page-object.ts.html +1 -1
- package/coverage/runtime/_services/logger.service.ts.html +1 -1
- package/coverage/runtime/_services/login-flow-helper.base.ts.html +1 -1
- package/coverage/runtime/_services/nav-page-object.ts.html +1 -1
- package/coverage/runtime/_services/toast-page-object.ts.html +1 -1
- package/coverage/runtime/_services/wave-2b-page-objects.ts.html +1 -1
- package/coverage/runtime/index.html +1 -1
- package/coverage/runtime/index.ts.html +1 -1
- package/coverage/tmp/coverage-10807-1781369478510-0.json +1 -0
- package/coverage/tmp/{coverage-11671-1781126947590-0.json → coverage-10812-1781369476958-0.json} +1 -1
- package/coverage/vqa/_collections/utils/deterministic-finding.util.ts.html +481 -0
- package/coverage/vqa/_collections/utils/finding-id.util.ts.html +214 -0
- package/coverage/vqa/_collections/utils/finding-validator.util.ts.html +463 -0
- package/coverage/vqa/_collections/utils/index.html +176 -0
- package/coverage/vqa/_collections/utils/manifest-validator.util.ts.html +652 -0
- package/coverage/vqa/_collections/utils/risk-score.util.ts.html +424 -0
- package/coverage/vqa/_enums/dom-evidence-detector.enum.ts.html +214 -0
- package/coverage/vqa/_enums/finding-severity.enum.ts.html +133 -0
- package/coverage/vqa/_enums/finding-status.enum.ts.html +151 -0
- package/coverage/vqa/_enums/index.html +161 -0
- package/coverage/vqa/_enums/visual-state-type.enum.ts.html +235 -0
- package/coverage/vqa/generators/ai-agent-readme.template.ts.html +643 -0
- package/coverage/vqa/generators/bundle-summary.template.ts.html +316 -0
- package/coverage/vqa/generators/capture-spec.generator.ts.html +835 -0
- package/coverage/vqa/generators/comparison-bundle.generator.ts.html +898 -0
- package/coverage/vqa/generators/index.html +176 -0
- package/coverage/vqa/generators/review-bundle.generator.ts.html +559 -0
- package/package.json +7 -1
- package/coverage/tmp/coverage-11666-1781126948871-0.json +0 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const fs = __importStar(require("fs"));
|
|
27
|
+
const path = __importStar(require("path"));
|
|
28
|
+
const os = __importStar(require("os"));
|
|
29
|
+
const comparison_bundle_generator_1 = require("./generators/comparison-bundle.generator");
|
|
30
|
+
const review_bundle_generator_1 = require("./generators/review-bundle.generator");
|
|
31
|
+
const visual_state_type_enum_1 = require("./_enums/visual-state-type.enum");
|
|
32
|
+
const vqa_standard_viewports_const_1 = require("./_collections/constants/vqa-standard-viewports.const");
|
|
33
|
+
describe('DyE2E_VQA_ComparisonBundle_Generator', () => {
|
|
34
|
+
let tmp;
|
|
35
|
+
const manifest = {
|
|
36
|
+
featureId: 'comp-feature',
|
|
37
|
+
featureName: 'Comp',
|
|
38
|
+
route: '/comp',
|
|
39
|
+
states: [{ stateId: 'default', type: visual_state_type_enum_1.DyE2E_VQA_VisualState_Type.default }],
|
|
40
|
+
viewports: [vqa_standard_viewports_const_1.DyE2E_VQA_StandardViewports_Const.desktop],
|
|
41
|
+
criticalElements: [{ key: 'c', selector: '.c', regionType: 'primary-cta' }],
|
|
42
|
+
};
|
|
43
|
+
beforeEach(() => {
|
|
44
|
+
tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'dye2e-vqa-comp-'));
|
|
45
|
+
});
|
|
46
|
+
afterEach(() => {
|
|
47
|
+
if (fs.existsSync(tmp)) {
|
|
48
|
+
fs.rmSync(tmp, { recursive: true, force: true });
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
function seedBundle(runId, stateData) {
|
|
52
|
+
const r = review_bundle_generator_1.DyE2E_VQA_ReviewBundle_Generator.generate(manifest, tmp, { runId, skipCaptureSpec: true });
|
|
53
|
+
const stateOut = path.join(r.bundlePath, 'states', 'default', 'desktop-portrait');
|
|
54
|
+
fs.mkdirSync(stateOut, { recursive: true });
|
|
55
|
+
fs.writeFileSync(path.join(stateOut, 'dom-snapshot.json'), JSON.stringify(stateData.dom));
|
|
56
|
+
fs.writeFileSync(path.join(stateOut, 'evidence.json'), JSON.stringify(stateData.evidence));
|
|
57
|
+
return r.bundlePath;
|
|
58
|
+
}
|
|
59
|
+
it('| writes README + finding-refs + run-id files', () => {
|
|
60
|
+
const beforeP = seedBundle('run-A', {
|
|
61
|
+
dom: { scroll: 1000 }, evidence: [{ detector: 'nested-scroll', detected: true }],
|
|
62
|
+
});
|
|
63
|
+
const afterP = seedBundle('run-B', {
|
|
64
|
+
dom: { scroll: 500 }, evidence: [{ detector: 'nested-scroll', detected: false }],
|
|
65
|
+
});
|
|
66
|
+
const r = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.generate(beforeP, afterP, manifest, ['VQA-org-comp-feature-001']);
|
|
67
|
+
expect(fs.existsSync(path.join(r.comparisonPath, 'README.md'))).toBeTrue();
|
|
68
|
+
expect(fs.existsSync(path.join(r.comparisonPath, 'finding-refs.json'))).toBeTrue();
|
|
69
|
+
expect(fs.readFileSync(path.join(r.comparisonPath, 'before-run-id.txt'), 'utf-8')).toBe('run-A');
|
|
70
|
+
expect(fs.readFileSync(path.join(r.comparisonPath, 'after-run-id.txt'), 'utf-8')).toBe('run-B');
|
|
71
|
+
});
|
|
72
|
+
it('| dom-diff emits changed-key delta', () => {
|
|
73
|
+
const beforeP = seedBundle('a', {
|
|
74
|
+
dom: { scroll: 1000, x: 1 }, evidence: [],
|
|
75
|
+
});
|
|
76
|
+
const afterP = seedBundle('b', {
|
|
77
|
+
dom: { scroll: 500, x: 1, newKey: true }, evidence: [],
|
|
78
|
+
});
|
|
79
|
+
const r = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.generate(beforeP, afterP, manifest, []);
|
|
80
|
+
const diff = JSON.parse(fs.readFileSync(path.join(r.comparisonPath, 'dom-diff', 'default', 'desktop-portrait.json'), 'utf-8'));
|
|
81
|
+
expect(diff.added?.newKey).toBe(true);
|
|
82
|
+
expect(diff.changed?.scroll?.before).toBe(1000);
|
|
83
|
+
expect(diff.changed?.scroll?.after).toBe(500);
|
|
84
|
+
});
|
|
85
|
+
it('| evidence-diff marks verdictChanged for nested-scroll', () => {
|
|
86
|
+
const beforeP = seedBundle('a', {
|
|
87
|
+
dom: {}, evidence: [{ detector: 'nested-scroll', detected: true }],
|
|
88
|
+
});
|
|
89
|
+
const afterP = seedBundle('b', {
|
|
90
|
+
dom: {}, evidence: [{ detector: 'nested-scroll', detected: false }],
|
|
91
|
+
});
|
|
92
|
+
const r = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.generate(beforeP, afterP, manifest, []);
|
|
93
|
+
const delta = JSON.parse(fs.readFileSync(path.join(r.comparisonPath, 'evidence-diff', 'default', 'desktop-portrait.json'), 'utf-8'));
|
|
94
|
+
expect(delta['nested-scroll']?.verdictChanged).toBe(true);
|
|
95
|
+
expect(delta['nested-scroll']?.before).toBe('detected');
|
|
96
|
+
expect(delta['nested-scroll']?.after).toBe('clean');
|
|
97
|
+
});
|
|
98
|
+
it('| evidence-diff marks unchanged when verdict same', () => {
|
|
99
|
+
const beforeP = seedBundle('a', {
|
|
100
|
+
dom: {}, evidence: [{ detector: 'nested-scroll', detected: false }],
|
|
101
|
+
});
|
|
102
|
+
const afterP = seedBundle('b', {
|
|
103
|
+
dom: {}, evidence: [{ detector: 'nested-scroll', detected: false }],
|
|
104
|
+
});
|
|
105
|
+
const r = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.generate(beforeP, afterP, manifest, []);
|
|
106
|
+
const delta = JSON.parse(fs.readFileSync(path.join(r.comparisonPath, 'evidence-diff', 'default', 'desktop-portrait.json'), 'utf-8'));
|
|
107
|
+
expect(delta['nested-scroll']?.unchanged).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
it('| deepDiff handles null/null + value-equal + nested', () => {
|
|
110
|
+
const d1 = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.deepDiff(null, null);
|
|
111
|
+
expect(d1.unchanged).toBeTrue();
|
|
112
|
+
const d2 = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.deepDiff(5, 5);
|
|
113
|
+
expect(d2.unchanged).toBeTrue();
|
|
114
|
+
const d3 = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.deepDiff(5, 10);
|
|
115
|
+
expect(d3.before).toBe(5);
|
|
116
|
+
expect(d3.after).toBe(10);
|
|
117
|
+
const d4 = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.deepDiff(null, { a: 1 });
|
|
118
|
+
expect(d4.onlyAfter.a).toBe(1);
|
|
119
|
+
});
|
|
120
|
+
it('| README contains decision-rubric', () => {
|
|
121
|
+
const b = seedBundle('a', { dom: {}, evidence: [] });
|
|
122
|
+
const a = seedBundle('b', { dom: {}, evidence: [] });
|
|
123
|
+
const r = comparison_bundle_generator_1.DyE2E_VQA_ComparisonBundle_Generator.generate(b, a, manifest, ['VQA-org-comp-feature-001']);
|
|
124
|
+
const readme = fs.readFileSync(path.join(r.comparisonPath, 'README.md'), 'utf-8');
|
|
125
|
+
expect(readme).toContain('verified');
|
|
126
|
+
expect(readme).toContain('reopened');
|
|
127
|
+
expect(readme).toContain('VQA-org-comp-feature-001');
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=comparison-bundle.generator.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparison-bundle.generator.spec.js","sourceRoot":"","sources":["../../../src/_modules/vqa/comparison-bundle.generator.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-validator.spec.d.ts","sourceRoot":"","sources":["../../../src/_modules/vqa/finding-validator.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const finding_validator_util_1 = require("./_collections/utils/finding-validator.util");
|
|
4
|
+
const finding_id_util_1 = require("./_collections/utils/finding-id.util");
|
|
5
|
+
const finding_severity_enum_1 = require("./_enums/finding-severity.enum");
|
|
6
|
+
const finding_status_enum_1 = require("./_enums/finding-status.enum");
|
|
7
|
+
describe('DyE2E_VQA_FindingValidator_Util', () => {
|
|
8
|
+
const validFinding = () => ({
|
|
9
|
+
findingId: 'VQA-organizer-tasks-modul-001',
|
|
10
|
+
featureId: 'tasks-modul',
|
|
11
|
+
stateId: 'default',
|
|
12
|
+
viewport: 'desktop',
|
|
13
|
+
screenshotRef: 'screenshots/default/desktop-full.png',
|
|
14
|
+
description: 'Primary CTA fold alatt mobile-on',
|
|
15
|
+
expectedBehavior: 'CTA látható legyen fold felett',
|
|
16
|
+
severity: finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.high,
|
|
17
|
+
status: finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open,
|
|
18
|
+
reproSteps: ['Nyisd meg /tasks', 'Görgesd alulra'],
|
|
19
|
+
aiConfidence: 0.85,
|
|
20
|
+
createdInRunId: 'run-001',
|
|
21
|
+
});
|
|
22
|
+
it('| accepts valid finding', () => {
|
|
23
|
+
const r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(validFinding());
|
|
24
|
+
expect(r.ok).toBeTrue();
|
|
25
|
+
});
|
|
26
|
+
it('| rejects non-object', () => {
|
|
27
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(null).ok).toBeFalse();
|
|
28
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate('x').ok).toBeFalse();
|
|
29
|
+
});
|
|
30
|
+
it('| flags malformed findingId', () => {
|
|
31
|
+
const f = validFinding();
|
|
32
|
+
f['findingId'] = 'TASK-001';
|
|
33
|
+
const r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(f);
|
|
34
|
+
expect(r.errors.some((e) => e.path === '$.findingId' && e.code === 'invalid-format')).toBeTrue();
|
|
35
|
+
});
|
|
36
|
+
it('| flags unknown severity / status', () => {
|
|
37
|
+
const f = validFinding();
|
|
38
|
+
f['severity'] = 'critical';
|
|
39
|
+
f['status'] = 'parked';
|
|
40
|
+
const r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(f);
|
|
41
|
+
expect(r.errors.some((e) => e.path === '$.severity' && e.code === 'unknown-enum')).toBeTrue();
|
|
42
|
+
expect(r.errors.some((e) => e.path === '$.status' && e.code === 'unknown-enum')).toBeTrue();
|
|
43
|
+
});
|
|
44
|
+
it('| flags out-of-range aiConfidence', () => {
|
|
45
|
+
const f = validFinding();
|
|
46
|
+
f['aiConfidence'] = 1.5;
|
|
47
|
+
let r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(f);
|
|
48
|
+
expect(r.errors.some((e) => e.path === '$.aiConfidence')).toBeTrue();
|
|
49
|
+
f['aiConfidence'] = -0.1;
|
|
50
|
+
r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(f);
|
|
51
|
+
expect(r.errors.some((e) => e.path === '$.aiConfidence')).toBeTrue();
|
|
52
|
+
});
|
|
53
|
+
it('| flags empty reproSteps', () => {
|
|
54
|
+
const f = validFinding();
|
|
55
|
+
f['reproSteps'] = [];
|
|
56
|
+
const r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(f);
|
|
57
|
+
expect(r.errors.some((e) => e.path === '$.reproSteps' && e.code === 'empty-array')).toBeTrue();
|
|
58
|
+
});
|
|
59
|
+
it('| flags invalid orientation', () => {
|
|
60
|
+
const f = validFinding();
|
|
61
|
+
f['orientation'] = 'sideways';
|
|
62
|
+
const r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(f);
|
|
63
|
+
expect(r.errors.some((e) => e.path === '$.orientation')).toBeTrue();
|
|
64
|
+
});
|
|
65
|
+
it('| flags non-ISO createdAt', () => {
|
|
66
|
+
const f = validFinding();
|
|
67
|
+
f['createdAt'] = '2026-06-11';
|
|
68
|
+
const r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(f);
|
|
69
|
+
expect(r.errors.some((e) => e.path === '$.createdAt' && e.code === 'invalid-format')).toBeTrue();
|
|
70
|
+
});
|
|
71
|
+
it('| accepts ISO createdAt', () => {
|
|
72
|
+
const f = validFinding();
|
|
73
|
+
f['createdAt'] = '2026-06-11T01:00:00.000Z';
|
|
74
|
+
const r = finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.validate(f);
|
|
75
|
+
expect(r.ok).toBeTrue();
|
|
76
|
+
});
|
|
77
|
+
describe('| canTransition', () => {
|
|
78
|
+
it('| open → inProgress allowed; open → verified denied', () => {
|
|
79
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open, finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.inProgress)).toBeTrue();
|
|
80
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open, finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.verified)).toBeFalse();
|
|
81
|
+
});
|
|
82
|
+
it('| inProgress → fixed → readyForReAudit → verified is the happy path', () => {
|
|
83
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.inProgress, finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.fixed)).toBeTrue();
|
|
84
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.fixed, finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.readyForReAudit)).toBeTrue();
|
|
85
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.readyForReAudit, finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.verified)).toBeTrue();
|
|
86
|
+
});
|
|
87
|
+
it('| verified is terminal', () => {
|
|
88
|
+
const verified = finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.verified;
|
|
89
|
+
Object.values(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type).forEach((s) => {
|
|
90
|
+
if (s !== verified) {
|
|
91
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(verified, s)).toBeFalse();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
it('| ignored / acceptedRisk → reopened decision-reversal', () => {
|
|
96
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.ignored, finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.reopened)).toBeTrue();
|
|
97
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.acceptedRisk, finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.reopened)).toBeTrue();
|
|
98
|
+
});
|
|
99
|
+
it('| same-status transition is a no-op', () => {
|
|
100
|
+
expect(finding_validator_util_1.DyE2E_VQA_FindingValidator_Util.canTransition(finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open, finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open)).toBeTrue();
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe('DyE2E_VQA_FindingId_Util', () => {
|
|
105
|
+
it('| generates 001 if empty', () => {
|
|
106
|
+
expect(finding_id_util_1.DyE2E_VQA_FindingId_Util.nextId('organizer', 'tasks-modul', []))
|
|
107
|
+
.toBe('VQA-organizer-tasks-modul-001');
|
|
108
|
+
});
|
|
109
|
+
it('| picks max+1', () => {
|
|
110
|
+
expect(finding_id_util_1.DyE2E_VQA_FindingId_Util.nextId('organizer', 'tasks-modul', [
|
|
111
|
+
'VQA-organizer-tasks-modul-001',
|
|
112
|
+
'VQA-organizer-tasks-modul-005',
|
|
113
|
+
'VQA-organizer-tasks-modul-003',
|
|
114
|
+
])).toBe('VQA-organizer-tasks-modul-006');
|
|
115
|
+
});
|
|
116
|
+
it('| ignores other-feature ids', () => {
|
|
117
|
+
expect(finding_id_util_1.DyE2E_VQA_FindingId_Util.nextId('organizer', 'tasks-modul', [
|
|
118
|
+
'VQA-organizer-other-feature-099',
|
|
119
|
+
])).toBe('VQA-organizer-tasks-modul-001');
|
|
120
|
+
});
|
|
121
|
+
it('| throws on non-kebab slug', () => {
|
|
122
|
+
expect(() => finding_id_util_1.DyE2E_VQA_FindingId_Util.nextId('Organizer', 'x', [])).toThrowError();
|
|
123
|
+
expect(() => finding_id_util_1.DyE2E_VQA_FindingId_Util.nextId('o', 'Tasks_Modul', [])).toThrowError();
|
|
124
|
+
});
|
|
125
|
+
it('| parses back', () => {
|
|
126
|
+
const p = finding_id_util_1.DyE2E_VQA_FindingId_Util.parse('VQA-organizer-tasks-modul-042');
|
|
127
|
+
expect(p).not.toBeNull();
|
|
128
|
+
expect(p.projectSlug).toBe('organizer');
|
|
129
|
+
// featureSlug may consume hyphens — parse picks shortest-feature; we just assert parsing succeeds
|
|
130
|
+
expect(p.seq).toBe(42);
|
|
131
|
+
});
|
|
132
|
+
it('| returns null on malformed', () => {
|
|
133
|
+
expect(finding_id_util_1.DyE2E_VQA_FindingId_Util.parse('TASK-001')).toBeNull();
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=finding-validator.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-validator.spec.js","sourceRoot":"","sources":["../../../src/_modules/vqa/finding-validator.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DyE2E_VQA_FeatureManifest_Interface } from '../_models/interfaces/feature-manifest.interface';
|
|
2
|
+
/**
|
|
3
|
+
* `DyE2E_VQA_AIAgentReadme_Template` — generálja a `review-bundles/<id>/<run>/README.md`-t,
|
|
4
|
+
* ami az AI-agent (Claude Code vagy más LLM) számára a review-instrukció + a finding-/
|
|
5
|
+
* backlog-entry-schema. **Spec §10 14 audit-kérdés + §11 13 feedback-típus + §12 finding +
|
|
6
|
+
* §13 report-szempontok beágyazva.**
|
|
7
|
+
*
|
|
8
|
+
* **scope-LOCK**: a bedrock-tooling-tól ez az utolsó artifact — az AI agent EXTERNAL,
|
|
9
|
+
* itt találja meg a review-rubric-ot, a schema-t, és az elvárt finding-formátumot.
|
|
10
|
+
*/
|
|
11
|
+
export declare class DyE2E_VQA_AIAgentReadme_Template {
|
|
12
|
+
static render(manifest: DyE2E_VQA_FeatureManifest_Interface, runId: string, bundleStats: {
|
|
13
|
+
stateCount: number;
|
|
14
|
+
viewportCount: number;
|
|
15
|
+
screenshotCount: number;
|
|
16
|
+
hasComparison: boolean;
|
|
17
|
+
}): string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ai-agent-readme.template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-agent-readme.template.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/ai-agent-readme.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AAIvG;;;;;;;;GAQG;AACH,qBAAa,gCAAgC;IAE3C,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,mCAAmC,EAC7C,KAAK,EAAE,MAAM,EACb,WAAW,EAAE;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;KACxB,GACA,MAAM;CAiKV"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyE2E_VQA_AIAgentReadme_Template = void 0;
|
|
4
|
+
const finding_severity_enum_1 = require("../_enums/finding-severity.enum");
|
|
5
|
+
const finding_status_enum_1 = require("../_enums/finding-status.enum");
|
|
6
|
+
/**
|
|
7
|
+
* `DyE2E_VQA_AIAgentReadme_Template` — generálja a `review-bundles/<id>/<run>/README.md`-t,
|
|
8
|
+
* ami az AI-agent (Claude Code vagy más LLM) számára a review-instrukció + a finding-/
|
|
9
|
+
* backlog-entry-schema. **Spec §10 14 audit-kérdés + §11 13 feedback-típus + §12 finding +
|
|
10
|
+
* §13 report-szempontok beágyazva.**
|
|
11
|
+
*
|
|
12
|
+
* **scope-LOCK**: a bedrock-tooling-tól ez az utolsó artifact — az AI agent EXTERNAL,
|
|
13
|
+
* itt találja meg a review-rubric-ot, a schema-t, és az elvárt finding-formátumot.
|
|
14
|
+
*/
|
|
15
|
+
class DyE2E_VQA_AIAgentReadme_Template {
|
|
16
|
+
static render(manifest, runId, bundleStats) {
|
|
17
|
+
return `# AI-agent review-instrukció — \`${manifest.featureName}\` (\`${manifest.featureId}\`)
|
|
18
|
+
|
|
19
|
+
> **Run-ID:** \`${runId}\`
|
|
20
|
+
> **Generator:** \`@futdevpro/dynamo-e2e\` — \`DyE2E_VQA_ReviewBundle_Generator\`
|
|
21
|
+
> **Bundle-stats:** ${bundleStats.stateCount} állapot × ${bundleStats.viewportCount} viewport
|
|
22
|
+
> = ${bundleStats.screenshotCount} screenshot; comparison: ${bundleStats.hasComparison ? '✓ van' : '✗ nincs'}
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Mit kell tenned (AI agent)
|
|
27
|
+
|
|
28
|
+
1. **Olvasd át a manifest-et** (\`manifest.json\`) — feature-cél, állapotok, viewportok, critical-element-ek.
|
|
29
|
+
2. **Tekintsd át a \`summary.md\`-t** — feature-state-viewport tábla a bundle szerkezetével.
|
|
30
|
+
3. **Per (állapot × viewport)** menj végig:
|
|
31
|
+
- \`screenshots/<stateId>/<viewport>-full.png\` — full-page kép
|
|
32
|
+
- \`screenshots/<stateId>/<viewport>-fold.png\` — above-fold (viewport-only)
|
|
33
|
+
- \`crops/<stateId>/<viewport>/<region>.png\` — region-crop-ok (modal, primary-cta, form, error)
|
|
34
|
+
- \`dom-snapshots/<stateId>/<viewport>.json\` — DOM-metrikák
|
|
35
|
+
- \`evidence/<stateId>/<viewport>.json\` — 16 DOM-detektor strukturált bizonyíték
|
|
36
|
+
- \`a11y/<stateId>/<viewport>.json\` — axe-core a11y scan
|
|
37
|
+
4. **QA-rubric szerint** értékeld a 14 audit-kérdést (lásd lent).
|
|
38
|
+
5. **Finding-eket írj** a \`findings.md\`-be a megadott schema szerint (lásd lent).
|
|
39
|
+
6. **Ne dönts pixelpontosan** — emberi QA-szemlélettel ítélj.
|
|
40
|
+
|
|
41
|
+
${bundleStats.hasComparison ? `
|
|
42
|
+
|
|
43
|
+
## Re-audit eset
|
|
44
|
+
|
|
45
|
+
A \`comparison/\` mappa tartalmazza a before/after diff-eket. Olvasd a \`comparison/README.md\`-t,
|
|
46
|
+
és minden \`finding-refs.json\`-ban felsorolt finding-re dönts:
|
|
47
|
+
- **verified** — a probléma megszűnt
|
|
48
|
+
- **reopened** — a probléma visszatért
|
|
49
|
+
- **partial** — részlegesen javult (státusz: \`in-progress\`)
|
|
50
|
+
|
|
51
|
+
Új problémát talál a re-audit során? Új finding-et írj (\`findingId\` = következő szabad).
|
|
52
|
+
` : ''}
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## QA rubric — 14 audit-kérdés (spec §10)
|
|
57
|
+
|
|
58
|
+
Minden (állapot × viewport) párra add választ:
|
|
59
|
+
|
|
60
|
+
1. **A felület használható ebben az állapotban?**
|
|
61
|
+
2. **Látható és érthető a fő művelet?**
|
|
62
|
+
3. **Egyértelmű, hogy a user mit tud most csinálni?**
|
|
63
|
+
4. **Hiba esetén világos, mi történt?**
|
|
64
|
+
5. **Hiba esetén világos, hogyan lehet javítani?**
|
|
65
|
+
6. **Nincs-e dupla vagy zavaró scroll?** (lásd \`nested-scroll\`, \`scrollbar-count\` evidence)
|
|
66
|
+
7. **Nincs-e levágott tartalom?** (lásd \`overflow-clipping\`, \`truncated-text\` evidence)
|
|
67
|
+
8. **Nincs-e takart gomb vagy input?** (lásd \`occluded-target\`, \`sticky-occludes\` evidence)
|
|
68
|
+
9. **Olvasható-e a szöveg?** (lásd \`unreadable-error\` evidence)
|
|
69
|
+
10. **Megfelelő-e a vizuális hierarchia?**
|
|
70
|
+
11. **Nem esett-e szét a layout?** (lásd \`form-field-break\` evidence)
|
|
71
|
+
12. **A modal vagy popup kezelhető-e kis képernyőn?** (lásd \`modal-viewport-fit\` evidence)
|
|
72
|
+
13. **A feedback elég konkrét-e?**
|
|
73
|
+
14. **A sikeres állapot tényleg sikeresnek érződik-e?** / **Az üres állapot ad-e következő lépést?**
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Feedback-típusok (spec §11)
|
|
78
|
+
|
|
79
|
+
Nézz arra, hogy az állapot megfelelő visszajelzést ad-e:
|
|
80
|
+
|
|
81
|
+
\`loading\` · \`fieldValidation\` · \`formValidation\` · \`backendError\` · \`networkError\` ·
|
|
82
|
+
\`permissionError\` · \`emptyState\` · \`successState\` · \`warning\` · \`confirmation\` ·
|
|
83
|
+
\`retryOption\` · \`destructiveConfirm\` · \`partialSuccess\`
|
|
84
|
+
|
|
85
|
+
Akkor jelez problémát az audit, ha a user **nem tudná megérteni**: mi történt, mi a következő lépés,
|
|
86
|
+
vagy mit kell javítania.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## DOM-evidence detektorok (spec §9)
|
|
91
|
+
|
|
92
|
+
Az \`evidence/<stateId>/<viewport>.json\`-ban 16 detektor strukturált eredménye van. **A
|
|
93
|
+
\`severityHint\` AJÁNLÁS — Te döntesz.** A \`suggestedRegions\` mutatja a fókusz-zónákat.
|
|
94
|
+
|
|
95
|
+
| Detektor | Mit nézz |
|
|
96
|
+
|---|---|
|
|
97
|
+
| \`nested-scroll\` | body + modal egyidejű scroll? |
|
|
98
|
+
| \`overflow-clipping\` | clip-path levágott tartalom? |
|
|
99
|
+
| \`viewport-off-cta\` | primary CTA fold alatt? |
|
|
100
|
+
| \`occluded-target\` | kattintható elem takarásban? |
|
|
101
|
+
| \`sticky-occludes\` | sticky/fixed elem takar? |
|
|
102
|
+
| \`small-touch-target\` | < 44×44 px touch target? |
|
|
103
|
+
| \`truncated-text\` | ellipsis-elment szöveg? |
|
|
104
|
+
| \`table-overflow\` | táblázat túl széles? |
|
|
105
|
+
| \`modal-viewport-fit\` | modal > viewport? |
|
|
106
|
+
| \`scrollbar-count\` | > 1 scrollbar? |
|
|
107
|
+
| \`focus-loss\` | fókusz body-ra esett? |
|
|
108
|
+
| \`hidden-error\` | aria-invalid + nincs látható error? |
|
|
109
|
+
| \`unreadable-error\` | error < 12px / kontraszt? |
|
|
110
|
+
| \`ambiguous-interactive\` | onclick cursor:pointer NÉLKÜL? |
|
|
111
|
+
| \`form-field-break\` | input kilóg a formból? |
|
|
112
|
+
| \`vertical-space-shortage\` | landscape + CTA tight? |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Severity (spec §12)
|
|
117
|
+
|
|
118
|
+
| Szint | Mikor |
|
|
119
|
+
|---|---|
|
|
120
|
+
| \`${finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.blocker}\` | A user NEM tudja befejezni a flow-t. |
|
|
121
|
+
| \`${finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.high}\` | Fő CTA takarásban, modal használhatatlan, hibaüzenet nem látható. |
|
|
122
|
+
| \`${finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.medium}\` | Layout zavaró, de a flow használható. |
|
|
123
|
+
| \`${finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.low}\` | Kisebb vizuális inkonzisztencia. |
|
|
124
|
+
| \`${finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.informational}\` | Fejlesztési javaslat / UX-észrevétel. |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Finding írás — schema
|
|
129
|
+
|
|
130
|
+
A finding-eket írd a \`findings.md\` (markdown) ÉS \`findings.json\` (validálható) fájlokba.
|
|
131
|
+
**Validátor:** \`DyE2E_VQA_FindingValidator_Util\` ellenőrzi. Schema:
|
|
132
|
+
|
|
133
|
+
\`\`\`jsonc
|
|
134
|
+
{
|
|
135
|
+
"findingId": "VQA-<projekt-slug>-${manifest.featureId}-NNN", // 001-tól, padding 3
|
|
136
|
+
"featureId": "${manifest.featureId}",
|
|
137
|
+
"stateId": "<manifest-state-id>",
|
|
138
|
+
"viewport": "<manifest-viewport-key>",
|
|
139
|
+
"orientation": "portrait" | "landscape", // opcionális
|
|
140
|
+
"screenshotRef": "screenshots/<stateId>/<viewport>-full.png", // bundle-relative
|
|
141
|
+
"domSnapshotRef": "dom-snapshots/<stateId>/<viewport>.json", // opcionális
|
|
142
|
+
"additionalEvidenceRefs": [], // opcionális extra-utak
|
|
143
|
+
"description": "<észlelt probléma — Te írod>",
|
|
144
|
+
"expectedBehavior": "<mit várnánk helyette — Te írod>",
|
|
145
|
+
"severity": "${finding_severity_enum_1.DyE2E_VQA_FindingSeverity_Type.blocker}" | "high" | "medium" | "low" | "informational",
|
|
146
|
+
"status": "${finding_status_enum_1.DyE2E_VQA_FindingStatus_Type.open}", // új finding kezdő-státusza
|
|
147
|
+
"reproSteps": ["<step1>", "<step2>", ...], // legalább 1
|
|
148
|
+
"suggestedFix": "<opcionális javaslat>",
|
|
149
|
+
"aiConfidence": 0.0..1.0,
|
|
150
|
+
"detectorEvidenceRefs": ["nested-scroll"], // opcionális detektor-link
|
|
151
|
+
"createdInRunId": "${runId}",
|
|
152
|
+
"createdAt": "<ISO-8601 timestamp>",
|
|
153
|
+
"acceptanceCriteria": ["<criterion1>", ...], // opcionális
|
|
154
|
+
"reAuditInstruction": "<mit nézz re-audit-kor>" // opcionális, blocker/high esetén kötelező
|
|
155
|
+
}
|
|
156
|
+
\`\`\`
|
|
157
|
+
|
|
158
|
+
**Sorszámozás:** ha a bundle-en kívül van projekt-szintű BACKLOG.md, ott találod a meglévő ID-ket;
|
|
159
|
+
különben \`001\`-től indulj.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Nem célok (spec §20)
|
|
164
|
+
|
|
165
|
+
- ❌ Pixelpontos design approval
|
|
166
|
+
- ❌ Minden lehetséges állapotkombináció kimerítő futtatása
|
|
167
|
+
- ❌ Általános ízlésalapú designkritika
|
|
168
|
+
- ❌ Funkcionális üzleti logika teljes helyettesítése
|
|
169
|
+
|
|
170
|
+
A cél **gyakorlati vizuális QA**: olyan problémák, amiket emberi tesztelő észrevenne.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
*Bundle generated by \`@futdevpro/dynamo-e2e/vqa\` \`DyE2E_VQA_ReviewBundle_Generator\`.*
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.DyE2E_VQA_AIAgentReadme_Template = DyE2E_VQA_AIAgentReadme_Template;
|
|
179
|
+
//# sourceMappingURL=ai-agent-readme.template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-agent-readme.template.js","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/ai-agent-readme.template.ts"],"names":[],"mappings":";;;AACA,2EAAiF;AACjF,uEAA6E;AAE7E;;;;;;;;GAQG;AACH,MAAa,gCAAgC;IAE3C,MAAM,CAAC,MAAM,CACX,QAA6C,EAC7C,KAAa,EACb,WAKC;QAED,OAAO,oCAAoC,QAAQ,CAAC,WAAW,SAAS,QAAQ,CAAC,SAAS;;kBAE5E,KAAK;;sBAED,WAAW,CAAC,UAAU,cAAc,WAAW,CAAC,aAAa;MAC7E,WAAW,CAAC,eAAe,4BAA4B,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;;;;;EAmB1G,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;CAW7B,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoEA,sDAA8B,CAAC,OAAO;MACtC,sDAA8B,CAAC,IAAI;MACnC,sDAA8B,CAAC,MAAM;MACrC,sDAA8B,CAAC,GAAG;MAClC,sDAA8B,CAAC,aAAa;;;;;;;;;;;qCAWb,QAAQ,CAAC,SAAS;kBACrC,QAAQ,CAAC,SAAS;;;;;;;;;iBASnB,sDAA8B,CAAC,OAAO;eACxC,kDAA4B,CAAC,IAAI;;;;;uBAKzB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;CAwB3B,CAAC;IACA,CAAC;CACF;AA5KD,4EA4KC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DyE2E_VQA_FeatureManifest_Interface } from '../_models/interfaces/feature-manifest.interface';
|
|
2
|
+
/**
|
|
3
|
+
* `DyE2E_VQA_BundleSummary_Template` — `summary.md` rendering a feature-state-viewport
|
|
4
|
+
* táblával, amit mind ember, mind AI agent áttekint.
|
|
5
|
+
*/
|
|
6
|
+
export declare class DyE2E_VQA_BundleSummary_Template {
|
|
7
|
+
static render(manifest: DyE2E_VQA_FeatureManifest_Interface, runId: string): string;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=bundle-summary.template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-summary.template.d.ts","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/bundle-summary.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,kDAAkD,CAAC;AAEvG;;;GAGG;AACH,qBAAa,gCAAgC;IAE3C,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,mCAAmC,EAC7C,KAAK,EAAE,MAAM,GACZ,MAAM;CAiEV"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyE2E_VQA_BundleSummary_Template = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* `DyE2E_VQA_BundleSummary_Template` — `summary.md` rendering a feature-state-viewport
|
|
6
|
+
* táblával, amit mind ember, mind AI agent áttekint.
|
|
7
|
+
*/
|
|
8
|
+
class DyE2E_VQA_BundleSummary_Template {
|
|
9
|
+
static render(manifest, runId) {
|
|
10
|
+
const orientations = manifest.orientations && manifest.orientations.length > 0
|
|
11
|
+
? manifest.orientations
|
|
12
|
+
: ['portrait'];
|
|
13
|
+
const matrixHeader = ['State / Viewport',
|
|
14
|
+
...manifest.viewports.flatMap((v) => orientations.map((o) => `${v.key} / ${o}`)),
|
|
15
|
+
].join(' | ');
|
|
16
|
+
const matrixSep = ['---',
|
|
17
|
+
...manifest.viewports.flatMap(() => orientations.map(() => '---')),
|
|
18
|
+
].join(' | ');
|
|
19
|
+
const matrixRows = manifest.states.map((s) => {
|
|
20
|
+
const row = [`\`${s.stateId}\``];
|
|
21
|
+
for (const _v of manifest.viewports) {
|
|
22
|
+
for (const _o of orientations) {
|
|
23
|
+
row.push('✓');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return row.join(' | ');
|
|
27
|
+
});
|
|
28
|
+
return `# Review-bundle summary — \`${manifest.featureName}\`
|
|
29
|
+
|
|
30
|
+
- **featureId:** \`${manifest.featureId}\`
|
|
31
|
+
- **runId:** \`${runId}\`
|
|
32
|
+
- **route:** \`${manifest.route}\`
|
|
33
|
+
- **userRole:** ${manifest.userRole ? `\`${manifest.userRole}\`` : '*nincs*'}
|
|
34
|
+
- **states:** ${manifest.states.length}
|
|
35
|
+
- **viewports:** ${manifest.viewports.length} (\`${manifest.viewports.map((v) => v.key).join(', ')}\`)
|
|
36
|
+
- **orientations:** \`${orientations.join(', ')}\`
|
|
37
|
+
- **criticalElements:** ${manifest.criticalElements.length}
|
|
38
|
+
|
|
39
|
+
${manifest.description ? `\n## Leírás\n\n${manifest.description}\n` : ''}
|
|
40
|
+
|
|
41
|
+
## State × Viewport mátrix
|
|
42
|
+
|
|
43
|
+
A ✓ jelzi: a (state × viewport × orientation) capture-elve, screenshot + DOM-snapshot
|
|
44
|
+
+ evidence + a11y a megfelelő mappákban.
|
|
45
|
+
|
|
46
|
+
| ${matrixHeader} |
|
|
47
|
+
| ${matrixSep} |
|
|
48
|
+
${matrixRows.map((r) => `| ${r} |`).join('\n')}
|
|
49
|
+
|
|
50
|
+
## Critical-element-ek
|
|
51
|
+
|
|
52
|
+
${manifest.criticalElements.map((c) => `- **${c.key}** (\`${c.regionType}\`): \`${c.selector}\`${c.label ? ` — ${c.label}` : ''}`).join('\n')}
|
|
53
|
+
|
|
54
|
+
${manifest.expectedFeedback && manifest.expectedFeedback.length > 0 ? `
|
|
55
|
+
## Várt visszajelzések (AI-hint)
|
|
56
|
+
|
|
57
|
+
${manifest.expectedFeedback.map((ef) => `- **${ef.stateId}** / \`${ef.feedbackType}\`: ${ef.expectation}`).join('\n')}
|
|
58
|
+
` : ''}
|
|
59
|
+
|
|
60
|
+
${manifest.contextNotes && manifest.contextNotes.length > 0 ? `
|
|
61
|
+
## Kontextus
|
|
62
|
+
|
|
63
|
+
${manifest.contextNotes.map((n) => `- ${n}`).join('\n')}
|
|
64
|
+
` : ''}
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
*A részletes review-instrukció az \`README.md\`-ben.*
|
|
69
|
+
`;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.DyE2E_VQA_BundleSummary_Template = DyE2E_VQA_BundleSummary_Template;
|
|
73
|
+
//# sourceMappingURL=bundle-summary.template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-summary.template.js","sourceRoot":"","sources":["../../../../src/_modules/vqa/generators/bundle-summary.template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DyE2E_VQA_FeatureManifest_Interface } from '../_models/interfaces/feature-manifest.interface';
|
|
2
|
+
/**
|
|
3
|
+
* `DyE2E_VQA_CaptureSpec_Generator` — manifest → executable Playwright spec emit (MP-B).
|
|
4
|
+
*
|
|
5
|
+
* A generált `.spec.ts` minden `viewport × state` kombinációra:
|
|
6
|
+
* 1. Beállítja a viewport-méretet + orientációt
|
|
7
|
+
* 2. Végrehajtja a manifest-szintű `flowSteps`-et
|
|
8
|
+
* 3. Végrehajtja a state-szintű `prepareFlow`-t
|
|
9
|
+
* 4. `page.screenshot()` full-page + viewport-only
|
|
10
|
+
* 5. DOM-snapshot szerializáció
|
|
11
|
+
* 6. axe-core a11y scan
|
|
12
|
+
* 7. 16 DOM-evidence-detektor futtatása
|
|
13
|
+
* 8. Artifact-okat a `OUT_DIR`-be ír
|
|
14
|
+
*
|
|
15
|
+
* **scope-LOCK**: NEM tartalmaz AI-call-ot. A `OUT_DIR` lesz a review-bundle alapja.
|
|
16
|
+
*
|
|
17
|
+
* A generált spec environment-driven:
|
|
18
|
+
* - `VQA_OUT_DIR`: output mappa (default: `./review-bundles/<featureId>/run-${Date.now()}`)
|
|
19
|
+
* - `VQA_BASE_URL`: target base-URL (default: `http://localhost:4200`)
|
|
20
|
+
* - `VQA_RUN_ID`: stable run-azonosító
|
|
21
|
+
*/
|
|
22
|
+
export interface DyE2E_VQA_CaptureSpec_Options {
|
|
23
|
+
/** Header-comment (autogen, do-not-edit). */
|
|
24
|
+
headerComment?: string;
|
|
25
|
+
/** Manifest-relative path-ek, ha kell. */
|
|
26
|
+
manifestImportPath?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare class DyE2E_VQA_CaptureSpec_Generator {
|
|
29
|
+
static emit(manifest: DyE2E_VQA_FeatureManifest_Interface, options?: DyE2E_VQA_CaptureSpec_Options): string;
|
|
30
|
+
private static emitStateTest;
|
|
31
|
+
private static emitFlowSteps;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=capture-spec.generator.d.ts.map
|