agentic-qe 3.7.9 → 3.7.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/.validation/README.md +111 -111
- package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
- package/.claude/skills/.validation/examples/performance-testing-output.example.json +252 -252
- package/.claude/skills/.validation/examples/security-testing-output.example.json +413 -413
- package/.claude/skills/.validation/examples/testability-scoring-output.example.json +350 -350
- package/.claude/skills/.validation/schemas/skill-eval.schema.json +462 -462
- package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
- package/.claude/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
- package/.claude/skills/.validation/schemas/skill-output.template.json +610 -610
- package/.claude/skills/.validation/skill-validation-mcp-integration.md +250 -250
- package/.claude/skills/.validation/templates/eval.template.yaml +366 -366
- package/.claude/skills/.validation/templates/schemas/output.json +145 -145
- package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
- package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
- package/.claude/skills/.validation/test-data/invalid-output.json +5 -5
- package/.claude/skills/.validation/test-data/minimal-output.json +9 -9
- package/.claude/skills/.validation/test-data/sample-output.json +73 -73
- package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
- package/.claude/skills/a11y-ally/schemas/output.json +549 -549
- package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
- package/.claude/skills/accessibility-testing/schemas/output.json +776 -776
- package/.claude/skills/accessibility-testing/test-data/sample-output.json +191 -191
- package/.claude/skills/agentic-quality-engineering/schemas/output.json +577 -577
- package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
- package/.claude/skills/api-testing-patterns/schemas/output.json +845 -845
- package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
- package/.claude/skills/brutal-honesty-review/schemas/output.json +291 -291
- package/.claude/skills/bug-reporting-excellence/schemas/output.json +288 -288
- package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
- package/.claude/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
- package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
- package/.claude/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
- package/.claude/skills/code-review-quality/schemas/output.json +264 -264
- package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
- package/.claude/skills/compatibility-testing/schemas/output.json +551 -551
- package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
- package/.claude/skills/compliance-testing/schemas/output.json +845 -845
- package/.claude/skills/consultancy-practices/schemas/output.json +282 -282
- package/.claude/skills/contract-testing/evals/contract-testing.yaml +748 -748
- package/.claude/skills/contract-testing/schemas/output.json +638 -638
- package/.claude/skills/database-testing/evals/database-testing.yaml +968 -968
- package/.claude/skills/database-testing/schemas/output.json +1446 -1446
- package/.claude/skills/debug-loop/SKILL.md +61 -61
- package/.claude/skills/enterprise-integration-testing/SKILL.md +735 -735
- package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -158
- package/.claude/skills/enterprise-integration-testing/schemas/output.json +74 -74
- package/.claude/skills/enterprise-integration-testing/scripts/validate-config.json +25 -25
- package/.claude/skills/iterative-loop/SKILL.md +371 -371
- package/.claude/skills/localization-testing/evals/localization-testing.yaml +544 -544
- package/.claude/skills/localization-testing/schemas/output.json +325 -325
- package/.claude/skills/middleware-testing-patterns/SKILL.md +798 -798
- package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -153
- package/.claude/skills/middleware-testing-patterns/schemas/output.json +58 -58
- package/.claude/skills/middleware-testing-patterns/scripts/validate-config.json +25 -25
- package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
- package/.claude/skills/mobile-testing/schemas/output.json +318 -318
- package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
- package/.claude/skills/mutation-testing/schemas/output.json +707 -707
- package/.claude/skills/mutation-testing/test-data/sample-output.json +295 -295
- package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
- package/.claude/skills/n8n-expression-testing/schemas/output.json +369 -369
- package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
- package/.claude/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
- package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
- package/.claude/skills/n8n-security-testing/schemas/output.json +293 -293
- package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
- package/.claude/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
- package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
- package/.claude/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
- package/.claude/skills/observability-testing-patterns/SKILL.md +930 -930
- package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -157
- package/.claude/skills/observability-testing-patterns/schemas/output.json +58 -58
- package/.claude/skills/observability-testing-patterns/scripts/validate-config.json +25 -25
- package/.claude/skills/pentest-validation/SKILL.md +268 -268
- package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
- package/.claude/skills/pentest-validation/schemas/output.json +281 -281
- package/.claude/skills/performance-analysis/evals/performance-analysis.yaml +144 -144
- package/.claude/skills/performance-analysis/schemas/output.json +588 -588
- package/.claude/skills/performance-testing/evals/performance-testing.yaml +772 -772
- package/.claude/skills/performance-testing/schemas/output.json +1184 -1184
- package/.claude/skills/pr-review/SKILL.md +61 -61
- package/.claude/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
- package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -211
- package/.claude/skills/qcsd-cicd-swarm/schemas/output.json +86 -86
- package/.claude/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -30
- package/.claude/skills/qcsd-development-swarm/SKILL.md +2154 -2154
- package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -162
- package/.claude/skills/qcsd-development-swarm/schemas/output.json +72 -72
- package/.claude/skills/qcsd-development-swarm/scripts/validate-config.json +25 -25
- package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
- package/.claude/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
- package/.claude/skills/qcsd-production-swarm/SKILL.md +2781 -2781
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
- package/.claude/skills/qcsd-production-swarm/schemas/output.json +505 -505
- package/.claude/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
- package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
- package/.claude/skills/qe-chaos-resilience/schemas/output.json +314 -314
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
- package/.claude/skills/qe-code-intelligence/schemas/output.json +315 -315
- package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
- package/.claude/skills/qe-contract-testing/schemas/output.json +295 -295
- package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
- package/.claude/skills/qe-coverage-analysis/schemas/output.json +286 -286
- package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
- package/.claude/skills/qe-defect-intelligence/schemas/output.json +283 -283
- package/.claude/skills/qe-iterative-loop/schemas/output.json +264 -264
- package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
- package/.claude/skills/qe-learning-optimization/schemas/output.json +288 -288
- package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
- package/.claude/skills/qe-quality-assessment/schemas/output.json +550 -550
- package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
- package/.claude/skills/qe-requirements-validation/schemas/output.json +587 -587
- package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
- package/.claude/skills/qe-security-compliance/schemas/output.json +498 -498
- package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
- package/.claude/skills/qe-test-execution/schemas/output.json +529 -529
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
- package/.claude/skills/qe-test-generation/schemas/output.json +439 -439
- package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
- package/.claude/skills/qe-visual-accessibility/schemas/output.json +491 -491
- package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
- package/.claude/skills/quality-metrics/schemas/output.json +403 -403
- package/.claude/skills/refactoring-patterns/schemas/output.json +475 -475
- package/.claude/skills/regression-testing/evals/regression-testing.yaml +504 -504
- package/.claude/skills/regression-testing/schemas/output.json +311 -311
- package/.claude/skills/release/SKILL.md +347 -347
- package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
- package/.claude/skills/risk-based-testing/schemas/output.json +480 -480
- package/.claude/skills/security-testing/evals/security-testing.yaml +789 -789
- package/.claude/skills/security-testing/schemas/output.json +879 -879
- package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
- package/.claude/skills/security-visual-testing/schemas/output.json +486 -486
- package/.claude/skills/sfdipot-product-factors/SKILL.md +239 -239
- package/.claude/skills/sherlock-review/schemas/output.json +297 -297
- package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
- package/.claude/skills/shift-left-testing/schemas/output.json +459 -459
- package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
- package/.claude/skills/shift-right-testing/schemas/output.json +418 -418
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/tdd-london-chicago/schemas/output.json +444 -444
- package/.claude/skills/technical-writing/schemas/output.json +268 -268
- package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
- package/.claude/skills/test-automation-strategy/schemas/output.json +444 -444
- package/.claude/skills/test-data-management/evals/test-data-management.yaml +504 -504
- package/.claude/skills/test-data-management/schemas/output.json +284 -284
- package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
- package/.claude/skills/test-design-techniques/schemas/output.json +295 -295
- package/.claude/skills/test-environment-management/schemas/output.json +310 -310
- package/.claude/skills/test-idea-rewriting/SKILL.md +229 -229
- package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
- package/.claude/skills/test-reporting-analytics/schemas/output.json +329 -329
- package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
- package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -84
- package/.claude/skills/testability-scoring/schemas/output.json +606 -606
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
- package/.claude/skills/verification-quality/evals/verification-quality.yaml +150 -150
- package/.claude/skills/verification-quality/schemas/output.json +432 -432
- package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
- package/.claude/skills/visual-testing-advanced/schemas/output.json +294 -294
- package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
- package/.claude/skills/wms-testing-patterns/schemas/output.json +150 -150
- package/.claude/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
- package/CHANGELOG.md +36 -0
- package/README.md +171 -901
- package/assets/agents/v3/helpers/quality-criteria/evidence-classification.md +116 -116
- package/assets/agents/v3/helpers/quality-criteria/htsm-categories.md +139 -139
- package/assets/governance/constitution.md +202 -202
- package/assets/governance/shards/chaos-resilience.shard.md +221 -221
- package/assets/governance/shards/code-intelligence.shard.md +178 -178
- package/assets/governance/shards/contract-testing.shard.md +206 -206
- package/assets/governance/shards/coverage-analysis.shard.md +146 -146
- package/assets/governance/shards/defect-intelligence.shard.md +182 -182
- package/assets/governance/shards/learning-optimization.shard.md +248 -248
- package/assets/governance/shards/quality-assessment.shard.md +165 -165
- package/assets/governance/shards/requirements-validation.shard.md +177 -177
- package/assets/governance/shards/security-compliance.shard.md +196 -196
- package/assets/governance/shards/test-execution.shard.md +156 -156
- package/assets/governance/shards/test-generation.shard.md +128 -128
- package/assets/governance/shards/visual-accessibility.shard.md +209 -209
- package/assets/hooks/cross-phase-memory.yaml +253 -253
- package/assets/patterns/adr-051-booster-patterns.json +78 -78
- package/assets/patterns/adr-051-embedding-patterns.json +147 -147
- package/assets/patterns/adr-051-integration-summary.json +62 -62
- package/assets/patterns/adr-051-reasoning-patterns.json +166 -166
- package/assets/patterns/adr-051-router-patterns.json +113 -113
- package/assets/patterns/index.json +136 -136
- package/assets/skills/.validation/README.md +111 -111
- package/assets/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
- package/assets/skills/.validation/examples/performance-testing-output.example.json +252 -252
- package/assets/skills/.validation/examples/security-testing-output.example.json +413 -413
- package/assets/skills/.validation/examples/testability-scoring-output.example.json +350 -350
- package/assets/skills/.validation/schemas/skill-eval.schema.json +462 -462
- package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
- package/assets/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
- package/assets/skills/.validation/schemas/skill-output.template.json +610 -610
- package/assets/skills/.validation/skill-validation-mcp-integration.md +250 -250
- package/assets/skills/.validation/templates/eval.template.yaml +366 -366
- package/assets/skills/.validation/templates/schemas/output.json +145 -145
- package/assets/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
- package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
- package/assets/skills/.validation/test-data/invalid-output.json +5 -5
- package/assets/skills/.validation/test-data/minimal-output.json +9 -9
- package/assets/skills/.validation/test-data/sample-output.json +73 -73
- package/assets/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
- package/assets/skills/a11y-ally/schemas/output.json +549 -549
- package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
- package/assets/skills/accessibility-testing/schemas/output.json +776 -776
- package/assets/skills/accessibility-testing/test-data/sample-output.json +191 -191
- package/assets/skills/agentic-quality-engineering/schemas/output.json +577 -577
- package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
- package/assets/skills/api-testing-patterns/schemas/output.json +845 -845
- package/assets/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
- package/assets/skills/brutal-honesty-review/schemas/output.json +291 -291
- package/assets/skills/bug-reporting-excellence/schemas/output.json +288 -288
- package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
- package/assets/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
- package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
- package/assets/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
- package/assets/skills/code-review-quality/schemas/output.json +264 -264
- package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
- package/assets/skills/compatibility-testing/schemas/output.json +551 -551
- package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
- package/assets/skills/compliance-testing/schemas/output.json +845 -845
- package/assets/skills/consultancy-practices/schemas/output.json +282 -282
- package/assets/skills/contract-testing/evals/contract-testing.yaml +748 -748
- package/assets/skills/contract-testing/schemas/output.json +638 -638
- package/assets/skills/database-testing/evals/database-testing.yaml +968 -968
- package/assets/skills/database-testing/schemas/output.json +1446 -1446
- package/assets/skills/debug-loop/SKILL.md +61 -61
- package/assets/skills/enterprise-integration-testing/SKILL.md +735 -735
- package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -158
- package/assets/skills/enterprise-integration-testing/schemas/output.json +74 -74
- package/assets/skills/enterprise-integration-testing/scripts/validate-config.json +25 -25
- package/assets/skills/localization-testing/evals/localization-testing.yaml +544 -544
- package/assets/skills/localization-testing/schemas/output.json +325 -325
- package/assets/skills/middleware-testing-patterns/SKILL.md +798 -798
- package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -153
- package/assets/skills/middleware-testing-patterns/schemas/output.json +58 -58
- package/assets/skills/middleware-testing-patterns/scripts/validate-config.json +25 -25
- package/assets/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
- package/assets/skills/mobile-testing/schemas/output.json +318 -318
- package/assets/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
- package/assets/skills/mutation-testing/schemas/output.json +707 -707
- package/assets/skills/mutation-testing/test-data/sample-output.json +295 -295
- package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
- package/assets/skills/n8n-expression-testing/schemas/output.json +369 -369
- package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
- package/assets/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
- package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
- package/assets/skills/n8n-security-testing/schemas/output.json +293 -293
- package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
- package/assets/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
- package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
- package/assets/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
- package/assets/skills/observability-testing-patterns/SKILL.md +930 -930
- package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -157
- package/assets/skills/observability-testing-patterns/schemas/output.json +58 -58
- package/assets/skills/observability-testing-patterns/scripts/validate-config.json +25 -25
- package/assets/skills/pentest-validation/SKILL.md +268 -268
- package/assets/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
- package/assets/skills/pentest-validation/schemas/output.json +281 -281
- package/assets/skills/performance-testing/evals/performance-testing.yaml +772 -772
- package/assets/skills/performance-testing/schemas/output.json +1184 -1184
- package/assets/skills/pr-review/SKILL.md +61 -61
- package/assets/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
- package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -211
- package/assets/skills/qcsd-cicd-swarm/schemas/output.json +86 -86
- package/assets/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -30
- package/assets/skills/qcsd-development-swarm/SKILL.md +2154 -2154
- package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -162
- package/assets/skills/qcsd-development-swarm/schemas/output.json +72 -72
- package/assets/skills/qcsd-development-swarm/scripts/validate-config.json +25 -25
- package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
- package/assets/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
- package/assets/skills/qcsd-production-swarm/SKILL.md +2781 -2781
- package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
- package/assets/skills/qcsd-production-swarm/schemas/output.json +505 -505
- package/assets/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
- package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
- package/assets/skills/qe-chaos-resilience/schemas/output.json +314 -314
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
- package/assets/skills/qe-code-intelligence/schemas/output.json +315 -315
- package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
- package/assets/skills/qe-contract-testing/schemas/output.json +295 -295
- package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
- package/assets/skills/qe-coverage-analysis/schemas/output.json +286 -286
- package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
- package/assets/skills/qe-defect-intelligence/schemas/output.json +283 -283
- package/assets/skills/qe-iterative-loop/schemas/output.json +264 -264
- package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
- package/assets/skills/qe-learning-optimization/schemas/output.json +288 -288
- package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
- package/assets/skills/qe-quality-assessment/schemas/output.json +550 -550
- package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
- package/assets/skills/qe-requirements-validation/schemas/output.json +587 -587
- package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
- package/assets/skills/qe-security-compliance/schemas/output.json +498 -498
- package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
- package/assets/skills/qe-test-execution/schemas/output.json +529 -529
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
- package/assets/skills/qe-test-generation/schemas/output.json +439 -439
- package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
- package/assets/skills/qe-visual-accessibility/schemas/output.json +491 -491
- package/assets/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
- package/assets/skills/quality-metrics/schemas/output.json +403 -403
- package/assets/skills/refactoring-patterns/schemas/output.json +475 -475
- package/assets/skills/regression-testing/evals/regression-testing.yaml +504 -504
- package/assets/skills/regression-testing/schemas/output.json +311 -311
- package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
- package/assets/skills/risk-based-testing/schemas/output.json +480 -480
- package/assets/skills/security-testing/evals/security-testing.yaml +789 -789
- package/assets/skills/security-testing/schemas/output.json +879 -879
- package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
- package/assets/skills/security-visual-testing/schemas/output.json +486 -486
- package/assets/skills/sfdipot-product-factors/SKILL.md +239 -239
- package/assets/skills/sherlock-review/schemas/output.json +297 -297
- package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
- package/assets/skills/shift-left-testing/schemas/output.json +459 -459
- package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
- package/assets/skills/shift-right-testing/schemas/output.json +418 -418
- package/assets/skills/tdd-london-chicago/schemas/output.json +444 -444
- package/assets/skills/technical-writing/schemas/output.json +268 -268
- package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
- package/assets/skills/test-automation-strategy/schemas/output.json +444 -444
- package/assets/skills/test-data-management/evals/test-data-management.yaml +504 -504
- package/assets/skills/test-data-management/schemas/output.json +284 -284
- package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
- package/assets/skills/test-design-techniques/schemas/output.json +295 -295
- package/assets/skills/test-environment-management/schemas/output.json +310 -310
- package/assets/skills/test-idea-rewriting/SKILL.md +229 -229
- package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
- package/assets/skills/test-reporting-analytics/schemas/output.json +329 -329
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
- package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -84
- package/assets/skills/testability-scoring/schemas/output.json +606 -606
- package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
- package/assets/skills/verification-quality/evals/verification-quality.yaml +150 -150
- package/assets/skills/verification-quality/schemas/output.json +432 -432
- package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
- package/assets/skills/visual-testing-advanced/schemas/output.json +294 -294
- package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
- package/assets/skills/wms-testing-patterns/schemas/output.json +150 -150
- package/assets/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
- package/assets/templates/validation-summary.json +56 -56
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts +1 -0
- package/dist/agents/claim-verifier/verifiers/output-verifier.d.ts.map +1 -1
- package/dist/agents/claim-verifier/verifiers/output-verifier.js +16 -3
- package/dist/agents/claim-verifier/verifiers/output-verifier.js.map +1 -1
- package/dist/cli/bundle.js +488 -75
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +11 -9
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/governance/adversarial-defense-integration.d.ts +29 -0
- package/dist/governance/adversarial-defense-integration.d.ts.map +1 -1
- package/dist/governance/adversarial-defense-integration.js +85 -1
- package/dist/governance/adversarial-defense-integration.js.map +1 -1
- package/dist/governance/continue-gate-integration.d.ts +7 -5
- package/dist/governance/continue-gate-integration.d.ts.map +1 -1
- package/dist/governance/continue-gate-integration.js +72 -15
- package/dist/governance/continue-gate-integration.js.map +1 -1
- package/dist/governance/deterministic-gateway-integration.d.ts +5 -0
- package/dist/governance/deterministic-gateway-integration.d.ts.map +1 -1
- package/dist/governance/deterministic-gateway-integration.js +35 -1
- package/dist/governance/deterministic-gateway-integration.js.map +1 -1
- package/dist/governance/evolution-pipeline-integration.d.ts +5 -0
- package/dist/governance/evolution-pipeline-integration.d.ts.map +1 -1
- package/dist/governance/evolution-pipeline-integration.js +57 -1
- package/dist/governance/evolution-pipeline-integration.js.map +1 -1
- package/dist/governance/memory-write-gate-integration.d.ts +6 -3
- package/dist/governance/memory-write-gate-integration.d.ts.map +1 -1
- package/dist/governance/memory-write-gate-integration.js +48 -10
- package/dist/governance/memory-write-gate-integration.js.map +1 -1
- package/dist/governance/proof-envelope-integration.d.ts +1 -0
- package/dist/governance/proof-envelope-integration.d.ts.map +1 -1
- package/dist/governance/proof-envelope-integration.js +37 -0
- package/dist/governance/proof-envelope-integration.js.map +1 -1
- package/dist/governance/shard-retriever-integration.d.ts +10 -0
- package/dist/governance/shard-retriever-integration.d.ts.map +1 -1
- package/dist/governance/shard-retriever-integration.js +50 -1
- package/dist/governance/shard-retriever-integration.js.map +1 -1
- package/dist/governance/trust-accumulator-integration.d.ts +5 -0
- package/dist/governance/trust-accumulator-integration.d.ts.map +1 -1
- package/dist/governance/trust-accumulator-integration.js +35 -2
- package/dist/governance/trust-accumulator-integration.js.map +1 -1
- package/dist/init/phases/10-workers.js +2 -2
- package/dist/init/phases/10-workers.js.map +1 -1
- package/dist/mcp/bundle.js +478 -62
- package/dist/mcp/protocol-server.js +2 -2
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +1 -0
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/shared/language-detector.js +1 -1
- package/dist/shared/language-detector.js.map +1 -1
- package/dist/shared/parsers/multi-language-parser.d.ts.map +1 -1
- package/dist/shared/parsers/multi-language-parser.js +55 -16
- package/dist/shared/parsers/multi-language-parser.js.map +1 -1
- package/dist/shared/sql-safety.d.ts.map +1 -1
- package/dist/shared/sql-safety.js +7 -1
- package/dist/shared/sql-safety.js.map +1 -1
- package/package.json +6 -2
- package/scripts/prepare-assets.sh +8 -0
|
@@ -1,350 +1,350 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://agentic-qe.dev/schemas/skill-output-template.json",
|
|
3
|
-
"skillName": "testability-scoring",
|
|
4
|
-
"version": "2.2.0",
|
|
5
|
-
"timestamp": "2026-02-02T15:00:00.000Z",
|
|
6
|
-
"status": "success",
|
|
7
|
-
"trustTier": 3,
|
|
8
|
-
"output": {
|
|
9
|
-
"summary": "Testability assessment completed for https://example.com. Overall score: 72/100 (Grade C). Strengths in Observability (85) and Controllability (82). Improvement needed in Decomposability (55) and Smallness (58). 8 recommendations generated with estimated +18 points improvement potential.",
|
|
10
|
-
"score": {
|
|
11
|
-
"value": 72,
|
|
12
|
-
"max": 100,
|
|
13
|
-
"grade": "C",
|
|
14
|
-
"percentile": 45,
|
|
15
|
-
"trend": "improving"
|
|
16
|
-
},
|
|
17
|
-
"findings": [
|
|
18
|
-
{
|
|
19
|
-
"id": "TEST-001",
|
|
20
|
-
"title": "Poor Component Isolation - Tightly Coupled Modules",
|
|
21
|
-
"description": "The application architecture shows significant coupling between modules. Testing individual components requires loading the entire application context.",
|
|
22
|
-
"severity": "high",
|
|
23
|
-
"category": "decomposability",
|
|
24
|
-
"location": {
|
|
25
|
-
"url": "https://example.com",
|
|
26
|
-
"selector": "[data-testid]"
|
|
27
|
-
},
|
|
28
|
-
"evidence": "Only 12% of components have data-testid attributes. Global state management with 47 cross-component dependencies identified.",
|
|
29
|
-
"remediation": "Add data-testid attributes to all interactive elements. Refactor to use dependency injection for better isolation.",
|
|
30
|
-
"confidence": 0.88
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"id": "TEST-002",
|
|
34
|
-
"title": "Excessive Page Complexity - High Element Count",
|
|
35
|
-
"description": "Landing page contains 2,847 DOM elements, significantly above the recommended 1,500 threshold for optimal testability.",
|
|
36
|
-
"severity": "medium",
|
|
37
|
-
"category": "smallness",
|
|
38
|
-
"location": {
|
|
39
|
-
"url": "https://example.com",
|
|
40
|
-
"selector": "body"
|
|
41
|
-
},
|
|
42
|
-
"evidence": "DOM element count: 2,847. Script bundles: 1.8MB. Third-party scripts: 23.",
|
|
43
|
-
"remediation": "Implement code splitting, lazy loading, and remove unused components. Target <1,500 DOM elements.",
|
|
44
|
-
"confidence": 0.95
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"id": "TEST-003",
|
|
48
|
-
"title": "Console Errors Present During Load",
|
|
49
|
-
"description": "3 JavaScript errors detected during initial page load, indicating potential runtime issues that could cause flaky tests.",
|
|
50
|
-
"severity": "medium",
|
|
51
|
-
"category": "unbugginess",
|
|
52
|
-
"location": {
|
|
53
|
-
"url": "https://example.com"
|
|
54
|
-
},
|
|
55
|
-
"evidence": "TypeError: Cannot read property 'map' of undefined (analytics.js:42), NetworkError: Failed to load resource (tracking.js), Warning: React key prop missing (ProductList.jsx)",
|
|
56
|
-
"remediation": "Fix console errors before testing. Add error boundary components to isolate failures.",
|
|
57
|
-
"confidence": 0.99
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"id": "TEST-004",
|
|
61
|
-
"title": "Limited Semantic HTML Structure",
|
|
62
|
-
"description": "Many interactive elements lack proper semantic HTML structure, making them harder to target with accessible selectors.",
|
|
63
|
-
"severity": "medium",
|
|
64
|
-
"category": "explainability",
|
|
65
|
-
"location": {
|
|
66
|
-
"url": "https://example.com"
|
|
67
|
-
},
|
|
68
|
-
"evidence": "32% of buttons use div/span instead of button element. 45% of links lack meaningful text. 18% of form inputs missing labels.",
|
|
69
|
-
"remediation": "Use semantic HTML elements (button, nav, main, article). Add aria-label for unlabeled interactive elements.",
|
|
70
|
-
"confidence": 0.92
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"id": "TEST-005",
|
|
74
|
-
"title": "Non-deterministic Content Loading",
|
|
75
|
-
"description": "Page content loads asynchronously with variable timing, causing potential race conditions in automated tests.",
|
|
76
|
-
"severity": "low",
|
|
77
|
-
"category": "algorithmicStability",
|
|
78
|
-
"location": {
|
|
79
|
-
"url": "https://example.com"
|
|
80
|
-
},
|
|
81
|
-
"evidence": "5 API calls with varying response times (200ms - 3s). No loading indicators on 60% of async content. requestAnimationFrame used for layout.",
|
|
82
|
-
"remediation": "Add loading states with consistent indicators. Implement skeleton screens for predictable wait conditions.",
|
|
83
|
-
"confidence": 0.85
|
|
84
|
-
}
|
|
85
|
-
],
|
|
86
|
-
"recommendations": [
|
|
87
|
-
{
|
|
88
|
-
"id": "REC-001",
|
|
89
|
-
"title": "Add data-testid Attributes to Interactive Elements",
|
|
90
|
-
"description": "Add unique data-testid attributes to all buttons, links, form inputs, and key UI components. This provides stable selectors that survive CSS and markup changes.",
|
|
91
|
-
"priority": "high",
|
|
92
|
-
"effort": "medium",
|
|
93
|
-
"impact": 8,
|
|
94
|
-
"relatedFindings": ["TEST-001"],
|
|
95
|
-
"codeExample": "// Before\n<button class=\"btn-primary\" onClick={submit}>Submit</button>\n\n// After\n<button data-testid=\"checkout-submit-btn\" class=\"btn-primary\" onClick={submit}>Submit</button>",
|
|
96
|
-
"resources": [
|
|
97
|
-
{
|
|
98
|
-
"title": "Testing Library - data-testid",
|
|
99
|
-
"url": "https://testing-library.com/docs/queries/bytestid/"
|
|
100
|
-
}
|
|
101
|
-
]
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
"id": "REC-002",
|
|
105
|
-
"title": "Implement Code Splitting and Lazy Loading",
|
|
106
|
-
"description": "Split the application into smaller chunks that load on demand. This reduces initial bundle size and DOM complexity, improving both performance and testability.",
|
|
107
|
-
"priority": "high",
|
|
108
|
-
"effort": "high",
|
|
109
|
-
"impact": 7,
|
|
110
|
-
"relatedFindings": ["TEST-002"],
|
|
111
|
-
"codeExample": "// Use React.lazy for route-based splitting\nconst ProductList = React.lazy(() => import('./ProductList'));\n\n// Use dynamic imports for heavy components\nconst ChartLibrary = dynamic(() => import('chart-library'), {\n loading: () => <Skeleton />,\n ssr: false\n});",
|
|
112
|
-
"resources": [
|
|
113
|
-
{
|
|
114
|
-
"title": "React Code Splitting",
|
|
115
|
-
"url": "https://react.dev/reference/react/lazy"
|
|
116
|
-
}
|
|
117
|
-
]
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"id": "REC-003",
|
|
121
|
-
"title": "Fix Console Errors and Add Error Boundaries",
|
|
122
|
-
"description": "Resolve all JavaScript errors that appear during page load. Add error boundaries to prevent single component failures from breaking tests.",
|
|
123
|
-
"priority": "high",
|
|
124
|
-
"effort": "low",
|
|
125
|
-
"impact": 6,
|
|
126
|
-
"relatedFindings": ["TEST-003"],
|
|
127
|
-
"codeExample": "class ErrorBoundary extends React.Component {\n state = { hasError: false };\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n render() {\n if (this.state.hasError) {\n return <div data-testid=\"error-boundary\">Something went wrong</div>;\n }\n return this.props.children;\n }\n}",
|
|
128
|
-
"resources": [
|
|
129
|
-
{
|
|
130
|
-
"title": "React Error Boundaries",
|
|
131
|
-
"url": "https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary"
|
|
132
|
-
}
|
|
133
|
-
]
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"id": "REC-004",
|
|
137
|
-
"title": "Improve Semantic HTML Structure",
|
|
138
|
-
"description": "Replace div/span with semantic HTML elements. This improves accessibility and provides more reliable test selectors using role-based queries.",
|
|
139
|
-
"priority": "medium",
|
|
140
|
-
"effort": "medium",
|
|
141
|
-
"impact": 5,
|
|
142
|
-
"relatedFindings": ["TEST-004"],
|
|
143
|
-
"codeExample": "// Before\n<div class=\"nav\" onClick={...}>Menu</div>\n\n// After\n<nav role=\"navigation\" aria-label=\"Main\">\n <button aria-expanded=\"false\" aria-controls=\"menu\">Menu</button>\n</nav>",
|
|
144
|
-
"resources": [
|
|
145
|
-
{
|
|
146
|
-
"title": "Testing Library - Queries Priority",
|
|
147
|
-
"url": "https://testing-library.com/docs/queries/about/#priority"
|
|
148
|
-
}
|
|
149
|
-
]
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
"id": "REC-005",
|
|
153
|
-
"title": "Add Loading States and Wait Conditions",
|
|
154
|
-
"description": "Implement consistent loading indicators for all async operations. This provides reliable wait conditions for automated tests.",
|
|
155
|
-
"priority": "medium",
|
|
156
|
-
"effort": "low",
|
|
157
|
-
"impact": 4,
|
|
158
|
-
"relatedFindings": ["TEST-005"],
|
|
159
|
-
"codeExample": "// Add loading state\n{isLoading ? (\n <div data-testid=\"loading-spinner\" role=\"status\">\n <span>Loading...</span>\n </div>\n) : (\n <ProductList data-testid=\"product-list\" />\n)}",
|
|
160
|
-
"resources": [
|
|
161
|
-
{
|
|
162
|
-
"title": "Playwright Auto-Waiting",
|
|
163
|
-
"url": "https://playwright.dev/docs/actionability"
|
|
164
|
-
}
|
|
165
|
-
]
|
|
166
|
-
}
|
|
167
|
-
],
|
|
168
|
-
"metrics": {
|
|
169
|
-
"total": 10,
|
|
170
|
-
"passed": 7,
|
|
171
|
-
"failed": 3,
|
|
172
|
-
"skipped": 0,
|
|
173
|
-
"coverage": 100,
|
|
174
|
-
"duration": 12450,
|
|
175
|
-
"custom": {
|
|
176
|
-
"domElementCount": 2847,
|
|
177
|
-
"consoleErrorCount": 3,
|
|
178
|
-
"consoleWarningCount": 5,
|
|
179
|
-
"dataTestIdCoverage": 12,
|
|
180
|
-
"semanticHtmlScore": 58,
|
|
181
|
-
"loadTimeMs": 2340
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
"categories": {
|
|
185
|
-
"observability": {
|
|
186
|
-
"score": 85,
|
|
187
|
-
"weight": 0.15,
|
|
188
|
-
"description": "Transparency of product states and behavior - Can we see what's happening?",
|
|
189
|
-
"grade": "B",
|
|
190
|
-
"findingCount": 0
|
|
191
|
-
},
|
|
192
|
-
"controllability": {
|
|
193
|
-
"score": 82,
|
|
194
|
-
"weight": 0.15,
|
|
195
|
-
"description": "Capacity to provide any input and invoke any state - Can we control the application?",
|
|
196
|
-
"grade": "B",
|
|
197
|
-
"findingCount": 0
|
|
198
|
-
},
|
|
199
|
-
"algorithmicSimplicity": {
|
|
200
|
-
"score": 75,
|
|
201
|
-
"weight": 0.10,
|
|
202
|
-
"description": "Clear relationships between inputs and outputs - Are behaviors predictable?",
|
|
203
|
-
"grade": "C",
|
|
204
|
-
"findingCount": 0
|
|
205
|
-
},
|
|
206
|
-
"algorithmicTransparency": {
|
|
207
|
-
"score": 78,
|
|
208
|
-
"weight": 0.10,
|
|
209
|
-
"description": "Understanding how the product produces output - Can we understand what it does?",
|
|
210
|
-
"grade": "C",
|
|
211
|
-
"findingCount": 0
|
|
212
|
-
},
|
|
213
|
-
"algorithmicStability": {
|
|
214
|
-
"score": 70,
|
|
215
|
-
"weight": 0.10,
|
|
216
|
-
"description": "Changes do not disturb logic - Does behavior remain consistent?",
|
|
217
|
-
"grade": "C",
|
|
218
|
-
"findingCount": 1
|
|
219
|
-
},
|
|
220
|
-
"explainability": {
|
|
221
|
-
"score": 68,
|
|
222
|
-
"weight": 0.10,
|
|
223
|
-
"description": "Design understandable to outsiders - Is the interface understandable?",
|
|
224
|
-
"grade": "D",
|
|
225
|
-
"findingCount": 1
|
|
226
|
-
},
|
|
227
|
-
"unbugginess": {
|
|
228
|
-
"score": 65,
|
|
229
|
-
"weight": 0.10,
|
|
230
|
-
"description": "Minimal defects that slow testing - How error-free is it?",
|
|
231
|
-
"grade": "D",
|
|
232
|
-
"findingCount": 1
|
|
233
|
-
},
|
|
234
|
-
"smallness": {
|
|
235
|
-
"score": 58,
|
|
236
|
-
"weight": 0.10,
|
|
237
|
-
"description": "Less product means less to examine - Are components appropriately sized?",
|
|
238
|
-
"grade": "F",
|
|
239
|
-
"findingCount": 1
|
|
240
|
-
},
|
|
241
|
-
"decomposability": {
|
|
242
|
-
"score": 55,
|
|
243
|
-
"weight": 0.05,
|
|
244
|
-
"description": "Parts can be separated for testing - Can we test parts in isolation?",
|
|
245
|
-
"grade": "F",
|
|
246
|
-
"findingCount": 1
|
|
247
|
-
},
|
|
248
|
-
"similarity": {
|
|
249
|
-
"score": 80,
|
|
250
|
-
"weight": 0.05,
|
|
251
|
-
"description": "Resemblance to known technology - Is the tech stack familiar?",
|
|
252
|
-
"grade": "B",
|
|
253
|
-
"findingCount": 0
|
|
254
|
-
}
|
|
255
|
-
},
|
|
256
|
-
"artifacts": [
|
|
257
|
-
{
|
|
258
|
-
"type": "report",
|
|
259
|
-
"path": "tests/reports/testability-report-2026-02-02.html",
|
|
260
|
-
"format": "html",
|
|
261
|
-
"description": "Visual HTML report with radar chart and principle breakdown",
|
|
262
|
-
"sizeBytes": 185420
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
"type": "data",
|
|
266
|
-
"path": "tests/reports/testability-results-2026-02-02.json",
|
|
267
|
-
"format": "json",
|
|
268
|
-
"description": "Raw assessment data for programmatic analysis",
|
|
269
|
-
"sizeBytes": 24680
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
"type": "screenshot",
|
|
273
|
-
"path": "tests/reports/testability-screenshot-2026-02-02.png",
|
|
274
|
-
"format": "png",
|
|
275
|
-
"description": "Full page screenshot at time of assessment",
|
|
276
|
-
"sizeBytes": 542800
|
|
277
|
-
}
|
|
278
|
-
],
|
|
279
|
-
"timeline": [
|
|
280
|
-
{
|
|
281
|
-
"timestamp": "2026-02-02T15:00:00.000Z",
|
|
282
|
-
"event": "Assessment started",
|
|
283
|
-
"type": "start"
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
"timestamp": "2026-02-02T15:00:02.340Z",
|
|
287
|
-
"event": "Page loaded and initial metrics collected",
|
|
288
|
-
"type": "checkpoint",
|
|
289
|
-
"durationMs": 2340
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
"timestamp": "2026-02-02T15:00:05.000Z",
|
|
293
|
-
"event": "Observability principle analysis completed",
|
|
294
|
-
"type": "checkpoint",
|
|
295
|
-
"durationMs": 2660
|
|
296
|
-
},
|
|
297
|
-
{
|
|
298
|
-
"timestamp": "2026-02-02T15:00:08.000Z",
|
|
299
|
-
"event": "Controllability principle analysis completed",
|
|
300
|
-
"type": "checkpoint",
|
|
301
|
-
"durationMs": 3000
|
|
302
|
-
},
|
|
303
|
-
{
|
|
304
|
-
"timestamp": "2026-02-02T15:00:10.500Z",
|
|
305
|
-
"event": "All 10 principles analyzed",
|
|
306
|
-
"type": "checkpoint",
|
|
307
|
-
"durationMs": 2500
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
"timestamp": "2026-02-02T15:00:12.450Z",
|
|
311
|
-
"event": "Report generation completed",
|
|
312
|
-
"type": "complete",
|
|
313
|
-
"durationMs": 1950
|
|
314
|
-
}
|
|
315
|
-
]
|
|
316
|
-
},
|
|
317
|
-
"metadata": {
|
|
318
|
-
"executionTimeMs": 12450,
|
|
319
|
-
"toolsUsed": ["playwright", "chrome-devtools", "axe-core"],
|
|
320
|
-
"agentId": "qe-quality-analyzer",
|
|
321
|
-
"modelUsed": "claude-3.5-sonnet",
|
|
322
|
-
"inputHash": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730",
|
|
323
|
-
"targetUrl": "https://example.com",
|
|
324
|
-
"environment": "ci",
|
|
325
|
-
"retryCount": 0
|
|
326
|
-
},
|
|
327
|
-
"validation": {
|
|
328
|
-
"schemaValid": true,
|
|
329
|
-
"contentValid": true,
|
|
330
|
-
"confidence": 0.92,
|
|
331
|
-
"warnings": [
|
|
332
|
-
"Load time exceeded 2s threshold - results may vary under different network conditions"
|
|
333
|
-
],
|
|
334
|
-
"errors": [],
|
|
335
|
-
"validatorVersion": "2.2.0"
|
|
336
|
-
},
|
|
337
|
-
"learning": {
|
|
338
|
-
"patternsDetected": [
|
|
339
|
-
"high-dom-complexity",
|
|
340
|
-
"missing-testid-attributes",
|
|
341
|
-
"console-errors-present",
|
|
342
|
-
"async-loading-without-indicators"
|
|
343
|
-
],
|
|
344
|
-
"reward": 0.72,
|
|
345
|
-
"feedbackLoop": {
|
|
346
|
-
"previousRunId": "661f9511-f39c-52e5-b827-557766551111",
|
|
347
|
-
"improvement": 0.05
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agentic-qe.dev/schemas/skill-output-template.json",
|
|
3
|
+
"skillName": "testability-scoring",
|
|
4
|
+
"version": "2.2.0",
|
|
5
|
+
"timestamp": "2026-02-02T15:00:00.000Z",
|
|
6
|
+
"status": "success",
|
|
7
|
+
"trustTier": 3,
|
|
8
|
+
"output": {
|
|
9
|
+
"summary": "Testability assessment completed for https://example.com. Overall score: 72/100 (Grade C). Strengths in Observability (85) and Controllability (82). Improvement needed in Decomposability (55) and Smallness (58). 8 recommendations generated with estimated +18 points improvement potential.",
|
|
10
|
+
"score": {
|
|
11
|
+
"value": 72,
|
|
12
|
+
"max": 100,
|
|
13
|
+
"grade": "C",
|
|
14
|
+
"percentile": 45,
|
|
15
|
+
"trend": "improving"
|
|
16
|
+
},
|
|
17
|
+
"findings": [
|
|
18
|
+
{
|
|
19
|
+
"id": "TEST-001",
|
|
20
|
+
"title": "Poor Component Isolation - Tightly Coupled Modules",
|
|
21
|
+
"description": "The application architecture shows significant coupling between modules. Testing individual components requires loading the entire application context.",
|
|
22
|
+
"severity": "high",
|
|
23
|
+
"category": "decomposability",
|
|
24
|
+
"location": {
|
|
25
|
+
"url": "https://example.com",
|
|
26
|
+
"selector": "[data-testid]"
|
|
27
|
+
},
|
|
28
|
+
"evidence": "Only 12% of components have data-testid attributes. Global state management with 47 cross-component dependencies identified.",
|
|
29
|
+
"remediation": "Add data-testid attributes to all interactive elements. Refactor to use dependency injection for better isolation.",
|
|
30
|
+
"confidence": 0.88
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "TEST-002",
|
|
34
|
+
"title": "Excessive Page Complexity - High Element Count",
|
|
35
|
+
"description": "Landing page contains 2,847 DOM elements, significantly above the recommended 1,500 threshold for optimal testability.",
|
|
36
|
+
"severity": "medium",
|
|
37
|
+
"category": "smallness",
|
|
38
|
+
"location": {
|
|
39
|
+
"url": "https://example.com",
|
|
40
|
+
"selector": "body"
|
|
41
|
+
},
|
|
42
|
+
"evidence": "DOM element count: 2,847. Script bundles: 1.8MB. Third-party scripts: 23.",
|
|
43
|
+
"remediation": "Implement code splitting, lazy loading, and remove unused components. Target <1,500 DOM elements.",
|
|
44
|
+
"confidence": 0.95
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "TEST-003",
|
|
48
|
+
"title": "Console Errors Present During Load",
|
|
49
|
+
"description": "3 JavaScript errors detected during initial page load, indicating potential runtime issues that could cause flaky tests.",
|
|
50
|
+
"severity": "medium",
|
|
51
|
+
"category": "unbugginess",
|
|
52
|
+
"location": {
|
|
53
|
+
"url": "https://example.com"
|
|
54
|
+
},
|
|
55
|
+
"evidence": "TypeError: Cannot read property 'map' of undefined (analytics.js:42), NetworkError: Failed to load resource (tracking.js), Warning: React key prop missing (ProductList.jsx)",
|
|
56
|
+
"remediation": "Fix console errors before testing. Add error boundary components to isolate failures.",
|
|
57
|
+
"confidence": 0.99
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "TEST-004",
|
|
61
|
+
"title": "Limited Semantic HTML Structure",
|
|
62
|
+
"description": "Many interactive elements lack proper semantic HTML structure, making them harder to target with accessible selectors.",
|
|
63
|
+
"severity": "medium",
|
|
64
|
+
"category": "explainability",
|
|
65
|
+
"location": {
|
|
66
|
+
"url": "https://example.com"
|
|
67
|
+
},
|
|
68
|
+
"evidence": "32% of buttons use div/span instead of button element. 45% of links lack meaningful text. 18% of form inputs missing labels.",
|
|
69
|
+
"remediation": "Use semantic HTML elements (button, nav, main, article). Add aria-label for unlabeled interactive elements.",
|
|
70
|
+
"confidence": 0.92
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "TEST-005",
|
|
74
|
+
"title": "Non-deterministic Content Loading",
|
|
75
|
+
"description": "Page content loads asynchronously with variable timing, causing potential race conditions in automated tests.",
|
|
76
|
+
"severity": "low",
|
|
77
|
+
"category": "algorithmicStability",
|
|
78
|
+
"location": {
|
|
79
|
+
"url": "https://example.com"
|
|
80
|
+
},
|
|
81
|
+
"evidence": "5 API calls with varying response times (200ms - 3s). No loading indicators on 60% of async content. requestAnimationFrame used for layout.",
|
|
82
|
+
"remediation": "Add loading states with consistent indicators. Implement skeleton screens for predictable wait conditions.",
|
|
83
|
+
"confidence": 0.85
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"recommendations": [
|
|
87
|
+
{
|
|
88
|
+
"id": "REC-001",
|
|
89
|
+
"title": "Add data-testid Attributes to Interactive Elements",
|
|
90
|
+
"description": "Add unique data-testid attributes to all buttons, links, form inputs, and key UI components. This provides stable selectors that survive CSS and markup changes.",
|
|
91
|
+
"priority": "high",
|
|
92
|
+
"effort": "medium",
|
|
93
|
+
"impact": 8,
|
|
94
|
+
"relatedFindings": ["TEST-001"],
|
|
95
|
+
"codeExample": "// Before\n<button class=\"btn-primary\" onClick={submit}>Submit</button>\n\n// After\n<button data-testid=\"checkout-submit-btn\" class=\"btn-primary\" onClick={submit}>Submit</button>",
|
|
96
|
+
"resources": [
|
|
97
|
+
{
|
|
98
|
+
"title": "Testing Library - data-testid",
|
|
99
|
+
"url": "https://testing-library.com/docs/queries/bytestid/"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "REC-002",
|
|
105
|
+
"title": "Implement Code Splitting and Lazy Loading",
|
|
106
|
+
"description": "Split the application into smaller chunks that load on demand. This reduces initial bundle size and DOM complexity, improving both performance and testability.",
|
|
107
|
+
"priority": "high",
|
|
108
|
+
"effort": "high",
|
|
109
|
+
"impact": 7,
|
|
110
|
+
"relatedFindings": ["TEST-002"],
|
|
111
|
+
"codeExample": "// Use React.lazy for route-based splitting\nconst ProductList = React.lazy(() => import('./ProductList'));\n\n// Use dynamic imports for heavy components\nconst ChartLibrary = dynamic(() => import('chart-library'), {\n loading: () => <Skeleton />,\n ssr: false\n});",
|
|
112
|
+
"resources": [
|
|
113
|
+
{
|
|
114
|
+
"title": "React Code Splitting",
|
|
115
|
+
"url": "https://react.dev/reference/react/lazy"
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "REC-003",
|
|
121
|
+
"title": "Fix Console Errors and Add Error Boundaries",
|
|
122
|
+
"description": "Resolve all JavaScript errors that appear during page load. Add error boundaries to prevent single component failures from breaking tests.",
|
|
123
|
+
"priority": "high",
|
|
124
|
+
"effort": "low",
|
|
125
|
+
"impact": 6,
|
|
126
|
+
"relatedFindings": ["TEST-003"],
|
|
127
|
+
"codeExample": "class ErrorBoundary extends React.Component {\n state = { hasError: false };\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n render() {\n if (this.state.hasError) {\n return <div data-testid=\"error-boundary\">Something went wrong</div>;\n }\n return this.props.children;\n }\n}",
|
|
128
|
+
"resources": [
|
|
129
|
+
{
|
|
130
|
+
"title": "React Error Boundaries",
|
|
131
|
+
"url": "https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary"
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"id": "REC-004",
|
|
137
|
+
"title": "Improve Semantic HTML Structure",
|
|
138
|
+
"description": "Replace div/span with semantic HTML elements. This improves accessibility and provides more reliable test selectors using role-based queries.",
|
|
139
|
+
"priority": "medium",
|
|
140
|
+
"effort": "medium",
|
|
141
|
+
"impact": 5,
|
|
142
|
+
"relatedFindings": ["TEST-004"],
|
|
143
|
+
"codeExample": "// Before\n<div class=\"nav\" onClick={...}>Menu</div>\n\n// After\n<nav role=\"navigation\" aria-label=\"Main\">\n <button aria-expanded=\"false\" aria-controls=\"menu\">Menu</button>\n</nav>",
|
|
144
|
+
"resources": [
|
|
145
|
+
{
|
|
146
|
+
"title": "Testing Library - Queries Priority",
|
|
147
|
+
"url": "https://testing-library.com/docs/queries/about/#priority"
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "REC-005",
|
|
153
|
+
"title": "Add Loading States and Wait Conditions",
|
|
154
|
+
"description": "Implement consistent loading indicators for all async operations. This provides reliable wait conditions for automated tests.",
|
|
155
|
+
"priority": "medium",
|
|
156
|
+
"effort": "low",
|
|
157
|
+
"impact": 4,
|
|
158
|
+
"relatedFindings": ["TEST-005"],
|
|
159
|
+
"codeExample": "// Add loading state\n{isLoading ? (\n <div data-testid=\"loading-spinner\" role=\"status\">\n <span>Loading...</span>\n </div>\n) : (\n <ProductList data-testid=\"product-list\" />\n)}",
|
|
160
|
+
"resources": [
|
|
161
|
+
{
|
|
162
|
+
"title": "Playwright Auto-Waiting",
|
|
163
|
+
"url": "https://playwright.dev/docs/actionability"
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"metrics": {
|
|
169
|
+
"total": 10,
|
|
170
|
+
"passed": 7,
|
|
171
|
+
"failed": 3,
|
|
172
|
+
"skipped": 0,
|
|
173
|
+
"coverage": 100,
|
|
174
|
+
"duration": 12450,
|
|
175
|
+
"custom": {
|
|
176
|
+
"domElementCount": 2847,
|
|
177
|
+
"consoleErrorCount": 3,
|
|
178
|
+
"consoleWarningCount": 5,
|
|
179
|
+
"dataTestIdCoverage": 12,
|
|
180
|
+
"semanticHtmlScore": 58,
|
|
181
|
+
"loadTimeMs": 2340
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
"categories": {
|
|
185
|
+
"observability": {
|
|
186
|
+
"score": 85,
|
|
187
|
+
"weight": 0.15,
|
|
188
|
+
"description": "Transparency of product states and behavior - Can we see what's happening?",
|
|
189
|
+
"grade": "B",
|
|
190
|
+
"findingCount": 0
|
|
191
|
+
},
|
|
192
|
+
"controllability": {
|
|
193
|
+
"score": 82,
|
|
194
|
+
"weight": 0.15,
|
|
195
|
+
"description": "Capacity to provide any input and invoke any state - Can we control the application?",
|
|
196
|
+
"grade": "B",
|
|
197
|
+
"findingCount": 0
|
|
198
|
+
},
|
|
199
|
+
"algorithmicSimplicity": {
|
|
200
|
+
"score": 75,
|
|
201
|
+
"weight": 0.10,
|
|
202
|
+
"description": "Clear relationships between inputs and outputs - Are behaviors predictable?",
|
|
203
|
+
"grade": "C",
|
|
204
|
+
"findingCount": 0
|
|
205
|
+
},
|
|
206
|
+
"algorithmicTransparency": {
|
|
207
|
+
"score": 78,
|
|
208
|
+
"weight": 0.10,
|
|
209
|
+
"description": "Understanding how the product produces output - Can we understand what it does?",
|
|
210
|
+
"grade": "C",
|
|
211
|
+
"findingCount": 0
|
|
212
|
+
},
|
|
213
|
+
"algorithmicStability": {
|
|
214
|
+
"score": 70,
|
|
215
|
+
"weight": 0.10,
|
|
216
|
+
"description": "Changes do not disturb logic - Does behavior remain consistent?",
|
|
217
|
+
"grade": "C",
|
|
218
|
+
"findingCount": 1
|
|
219
|
+
},
|
|
220
|
+
"explainability": {
|
|
221
|
+
"score": 68,
|
|
222
|
+
"weight": 0.10,
|
|
223
|
+
"description": "Design understandable to outsiders - Is the interface understandable?",
|
|
224
|
+
"grade": "D",
|
|
225
|
+
"findingCount": 1
|
|
226
|
+
},
|
|
227
|
+
"unbugginess": {
|
|
228
|
+
"score": 65,
|
|
229
|
+
"weight": 0.10,
|
|
230
|
+
"description": "Minimal defects that slow testing - How error-free is it?",
|
|
231
|
+
"grade": "D",
|
|
232
|
+
"findingCount": 1
|
|
233
|
+
},
|
|
234
|
+
"smallness": {
|
|
235
|
+
"score": 58,
|
|
236
|
+
"weight": 0.10,
|
|
237
|
+
"description": "Less product means less to examine - Are components appropriately sized?",
|
|
238
|
+
"grade": "F",
|
|
239
|
+
"findingCount": 1
|
|
240
|
+
},
|
|
241
|
+
"decomposability": {
|
|
242
|
+
"score": 55,
|
|
243
|
+
"weight": 0.05,
|
|
244
|
+
"description": "Parts can be separated for testing - Can we test parts in isolation?",
|
|
245
|
+
"grade": "F",
|
|
246
|
+
"findingCount": 1
|
|
247
|
+
},
|
|
248
|
+
"similarity": {
|
|
249
|
+
"score": 80,
|
|
250
|
+
"weight": 0.05,
|
|
251
|
+
"description": "Resemblance to known technology - Is the tech stack familiar?",
|
|
252
|
+
"grade": "B",
|
|
253
|
+
"findingCount": 0
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
"artifacts": [
|
|
257
|
+
{
|
|
258
|
+
"type": "report",
|
|
259
|
+
"path": "tests/reports/testability-report-2026-02-02.html",
|
|
260
|
+
"format": "html",
|
|
261
|
+
"description": "Visual HTML report with radar chart and principle breakdown",
|
|
262
|
+
"sizeBytes": 185420
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"type": "data",
|
|
266
|
+
"path": "tests/reports/testability-results-2026-02-02.json",
|
|
267
|
+
"format": "json",
|
|
268
|
+
"description": "Raw assessment data for programmatic analysis",
|
|
269
|
+
"sizeBytes": 24680
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"type": "screenshot",
|
|
273
|
+
"path": "tests/reports/testability-screenshot-2026-02-02.png",
|
|
274
|
+
"format": "png",
|
|
275
|
+
"description": "Full page screenshot at time of assessment",
|
|
276
|
+
"sizeBytes": 542800
|
|
277
|
+
}
|
|
278
|
+
],
|
|
279
|
+
"timeline": [
|
|
280
|
+
{
|
|
281
|
+
"timestamp": "2026-02-02T15:00:00.000Z",
|
|
282
|
+
"event": "Assessment started",
|
|
283
|
+
"type": "start"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"timestamp": "2026-02-02T15:00:02.340Z",
|
|
287
|
+
"event": "Page loaded and initial metrics collected",
|
|
288
|
+
"type": "checkpoint",
|
|
289
|
+
"durationMs": 2340
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"timestamp": "2026-02-02T15:00:05.000Z",
|
|
293
|
+
"event": "Observability principle analysis completed",
|
|
294
|
+
"type": "checkpoint",
|
|
295
|
+
"durationMs": 2660
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"timestamp": "2026-02-02T15:00:08.000Z",
|
|
299
|
+
"event": "Controllability principle analysis completed",
|
|
300
|
+
"type": "checkpoint",
|
|
301
|
+
"durationMs": 3000
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"timestamp": "2026-02-02T15:00:10.500Z",
|
|
305
|
+
"event": "All 10 principles analyzed",
|
|
306
|
+
"type": "checkpoint",
|
|
307
|
+
"durationMs": 2500
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"timestamp": "2026-02-02T15:00:12.450Z",
|
|
311
|
+
"event": "Report generation completed",
|
|
312
|
+
"type": "complete",
|
|
313
|
+
"durationMs": 1950
|
|
314
|
+
}
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
"metadata": {
|
|
318
|
+
"executionTimeMs": 12450,
|
|
319
|
+
"toolsUsed": ["playwright", "chrome-devtools", "axe-core"],
|
|
320
|
+
"agentId": "qe-quality-analyzer",
|
|
321
|
+
"modelUsed": "claude-3.5-sonnet",
|
|
322
|
+
"inputHash": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730",
|
|
323
|
+
"targetUrl": "https://example.com",
|
|
324
|
+
"environment": "ci",
|
|
325
|
+
"retryCount": 0
|
|
326
|
+
},
|
|
327
|
+
"validation": {
|
|
328
|
+
"schemaValid": true,
|
|
329
|
+
"contentValid": true,
|
|
330
|
+
"confidence": 0.92,
|
|
331
|
+
"warnings": [
|
|
332
|
+
"Load time exceeded 2s threshold - results may vary under different network conditions"
|
|
333
|
+
],
|
|
334
|
+
"errors": [],
|
|
335
|
+
"validatorVersion": "2.2.0"
|
|
336
|
+
},
|
|
337
|
+
"learning": {
|
|
338
|
+
"patternsDetected": [
|
|
339
|
+
"high-dom-complexity",
|
|
340
|
+
"missing-testid-attributes",
|
|
341
|
+
"console-errors-present",
|
|
342
|
+
"async-loading-without-indicators"
|
|
343
|
+
],
|
|
344
|
+
"reward": 0.72,
|
|
345
|
+
"feedbackLoop": {
|
|
346
|
+
"previousRunId": "661f9511-f39c-52e5-b827-557766551111",
|
|
347
|
+
"improvement": 0.05
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|