agentic-qe 1.4.4 → 1.5.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/.claude/agents/qe-api-contract-validator.md +133 -27
- package/.claude/agents/qe-api-contract-validator.md.backup +1148 -0
- package/.claude/agents/qe-api-contract-validator.md.backup-20251107-134747 +1148 -0
- package/.claude/agents/qe-api-contract-validator.md.backup-phase2-20251107-140039 +1123 -0
- package/.claude/agents/qe-chaos-engineer.md +142 -23
- package/.claude/agents/qe-chaos-engineer.md.backup +808 -0
- package/.claude/agents/qe-chaos-engineer.md.backup-20251107-134747 +808 -0
- package/.claude/agents/qe-chaos-engineer.md.backup-phase2-20251107-140039 +787 -0
- package/.claude/agents/qe-code-complexity.md +111 -23
- package/.claude/agents/qe-code-complexity.md.backup +291 -0
- package/.claude/agents/qe-code-complexity.md.backup-20251107-134747 +291 -0
- package/.claude/agents/qe-code-complexity.md.backup-phase2-20251107-140039 +286 -0
- package/.claude/agents/qe-coverage-analyzer.md +306 -30
- package/.claude/agents/qe-coverage-analyzer.md.backup +467 -0
- package/.claude/agents/qe-coverage-analyzer.md.backup-20251107-134747 +467 -0
- package/.claude/agents/qe-coverage-analyzer.md.backup-phase2-20251107-140039 +438 -0
- package/.claude/agents/qe-deployment-readiness.md +84 -28
- package/.claude/agents/qe-deployment-readiness.md.backup +1166 -0
- package/.claude/agents/qe-deployment-readiness.md.backup-20251107-134747 +1166 -0
- package/.claude/agents/qe-deployment-readiness.md.backup-phase2-20251107-140039 +1140 -0
- package/.claude/agents/qe-flaky-test-hunter.md +277 -35
- package/.claude/agents/qe-flaky-test-hunter.md.backup +1195 -0
- package/.claude/agents/qe-flaky-test-hunter.md.backup-20251107-134747 +1195 -0
- package/.claude/agents/qe-flaky-test-hunter.md.backup-phase2-20251107-140039 +1162 -0
- package/.claude/agents/qe-fleet-commander.md +126 -23
- package/.claude/agents/qe-fleet-commander.md.backup +718 -0
- package/.claude/agents/qe-fleet-commander.md.backup-20251107-134747 +718 -0
- package/.claude/agents/qe-fleet-commander.md.backup-phase2-20251107-140039 +697 -0
- package/.claude/agents/qe-performance-tester.md +314 -57
- package/.claude/agents/qe-performance-tester.md.backup +428 -0
- package/.claude/agents/qe-performance-tester.md.backup-20251107-134747 +428 -0
- package/.claude/agents/qe-performance-tester.md.backup-phase2-20251107-140039 +372 -0
- package/.claude/agents/qe-production-intelligence.md +126 -27
- package/.claude/agents/qe-production-intelligence.md.backup +1219 -0
- package/.claude/agents/qe-production-intelligence.md.backup-20251107-134747 +1219 -0
- package/.claude/agents/qe-production-intelligence.md.backup-phase2-20251107-140039 +1194 -0
- package/.claude/agents/qe-quality-analyzer.md +127 -32
- package/.claude/agents/qe-quality-analyzer.md.backup +425 -0
- package/.claude/agents/qe-quality-analyzer.md.backup-20251107-134747 +425 -0
- package/.claude/agents/qe-quality-analyzer.md.backup-phase2-20251107-140039 +394 -0
- package/.claude/agents/qe-quality-gate.md +148 -33
- package/.claude/agents/qe-quality-gate.md.backup +446 -0
- package/.claude/agents/qe-quality-gate.md.backup-20251107-134747 +446 -0
- package/.claude/agents/qe-quality-gate.md.backup-phase2-20251107-140039 +415 -0
- package/.claude/agents/qe-regression-risk-analyzer.md +78 -27
- package/.claude/agents/qe-regression-risk-analyzer.md.backup +1009 -0
- package/.claude/agents/qe-regression-risk-analyzer.md.backup-20251107-134747 +1009 -0
- package/.claude/agents/qe-regression-risk-analyzer.md.backup-phase2-20251107-140039 +984 -0
- package/.claude/agents/qe-requirements-validator.md +131 -27
- package/.claude/agents/qe-requirements-validator.md.backup +748 -0
- package/.claude/agents/qe-requirements-validator.md.backup-20251107-134747 +748 -0
- package/.claude/agents/qe-requirements-validator.md.backup-phase2-20251107-140039 +723 -0
- package/.claude/agents/qe-security-scanner.md +137 -62
- package/.claude/agents/qe-security-scanner.md.backup +634 -0
- package/.claude/agents/qe-security-scanner.md.backup-20251107-134747 +634 -0
- package/.claude/agents/qe-security-scanner.md.backup-phase2-20251107-140039 +573 -0
- package/.claude/agents/qe-test-data-architect.md +129 -26
- package/.claude/agents/qe-test-data-architect.md.backup +1064 -0
- package/.claude/agents/qe-test-data-architect.md.backup-20251107-134747 +1064 -0
- package/.claude/agents/qe-test-data-architect.md.backup-phase2-20251107-140039 +1040 -0
- package/.claude/agents/qe-test-executor.md +165 -21
- package/.claude/agents/qe-test-executor.md.backup +389 -0
- package/.claude/agents/qe-test-executor.md.backup-20251107-134747 +389 -0
- package/.claude/agents/qe-test-executor.md.backup-phase2-20251107-140039 +369 -0
- package/.claude/agents/qe-test-generator.md +379 -34
- package/.claude/agents/qe-test-generator.md.backup +997 -0
- package/.claude/agents/qe-test-generator.md.backup-20251107-134747 +997 -0
- package/.claude/agents/qe-visual-tester.md +236 -23
- package/.claude/agents/qe-visual-tester.md.backup +777 -0
- package/.claude/agents/qe-visual-tester.md.backup-20251107-134747 +777 -0
- package/.claude/agents/qe-visual-tester.md.backup-phase2-20251107-140039 +756 -0
- package/.claude/agents/subagents/qe-code-reviewer.md +59 -0
- package/.claude/agents/subagents/qe-data-generator.md +60 -0
- package/.claude/agents/subagents/qe-integration-tester.md +77 -0
- package/.claude/agents/subagents/qe-performance-validator.md +55 -0
- package/.claude/agents/subagents/qe-security-auditor.md +51 -0
- package/.claude/agents/subagents/qe-test-implementer.md +371 -0
- package/.claude/agents/subagents/qe-test-refactorer.md +510 -0
- package/.claude/agents/subagents/qe-test-writer.md +603 -0
- package/.claude/skills/accessibility-testing/SKILL.md +764 -777
- package/.claude/skills/agentic-quality-engineering/SKILL.md +0 -6
- package/.claude/skills/api-testing-patterns/SKILL.md +0 -12
- package/.claude/skills/bug-reporting-excellence/SKILL.md +0 -6
- package/.claude/skills/chaos-engineering-resilience/SKILL.md +0 -6
- package/.claude/skills/code-review-quality/SKILL.md +0 -6
- package/.claude/skills/compatibility-testing/SKILL.md +0 -6
- package/.claude/skills/compliance-testing/SKILL.md +0 -6
- package/.claude/skills/consultancy-practices/SKILL.md +0 -6
- package/.claude/skills/context-driven-testing/SKILL.md +0 -6
- package/.claude/skills/contract-testing/SKILL.md +0 -6
- package/.claude/skills/database-testing/SKILL.md +0 -6
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +0 -6
- package/.claude/skills/holistic-testing-pact/SKILL.md +0 -6
- package/.claude/skills/localization-testing/SKILL.md +0 -6
- package/.claude/skills/mobile-testing/SKILL.md +535 -548
- package/.claude/skills/mutation-testing/SKILL.md +0 -6
- package/.claude/skills/performance-testing/SKILL.md +0 -6
- package/.claude/skills/quality-metrics/SKILL.md +0 -12
- package/.claude/skills/refactoring-patterns/SKILL.md +0 -6
- package/.claude/skills/regression-testing/SKILL.md +1033 -1045
- package/.claude/skills/risk-based-testing/SKILL.md +0 -12
- package/.claude/skills/security-testing/SKILL.md +0 -6
- package/.claude/skills/shift-left-testing/SKILL.md +529 -535
- package/.claude/skills/shift-right-testing/SKILL.md +585 -591
- package/.claude/skills/tdd-london-chicago/SKILL.md +0 -6
- package/.claude/skills/technical-writing/SKILL.md +0 -6
- package/.claude/skills/test-automation-strategy/SKILL.md +0 -6
- package/.claude/skills/test-data-management/SKILL.md +1054 -1067
- package/.claude/skills/test-design-techniques/SKILL.md +0 -6
- package/.claude/skills/test-environment-management/SKILL.md +0 -6
- package/.claude/skills/test-reporting-analytics/SKILL.md +0 -6
- package/.claude/skills/visual-testing-advanced/SKILL.md +0 -6
- package/.claude/skills/xp-practices/SKILL.md +0 -6
- package/CHANGELOG.md +426 -5
- package/README.md +24 -19
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +97 -44
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/mcp/handlers/coordination/index.d.ts +14 -14
- package/dist/mcp/handlers/coordination/index.d.ts.map +1 -1
- package/dist/mcp/handlers/coordination/index.js +14 -14
- package/dist/mcp/handlers/coordination/index.js.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.js +39 -10
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
- package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts +63 -0
- package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts.map +1 -0
- package/dist/mcp/handlers/phase3/Phase3DomainTools.js +885 -0
- package/dist/mcp/handlers/phase3/Phase3DomainTools.js.map +1 -0
- package/dist/mcp/handlers/phase3/index.d.ts +6 -0
- package/dist/mcp/handlers/phase3/index.d.ts.map +1 -0
- package/dist/mcp/handlers/phase3/index.js +10 -0
- package/dist/mcp/handlers/phase3/index.js.map +1 -0
- package/dist/mcp/handlers/prediction/index.d.ts +10 -10
- package/dist/mcp/handlers/prediction/index.d.ts.map +1 -1
- package/dist/mcp/handlers/prediction/index.js +10 -10
- package/dist/mcp/handlers/prediction/index.js.map +1 -1
- package/dist/mcp/handlers/security/check-authz.d.ts +152 -0
- package/dist/mcp/handlers/security/check-authz.d.ts.map +1 -0
- package/dist/mcp/handlers/security/check-authz.js +434 -0
- package/dist/mcp/handlers/security/check-authz.js.map +1 -0
- package/dist/mcp/handlers/security/generate-report.d.ts +156 -0
- package/dist/mcp/handlers/security/generate-report.d.ts.map +1 -0
- package/dist/mcp/handlers/security/generate-report.js +469 -0
- package/dist/mcp/handlers/security/generate-report.js.map +1 -0
- package/dist/mcp/handlers/security/index.d.ts +80 -0
- package/dist/mcp/handlers/security/index.d.ts.map +1 -0
- package/dist/mcp/handlers/security/index.js +91 -0
- package/dist/mcp/handlers/security/index.js.map +1 -0
- package/dist/mcp/handlers/security/scan-comprehensive.d.ts +66 -0
- package/dist/mcp/handlers/security/scan-comprehensive.d.ts.map +1 -0
- package/dist/mcp/handlers/security/scan-comprehensive.js +296 -0
- package/dist/mcp/handlers/security/scan-comprehensive.js.map +1 -0
- package/dist/mcp/handlers/security/scan-dependencies.d.ts +148 -0
- package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +1 -0
- package/dist/mcp/handlers/security/scan-dependencies.js +354 -0
- package/dist/mcp/handlers/security/scan-dependencies.js.map +1 -0
- package/dist/mcp/handlers/security/validate-auth.d.ts +128 -0
- package/dist/mcp/handlers/security/validate-auth.d.ts.map +1 -0
- package/dist/mcp/handlers/security/validate-auth.js +294 -0
- package/dist/mcp/handlers/security/validate-auth.js.map +1 -0
- package/dist/mcp/handlers/test/generate-integration-tests.d.ts +95 -0
- package/dist/mcp/handlers/test/generate-integration-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/test/generate-integration-tests.js +286 -0
- package/dist/mcp/handlers/test/generate-integration-tests.js.map +1 -0
- package/dist/mcp/handlers/test/generate-unit-tests.d.ts +89 -0
- package/dist/mcp/handlers/test/generate-unit-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/test/generate-unit-tests.js +273 -0
- package/dist/mcp/handlers/test/generate-unit-tests.js.map +1 -0
- package/dist/mcp/handlers/test/optimize-test-suite.d.ts +97 -0
- package/dist/mcp/handlers/test/optimize-test-suite.d.ts.map +1 -0
- package/dist/mcp/handlers/test/optimize-test-suite.js +282 -0
- package/dist/mcp/handlers/test/optimize-test-suite.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +211 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/deprecated.d.ts +1390 -0
- package/dist/mcp/tools/deprecated.d.ts.map +1 -0
- package/dist/mcp/tools/deprecated.js +859 -0
- package/dist/mcp/tools/deprecated.js.map +1 -0
- package/dist/mcp/tools/qe/api-contract/index.d.ts +138 -0
- package/dist/mcp/tools/qe/api-contract/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/api-contract/index.js +572 -0
- package/dist/mcp/tools/qe/api-contract/index.js.map +1 -0
- package/dist/mcp/tools/qe/code-quality/analyze-complexity.d.ts +110 -0
- package/dist/mcp/tools/qe/code-quality/analyze-complexity.d.ts.map +1 -0
- package/dist/mcp/tools/qe/code-quality/analyze-complexity.js +381 -0
- package/dist/mcp/tools/qe/code-quality/analyze-complexity.js.map +1 -0
- package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.d.ts +115 -0
- package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.d.ts.map +1 -0
- package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.js +461 -0
- package/dist/mcp/tools/qe/code-quality/calculate-quality-metrics.js.map +1 -0
- package/dist/mcp/tools/qe/code-quality/index.d.ts +12 -0
- package/dist/mcp/tools/qe/code-quality/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/code-quality/index.js +30 -0
- package/dist/mcp/tools/qe/code-quality/index.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.d.ts +58 -0
- package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.js +172 -0
- package/dist/mcp/tools/qe/coverage/analyze-with-risk-scoring.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/calculate-trends.d.ts +73 -0
- package/dist/mcp/tools/qe/coverage/calculate-trends.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/calculate-trends.js +240 -0
- package/dist/mcp/tools/qe/coverage/calculate-trends.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/detect-gaps-ml.d.ts +38 -0
- package/dist/mcp/tools/qe/coverage/detect-gaps-ml.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/detect-gaps-ml.js +204 -0
- package/dist/mcp/tools/qe/coverage/detect-gaps-ml.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/index.d.ts +12 -0
- package/dist/mcp/tools/qe/coverage/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/index.js +23 -0
- package/dist/mcp/tools/qe/coverage/index.js.map +1 -0
- package/dist/mcp/tools/qe/coverage/recommend-tests.d.ts +46 -0
- package/dist/mcp/tools/qe/coverage/recommend-tests.d.ts.map +1 -0
- package/dist/mcp/tools/qe/coverage/recommend-tests.js +248 -0
- package/dist/mcp/tools/qe/coverage/recommend-tests.js.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.d.ts +179 -0
- package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.d.ts.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.js +554 -0
- package/dist/mcp/tools/qe/flaky-detection/analyze-patterns.js.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/detect-statistical.d.ts +172 -0
- package/dist/mcp/tools/qe/flaky-detection/detect-statistical.d.ts.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/detect-statistical.js +498 -0
- package/dist/mcp/tools/qe/flaky-detection/detect-statistical.js.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/index.d.ts +35 -0
- package/dist/mcp/tools/qe/flaky-detection/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/index.js +66 -0
- package/dist/mcp/tools/qe/flaky-detection/index.js.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.d.ts +159 -0
- package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.d.ts.map +1 -0
- package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.js +462 -0
- package/dist/mcp/tools/qe/flaky-detection/stabilize-auto.js.map +1 -0
- package/dist/mcp/tools/qe/fleet/index.d.ts +422 -0
- package/dist/mcp/tools/qe/fleet/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/fleet/index.js +652 -0
- package/dist/mcp/tools/qe/fleet/index.js.map +1 -0
- package/dist/mcp/tools/qe/performance/analyze-bottlenecks.d.ts +180 -0
- package/dist/mcp/tools/qe/performance/analyze-bottlenecks.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/analyze-bottlenecks.js +347 -0
- package/dist/mcp/tools/qe/performance/analyze-bottlenecks.js.map +1 -0
- package/dist/mcp/tools/qe/performance/generate-report.d.ts +146 -0
- package/dist/mcp/tools/qe/performance/generate-report.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/generate-report.js +354 -0
- package/dist/mcp/tools/qe/performance/generate-report.js.map +1 -0
- package/dist/mcp/tools/qe/performance/index.d.ts +13 -0
- package/dist/mcp/tools/qe/performance/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/index.js +24 -0
- package/dist/mcp/tools/qe/performance/index.js.map +1 -0
- package/dist/mcp/tools/qe/performance/monitor-realtime.d.ts +120 -0
- package/dist/mcp/tools/qe/performance/monitor-realtime.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/monitor-realtime.js +215 -0
- package/dist/mcp/tools/qe/performance/monitor-realtime.js.map +1 -0
- package/dist/mcp/tools/qe/performance/run-benchmark.d.ts +68 -0
- package/dist/mcp/tools/qe/performance/run-benchmark.d.ts.map +1 -0
- package/dist/mcp/tools/qe/performance/run-benchmark.js +120 -0
- package/dist/mcp/tools/qe/performance/run-benchmark.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.d.ts +239 -0
- package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.js +671 -0
- package/dist/mcp/tools/qe/quality-gates/assess-deployment-risk.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts +219 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js +732 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/generate-quality-report.d.ts +447 -0
- package/dist/mcp/tools/qe/quality-gates/generate-quality-report.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/generate-quality-report.js +551 -0
- package/dist/mcp/tools/qe/quality-gates/generate-quality-report.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/index.d.ts +40 -0
- package/dist/mcp/tools/qe/quality-gates/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/index.js +56 -0
- package/dist/mcp/tools/qe/quality-gates/index.js.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.d.ts +226 -0
- package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.d.ts.map +1 -0
- package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.js +603 -0
- package/dist/mcp/tools/qe/quality-gates/validate-quality-metrics.js.map +1 -0
- package/dist/mcp/tools/qe/regression/analyze-risk.d.ts +212 -0
- package/dist/mcp/tools/qe/regression/analyze-risk.d.ts.map +1 -0
- package/dist/mcp/tools/qe/regression/analyze-risk.js +617 -0
- package/dist/mcp/tools/qe/regression/analyze-risk.js.map +1 -0
- package/dist/mcp/tools/qe/regression/index.d.ts +36 -0
- package/dist/mcp/tools/qe/regression/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/regression/index.js +63 -0
- package/dist/mcp/tools/qe/regression/index.js.map +1 -0
- package/dist/mcp/tools/qe/regression/select-tests.d.ts +241 -0
- package/dist/mcp/tools/qe/regression/select-tests.d.ts.map +1 -0
- package/dist/mcp/tools/qe/regression/select-tests.js +601 -0
- package/dist/mcp/tools/qe/regression/select-tests.js.map +1 -0
- package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.d.ts +134 -0
- package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.d.ts.map +1 -0
- package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.js +737 -0
- package/dist/mcp/tools/qe/requirements/generate-bdd-scenarios.js.map +1 -0
- package/dist/mcp/tools/qe/requirements/index.d.ts +40 -0
- package/dist/mcp/tools/qe/requirements/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/requirements/index.js +84 -0
- package/dist/mcp/tools/qe/requirements/index.js.map +1 -0
- package/dist/mcp/tools/qe/requirements/validate-requirements.d.ts +196 -0
- package/dist/mcp/tools/qe/requirements/validate-requirements.d.ts.map +1 -0
- package/dist/mcp/tools/qe/requirements/validate-requirements.js +740 -0
- package/dist/mcp/tools/qe/requirements/validate-requirements.js.map +1 -0
- package/dist/mcp/tools/qe/security/detect-vulnerabilities.d.ts +300 -0
- package/dist/mcp/tools/qe/security/detect-vulnerabilities.d.ts.map +1 -0
- package/dist/mcp/tools/qe/security/detect-vulnerabilities.js +492 -0
- package/dist/mcp/tools/qe/security/detect-vulnerabilities.js.map +1 -0
- package/dist/mcp/tools/qe/security/index.d.ts +34 -0
- package/dist/mcp/tools/qe/security/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/security/index.js +44 -0
- package/dist/mcp/tools/qe/security/index.js.map +1 -0
- package/dist/mcp/tools/qe/security/scan-comprehensive.d.ts +240 -0
- package/dist/mcp/tools/qe/security/scan-comprehensive.d.ts.map +1 -0
- package/dist/mcp/tools/qe/security/scan-comprehensive.js +557 -0
- package/dist/mcp/tools/qe/security/scan-comprehensive.js.map +1 -0
- package/dist/mcp/tools/qe/security/validate-compliance.d.ts +299 -0
- package/dist/mcp/tools/qe/security/validate-compliance.d.ts.map +1 -0
- package/dist/mcp/tools/qe/security/validate-compliance.js +517 -0
- package/dist/mcp/tools/qe/security/validate-compliance.js.map +1 -0
- package/dist/mcp/tools/qe/shared/types.d.ts +840 -0
- package/dist/mcp/tools/qe/shared/types.d.ts.map +1 -0
- package/dist/mcp/tools/qe/shared/types.js +13 -0
- package/dist/mcp/tools/qe/shared/types.js.map +1 -0
- package/dist/mcp/tools/qe/test-data/analyze-schema.d.ts +264 -0
- package/dist/mcp/tools/qe/test-data/analyze-schema.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-data/analyze-schema.js +553 -0
- package/dist/mcp/tools/qe/test-data/analyze-schema.js.map +1 -0
- package/dist/mcp/tools/qe/test-data/generate-test-data.d.ts +167 -0
- package/dist/mcp/tools/qe/test-data/generate-test-data.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-data/generate-test-data.js +336 -0
- package/dist/mcp/tools/qe/test-data/generate-test-data.js.map +1 -0
- package/dist/mcp/tools/qe/test-data/index.d.ts +44 -0
- package/dist/mcp/tools/qe/test-data/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-data/index.js +90 -0
- package/dist/mcp/tools/qe/test-data/index.js.map +1 -0
- package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts +165 -0
- package/dist/mcp/tools/qe/test-data/mask-sensitive-data.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js +342 -0
- package/dist/mcp/tools/qe/test-data/mask-sensitive-data.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/analyze-test-quality.d.ts +144 -0
- package/dist/mcp/tools/qe/test-generation/analyze-test-quality.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/analyze-test-quality.js +432 -0
- package/dist/mcp/tools/qe/test-generation/analyze-test-quality.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/generate-integration-tests.d.ts +98 -0
- package/dist/mcp/tools/qe/test-generation/generate-integration-tests.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/generate-integration-tests.js +459 -0
- package/dist/mcp/tools/qe/test-generation/generate-integration-tests.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/generate-unit-tests.d.ts +83 -0
- package/dist/mcp/tools/qe/test-generation/generate-unit-tests.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/generate-unit-tests.js +483 -0
- package/dist/mcp/tools/qe/test-generation/generate-unit-tests.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/index.d.ts +56 -0
- package/dist/mcp/tools/qe/test-generation/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/index.js +97 -0
- package/dist/mcp/tools/qe/test-generation/index.js.map +1 -0
- package/dist/mcp/tools/qe/test-generation/optimize-test-suite.d.ts +124 -0
- package/dist/mcp/tools/qe/test-generation/optimize-test-suite.d.ts.map +1 -0
- package/dist/mcp/tools/qe/test-generation/optimize-test-suite.js +362 -0
- package/dist/mcp/tools/qe/test-generation/optimize-test-suite.js.map +1 -0
- package/dist/mcp/tools/qe/visual/compare-screenshots.d.ts +119 -0
- package/dist/mcp/tools/qe/visual/compare-screenshots.d.ts.map +1 -0
- package/dist/mcp/tools/qe/visual/compare-screenshots.js +280 -0
- package/dist/mcp/tools/qe/visual/compare-screenshots.js.map +1 -0
- package/dist/mcp/tools/qe/visual/detect-regression.d.ts +138 -0
- package/dist/mcp/tools/qe/visual/detect-regression.d.ts.map +1 -0
- package/dist/mcp/tools/qe/visual/detect-regression.js +271 -0
- package/dist/mcp/tools/qe/visual/detect-regression.js.map +1 -0
- package/dist/mcp/tools/qe/visual/index.d.ts +16 -0
- package/dist/mcp/tools/qe/visual/index.d.ts.map +1 -0
- package/dist/mcp/tools/qe/visual/index.js +22 -0
- package/dist/mcp/tools/qe/visual/index.js.map +1 -0
- package/dist/mcp/tools/qe/visual/validate-accessibility.d.ts +276 -0
- package/dist/mcp/tools/qe/visual/validate-accessibility.d.ts.map +1 -0
- package/dist/mcp/tools/qe/visual/validate-accessibility.js +413 -0
- package/dist/mcp/tools/qe/visual/validate-accessibility.js.map +1 -0
- package/dist/mcp/tools.d.ts +44 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1980 -1
- package/dist/mcp/tools.js.map +1 -1
- package/package.json +2 -2
- package/dist/learning/__mocks__/LearningEngine.d.ts +0 -39
- package/dist/learning/__mocks__/LearningEngine.d.ts.map +0 -1
- package/dist/learning/__mocks__/LearningEngine.js +0 -116
- package/dist/learning/__mocks__/LearningEngine.js.map +0 -1
- package/dist/utils/__mocks__/Database.d.ts +0 -85
- package/dist/utils/__mocks__/Database.d.ts.map +0 -1
- package/dist/utils/__mocks__/Database.js +0 -125
- package/dist/utils/__mocks__/Database.js.map +0 -1
- package/dist/utils/__mocks__/Logger.d.ts +0 -26
- package/dist/utils/__mocks__/Logger.d.ts.map +0 -1
- package/dist/utils/__mocks__/Logger.js +0 -44
- package/dist/utils/__mocks__/Logger.js.map +0 -1
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Visual Regression Testing Handler
|
|
4
|
+
*
|
|
5
|
+
* Detects visual changes and regressions in UI components using
|
|
6
|
+
* computer vision and perceptual diffing algorithms.
|
|
7
|
+
*
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @author Agentic QE Team
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.VisualTestRegressionHandler = void 0;
|
|
13
|
+
const base_handler_js_1 = require("../../../handlers/base-handler.js");
|
|
14
|
+
const SecureRandom_js_1 = require("../../../../utils/SecureRandom.js");
|
|
15
|
+
/**
|
|
16
|
+
* Visual Regression Testing Handler
|
|
17
|
+
*/
|
|
18
|
+
class VisualTestRegressionHandler extends base_handler_js_1.BaseHandler {
|
|
19
|
+
constructor(registry, hookExecutor) {
|
|
20
|
+
super();
|
|
21
|
+
this.registry = registry;
|
|
22
|
+
this.hookExecutor = hookExecutor;
|
|
23
|
+
}
|
|
24
|
+
async handle(args) {
|
|
25
|
+
return this.safeHandle(async () => {
|
|
26
|
+
const requestId = this.generateRequestId();
|
|
27
|
+
const startTime = performance.now();
|
|
28
|
+
this.log('info', 'Starting visual regression testing', { requestId, args });
|
|
29
|
+
// Validate input
|
|
30
|
+
this.validateRequired(args, ['testConfig']);
|
|
31
|
+
if (!args.testConfig.baselineImages || args.testConfig.baselineImages.length === 0) {
|
|
32
|
+
throw new Error('Baseline images are required');
|
|
33
|
+
}
|
|
34
|
+
if (!args.testConfig.comparisonImages || args.testConfig.comparisonImages.length === 0) {
|
|
35
|
+
throw new Error('Comparison images are required');
|
|
36
|
+
}
|
|
37
|
+
// Execute pre-task hook
|
|
38
|
+
await this.hookExecutor.executeHook('pre-task', {
|
|
39
|
+
taskId: requestId,
|
|
40
|
+
taskType: 'visual-test-regression',
|
|
41
|
+
metadata: args
|
|
42
|
+
});
|
|
43
|
+
// Run visual regression testing
|
|
44
|
+
const result = await this.runVisualRegression(args, requestId);
|
|
45
|
+
// Execute post-task hook
|
|
46
|
+
await this.hookExecutor.executeHook('post-task', {
|
|
47
|
+
taskId: requestId,
|
|
48
|
+
taskType: 'visual-test-regression',
|
|
49
|
+
result
|
|
50
|
+
});
|
|
51
|
+
const executionTime = performance.now() - startTime;
|
|
52
|
+
this.log('info', 'Visual regression testing completed', {
|
|
53
|
+
requestId,
|
|
54
|
+
totalTests: result.summary.totalTests,
|
|
55
|
+
failed: result.summary.failed,
|
|
56
|
+
executionTime
|
|
57
|
+
});
|
|
58
|
+
return this.createSuccessResponse(result, requestId);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Run visual regression testing
|
|
63
|
+
*/
|
|
64
|
+
async runVisualRegression(args, requestId) {
|
|
65
|
+
const comparisonStartTime = performance.now();
|
|
66
|
+
const threshold = args.testConfig.threshold || 0.05;
|
|
67
|
+
const viewports = args.testConfig.viewports || [{ width: 1920, height: 1080, name: 'desktop' }];
|
|
68
|
+
// Perform comparisons
|
|
69
|
+
const comparisons = [];
|
|
70
|
+
const totalComparisons = args.testConfig.baselineImages.length * viewports.length;
|
|
71
|
+
for (let i = 0; i < args.testConfig.baselineImages.length; i++) {
|
|
72
|
+
for (const viewport of viewports) {
|
|
73
|
+
const comparison = await this.compareImages(args.testConfig.baselineImages[i], args.testConfig.comparisonImages[i] || args.testConfig.baselineImages[i], viewport, threshold, args.options);
|
|
74
|
+
comparisons.push(comparison);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const comparisonTime = performance.now() - comparisonStartTime;
|
|
78
|
+
// Analyze results
|
|
79
|
+
const passed = comparisons.filter(c => c.result.status === 'pass').length;
|
|
80
|
+
const failed = comparisons.filter(c => c.result.status === 'fail').length;
|
|
81
|
+
const warnings = comparisons.filter(c => c.result.status === 'warning').length;
|
|
82
|
+
// Generate insights
|
|
83
|
+
const insights = this.generateInsights(comparisons);
|
|
84
|
+
// Generate recommendations
|
|
85
|
+
const recommendations = this.generateRecommendations(comparisons, insights);
|
|
86
|
+
// Generate report if requested
|
|
87
|
+
let report;
|
|
88
|
+
if (args.options?.generateReport) {
|
|
89
|
+
report = {
|
|
90
|
+
htmlPath: `/reports/visual-regression-${requestId}.html`,
|
|
91
|
+
jsonPath: `/reports/visual-regression-${requestId}.json`
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
id: requestId,
|
|
96
|
+
summary: {
|
|
97
|
+
totalTests: totalComparisons,
|
|
98
|
+
passed,
|
|
99
|
+
failed,
|
|
100
|
+
warnings,
|
|
101
|
+
overallStatus: failed > 0 ? 'fail' : warnings > 0 ? 'warning' : 'pass'
|
|
102
|
+
},
|
|
103
|
+
comparisons,
|
|
104
|
+
insights,
|
|
105
|
+
recommendations,
|
|
106
|
+
performance: {
|
|
107
|
+
comparisonTime,
|
|
108
|
+
avgDiffCalculation: comparisonTime / totalComparisons
|
|
109
|
+
},
|
|
110
|
+
report
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Compare two images
|
|
115
|
+
*/
|
|
116
|
+
async compareImages(baseline, comparison, viewport, threshold, options) {
|
|
117
|
+
// Simulate image comparison
|
|
118
|
+
// In production, this would use actual image diffing libraries like pixelmatch
|
|
119
|
+
const diffPercentage = SecureRandom_js_1.SecureRandom.randomFloat() * 0.15; // 0-15% difference
|
|
120
|
+
const pixelDiffCount = Math.floor(diffPercentage * viewport.width * viewport.height);
|
|
121
|
+
let status = 'pass';
|
|
122
|
+
if (diffPercentage > threshold * 2) {
|
|
123
|
+
status = 'fail';
|
|
124
|
+
}
|
|
125
|
+
else if (diffPercentage > threshold) {
|
|
126
|
+
status = 'warning';
|
|
127
|
+
}
|
|
128
|
+
// Determine change type
|
|
129
|
+
const changeType = this.determineChangeType(diffPercentage);
|
|
130
|
+
// Find affected areas (simulate)
|
|
131
|
+
const affectedAreas = diffPercentage > threshold ? [
|
|
132
|
+
{
|
|
133
|
+
x: Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * viewport.width / 2),
|
|
134
|
+
y: Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * viewport.height / 2),
|
|
135
|
+
width: Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 200) + 50,
|
|
136
|
+
height: Math.floor(SecureRandom_js_1.SecureRandom.randomFloat() * 200) + 50,
|
|
137
|
+
severity: status === 'fail' ? 'high' : 'medium'
|
|
138
|
+
}
|
|
139
|
+
] : [];
|
|
140
|
+
return {
|
|
141
|
+
id: `comp-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(5)}`,
|
|
142
|
+
baseline,
|
|
143
|
+
comparison,
|
|
144
|
+
viewport: { width: viewport.width, height: viewport.height },
|
|
145
|
+
result: {
|
|
146
|
+
status,
|
|
147
|
+
diffPercentage,
|
|
148
|
+
pixelDiffCount,
|
|
149
|
+
diffImage: status !== 'pass' ? `/diffs/diff-${Date.now()}.png` : undefined
|
|
150
|
+
},
|
|
151
|
+
analysis: {
|
|
152
|
+
changeType,
|
|
153
|
+
affectedAreas,
|
|
154
|
+
perceptualDiff: diffPercentage * 1.2 // Perceptual diff is slightly higher
|
|
155
|
+
},
|
|
156
|
+
metadata: {
|
|
157
|
+
timestamp: new Date().toISOString(),
|
|
158
|
+
browser: 'chrome',
|
|
159
|
+
device: viewport.name
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Determine change type based on diff
|
|
165
|
+
*/
|
|
166
|
+
determineChangeType(diffPercentage) {
|
|
167
|
+
if (diffPercentage === 0)
|
|
168
|
+
return 'none';
|
|
169
|
+
if (diffPercentage < 0.02)
|
|
170
|
+
return 'color';
|
|
171
|
+
if (diffPercentage < 0.05)
|
|
172
|
+
return 'text';
|
|
173
|
+
if (diffPercentage < 0.1)
|
|
174
|
+
return 'layout';
|
|
175
|
+
return 'mixed';
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Generate insights from comparisons
|
|
179
|
+
*/
|
|
180
|
+
generateInsights(comparisons) {
|
|
181
|
+
const insights = [];
|
|
182
|
+
const failedComparisons = comparisons.filter(c => c.result.status === 'fail');
|
|
183
|
+
if (failedComparisons.length > 0) {
|
|
184
|
+
insights.push({
|
|
185
|
+
type: 'regression',
|
|
186
|
+
severity: 'high',
|
|
187
|
+
description: `${failedComparisons.length} visual regression(s) detected with significant differences`,
|
|
188
|
+
affectedTests: failedComparisons.map(c => c.baseline),
|
|
189
|
+
suggestedAction: 'Review changes and update baselines if intentional, otherwise fix the regression'
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
const layoutChanges = comparisons.filter(c => c.analysis.changeType === 'layout');
|
|
193
|
+
if (layoutChanges.length > comparisons.length / 2) {
|
|
194
|
+
insights.push({
|
|
195
|
+
type: 'intentional-change',
|
|
196
|
+
severity: 'medium',
|
|
197
|
+
description: 'Multiple layout changes detected, possibly from a design update',
|
|
198
|
+
affectedTests: layoutChanges.map(c => c.baseline),
|
|
199
|
+
suggestedAction: 'If this is an intentional redesign, update all baselines'
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
const colorOnlyChanges = comparisons.filter(c => c.analysis.changeType === 'color' && c.result.status !== 'pass');
|
|
203
|
+
if (colorOnlyChanges.length > 0) {
|
|
204
|
+
insights.push({
|
|
205
|
+
type: 'false-positive',
|
|
206
|
+
severity: 'low',
|
|
207
|
+
description: 'Minor color variations detected, possibly from rendering differences',
|
|
208
|
+
affectedTests: colorOnlyChanges.map(c => c.baseline),
|
|
209
|
+
suggestedAction: 'Consider adjusting threshold or ignoring antialiasing differences'
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return insights;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Generate recommendations
|
|
216
|
+
*/
|
|
217
|
+
generateRecommendations(comparisons, insights) {
|
|
218
|
+
const recommendations = [];
|
|
219
|
+
const hasRegressions = insights.some(i => i.type === 'regression');
|
|
220
|
+
if (hasRegressions) {
|
|
221
|
+
recommendations.push({
|
|
222
|
+
id: `rec-${Date.now()}-1`,
|
|
223
|
+
priority: 'critical',
|
|
224
|
+
category: 'code-fix',
|
|
225
|
+
title: 'Fix visual regressions',
|
|
226
|
+
description: 'Critical visual regressions detected that need immediate attention',
|
|
227
|
+
actions: [
|
|
228
|
+
'Review the diff images to understand the changes',
|
|
229
|
+
'Revert unintended changes or fix CSS/layout issues',
|
|
230
|
+
'Re-run visual tests to verify fixes'
|
|
231
|
+
],
|
|
232
|
+
confidence: 0.95
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
const hasIntentionalChanges = insights.some(i => i.type === 'intentional-change');
|
|
236
|
+
if (hasIntentionalChanges) {
|
|
237
|
+
recommendations.push({
|
|
238
|
+
id: `rec-${Date.now()}-2`,
|
|
239
|
+
priority: 'high',
|
|
240
|
+
category: 'baseline-update',
|
|
241
|
+
title: 'Update visual baselines',
|
|
242
|
+
description: 'Intentional design changes detected, baselines need updating',
|
|
243
|
+
actions: [
|
|
244
|
+
'Verify all changes are intentional and approved',
|
|
245
|
+
'Update baseline images with new screenshots',
|
|
246
|
+
'Document the design changes in release notes'
|
|
247
|
+
],
|
|
248
|
+
confidence: 0.85
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
const hasFalsePositives = insights.some(i => i.type === 'false-positive');
|
|
252
|
+
if (hasFalsePositives) {
|
|
253
|
+
recommendations.push({
|
|
254
|
+
id: `rec-${Date.now()}-3`,
|
|
255
|
+
priority: 'medium',
|
|
256
|
+
category: 'threshold-adjustment',
|
|
257
|
+
title: 'Adjust comparison thresholds',
|
|
258
|
+
description: 'Multiple minor differences suggest threshold tuning needed',
|
|
259
|
+
actions: [
|
|
260
|
+
'Increase threshold slightly for color-only changes',
|
|
261
|
+
'Enable antialiasing ignore option',
|
|
262
|
+
'Consider platform-specific baselines'
|
|
263
|
+
],
|
|
264
|
+
confidence: 0.75
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
return recommendations;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
exports.VisualTestRegressionHandler = VisualTestRegressionHandler;
|
|
271
|
+
//# sourceMappingURL=detect-regression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-regression.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/visual/detect-regression.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visual Testing Domain Tools
|
|
3
|
+
*
|
|
4
|
+
* This module provides domain-specific tools for visual testing including:
|
|
5
|
+
* - AI-powered screenshot comparison
|
|
6
|
+
* - Visual regression detection
|
|
7
|
+
* - WCAG accessibility validation
|
|
8
|
+
*
|
|
9
|
+
* @module visual
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @author Agentic QE Team
|
|
12
|
+
*/
|
|
13
|
+
export { compareScreenshotsAI, type CompareScreenshotsParams, type ScreenshotComparison, type VisualDifference } from './compare-screenshots';
|
|
14
|
+
export { validateAccessibilityWCAG, type ValidateAccessibilityParams, type AccessibilityReport, type AccessibilityViolation, type ColorContrastResults, type KeyboardNavigationResults, type ScreenReaderResults, type AccessibilityRecommendation, type WCAGLevel } from './validate-accessibility';
|
|
15
|
+
export type { VisualTestRegressionArgs, VisualRegressionResult } from './detect-regression';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/visual/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,yBAAyB,EACzB,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,SAAS,EACf,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Visual Testing Domain Tools
|
|
4
|
+
*
|
|
5
|
+
* This module provides domain-specific tools for visual testing including:
|
|
6
|
+
* - AI-powered screenshot comparison
|
|
7
|
+
* - Visual regression detection
|
|
8
|
+
* - WCAG accessibility validation
|
|
9
|
+
*
|
|
10
|
+
* @module visual
|
|
11
|
+
* @version 1.0.0
|
|
12
|
+
* @author Agentic QE Team
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.validateAccessibilityWCAG = exports.compareScreenshotsAI = void 0;
|
|
16
|
+
// Screenshot Comparison
|
|
17
|
+
var compare_screenshots_1 = require("./compare-screenshots");
|
|
18
|
+
Object.defineProperty(exports, "compareScreenshotsAI", { enumerable: true, get: function () { return compare_screenshots_1.compareScreenshotsAI; } });
|
|
19
|
+
// Accessibility Validation
|
|
20
|
+
var validate_accessibility_1 = require("./validate-accessibility");
|
|
21
|
+
Object.defineProperty(exports, "validateAccessibilityWCAG", { enumerable: true, get: function () { return validate_accessibility_1.validateAccessibilityWCAG; } });
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/visual/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAEH,wBAAwB;AACxB,6DAK8B;AAJ5B,2HAAA,oBAAoB,OAAA;AAMtB,2BAA2B;AAC3B,mEAUiC;AAT/B,mIAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WCAG Accessibility Validation Tool
|
|
3
|
+
*
|
|
4
|
+
* Validates WCAG compliance (A, AA, AAA levels) with screenshot-based analysis.
|
|
5
|
+
* Generates comprehensive accessibility reports.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @author Agentic QE Team
|
|
9
|
+
* @domain visual-testing
|
|
10
|
+
*/
|
|
11
|
+
import { QEToolResponse } from '../shared/types.js';
|
|
12
|
+
/**
|
|
13
|
+
* WCAG compliance levels
|
|
14
|
+
*/
|
|
15
|
+
export type WCAGLevel = 'A' | 'AA' | 'AAA';
|
|
16
|
+
/**
|
|
17
|
+
* Parameters for WCAG accessibility validation
|
|
18
|
+
*/
|
|
19
|
+
export interface ValidateAccessibilityParams {
|
|
20
|
+
/** URL to validate */
|
|
21
|
+
url: string;
|
|
22
|
+
/** WCAG compliance level to validate against */
|
|
23
|
+
level: WCAGLevel;
|
|
24
|
+
/** Include screenshots in the report */
|
|
25
|
+
includeScreenshots: boolean;
|
|
26
|
+
/** Additional validation options */
|
|
27
|
+
options?: {
|
|
28
|
+
/** Specific WCAG criteria to validate (default: all) */
|
|
29
|
+
criteria?: string[];
|
|
30
|
+
/** Viewport configuration for screenshot */
|
|
31
|
+
viewport?: {
|
|
32
|
+
width: number;
|
|
33
|
+
height: number;
|
|
34
|
+
};
|
|
35
|
+
/** Enable color contrast analysis */
|
|
36
|
+
colorContrastAnalysis?: boolean;
|
|
37
|
+
/** Enable keyboard navigation testing */
|
|
38
|
+
keyboardNavigationTest?: boolean;
|
|
39
|
+
/** Enable screen reader compatibility check */
|
|
40
|
+
screenReaderCheck?: boolean;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Accessibility validation report
|
|
45
|
+
*/
|
|
46
|
+
export interface AccessibilityReport {
|
|
47
|
+
/** Report identifier */
|
|
48
|
+
id: string;
|
|
49
|
+
/** URL validated */
|
|
50
|
+
url: string;
|
|
51
|
+
/** WCAG level tested */
|
|
52
|
+
wcagLevel: WCAGLevel;
|
|
53
|
+
/** Overall compliance status */
|
|
54
|
+
status: 'compliant' | 'partially-compliant' | 'non-compliant';
|
|
55
|
+
/** Compliance score (0-100) */
|
|
56
|
+
complianceScore: number;
|
|
57
|
+
/** Summary of violations */
|
|
58
|
+
summary: {
|
|
59
|
+
/** Total violations found */
|
|
60
|
+
totalViolations: number;
|
|
61
|
+
/** Critical violations (fail accessibility) */
|
|
62
|
+
critical: number;
|
|
63
|
+
/** Serious violations (major issues) */
|
|
64
|
+
serious: number;
|
|
65
|
+
/** Moderate violations (should fix) */
|
|
66
|
+
moderate: number;
|
|
67
|
+
/** Minor violations (nice to fix) */
|
|
68
|
+
minor: number;
|
|
69
|
+
};
|
|
70
|
+
/** Detailed violations */
|
|
71
|
+
violations: AccessibilityViolation[];
|
|
72
|
+
/** Color contrast analysis results */
|
|
73
|
+
colorContrast?: ColorContrastResults;
|
|
74
|
+
/** Keyboard navigation test results */
|
|
75
|
+
keyboardNavigation?: KeyboardNavigationResults;
|
|
76
|
+
/** Screen reader compatibility results */
|
|
77
|
+
screenReaderCompatibility?: ScreenReaderResults;
|
|
78
|
+
/** Generated screenshots */
|
|
79
|
+
screenshots?: {
|
|
80
|
+
/** Main page screenshot */
|
|
81
|
+
mainPage?: string;
|
|
82
|
+
/** Annotated screenshot with violation highlights */
|
|
83
|
+
annotated?: string;
|
|
84
|
+
};
|
|
85
|
+
/** Recommendations for remediation */
|
|
86
|
+
recommendations: AccessibilityRecommendation[];
|
|
87
|
+
/** Performance metrics */
|
|
88
|
+
performance: {
|
|
89
|
+
/** Validation time (ms) */
|
|
90
|
+
validationTime: number;
|
|
91
|
+
/** Number of elements scanned */
|
|
92
|
+
elementsScanned: number;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Individual accessibility violation
|
|
97
|
+
*/
|
|
98
|
+
export interface AccessibilityViolation {
|
|
99
|
+
/** Violation ID */
|
|
100
|
+
id: string;
|
|
101
|
+
/** WCAG success criterion */
|
|
102
|
+
criterion: string;
|
|
103
|
+
/** Violation severity */
|
|
104
|
+
severity: 'critical' | 'serious' | 'moderate' | 'minor';
|
|
105
|
+
/** Violation description */
|
|
106
|
+
description: string;
|
|
107
|
+
/** Impact on users */
|
|
108
|
+
impact: string;
|
|
109
|
+
/** Affected elements */
|
|
110
|
+
elements: ViolationElement[];
|
|
111
|
+
/** How to fix */
|
|
112
|
+
howToFix: string;
|
|
113
|
+
/** WCAG reference URL */
|
|
114
|
+
wcagUrl: string;
|
|
115
|
+
/** Confidence score (0-1) */
|
|
116
|
+
confidence: number;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Element with accessibility violation
|
|
120
|
+
*/
|
|
121
|
+
export interface ViolationElement {
|
|
122
|
+
/** HTML selector */
|
|
123
|
+
selector: string;
|
|
124
|
+
/** Element snapshot (HTML) */
|
|
125
|
+
html: string;
|
|
126
|
+
/** Location in page */
|
|
127
|
+
location: {
|
|
128
|
+
x: number;
|
|
129
|
+
y: number;
|
|
130
|
+
width: number;
|
|
131
|
+
height: number;
|
|
132
|
+
};
|
|
133
|
+
/** Suggested fix */
|
|
134
|
+
suggestedFix?: string;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Color contrast analysis results
|
|
138
|
+
*/
|
|
139
|
+
export interface ColorContrastResults {
|
|
140
|
+
/** Overall status */
|
|
141
|
+
status: 'pass' | 'fail';
|
|
142
|
+
/** Elements checked */
|
|
143
|
+
elementsChecked: number;
|
|
144
|
+
/** Contrast violations */
|
|
145
|
+
violations: ColorContrastViolation[];
|
|
146
|
+
/** Minimum contrast ratio required */
|
|
147
|
+
minimumRatio: number;
|
|
148
|
+
/** Worst contrast ratio found */
|
|
149
|
+
worstRatio: number;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Color contrast violation
|
|
153
|
+
*/
|
|
154
|
+
export interface ColorContrastViolation {
|
|
155
|
+
/** Element selector */
|
|
156
|
+
selector: string;
|
|
157
|
+
/** Foreground color */
|
|
158
|
+
foreground: string;
|
|
159
|
+
/** Background color */
|
|
160
|
+
background: string;
|
|
161
|
+
/** Contrast ratio */
|
|
162
|
+
ratio: number;
|
|
163
|
+
/** Required ratio */
|
|
164
|
+
required: number;
|
|
165
|
+
/** Element size category */
|
|
166
|
+
sizeCategory: 'normal-text' | 'large-text' | 'ui-component';
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Keyboard navigation test results
|
|
170
|
+
*/
|
|
171
|
+
export interface KeyboardNavigationResults {
|
|
172
|
+
/** Overall status */
|
|
173
|
+
status: 'pass' | 'fail';
|
|
174
|
+
/** Tab order is logical */
|
|
175
|
+
tabOrderLogical: boolean;
|
|
176
|
+
/** All interactive elements reachable */
|
|
177
|
+
allElementsReachable: boolean;
|
|
178
|
+
/** Focus indicators visible */
|
|
179
|
+
focusIndicatorsVisible: boolean;
|
|
180
|
+
/** Keyboard traps detected */
|
|
181
|
+
keyboardTraps: KeyboardTrap[];
|
|
182
|
+
/** Skip links present */
|
|
183
|
+
skipLinksPresent: boolean;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Keyboard trap detected
|
|
187
|
+
*/
|
|
188
|
+
export interface KeyboardTrap {
|
|
189
|
+
/** Element where trap occurs */
|
|
190
|
+
element: string;
|
|
191
|
+
/** Description of trap */
|
|
192
|
+
description: string;
|
|
193
|
+
/** How to fix */
|
|
194
|
+
fix: string;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Screen reader compatibility results
|
|
198
|
+
*/
|
|
199
|
+
export interface ScreenReaderResults {
|
|
200
|
+
/** Overall status */
|
|
201
|
+
status: 'pass' | 'fail';
|
|
202
|
+
/** ARIA labels present */
|
|
203
|
+
ariaLabelsPresent: boolean;
|
|
204
|
+
/** Alt text for images */
|
|
205
|
+
altTextCoverage: number;
|
|
206
|
+
/** Semantic HTML usage */
|
|
207
|
+
semanticHtmlScore: number;
|
|
208
|
+
/** Form labels present */
|
|
209
|
+
formLabelsPresent: boolean;
|
|
210
|
+
/** Heading structure logical */
|
|
211
|
+
headingStructureLogical: boolean;
|
|
212
|
+
/** Issues detected */
|
|
213
|
+
issues: ScreenReaderIssue[];
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Screen reader issue
|
|
217
|
+
*/
|
|
218
|
+
export interface ScreenReaderIssue {
|
|
219
|
+
/** Issue type */
|
|
220
|
+
type: 'missing-aria' | 'missing-alt' | 'incorrect-heading' | 'missing-label' | 'other';
|
|
221
|
+
/** Element affected */
|
|
222
|
+
element: string;
|
|
223
|
+
/** Description */
|
|
224
|
+
description: string;
|
|
225
|
+
/** Suggested fix */
|
|
226
|
+
fix: string;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Accessibility recommendation
|
|
230
|
+
*/
|
|
231
|
+
export interface AccessibilityRecommendation {
|
|
232
|
+
/** Recommendation ID */
|
|
233
|
+
id: string;
|
|
234
|
+
/** Priority level */
|
|
235
|
+
priority: 'critical' | 'high' | 'medium' | 'low';
|
|
236
|
+
/** Category */
|
|
237
|
+
category: 'perceivable' | 'operable' | 'understandable' | 'robust';
|
|
238
|
+
/** Title */
|
|
239
|
+
title: string;
|
|
240
|
+
/** Description */
|
|
241
|
+
description: string;
|
|
242
|
+
/** Action items */
|
|
243
|
+
actions: string[];
|
|
244
|
+
/** Estimated effort (hours) */
|
|
245
|
+
estimatedEffort: number;
|
|
246
|
+
/** Confidence score (0-1) */
|
|
247
|
+
confidence: number;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Validate WCAG accessibility compliance
|
|
251
|
+
*
|
|
252
|
+
* @param params - Validation parameters
|
|
253
|
+
* @returns Accessibility validation report
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```typescript
|
|
257
|
+
* const result = await validateAccessibilityWCAG({
|
|
258
|
+
* url: 'https://example.com',
|
|
259
|
+
* level: 'AA',
|
|
260
|
+
* includeScreenshots: true,
|
|
261
|
+
* options: {
|
|
262
|
+
* colorContrastAnalysis: true,
|
|
263
|
+
* keyboardNavigationTest: true,
|
|
264
|
+
* screenReaderCheck: true
|
|
265
|
+
* }
|
|
266
|
+
* });
|
|
267
|
+
*
|
|
268
|
+
* if (result.success) {
|
|
269
|
+
* console.log(`Compliance score: ${result.data.complianceScore}%`);
|
|
270
|
+
* console.log(`Total violations: ${result.data.summary.totalViolations}`);
|
|
271
|
+
* console.log(`Critical issues: ${result.data.summary.critical}`);
|
|
272
|
+
* }
|
|
273
|
+
* ```
|
|
274
|
+
*/
|
|
275
|
+
export declare function validateAccessibilityWCAG(params: ValidateAccessibilityParams): Promise<QEToolResponse<AccessibilityReport>>;
|
|
276
|
+
//# sourceMappingURL=validate-accessibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-accessibility.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/tools/qe/visual/validate-accessibility.ts"],"names":[],"mappings":"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"}
|