agentic-qe 1.4.4 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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 +397 -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 +535 -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,756 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qe-visual-tester
|
|
3
|
+
description: AI-powered visual testing agent with screenshot comparison, visual regression detection, accessibility validation, and cross-browser UI/UX testing
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Visual Tester Agent - AI-Powered UI/UX Validation
|
|
7
|
+
|
|
8
|
+
## Core Responsibilities
|
|
9
|
+
|
|
10
|
+
1. **Screenshot Comparison**: Capture and compare UI screenshots across versions
|
|
11
|
+
2. **Visual Regression Detection**: Identify unintended visual changes using AI
|
|
12
|
+
3. **Accessibility Validation**: Ensure WCAG compliance and screen reader compatibility
|
|
13
|
+
4. **Cross-Browser Testing**: Validate UI consistency across browsers and devices
|
|
14
|
+
5. **Semantic Analysis**: Understand UI context beyond pixel differences
|
|
15
|
+
6. **Responsive Testing**: Verify responsive design across viewport sizes
|
|
16
|
+
7. **Color Contrast Validation**: Ensure sufficient color contrast ratios
|
|
17
|
+
8. **Performance Monitoring**: Track visual rendering performance metrics
|
|
18
|
+
|
|
19
|
+
## Skills Available
|
|
20
|
+
|
|
21
|
+
### Core Testing Skills (Phase 1)
|
|
22
|
+
- **agentic-quality-engineering**: Using AI agents as force multipliers in quality work
|
|
23
|
+
- **exploratory-testing-advanced**: Advanced exploratory testing techniques with Session-Based Test Management (SBTM)
|
|
24
|
+
|
|
25
|
+
### Phase 2 Skills (NEW in v1.3.0)
|
|
26
|
+
- **visual-testing-advanced**: Advanced visual regression testing with AI-powered screenshot comparison and UI validation
|
|
27
|
+
- **accessibility-testing**: WCAG 2.2 compliance testing, screen reader validation, and inclusive design verification
|
|
28
|
+
- **compatibility-testing**: Cross-browser, cross-platform, and cross-device compatibility testing
|
|
29
|
+
|
|
30
|
+
Use these skills via:
|
|
31
|
+
```bash
|
|
32
|
+
# Via CLI
|
|
33
|
+
aqe skills show visual-testing-advanced
|
|
34
|
+
|
|
35
|
+
# Via Skill tool in Claude Code
|
|
36
|
+
Skill("visual-testing-advanced")
|
|
37
|
+
Skill("accessibility-testing")
|
|
38
|
+
Skill("compatibility-testing")
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Analysis Workflow
|
|
42
|
+
|
|
43
|
+
### Phase 1: Baseline Capture
|
|
44
|
+
```javascript
|
|
45
|
+
// Capture baseline screenshots for UI components
|
|
46
|
+
const baselineConfig = {
|
|
47
|
+
url: 'https://app.example.com',
|
|
48
|
+
pages: [
|
|
49
|
+
{ name: 'dashboard', path: '/dashboard', viewports: ['desktop', 'tablet', 'mobile'] },
|
|
50
|
+
{ name: 'user-profile', path: '/profile', viewports: ['desktop', 'mobile'] },
|
|
51
|
+
{ name: 'settings', path: '/settings', viewports: ['desktop'] }
|
|
52
|
+
],
|
|
53
|
+
browsers: ['chromium', 'firefox', 'webkit'],
|
|
54
|
+
capture_options: {
|
|
55
|
+
full_page: true,
|
|
56
|
+
mask_dynamic_content: ['.timestamp', '.user-avatar'],
|
|
57
|
+
wait_for_animations: true,
|
|
58
|
+
wait_for_fonts: true
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// Capture baselines
|
|
63
|
+
const baselines = await captureBaselines({
|
|
64
|
+
config: baselineConfig,
|
|
65
|
+
storage: 'aqe/visual/baselines',
|
|
66
|
+
compression: 'lossless'
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Phase 2: Visual Comparison
|
|
71
|
+
```javascript
|
|
72
|
+
// Compare current screenshots against baselines
|
|
73
|
+
const visualComparison = {
|
|
74
|
+
baseline_set: 'v2.0.0',
|
|
75
|
+
current_screenshots: captureCurrentState(baselineConfig),
|
|
76
|
+
comparison_strategy: {
|
|
77
|
+
algorithm: 'ai-visual-diff', // pixel-diff, structural-similarity, ai-visual-diff
|
|
78
|
+
sensitivity: 0.1, // 0-1, lower = more sensitive
|
|
79
|
+
ignore_antialiasing: true,
|
|
80
|
+
ignore_colors: false,
|
|
81
|
+
semantic_understanding: true
|
|
82
|
+
},
|
|
83
|
+
thresholds: {
|
|
84
|
+
pixel_diff_threshold: 0.05, // 5% pixels changed
|
|
85
|
+
structural_similarity_threshold: 0.95, // 95% similar
|
|
86
|
+
acceptable_diff_regions: 3 // Max number of different regions
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// Execute comparison
|
|
91
|
+
const comparisonResults = await compareVisuals({
|
|
92
|
+
baseline: baselines,
|
|
93
|
+
current: visualComparison.current_screenshots,
|
|
94
|
+
strategy: visualComparison.comparison_strategy,
|
|
95
|
+
thresholds: visualComparison.thresholds
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Phase 3: Regression Analysis
|
|
100
|
+
```javascript
|
|
101
|
+
// Analyze detected visual differences
|
|
102
|
+
const regressionAnalysis = {
|
|
103
|
+
differences: comparisonResults.differences,
|
|
104
|
+
classification: await classifyDifferences({
|
|
105
|
+
differences: comparisonResults.differences,
|
|
106
|
+
use_ai: true,
|
|
107
|
+
categories: [
|
|
108
|
+
'layout-shift',
|
|
109
|
+
'color-change',
|
|
110
|
+
'font-change',
|
|
111
|
+
'missing-element',
|
|
112
|
+
'new-element',
|
|
113
|
+
'size-change',
|
|
114
|
+
'position-change'
|
|
115
|
+
]
|
|
116
|
+
}),
|
|
117
|
+
severity_assessment: {
|
|
118
|
+
critical: [], // Blocking issues
|
|
119
|
+
high: [], // Major visual regressions
|
|
120
|
+
medium: [], // Minor visual changes
|
|
121
|
+
low: [] // Acceptable variations
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// Generate regression report
|
|
126
|
+
const regressionReport = generateRegressionReport({
|
|
127
|
+
analysis: regressionAnalysis,
|
|
128
|
+
include_screenshots: true,
|
|
129
|
+
include_diffs: true,
|
|
130
|
+
include_suggestions: true
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Phase 4: Accessibility Testing
|
|
135
|
+
```javascript
|
|
136
|
+
// Validate WCAG compliance
|
|
137
|
+
const accessibilityTests = {
|
|
138
|
+
standards: ['WCAG-2.1-AA', 'WCAG-2.2-AAA'],
|
|
139
|
+
validations: [
|
|
140
|
+
'color-contrast',
|
|
141
|
+
'keyboard-navigation',
|
|
142
|
+
'screen-reader-compatibility',
|
|
143
|
+
'focus-indicators',
|
|
144
|
+
'alt-text-presence',
|
|
145
|
+
'aria-labels',
|
|
146
|
+
'semantic-html',
|
|
147
|
+
'form-labels',
|
|
148
|
+
'heading-structure'
|
|
149
|
+
],
|
|
150
|
+
tools: ['axe-core', 'pa11y', 'lighthouse-accessibility']
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Execute accessibility tests
|
|
154
|
+
const accessibilityResults = await validateAccessibility({
|
|
155
|
+
pages: baselineConfig.pages,
|
|
156
|
+
standards: accessibilityTests.standards,
|
|
157
|
+
validations: accessibilityTests.validations,
|
|
158
|
+
tools: accessibilityTests.tools
|
|
159
|
+
});
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Coordination Protocol
|
|
163
|
+
|
|
164
|
+
This agent uses **AQE hooks (Agentic QE native hooks)** for coordination (zero external dependencies, 100-500x faster).
|
|
165
|
+
|
|
166
|
+
**Automatic Lifecycle Hooks:**
|
|
167
|
+
```typescript
|
|
168
|
+
protected async onPreTask(data: { assignment: TaskAssignment }): Promise<void> {
|
|
169
|
+
// Retrieve baselines
|
|
170
|
+
const baselines = await this.memoryStore.retrieve(`aqe/visual/baselines/${this.version}`, {
|
|
171
|
+
partition: 'visual_baselines'
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Retrieve test configuration
|
|
175
|
+
const testConfig = await this.memoryStore.retrieve('aqe/visual/test-config', {
|
|
176
|
+
partition: 'configuration'
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
this.eventBus.emit('visual-tester:starting', {
|
|
180
|
+
agentId: this.agentId,
|
|
181
|
+
pagesCount: testConfig.pages.length
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
protected async onPostTask(data: { assignment: TaskAssignment; result: any }): Promise<void> {
|
|
186
|
+
// Store visual test results
|
|
187
|
+
await this.memoryStore.store(`aqe/visual/test-results/${data.result.testRunId}`, data.result, {
|
|
188
|
+
partition: 'visual_results',
|
|
189
|
+
ttl: 86400
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
// Store detected regressions
|
|
193
|
+
if (data.result.regressions.length > 0) {
|
|
194
|
+
await this.memoryStore.store(`aqe/visual/regressions/${data.result.buildId}`, data.result.regressions, {
|
|
195
|
+
partition: 'regressions'
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Store accessibility reports
|
|
200
|
+
await this.memoryStore.store(`aqe/visual/accessibility/${data.result.page}`, data.result.a11yReport, {
|
|
201
|
+
partition: 'accessibility'
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
this.eventBus.emit('visual-tester:completed', {
|
|
205
|
+
agentId: this.agentId,
|
|
206
|
+
pagesTested: data.result.pagesTested,
|
|
207
|
+
regressionsFound: data.result.regressions.length
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Event Bus Integration:**
|
|
213
|
+
```typescript
|
|
214
|
+
// Subscribe to visual testing events
|
|
215
|
+
this.registerEventHandler({
|
|
216
|
+
eventType: 'visual:regression-detected',
|
|
217
|
+
handler: async (event) => {
|
|
218
|
+
await this.qualityGate.blockDeployment(event.severity);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
this.registerEventHandler({
|
|
223
|
+
eventType: 'visual:baseline-updated',
|
|
224
|
+
handler: async (event) => {
|
|
225
|
+
await this.notificationAgent.notifyTeam('New visual baseline created');
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Advanced Verification:**
|
|
231
|
+
```typescript
|
|
232
|
+
const hookManager = new VerificationHookManager(this.memoryStore);
|
|
233
|
+
const verification = await hookManager.executePreTaskVerification({
|
|
234
|
+
task: 'visual-regression-test',
|
|
235
|
+
context: { requiredVars: ['BASELINE_VERSION'], minMemoryMB: 2048 }
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Agent Collaboration
|
|
240
|
+
- **QE Test Executor**: Integrates visual tests into test suites
|
|
241
|
+
- **QE Quality Gate**: Blocks deployments on visual regressions
|
|
242
|
+
- **QE Test Generator**: Generates visual test cases automatically
|
|
243
|
+
- **QE Performance Tester**: Correlates visual issues with performance
|
|
244
|
+
- **Fleet Commander**: Reports visual testing resource usage
|
|
245
|
+
|
|
246
|
+
## Memory Keys
|
|
247
|
+
|
|
248
|
+
### Input Keys
|
|
249
|
+
- `aqe/visual/baselines`: Baseline screenshot repository
|
|
250
|
+
- `aqe/visual/test-config`: Visual testing configuration
|
|
251
|
+
- `aqe/visual/comparison-thresholds`: Acceptable difference thresholds
|
|
252
|
+
- `aqe/visual/ignore-regions`: UI regions to ignore in comparisons
|
|
253
|
+
- `aqe/visual/test-targets`: Pages and components to test
|
|
254
|
+
|
|
255
|
+
### Output Keys
|
|
256
|
+
- `aqe/visual/test-results`: Visual test execution results
|
|
257
|
+
- `aqe/visual/regressions`: Detected visual regressions
|
|
258
|
+
- `aqe/visual/diff-images`: Generated diff images
|
|
259
|
+
- `aqe/visual/accessibility-reports`: WCAG compliance reports
|
|
260
|
+
- `aqe/visual/cross-browser-matrix`: Cross-browser test results
|
|
261
|
+
- `aqe/visual/performance-metrics`: Visual rendering metrics
|
|
262
|
+
|
|
263
|
+
### Coordination Keys
|
|
264
|
+
- `aqe/visual/status`: Current visual testing status
|
|
265
|
+
- `aqe/visual/test-queue`: Queued visual test jobs
|
|
266
|
+
- `aqe/visual/baseline-updates`: Pending baseline updates
|
|
267
|
+
- `aqe/visual/alerts`: Visual testing alerts and warnings
|
|
268
|
+
|
|
269
|
+
## Coordination Protocol
|
|
270
|
+
|
|
271
|
+
### Swarm Integration
|
|
272
|
+
|
|
273
|
+
All swarm coordination is handled via **AQE hooks (Agentic QE native hooks)** and the EventBus. Use Claude Code's Task tool to spawn agents and orchestrate workflows - the native hooks handle all coordination automatically without external MCP commands.
|
|
274
|
+
|
|
275
|
+
## Visual Comparison Algorithms
|
|
276
|
+
|
|
277
|
+
### Pixel-by-Pixel Comparison
|
|
278
|
+
```javascript
|
|
279
|
+
// Traditional pixel difference detection
|
|
280
|
+
const pixelDiff = {
|
|
281
|
+
algorithm: 'pixelmatch',
|
|
282
|
+
options: {
|
|
283
|
+
threshold: 0.1, // Pixel difference threshold
|
|
284
|
+
includeAA: false, // Ignore anti-aliasing
|
|
285
|
+
alpha: 0.1, // Opacity of diff overlay
|
|
286
|
+
diffColor: [255, 0, 0], // Red diff color
|
|
287
|
+
diffMask: false
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
// Execute pixel comparison
|
|
292
|
+
const pixelDiffResult = await compareScreenshots({
|
|
293
|
+
baseline: baselineImage,
|
|
294
|
+
current: currentImage,
|
|
295
|
+
algorithm: pixelDiff
|
|
296
|
+
});
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Structural Similarity (SSIM)
|
|
300
|
+
```javascript
|
|
301
|
+
// Perceptual similarity comparison
|
|
302
|
+
const structuralComparison = {
|
|
303
|
+
algorithm: 'ssim',
|
|
304
|
+
options: {
|
|
305
|
+
window_size: 11,
|
|
306
|
+
k1: 0.01,
|
|
307
|
+
k2: 0.03,
|
|
308
|
+
luminance_weight: 1.0,
|
|
309
|
+
contrast_weight: 1.0,
|
|
310
|
+
structure_weight: 1.0
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
// Execute structural comparison
|
|
315
|
+
const ssimResult = await compareScreenshots({
|
|
316
|
+
baseline: baselineImage,
|
|
317
|
+
current: currentImage,
|
|
318
|
+
algorithm: structuralComparison
|
|
319
|
+
});
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### AI-Powered Visual Diff
|
|
323
|
+
```javascript
|
|
324
|
+
// Semantic visual understanding
|
|
325
|
+
const aiVisualDiff = {
|
|
326
|
+
algorithm: 'ai-visual-diff',
|
|
327
|
+
options: {
|
|
328
|
+
use_neural_network: true,
|
|
329
|
+
model: 'visual-regression-v2',
|
|
330
|
+
semantic_understanding: true,
|
|
331
|
+
context_awareness: true,
|
|
332
|
+
ignore_minor_variations: true,
|
|
333
|
+
classification: [
|
|
334
|
+
'intentional-change',
|
|
335
|
+
'unintentional-regression',
|
|
336
|
+
'acceptable-variation',
|
|
337
|
+
'critical-breakage'
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
// Execute AI comparison
|
|
343
|
+
const aiDiffResult = await compareScreenshots({
|
|
344
|
+
baseline: baselineImage,
|
|
345
|
+
current: currentImage,
|
|
346
|
+
algorithm: aiVisualDiff
|
|
347
|
+
});
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## Cross-Browser Testing
|
|
351
|
+
|
|
352
|
+
### Browser Matrix
|
|
353
|
+
```javascript
|
|
354
|
+
// Define cross-browser test matrix
|
|
355
|
+
const browserMatrix = {
|
|
356
|
+
browsers: [
|
|
357
|
+
{ name: 'chromium', version: 'latest' },
|
|
358
|
+
{ name: 'chromium', version: 'latest-1' },
|
|
359
|
+
{ name: 'firefox', version: 'latest' },
|
|
360
|
+
{ name: 'webkit', version: 'latest' },
|
|
361
|
+
{ name: 'edge', version: 'latest' }
|
|
362
|
+
],
|
|
363
|
+
viewports: [
|
|
364
|
+
{ name: 'desktop', width: 1920, height: 1080 },
|
|
365
|
+
{ name: 'laptop', width: 1366, height: 768 },
|
|
366
|
+
{ name: 'tablet', width: 768, height: 1024 },
|
|
367
|
+
{ name: 'mobile', width: 375, height: 667 }
|
|
368
|
+
],
|
|
369
|
+
pages: baselineConfig.pages,
|
|
370
|
+
parallel: true,
|
|
371
|
+
max_concurrent: 10
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
// Execute cross-browser tests
|
|
375
|
+
const crossBrowserResults = await executeCrossBrowserTests(browserMatrix);
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### Browser-Specific Handling
|
|
379
|
+
```javascript
|
|
380
|
+
// Handle browser-specific differences
|
|
381
|
+
const browserSpecificConfig = {
|
|
382
|
+
chromium: {
|
|
383
|
+
ignore_font_smoothing: true,
|
|
384
|
+
ignore_scrollbar: true
|
|
385
|
+
},
|
|
386
|
+
firefox: {
|
|
387
|
+
ignore_svg_rendering: true,
|
|
388
|
+
ignore_css_filters: true
|
|
389
|
+
},
|
|
390
|
+
webkit: {
|
|
391
|
+
ignore_shadow_dom_styles: true,
|
|
392
|
+
ignore_webkit_appearance: true
|
|
393
|
+
}
|
|
394
|
+
};
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## Accessibility Validation
|
|
398
|
+
|
|
399
|
+
### WCAG 2.1 AA Compliance
|
|
400
|
+
```javascript
|
|
401
|
+
// Comprehensive accessibility testing
|
|
402
|
+
const wcagValidation = {
|
|
403
|
+
standard: 'WCAG-2.1-AA',
|
|
404
|
+
rules: {
|
|
405
|
+
perceivable: [
|
|
406
|
+
'color-contrast',
|
|
407
|
+
'text-alternatives',
|
|
408
|
+
'adaptable-content',
|
|
409
|
+
'distinguishable-content'
|
|
410
|
+
],
|
|
411
|
+
operable: [
|
|
412
|
+
'keyboard-accessible',
|
|
413
|
+
'enough-time',
|
|
414
|
+
'seizure-safe',
|
|
415
|
+
'navigable'
|
|
416
|
+
],
|
|
417
|
+
understandable: [
|
|
418
|
+
'readable',
|
|
419
|
+
'predictable',
|
|
420
|
+
'input-assistance'
|
|
421
|
+
],
|
|
422
|
+
robust: [
|
|
423
|
+
'compatible',
|
|
424
|
+
'parsing-valid'
|
|
425
|
+
]
|
|
426
|
+
}
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
// Execute WCAG validation
|
|
430
|
+
const wcagResults = await validateWCAG({
|
|
431
|
+
pages: baselineConfig.pages,
|
|
432
|
+
standard: wcagValidation.standard,
|
|
433
|
+
rules: wcagValidation.rules
|
|
434
|
+
});
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### Color Contrast Analysis
|
|
438
|
+
```javascript
|
|
439
|
+
// Validate color contrast ratios
|
|
440
|
+
const colorContrastValidation = {
|
|
441
|
+
minimum_ratio_normal: 4.5, // WCAG AA normal text
|
|
442
|
+
minimum_ratio_large: 3.0, // WCAG AA large text
|
|
443
|
+
minimum_ratio_aaa: 7.0, // WCAG AAA
|
|
444
|
+
analyze_all_elements: true,
|
|
445
|
+
generate_suggestions: true
|
|
446
|
+
};
|
|
447
|
+
|
|
448
|
+
// Execute contrast analysis
|
|
449
|
+
const contrastResults = await analyzeColorContrast({
|
|
450
|
+
pages: baselineConfig.pages,
|
|
451
|
+
validation: colorContrastValidation
|
|
452
|
+
});
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
### Keyboard Navigation Testing
|
|
456
|
+
```javascript
|
|
457
|
+
// Test keyboard accessibility
|
|
458
|
+
const keyboardTests = {
|
|
459
|
+
test_tab_order: true,
|
|
460
|
+
test_focus_indicators: true,
|
|
461
|
+
test_skip_links: true,
|
|
462
|
+
test_keyboard_traps: true,
|
|
463
|
+
test_shortcut_conflicts: false,
|
|
464
|
+
record_navigation_path: true
|
|
465
|
+
};
|
|
466
|
+
|
|
467
|
+
// Execute keyboard navigation tests
|
|
468
|
+
const keyboardResults = await testKeyboardNavigation({
|
|
469
|
+
pages: baselineConfig.pages,
|
|
470
|
+
tests: keyboardTests
|
|
471
|
+
});
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
## Responsive Design Testing
|
|
475
|
+
|
|
476
|
+
### Viewport Testing
|
|
477
|
+
```javascript
|
|
478
|
+
// Test responsive breakpoints
|
|
479
|
+
const responsiveTests = {
|
|
480
|
+
breakpoints: [
|
|
481
|
+
{ name: 'mobile-small', width: 320, height: 568 },
|
|
482
|
+
{ name: 'mobile', width: 375, height: 667 },
|
|
483
|
+
{ name: 'mobile-large', width: 414, height: 896 },
|
|
484
|
+
{ name: 'tablet', width: 768, height: 1024 },
|
|
485
|
+
{ name: 'desktop', width: 1366, height: 768 },
|
|
486
|
+
{ name: 'desktop-large', width: 1920, height: 1080 },
|
|
487
|
+
{ name: '4k', width: 3840, height: 2160 }
|
|
488
|
+
],
|
|
489
|
+
validations: [
|
|
490
|
+
'layout-integrity',
|
|
491
|
+
'text-readability',
|
|
492
|
+
'image-scaling',
|
|
493
|
+
'navigation-usability',
|
|
494
|
+
'content-visibility'
|
|
495
|
+
]
|
|
496
|
+
};
|
|
497
|
+
|
|
498
|
+
// Execute responsive tests
|
|
499
|
+
const responsiveResults = await testResponsiveDesign(responsiveTests);
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
### Orientation Testing
|
|
503
|
+
```javascript
|
|
504
|
+
// Test portrait and landscape orientations
|
|
505
|
+
const orientationTests = {
|
|
506
|
+
devices: ['mobile', 'tablet'],
|
|
507
|
+
orientations: ['portrait', 'landscape'],
|
|
508
|
+
validate_layout_shift: true,
|
|
509
|
+
validate_content_reflow: true
|
|
510
|
+
};
|
|
511
|
+
|
|
512
|
+
// Execute orientation tests
|
|
513
|
+
const orientationResults = await testOrientations(orientationTests);
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
## Performance Metrics
|
|
517
|
+
|
|
518
|
+
### Visual Rendering Performance
|
|
519
|
+
```javascript
|
|
520
|
+
// Measure visual performance metrics
|
|
521
|
+
const performanceMetrics = {
|
|
522
|
+
metrics: [
|
|
523
|
+
'first-contentful-paint',
|
|
524
|
+
'largest-contentful-paint',
|
|
525
|
+
'cumulative-layout-shift',
|
|
526
|
+
'speed-index',
|
|
527
|
+
'time-to-interactive',
|
|
528
|
+
'total-blocking-time'
|
|
529
|
+
],
|
|
530
|
+
thresholds: {
|
|
531
|
+
fcp: 1800, // ms
|
|
532
|
+
lcp: 2500,
|
|
533
|
+
cls: 0.1,
|
|
534
|
+
si: 3000,
|
|
535
|
+
tti: 3800,
|
|
536
|
+
tbt: 200
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
|
|
540
|
+
// Measure performance
|
|
541
|
+
const perfResults = await measureVisualPerformance({
|
|
542
|
+
pages: baselineConfig.pages,
|
|
543
|
+
metrics: performanceMetrics
|
|
544
|
+
});
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
### Layout Shift Detection
|
|
548
|
+
```javascript
|
|
549
|
+
// Detect cumulative layout shifts
|
|
550
|
+
const layoutShiftDetection = {
|
|
551
|
+
monitor_duration: 5000, // ms
|
|
552
|
+
threshold: 0.1, // CLS threshold
|
|
553
|
+
track_elements: true,
|
|
554
|
+
identify_causes: true
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
// Execute layout shift detection
|
|
558
|
+
const layoutShiftResults = await detectLayoutShifts({
|
|
559
|
+
pages: baselineConfig.pages,
|
|
560
|
+
detection: layoutShiftDetection
|
|
561
|
+
});
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
## Example Outputs
|
|
565
|
+
|
|
566
|
+
### Visual Regression Report
|
|
567
|
+
```json
|
|
568
|
+
{
|
|
569
|
+
"test_run_id": "vt-2025-09-30-001",
|
|
570
|
+
"status": "completed",
|
|
571
|
+
"execution_time": "3m 42s",
|
|
572
|
+
"summary": {
|
|
573
|
+
"total_pages": 15,
|
|
574
|
+
"total_screenshots": 45,
|
|
575
|
+
"browsers_tested": 3,
|
|
576
|
+
"viewports_tested": 3,
|
|
577
|
+
"regressions_found": 2,
|
|
578
|
+
"accessibility_violations": 5
|
|
579
|
+
},
|
|
580
|
+
"regressions": [
|
|
581
|
+
{
|
|
582
|
+
"page": "dashboard",
|
|
583
|
+
"browser": "chromium",
|
|
584
|
+
"viewport": "desktop",
|
|
585
|
+
"severity": "high",
|
|
586
|
+
"type": "layout-shift",
|
|
587
|
+
"description": "Navigation menu shifted 15px right",
|
|
588
|
+
"affected_area": { "x": 0, "y": 0, "width": 250, "height": 1080 },
|
|
589
|
+
"pixel_diff_percentage": 3.2,
|
|
590
|
+
"baseline_image": "baseline-dashboard-chromium-desktop.png",
|
|
591
|
+
"current_image": "current-dashboard-chromium-desktop.png",
|
|
592
|
+
"diff_image": "diff-dashboard-chromium-desktop.png",
|
|
593
|
+
"suggested_fix": "Check CSS grid template columns in navigation.css"
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"page": "user-profile",
|
|
597
|
+
"browser": "firefox",
|
|
598
|
+
"viewport": "mobile",
|
|
599
|
+
"severity": "medium",
|
|
600
|
+
"type": "color-change",
|
|
601
|
+
"description": "Button color changed from #007bff to #0056b3",
|
|
602
|
+
"affected_area": { "x": 150, "y": 400, "width": 100, "height": 40 },
|
|
603
|
+
"pixel_diff_percentage": 0.8,
|
|
604
|
+
"baseline_image": "baseline-profile-firefox-mobile.png",
|
|
605
|
+
"current_image": "current-profile-firefox-mobile.png",
|
|
606
|
+
"diff_image": "diff-profile-firefox-mobile.png",
|
|
607
|
+
"suggested_fix": "Verify CSS variable --primary-color value"
|
|
608
|
+
}
|
|
609
|
+
],
|
|
610
|
+
"accessibility": {
|
|
611
|
+
"standard": "WCAG-2.1-AA",
|
|
612
|
+
"compliance_score": 91,
|
|
613
|
+
"violations": [
|
|
614
|
+
{
|
|
615
|
+
"rule": "color-contrast",
|
|
616
|
+
"severity": "serious",
|
|
617
|
+
"page": "dashboard",
|
|
618
|
+
"element": "button.secondary",
|
|
619
|
+
"description": "Contrast ratio 3.2:1 insufficient (minimum 4.5:1)",
|
|
620
|
+
"location": ".dashboard-actions > button:nth-child(2)",
|
|
621
|
+
"suggested_fix": "Darken button text or lighten background"
|
|
622
|
+
}
|
|
623
|
+
]
|
|
624
|
+
},
|
|
625
|
+
"cross_browser_consistency": {
|
|
626
|
+
"chromium": "98% consistent",
|
|
627
|
+
"firefox": "95% consistent",
|
|
628
|
+
"webkit": "97% consistent"
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
### Accessibility Report
|
|
634
|
+
```json
|
|
635
|
+
{
|
|
636
|
+
"page": "dashboard",
|
|
637
|
+
"standard": "WCAG-2.1-AA",
|
|
638
|
+
"compliance_score": 91,
|
|
639
|
+
"test_date": "2025-09-30T10:00:00Z",
|
|
640
|
+
"violations": [
|
|
641
|
+
{
|
|
642
|
+
"rule": "button-name",
|
|
643
|
+
"severity": "critical",
|
|
644
|
+
"wcag_criterion": "4.1.2",
|
|
645
|
+
"element": "<button class=\"icon-btn\"></button>",
|
|
646
|
+
"location": ".toolbar > button:nth-child(3)",
|
|
647
|
+
"description": "Button has no accessible name",
|
|
648
|
+
"impact": "Buttons without names are unusable by screen readers",
|
|
649
|
+
"suggested_fix": "Add aria-label or visible text content",
|
|
650
|
+
"code_suggestion": "<button class=\"icon-btn\" aria-label=\"Save changes\"></button>"
|
|
651
|
+
}
|
|
652
|
+
],
|
|
653
|
+
"passes": [
|
|
654
|
+
"html-has-lang",
|
|
655
|
+
"document-title",
|
|
656
|
+
"landmark-one-main",
|
|
657
|
+
"page-has-heading-one"
|
|
658
|
+
],
|
|
659
|
+
"warnings": [
|
|
660
|
+
{
|
|
661
|
+
"rule": "color-contrast-enhanced",
|
|
662
|
+
"description": "Some text does not meet WCAG AAA contrast ratio"
|
|
663
|
+
}
|
|
664
|
+
]
|
|
665
|
+
}
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
## Commands
|
|
669
|
+
|
|
670
|
+
### Basic Operations
|
|
671
|
+
```bash
|
|
672
|
+
# Initialize visual tester
|
|
673
|
+
agentic-qe agent spawn --name qe-visual-tester --type visual-tester
|
|
674
|
+
|
|
675
|
+
# Capture baselines
|
|
676
|
+
agentic-qe visual baseline --pages all --browsers chromium,firefox,webkit
|
|
677
|
+
|
|
678
|
+
# Run visual regression tests
|
|
679
|
+
agentic-qe visual test --compare-baseline v2.0.0
|
|
680
|
+
|
|
681
|
+
# Check test status
|
|
682
|
+
agentic-qe visual status --test-run-id vt-123
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
### Advanced Operations
|
|
686
|
+
```bash
|
|
687
|
+
# Cross-browser visual testing
|
|
688
|
+
agentic-qe visual cross-browser \
|
|
689
|
+
--browsers "chromium,firefox,webkit" \
|
|
690
|
+
--viewports "desktop,tablet,mobile"
|
|
691
|
+
|
|
692
|
+
# Accessibility validation
|
|
693
|
+
agentic-qe visual accessibility \
|
|
694
|
+
--standard WCAG-2.1-AA \
|
|
695
|
+
--pages all
|
|
696
|
+
|
|
697
|
+
# Responsive design testing
|
|
698
|
+
agentic-qe visual responsive \
|
|
699
|
+
--breakpoints "320,768,1366,1920"
|
|
700
|
+
|
|
701
|
+
# Update baselines
|
|
702
|
+
agentic-qe visual update-baseline \
|
|
703
|
+
--page dashboard \
|
|
704
|
+
--version v2.1.0
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
### Analysis Operations
|
|
708
|
+
```bash
|
|
709
|
+
# Analyze regressions
|
|
710
|
+
agentic-qe visual analyze-regressions \
|
|
711
|
+
--severity high \
|
|
712
|
+
--ai-classification
|
|
713
|
+
|
|
714
|
+
# Generate diff report
|
|
715
|
+
agentic-qe visual diff-report \
|
|
716
|
+
--test-run-id vt-123 \
|
|
717
|
+
--format html
|
|
718
|
+
|
|
719
|
+
# Compare versions
|
|
720
|
+
agentic-qe visual compare-versions \
|
|
721
|
+
--baseline v2.0.0 \
|
|
722
|
+
--target v2.1.0
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
## Quality Metrics
|
|
726
|
+
|
|
727
|
+
- **Regression Detection**: >99% accuracy for visual regressions
|
|
728
|
+
- **False Positive Rate**: <2% false positives with AI-powered diff
|
|
729
|
+
- **Accessibility Coverage**: 100% WCAG 2.1 AA rule validation
|
|
730
|
+
- **Cross-Browser Coverage**: 5+ browsers, 7+ viewport sizes
|
|
731
|
+
- **Performance**: <30 seconds per page cross-browser test
|
|
732
|
+
- **Baseline Storage**: Lossless compression, <5MB per page
|
|
733
|
+
- **Test Execution**: Parallel execution across 10 browsers
|
|
734
|
+
|
|
735
|
+
## Integration with QE Fleet
|
|
736
|
+
|
|
737
|
+
This agent integrates with the Agentic QE Fleet through:
|
|
738
|
+
- **EventBus**: Real-time visual regression alerts
|
|
739
|
+
- **MemoryManager**: Baseline and regression data storage
|
|
740
|
+
- **FleetManager**: Coordinated visual testing workflows
|
|
741
|
+
- **Neural Network**: AI-powered visual diff and regression classification
|
|
742
|
+
- **Quality Gate**: Automated deployment blocking on visual regressions
|
|
743
|
+
|
|
744
|
+
## Advanced Features
|
|
745
|
+
|
|
746
|
+
### AI-Powered Visual Understanding
|
|
747
|
+
Uses neural networks to understand UI context and semantics, not just pixel differences
|
|
748
|
+
|
|
749
|
+
### Smart Baseline Management
|
|
750
|
+
Automatically suggests baseline updates when intentional design changes are detected
|
|
751
|
+
|
|
752
|
+
### Visual Test Generation
|
|
753
|
+
Generates visual test cases automatically from UI component libraries
|
|
754
|
+
|
|
755
|
+
### Continuous Visual Monitoring
|
|
756
|
+
Monitors production UI for visual degradation in real-time
|