qa360 2.1.6 → 2.2.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/.BETA_TESTING_FEEDBACK.md +256 -0
- package/.claude/settings.local.json +154 -0
- package/.editorconfig +21 -0
- package/.github/CODEOWNERS +23 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +108 -0
- package/.github/ISSUE_TEMPLATE/feedback_dx.yml +121 -0
- package/.github/dependabot.yml +35 -0
- package/.github/workflows/mcp-dx.yml +106 -0
- package/.github/workflows/release.yml +26 -0
- package/.github/workflows/test.yml +93 -0
- package/.nvmrc +1 -0
- package/.qa360-artifacts/.gitkeep +0 -0
- package/.qa360-artifacts/baselines/.gitkeep +0 -0
- package/.qa360-artifacts/cache/.gitkeep +0 -0
- package/.qa360-artifacts/reports/.gitkeep +0 -0
- package/.qa360-artifacts/screenshots/.gitkeep +0 -0
- package/.qa360-baselines/www_xyqo_ai.baseline.json +33 -0
- package/CHANGELOG.md +234 -0
- package/CODEOWNERS +43 -0
- package/CONTRIBUTING.md +273 -0
- package/NOVICE_USER_GUIDE.md +272 -0
- package/QUICK_START.md +191 -0
- package/README.md +191 -163
- package/adapters/README.md +46 -0
- package/check-branches.sh +32 -0
- package/cli/.qa360/keys/ed25519.key +1 -0
- package/cli/.qa360/keys/ed25519.pub +1 -0
- package/cli/CHANGELOG.md +84 -0
- package/cli/LICENSE +24 -0
- package/cli/README.md +222 -0
- package/cli/examples/README.md +160 -0
- package/cli/package.json +76 -0
- package/cli/scripts/bundle-for-npm.sh +51 -0
- package/cli/scripts/validate-package.js +116 -0
- package/cli/src/__tests__/commands/doctor.test.ts +108 -0
- package/cli/src/__tests__/index.test.ts +15 -0
- package/cli/src/cli-minimal.ts +44 -0
- package/cli/src/commands/__tests__/crawl.test.ts +412 -0
- package/cli/src/commands/__tests__/doctor-qa360-home.test.ts +156 -0
- package/cli/src/commands/__tests__/e2e-ui-tests.test.ts +494 -0
- package/cli/src/commands/__tests__/e2e.test.ts +187 -0
- package/cli/src/commands/__tests__/flakiness.test.ts +528 -0
- package/cli/src/commands/__tests__/generate.test.ts +507 -0
- package/cli/src/commands/__tests__/history.integration.test.ts +358 -0
- package/cli/src/commands/__tests__/history.test.ts +433 -0
- package/cli/src/commands/__tests__/monitor-realworld.test.ts +199 -0
- package/cli/src/commands/__tests__/monitor.test.ts +81 -0
- package/cli/src/commands/__tests__/ollama.test.ts +529 -0
- package/cli/src/commands/__tests__/repair.test.ts +225 -0
- package/cli/src/commands/__tests__/report.integration.test.ts +167 -0
- package/cli/src/commands/__tests__/report.test.ts +294 -0
- package/cli/src/commands/__tests__/report.vitest.ts +288 -0
- package/cli/src/commands/__tests__/retry.test.ts +78 -0
- package/cli/src/commands/__tests__/run.integration.test.ts +240 -0
- package/cli/src/commands/__tests__/run.test.ts +346 -0
- package/cli/src/commands/__tests__/run.vitest.ts +301 -0
- package/cli/src/commands/__tests__/secrets.test.ts +114 -0
- package/cli/src/commands/__tests__/serve.test.ts +80 -0
- package/cli/src/commands/__tests__/verify.test.ts +103 -0
- package/cli/src/commands/ai.ts +702 -0
- package/cli/src/commands/ask.ts +678 -0
- package/cli/src/commands/coverage.ts +305 -0
- package/cli/src/commands/crawl.ts +155 -0
- package/cli/src/commands/doctor.ts +610 -0
- package/cli/src/commands/examples.ts +248 -0
- package/cli/src/commands/explain.ts +710 -0
- package/cli/src/commands/flakiness.ts +560 -0
- package/cli/src/commands/generate.ts +566 -0
- package/cli/src/commands/history.ts +914 -0
- package/cli/src/commands/init.ts +777 -0
- package/cli/src/commands/monitor.ts +270 -0
- package/cli/src/commands/ollama.ts +337 -0
- package/cli/src/commands/pack.ts +497 -0
- package/cli/src/commands/regression.ts +400 -0
- package/cli/src/commands/repair.ts +356 -0
- package/cli/src/commands/report.ts +463 -0
- package/cli/src/commands/retry.ts +380 -0
- package/cli/src/commands/run.ts +218 -0
- package/cli/src/commands/scan.ts +177 -0
- package/cli/src/commands/secrets.ts +340 -0
- package/cli/src/commands/serve.ts +194 -0
- package/cli/src/commands/slo.ts +387 -0
- package/cli/src/commands/verify-temp-note.md +11 -0
- package/cli/src/commands/verify.ts +322 -0
- package/cli/src/generators/index.ts +6 -0
- package/cli/src/generators/json-reporter.ts +15 -0
- package/cli/src/generators/test-generator.ts +90 -0
- package/cli/src/index.ts +289 -0
- package/cli/src/scanners/dom-scanner.ts +360 -0
- package/cli/src/scanners/index.ts +5 -0
- package/cli/src/types/scan.ts +84 -0
- package/cli/src/utils/config.ts +145 -0
- package/cli/tsconfig.bundle.json +12 -0
- package/cli/tsconfig.json +23 -0
- package/cli/vitest.config.ts +59 -0
- package/core/LICENSE +24 -0
- package/core/README.md +64 -0
- package/core/package.json +81 -0
- package/core/src/__tests__/adapters-contract/adapters-contract.test.md +156 -0
- package/core/src/__tests__/index.test.ts +31 -0
- package/core/src/__tests__/integration/phase3.test.ts +405 -0
- package/core/src/__tests__/pack/validator.test.ts +312 -0
- package/core/src/__tests__/secrets/crypto.test.ts +190 -0
- package/core/src/__tests__/secrets/manager.test.ts +316 -0
- package/core/src/__tests__/security/redactor-phase3.test.ts +233 -0
- package/core/src/__tests__/serve/health-checker.test.ts +155 -0
- package/core/src/__tests__/serve/process-manager.test.ts +213 -0
- package/core/src/__tests__/serve/server.test.ts +103 -0
- package/core/src/__tests__/vault/cas.test.ts +178 -0
- package/core/src/__tests__/vault/vault.test.ts +296 -0
- package/core/src/adapters/__tests__/fixtures/jest-coverage.json +8 -0
- package/core/src/adapters/__tests__/fixtures/jest-results.json +41 -0
- package/core/src/adapters/__tests__/fixtures/pytest-junit.xml +16 -0
- package/core/src/adapters/__tests__/fixtures/vitest-coverage.json +8 -0
- package/core/src/adapters/__tests__/fixtures/vitest-results.json +50 -0
- package/core/src/adapters/__tests__/gitleaks-secrets.test.ts +452 -0
- package/core/src/adapters/__tests__/jest-adapter.test.ts +276 -0
- package/core/src/adapters/__tests__/k6-perf.test.ts +538 -0
- package/core/src/adapters/__tests__/osv-deps.test.ts +471 -0
- package/core/src/adapters/__tests__/playwright-native-api.test.ts +792 -0
- package/core/src/adapters/__tests__/playwright-ui-e2e.test.ts +431 -0
- package/core/src/adapters/__tests__/playwright-ui.test.ts +1073 -0
- package/core/src/adapters/__tests__/pytest-adapter.test.ts +207 -0
- package/core/src/adapters/__tests__/semgrep-sast.test.ts +436 -0
- package/core/src/adapters/__tests__/vitest-adapter.test.ts +208 -0
- package/core/src/adapters/__tests__/zap-dast.test.ts +453 -0
- package/core/src/adapters/gitleaks-secrets.ts +521 -0
- package/core/src/adapters/jest-adapter.ts +306 -0
- package/core/src/adapters/k6-perf.ts +479 -0
- package/core/src/adapters/osv-deps.ts +467 -0
- package/core/src/adapters/playwright-native-adapter.ts +472 -0
- package/core/src/adapters/playwright-native-api.ts +619 -0
- package/core/src/adapters/playwright-ui.ts +1088 -0
- package/core/src/adapters/pytest-adapter.ts +472 -0
- package/core/src/adapters/semgrep-sast.ts +410 -0
- package/core/src/adapters/unit-test-types.ts +106 -0
- package/core/src/adapters/vitest-adapter.ts +295 -0
- package/core/src/adapters/zap-dast.ts +551 -0
- package/core/src/ai/__tests__/deepseek-provider.test.ts +586 -0
- package/core/src/ai/__tests__/ollama-provider.test.ts +641 -0
- package/core/src/ai/anthropic-provider.ts +262 -0
- package/core/src/ai/deepseek-provider.ts +315 -0
- package/core/src/ai/index.ts +87 -0
- package/core/src/ai/llm-client.ts +52 -0
- package/core/src/ai/mock-provider.ts +146 -0
- package/core/src/ai/ollama-provider.ts +269 -0
- package/core/src/ai/openai-provider.ts +240 -0
- package/core/src/ai/provider-factory.ts +408 -0
- package/core/src/artifacts/README.md +78 -0
- package/core/src/artifacts/index.ts +16 -0
- package/core/src/artifacts/ui-artifacts.ts +412 -0
- package/core/src/assertions/__tests__/engine.test.ts +360 -0
- package/core/src/assertions/engine.ts +577 -0
- package/core/src/assertions/index.ts +13 -0
- package/core/src/assertions/types.ts +229 -0
- package/core/src/auth/__tests__/api-key-provider.test.ts +282 -0
- package/core/src/auth/__tests__/auth-manager.test.ts +430 -0
- package/core/src/auth/__tests__/basic-auth-provider.test.ts +364 -0
- package/core/src/auth/__tests__/cloud-providers.test.ts +751 -0
- package/core/src/auth/__tests__/jwt-provider.test.ts +400 -0
- package/core/src/auth/__tests__/oauth2-provider.test.ts +383 -0
- package/core/src/auth/__tests__/totp-provider.test.ts +294 -0
- package/core/src/auth/__tests__/ui-login-provider.test.ts +323 -0
- package/core/src/auth/api-key-provider.ts +75 -0
- package/core/src/auth/aws-iam-provider.ts +212 -0
- package/core/src/auth/azure-ad-provider.ts +126 -0
- package/core/src/auth/basic-auth-provider.ts +133 -0
- package/core/src/auth/gcp-adc-provider.ts +146 -0
- package/core/src/auth/index.ts +342 -0
- package/core/src/auth/jwt-provider.ts +193 -0
- package/core/src/auth/manager.ts +281 -0
- package/core/src/auth/oauth2-provider.ts +141 -0
- package/core/src/auth/totp-provider.ts +163 -0
- package/core/src/auth/ui-login-provider.ts +242 -0
- package/core/src/cache/__tests__/lru-cache.test.ts +564 -0
- package/core/src/cache/index.ts +13 -0
- package/core/src/cache/lru-cache.ts +536 -0
- package/core/src/crawler/__tests__/journey-generator.test.ts +344 -0
- package/core/src/crawler/__tests__/selector-generator.test.ts +211 -0
- package/core/src/crawler/index.ts +335 -0
- package/core/src/crawler/journey-generator.ts +471 -0
- package/core/src/crawler/page-analyzer.ts +857 -0
- package/core/src/crawler/selector-generator.ts +280 -0
- package/core/src/crawler/types.ts +475 -0
- package/core/src/dashboard/__tests__/real-world.test.ts +430 -0
- package/core/src/dashboard/__tests__/server.test.ts +283 -0
- package/core/src/dashboard/__tests__/types.test.ts +208 -0
- package/core/src/dashboard/assets.ts +692 -0
- package/core/src/dashboard/index.ts +17 -0
- package/core/src/dashboard/server.ts +401 -0
- package/core/src/dashboard/types.ts +78 -0
- package/core/src/discoverer/__tests__/test-discoverer.test.ts +444 -0
- package/core/src/discoverer/index.ts +374 -0
- package/core/src/fixtures/__tests__/loader.test.ts +246 -0
- package/core/src/fixtures/__tests__/resolver.test.ts +334 -0
- package/core/src/fixtures/index.ts +9 -0
- package/core/src/fixtures/loader.ts +189 -0
- package/core/src/fixtures/resolver.ts +221 -0
- package/core/src/fixtures/types.ts +86 -0
- package/core/src/flakiness/__tests__/flakiness.test.ts +554 -0
- package/core/src/flakiness/index.ts +536 -0
- package/core/src/generation/__tests__/code-formatter.test.ts +170 -0
- package/core/src/generation/__tests__/code-generator-contract.test.ts +207 -0
- package/core/src/generation/__tests__/code-generator.test.ts +586 -0
- package/core/src/generation/__tests__/crawler-pack-generator.test.ts +479 -0
- package/core/src/generation/__tests__/generation-e2e-b2bshop.test.ts +718 -0
- package/core/src/generation/__tests__/generation-integration.test.ts +655 -0
- package/core/src/generation/__tests__/pack-generator.test.ts +408 -0
- package/core/src/generation/__tests__/prompt-builder.test.ts +200 -0
- package/core/src/generation/__tests__/real-provider-integration.test.ts +414 -0
- package/core/src/generation/__tests__/source-analyzer.test.ts +774 -0
- package/core/src/generation/__tests__/test-optimizer.test.ts +255 -0
- package/core/src/generation/code-formatter.ts +408 -0
- package/core/src/generation/code-generator.ts +470 -0
- package/core/src/generation/crawler-pack-generator.ts +289 -0
- package/core/src/generation/generator.ts +113 -0
- package/core/src/generation/index.ts +59 -0
- package/core/src/generation/pack-generator.ts +527 -0
- package/core/src/generation/prompt-builder.ts +772 -0
- package/core/src/generation/source-analyzer.ts +830 -0
- package/core/src/generation/test-optimizer.ts +474 -0
- package/core/src/generation/types.ts +217 -0
- package/core/src/hooks/__tests__/compose.test.ts +636 -0
- package/core/src/hooks/__tests__/runner.test.ts +478 -0
- package/core/src/hooks/compose.ts +268 -0
- package/core/src/hooks/runner.ts +364 -0
- package/core/src/index.ts +255 -0
- package/core/src/pack/__tests__/migrator.test.ts +594 -0
- package/core/src/pack/__tests__/validator.test.ts +759 -0
- package/core/src/pack/migrator.ts +353 -0
- package/core/src/pack/validator.ts +359 -0
- package/core/src/pack-v2/__tests__/loader.test.ts +533 -0
- package/core/src/pack-v2/__tests__/migrator.test.ts +455 -0
- package/core/src/pack-v2/__tests__/validator.test.ts +609 -0
- package/core/src/pack-v2/index.ts +41 -0
- package/core/src/pack-v2/loader.ts +358 -0
- package/core/src/pack-v2/migrator.ts +540 -0
- package/core/src/pack-v2/validator.ts +726 -0
- package/core/src/parallel/README.md +143 -0
- package/core/src/parallel/index.ts +16 -0
- package/core/src/parallel/parallel-runner.ts +282 -0
- package/core/src/pom/__tests__/loader.test.ts +378 -0
- package/core/src/pom/base-page.ts +425 -0
- package/core/src/pom/index.ts +45 -0
- package/core/src/pom/loader.ts +480 -0
- package/core/src/pom/types.ts +146 -0
- package/core/src/proof/__tests__/proof-roundtrip.test.ts +149 -0
- package/core/src/proof/__tests__/schema-validation-manual.mjs +211 -0
- package/core/src/proof/__tests__/schema-validation.test.ts +336 -0
- package/core/src/proof/__tests__/signer.test.ts +486 -0
- package/core/src/proof/__tests__/temporal-regression.test.ts +537 -0
- package/core/src/proof/__tests__/verifier-advanced.test.ts +588 -0
- package/core/src/proof/__tests__/verifier.test.ts +413 -0
- package/core/src/proof/bundle.ts +290 -0
- package/core/src/proof/canonicalize.ts +116 -0
- package/core/src/proof/index.ts +74 -0
- package/core/src/proof/schema.ts +285 -0
- package/core/src/proof/signer.ts +293 -0
- package/core/src/proof/verifier.ts +380 -0
- package/core/src/regression/__tests__/detector.test.ts +396 -0
- package/core/src/regression/__tests__/trend-analyzer.test.ts +300 -0
- package/core/src/regression/detector.ts +629 -0
- package/core/src/regression/index.ts +34 -0
- package/core/src/regression/trend-analyzer.ts +468 -0
- package/core/src/regression/types.ts +295 -0
- package/core/src/regression/vault.ts +419 -0
- package/core/src/repair/__tests__/repairer.test.ts +572 -0
- package/core/src/repair/__tests__/types.test.ts +302 -0
- package/core/src/repair/engine/__tests__/fixer.test.ts +482 -0
- package/core/src/repair/engine/__tests__/suggestion-engine.test.ts +395 -0
- package/core/src/repair/engine/fixer.ts +271 -0
- package/core/src/repair/engine/suggestion-engine.ts +234 -0
- package/core/src/repair/index.ts +53 -0
- package/core/src/repair/repairer.ts +376 -0
- package/core/src/repair/types.ts +119 -0
- package/core/src/repair/utils/__tests__/error-analyzer.test.ts +454 -0
- package/core/src/repair/utils/error-analyzer.ts +308 -0
- package/core/src/reporting/README.md +144 -0
- package/core/src/reporting/html-reporter.ts +835 -0
- package/core/src/reporting/index.ts +16 -0
- package/core/src/retry/README.md +192 -0
- package/core/src/retry/__tests__/flakiness-integration.test.ts +475 -0
- package/core/src/retry/__tests__/retry-engine.test.ts +424 -0
- package/core/src/retry/flakiness-integration.ts +267 -0
- package/core/src/retry/index.ts +48 -0
- package/core/src/retry/retry-engine.ts +368 -0
- package/core/src/retry/types.ts +208 -0
- package/core/src/retry/vault.ts +413 -0
- package/core/src/runner/__tests__/flakiness-integration.test.ts +566 -0
- package/core/src/runner/__tests__/phase3-e2e-b2bshop.test.ts +218 -0
- package/core/src/runner/__tests__/phase3-e2e-reqres.test.ts +199 -0
- package/core/src/runner/__tests__/phase3-runner.test.ts +1118 -0
- package/core/src/runner/e2e-helpers.ts +216 -0
- package/core/src/runner/phase3-runner.ts +1236 -0
- package/core/src/schemas/gherkin-report.json +122 -0
- package/core/src/secrets/__tests__/crypto.test.ts +180 -0
- package/core/src/secrets/crypto.ts +289 -0
- package/core/src/secrets/manager.ts +272 -0
- package/core/src/security/__tests__/hardening.test.ts +480 -0
- package/core/src/security/redaction-patterns-extended.ts +278 -0
- package/core/src/security/redactor.ts +326 -0
- package/core/src/self-healing/assertion-healer.ts +485 -0
- package/core/src/self-healing/engine.ts +626 -0
- package/core/src/self-healing/index.ts +33 -0
- package/core/src/self-healing/selector-healer.ts +488 -0
- package/core/src/self-healing/types.ts +193 -0
- package/core/src/serve/diagnostics-collector.ts +201 -0
- package/core/src/serve/health-checker.ts +274 -0
- package/core/src/serve/index.ts +9 -0
- package/core/src/serve/metrics-collector.ts +386 -0
- package/core/src/serve/process-manager.ts +265 -0
- package/core/src/serve/server.ts +230 -0
- package/core/src/slo/config.ts +408 -0
- package/core/src/slo/index.ts +68 -0
- package/core/src/slo/sli-calculator.ts +474 -0
- package/core/src/slo/slo-tracker.ts +481 -0
- package/core/src/slo/types.ts +408 -0
- package/core/src/slo/vault.ts +600 -0
- package/core/src/tui/__tests__/monitor.test.ts +336 -0
- package/core/src/tui/__tests__/real-world.test.ts +376 -0
- package/core/src/tui/__tests__/renderer.test.ts +201 -0
- package/core/src/tui/__tests__/types.test.ts +295 -0
- package/core/src/tui/index.ts +19 -0
- package/core/src/tui/monitor.ts +331 -0
- package/core/src/tui/renderer.ts +269 -0
- package/core/src/tui/types.ts +68 -0
- package/core/src/types/pack-v1.ts +305 -0
- package/core/src/types/pack-v2.ts +501 -0
- package/core/src/types/trust-score.ts +258 -0
- package/core/src/vault/__tests__/flakiness-vault.test.ts +562 -0
- package/core/src/vault/__tests__/vault.test.ts +259 -0
- package/core/src/vault/cas.ts +323 -0
- package/core/src/vault/index.ts +1361 -0
- package/core/src/vault/schema.sql +168 -0
- package/core/src/visual/README.md +185 -0
- package/core/src/visual/index.ts +14 -0
- package/core/src/visual/visual-regression.ts +347 -0
- package/core/src/watch/__tests__/watch-mode.test.ts +192 -0
- package/core/src/watch/index.ts +14 -0
- package/core/src/watch/watch-mode.ts +565 -0
- package/core/tsconfig.json +12 -0
- package/core/vitest.config.ts +52 -0
- package/docs/ARCHITECTURE.md +901 -0
- package/docs/AUDIT-GLOBAL-DEC2025.md +271 -0
- package/docs/BETA_TESTING.md +257 -0
- package/docs/BETA_TESTING_PLAN.md +727 -0
- package/docs/CERTIFICATION-REPORT.md +142 -0
- package/docs/COMPLETE_AUDIT_REFACTORING.md +965 -0
- package/docs/DEVELOPMENT.md +545 -0
- package/docs/DEVELOPMENT_HISTORY.md +345 -0
- package/docs/LIMITATIONS.md +176 -0
- package/docs/MIGRATION.md +303 -0
- package/docs/OPTION_3_4_EXPLORATION.md +1257 -0
- package/docs/PHASE1_PERFORMANCE.md +144 -0
- package/docs/QA360_Cloud.postman_collection.json +89 -0
- package/docs/QA360_TESTING_PHILOSOPHY.md +769 -0
- package/docs/QA_TEST_PLAN.md +727 -0
- package/docs/README.md +50 -0
- package/docs/STATUS.md +198 -0
- package/docs/STRATEGIC_STUDY_GOOSE_INTEGRATION.md +615 -0
- package/docs/USER_GUIDE.md +687 -0
- package/docs/WORK-DONE-ADAPTER-TESTS.md +136 -0
- package/docs/adapters-security.md +485 -0
- package/docs/architecture-diagram.mmd +168 -0
- package/docs/archive/ARCH-01-DAY6-BUILD-FIXES.md +396 -0
- package/docs/archive/ARCH-01-DAY6-FINAL-STATUS.md +324 -0
- package/docs/archive/ARCH-01_MCP_MERGE_ANALYSIS.md +644 -0
- package/docs/archive/ARCH-01_NEXT_STEPS.md +60 -0
- package/docs/archive/BRANCH_PROTECTION.md +183 -0
- package/docs/archive/CI_LOCKDOWN_CHECKLIST.md +222 -0
- package/docs/archive/HANDOFF_TEST-01.md +669 -0
- package/docs/archive/LEGAL_READY_PLACEHOLDERS.md +372 -0
- package/docs/archive/NODE_UPGRADE_GUIDE.md +188 -0
- package/docs/archive/PHASE1_COMPLETION.md +386 -0
- package/docs/archive/PHASE2_COMPLETION.md +404 -0
- package/docs/archive/PHASE3_AND_4_FINAL.md +360 -0
- package/docs/archive/PHASE3_COMPLETE.md +301 -0
- package/docs/archive/PHASE3_STATUS.md +255 -0
- package/docs/archive/PRE-WEEK2-AUDIT.md +364 -0
- package/docs/archive/README.md +16 -0
- package/docs/archive/SCHEMA_AJV_2020_FIX.md +245 -0
- package/docs/archive/TEST-01_AUDIT_REPORT.md +240 -0
- package/docs/archive/TEST-01_COVERAGE_PLAN.md +423 -0
- package/docs/archive/obsolete-proposals/dom-element-discovery-mode.md +250 -0
- package/docs/archive/obsolete-proposals/qa360-comprehensive-test-plan.md +1249 -0
- package/docs/archive/obsolete-proposals/qa360-quick-start-guide.md +298 -0
- package/docs/archive/obsolete-proposals/technical-plan-dom-discovery.md +870 -0
- package/docs/budgets-advanced.md +308 -0
- package/docs/examples/history-export-gc.md +285 -0
- package/docs/examples/pack-v2-complete.yaml +158 -0
- package/docs/examples/pack-v2-quickstart.yaml +24 -0
- package/docs/examples/pack-v2-ui-login.yaml +81 -0
- package/docs/examples/qa360-report.json +50 -0
- package/docs/history.md +565 -0
- package/docs/hooks.md +304 -0
- package/docs/llm-providers.md +512 -0
- package/docs/mcp-server.md +651 -0
- package/docs/mcp-tools.md +1131 -0
- package/docs/pack-v1.md +383 -0
- package/docs/pack-v2.md +558 -0
- package/docs/page-objects.md +366 -0
- package/docs/proofs.md +670 -0
- package/docs/quickstart-5min.md +257 -0
- package/docs/readiness-ci.md +654 -0
- package/docs/rfc/README.md +20 -0
- package/docs/rfc/proof-bundle-v1.md +787 -0
- package/docs/secrets.md +392 -0
- package/docs/serve.md +494 -0
- package/docs/unit-test-adapters.md +168 -0
- package/docs/vault.md +491 -0
- package/e2e/qa360-e2e.test.ts +696 -0
- package/e2e/vitest.config.ts +18 -0
- package/examples/README.md +30 -140
- package/examples/ci/docker-compose-serve.yml +375 -0
- package/examples/ci/github-actions-serve.yml +345 -0
- package/examples/ci/gitlab-ci-serve.yml +407 -0
- package/examples/datasets/README.md +101 -0
- package/examples/datasets/b2bshop.ts +155 -0
- package/examples/datasets/index.ts +57 -0
- package/examples/datasets/reqres.ts +195 -0
- package/examples/fixtures-demo/fixtures/users.yml +39 -0
- package/examples/fixtures-demo/pack.yml +71 -0
- package/examples/future-api/README.md +16 -0
- package/examples/future-api/diag.js +7 -0
- package/examples/future-api/health.js +4 -0
- package/examples/future-api/packs.js +13 -0
- package/examples/future-api/runpack.js +10 -0
- package/examples/generation/README.md +148 -0
- package/examples/generation/pack-generator-example.js +115 -0
- package/examples/generation/source-analyzer-example.js +115 -0
- package/examples/httpbin/pack.yml +59 -0
- package/examples/load-testing/mcp-load.yml +115 -0
- package/examples/load-testing/mcp-stdio.yml +95 -0
- package/examples/mcp/claude-desktop-config.json +33 -0
- package/examples/mcp/claude-desktop.json +16 -0
- package/examples/mcp/conversation-sample.md +131 -0
- package/examples/mcp/demo-60s.md +330 -0
- package/examples/mcp/sample-conversation.jsonl +21 -0
- package/examples/mcp/vscode-settings.json +22 -0
- package/examples/pack-v2-complete.yml +242 -0
- package/examples/pack-v2-examples.md +244 -0
- package/examples/pack-v2-quickstart.yml +55 -0
- package/examples/packs-business/ecommerce-api.yml +121 -0
- package/examples/packs-business/saas-dashboard-ui.yml +133 -0
- package/examples/packs-conformance/compose-multi.yml +174 -0
- package/examples/packs-conformance/full.yml +152 -0
- package/examples/packs-conformance/heavy-artifacts.yml +152 -0
- package/examples/packs-conformance/minimal.yml +71 -0
- package/examples/packs-conformance/secrets-missing.yml +97 -0
- package/examples/packs-conformance/timeouts.yml +77 -0
- package/examples/pom-demo/README.md +104 -0
- package/examples/pom-demo/pack.yml +60 -0
- package/examples/pom-demo/pages/DashboardPage.page.ts +73 -0
- package/examples/pom-demo/pages/LoginPage.page.ts +76 -0
- package/examples/proofs/e2e-playwright-proof.json +75 -0
- package/examples/proofs/httpbin-proof.json +69 -0
- package/examples/proofs/multi-adapter-proof.json +117 -0
- package/examples/proofs/test-proof.json +26 -0
- package/examples/restful-api-dev/README.md +102 -0
- package/examples/restful-api-dev/restful-api-advanced.yml +29 -0
- package/examples/restful-api-dev/restful-api-basic.yml +29 -0
- package/examples/web-lite/.github/workflows/qa360-phase3.yml +73 -0
- package/examples/web-lite/api-mock/server.js +258 -0
- package/examples/web-lite/pack.yml +71 -0
- package/examples/web-lite/services.yml +43 -0
- package/examples/web-lite/web-content/healthz +1 -0
- package/examples/web-lite/web-content/index.html +259 -0
- package/package.json +55 -45
- package/packages/mcp/CHANGELOG.md +109 -0
- package/packages/mcp/IMPLEMENTATION_SUMMARY.md +350 -0
- package/packages/mcp/LICENSE +21 -0
- package/packages/mcp/QUICK_START.md +291 -0
- package/packages/mcp/README.md +294 -0
- package/packages/mcp/TELEMETRY.md +220 -0
- package/packages/mcp/package.json +91 -0
- package/packages/mcp/scripts/generate-sbom-fallback.cjs +84 -0
- package/packages/mcp/scripts/safe-postinstall.cjs +32 -0
- package/packages/mcp/src/__tests__/contract.test.ts +902 -0
- package/packages/mcp/src/cli/cli.ts +137 -0
- package/packages/mcp/src/cli/doctor.ts +286 -0
- package/packages/mcp/src/cli/fix.ts +99 -0
- package/packages/mcp/src/cli/init.ts +233 -0
- package/packages/mcp/src/cli/postinstall.ts +14 -0
- package/packages/mcp/src/cli/reset.ts +44 -0
- package/packages/mcp/src/cli/telemetry.ts +166 -0
- package/packages/mcp/src/cli/test-dx.ts +94 -0
- package/packages/mcp/src/cli/uninstall.ts +80 -0
- package/packages/mcp/src/cli/up.ts +178 -0
- package/packages/mcp/src/index.ts +12 -0
- package/packages/mcp/src/scripts/e2e-local.ts +337 -0
- package/packages/mcp/src/scripts/verify-settings.ts +242 -0
- package/packages/mcp/src/security/audit.ts +244 -0
- package/packages/mcp/src/security/manager.ts +242 -0
- package/packages/mcp/src/server/full-server.ts +212 -0
- package/packages/mcp/src/server/minimal-server.ts +134 -0
- package/packages/mcp/src/tools/history.ts +388 -0
- package/packages/mcp/src/tools/pack.ts +449 -0
- package/packages/mcp/src/tools/registry.ts +638 -0
- package/packages/mcp/src/tools/report.ts +100 -0
- package/packages/mcp/src/tools/run.ts +268 -0
- package/packages/mcp/src/tools/secrets.ts +198 -0
- package/packages/mcp/src/tools/serve.ts +221 -0
- package/packages/mcp/src/tools/triage.ts +532 -0
- package/packages/mcp/src/tools/types.ts +26 -0
- package/packages/mcp/src/tools/vault.ts +164 -0
- package/packages/mcp/src/tools/verify.ts +166 -0
- package/packages/mcp/src/types/index.ts +311 -0
- package/packages/mcp/src/types/mcp-stubs.ts +83 -0
- package/packages/mcp/tsconfig.json +16 -0
- package/playwright.config.ts +20 -0
- package/pnpm-workspace.yaml +4 -0
- package/run-test-and-push.sh +20 -0
- package/scripts/build-proof-cli.sh +110 -0
- package/scripts/ci/check-windows-paths.js +92 -0
- package/scripts/ci/invariants.sh +124 -0
- package/scripts/ci/make-final-bundle.js +106 -0
- package/scripts/ci/mcp-run-multipack.js +305 -0
- package/scripts/ci/run-pack-suite.sh +103 -0
- package/scripts/ci/run-phase7-final.sh +190 -0
- package/scripts/ci/slo-assert.js +158 -0
- package/scripts/ci/test-fault-tolerance.sh +301 -0
- package/scripts/install-mcp.sh +66 -0
- package/scripts/mcp-smoke.mjs +27 -0
- package/scripts/smoke.sh +26 -0
- package/scripts/stress-test.js +288 -0
- package/scripts/sync-version.mjs +50 -0
- package/scripts/validate-examples.mjs +404 -0
- package/scripts/validation/simple-pack-check.sh +51 -0
- package/scripts/validation/validate-universal-pack.mjs +77 -0
- package/scripts/verify-persistence.js +127 -0
- package/test-pack.yaml +43 -0
- package/test-results/.last-run.json +4 -0
- package/test-runner.mjs +87 -0
- package/tests/artifacts.spec.js +147 -0
- package/tests/contracts.spec.js +239 -0
- package/tests/e2e/assertions.test.mjs +370 -0
- package/tests/e2e/crawler.test.mjs +451 -0
- package/tests/e2e/playwright-plus-plus.test.mjs +604 -0
- package/tests/e2e/proof-bundle.test.mjs +258 -0
- package/tests/e2e/real-world/saucedemo.test.mjs +714 -0
- package/tests/e2e/real-world/the-internet-herokuapp.test.mjs +760 -0
- package/tests/e2e/ui-actions.test.mjs +546 -0
- package/tests/gherkin.e2e.spec.ts +310 -0
- package/tests/no-console-errors.spec.js +136 -0
- package/tests/pdf.spec.ts +252 -0
- package/tests/run-pack.spec.ts +58 -0
- package/tsconfig.base.json +15 -0
- package/tsconfig.build.json +8 -0
- package/tsconfig.json +37 -0
- package/tsconfig.test.json +18 -0
- package/typedoc.json +37 -0
- package/ui/README.md +50 -0
- package/verify-proof.mjs +60 -0
- package/dist/cli-minimal.d.ts +0 -6
- package/dist/cli-minimal.js +0 -36
- package/dist/commands/ai.d.ts +0 -41
- package/dist/commands/ai.js +0 -511
- package/dist/commands/ask.d.ts +0 -94
- package/dist/commands/ask.js +0 -582
- package/dist/commands/coverage.d.ts +0 -8
- package/dist/commands/coverage.js +0 -252
- package/dist/commands/crawl.d.ts +0 -24
- package/dist/commands/crawl.js +0 -121
- package/dist/commands/doctor.d.ts +0 -54
- package/dist/commands/doctor.js +0 -513
- package/dist/commands/examples.d.ts +0 -33
- package/dist/commands/examples.js +0 -193
- package/dist/commands/explain.d.ts +0 -27
- package/dist/commands/explain.js +0 -630
- package/dist/commands/flakiness.d.ts +0 -73
- package/dist/commands/flakiness.js +0 -435
- package/dist/commands/generate.d.ts +0 -66
- package/dist/commands/generate.js +0 -438
- package/dist/commands/history.d.ts +0 -76
- package/dist/commands/history.js +0 -755
- package/dist/commands/init.d.ts +0 -106
- package/dist/commands/init.js +0 -616
- package/dist/commands/monitor.d.ts +0 -27
- package/dist/commands/monitor.js +0 -225
- package/dist/commands/ollama.d.ts +0 -40
- package/dist/commands/ollama.js +0 -301
- package/dist/commands/pack.d.ts +0 -70
- package/dist/commands/pack.js +0 -413
- package/dist/commands/regression.d.ts +0 -8
- package/dist/commands/regression.js +0 -340
- package/dist/commands/repair.d.ts +0 -26
- package/dist/commands/repair.js +0 -307
- package/dist/commands/report.d.ts +0 -62
- package/dist/commands/report.js +0 -378
- package/dist/commands/retry.d.ts +0 -43
- package/dist/commands/retry.js +0 -275
- package/dist/commands/run.d.ts +0 -41
- package/dist/commands/run.js +0 -169
- package/dist/commands/scan.d.ts +0 -5
- package/dist/commands/scan.js +0 -155
- package/dist/commands/secrets.d.ts +0 -58
- package/dist/commands/secrets.js +0 -289
- package/dist/commands/serve.d.ts +0 -13
- package/dist/commands/serve.js +0 -156
- package/dist/commands/slo.d.ts +0 -8
- package/dist/commands/slo.js +0 -327
- package/dist/commands/verify.d.ts +0 -32
- package/dist/commands/verify.js +0 -278
- package/dist/core/adapters/gitleaks-secrets.d.ts +0 -114
- package/dist/core/adapters/gitleaks-secrets.js +0 -410
- package/dist/core/adapters/k6-perf.d.ts +0 -85
- package/dist/core/adapters/k6-perf.js +0 -398
- package/dist/core/adapters/osv-deps.d.ts +0 -123
- package/dist/core/adapters/osv-deps.js +0 -372
- package/dist/core/adapters/playwright-native-adapter.d.ts +0 -121
- package/dist/core/adapters/playwright-native-adapter.js +0 -339
- package/dist/core/adapters/playwright-native-api.d.ts +0 -183
- package/dist/core/adapters/playwright-native-api.js +0 -465
- package/dist/core/adapters/playwright-ui.d.ts +0 -197
- package/dist/core/adapters/playwright-ui.js +0 -840
- package/dist/core/adapters/semgrep-sast.d.ts +0 -99
- package/dist/core/adapters/semgrep-sast.js +0 -322
- package/dist/core/adapters/zap-dast.d.ts +0 -133
- package/dist/core/adapters/zap-dast.js +0 -424
- package/dist/core/ai/anthropic-provider.d.ts +0 -50
- package/dist/core/ai/anthropic-provider.js +0 -223
- package/dist/core/ai/deepseek-provider.d.ts +0 -81
- package/dist/core/ai/deepseek-provider.js +0 -266
- package/dist/core/ai/index.d.ts +0 -60
- package/dist/core/ai/index.js +0 -18
- package/dist/core/ai/llm-client.d.ts +0 -45
- package/dist/core/ai/llm-client.js +0 -7
- package/dist/core/ai/mock-provider.d.ts +0 -49
- package/dist/core/ai/mock-provider.js +0 -121
- package/dist/core/ai/ollama-provider.d.ts +0 -78
- package/dist/core/ai/ollama-provider.js +0 -204
- package/dist/core/ai/openai-provider.d.ts +0 -48
- package/dist/core/ai/openai-provider.js +0 -200
- package/dist/core/ai/provider-factory.d.ts +0 -160
- package/dist/core/ai/provider-factory.js +0 -269
- package/dist/core/artifacts/index.d.ts +0 -6
- package/dist/core/artifacts/index.js +0 -6
- package/dist/core/artifacts/ui-artifacts.d.ts +0 -133
- package/dist/core/artifacts/ui-artifacts.js +0 -304
- package/dist/core/assertions/engine.d.ts +0 -51
- package/dist/core/assertions/engine.js +0 -530
- package/dist/core/assertions/index.d.ts +0 -11
- package/dist/core/assertions/index.js +0 -11
- package/dist/core/assertions/types.d.ts +0 -121
- package/dist/core/assertions/types.js +0 -37
- package/dist/core/auth/api-key-provider.d.ts +0 -16
- package/dist/core/auth/api-key-provider.js +0 -63
- package/dist/core/auth/aws-iam-provider.d.ts +0 -35
- package/dist/core/auth/aws-iam-provider.js +0 -177
- package/dist/core/auth/azure-ad-provider.d.ts +0 -15
- package/dist/core/auth/azure-ad-provider.js +0 -99
- package/dist/core/auth/basic-auth-provider.d.ts +0 -26
- package/dist/core/auth/basic-auth-provider.js +0 -111
- package/dist/core/auth/gcp-adc-provider.d.ts +0 -27
- package/dist/core/auth/gcp-adc-provider.js +0 -126
- package/dist/core/auth/index.d.ts +0 -238
- package/dist/core/auth/index.js +0 -82
- package/dist/core/auth/jwt-provider.d.ts +0 -19
- package/dist/core/auth/jwt-provider.js +0 -160
- package/dist/core/auth/manager.d.ts +0 -84
- package/dist/core/auth/manager.js +0 -230
- package/dist/core/auth/oauth2-provider.d.ts +0 -17
- package/dist/core/auth/oauth2-provider.js +0 -114
- package/dist/core/auth/totp-provider.d.ts +0 -31
- package/dist/core/auth/totp-provider.js +0 -134
- package/dist/core/auth/ui-login-provider.d.ts +0 -26
- package/dist/core/auth/ui-login-provider.js +0 -198
- package/dist/core/cache/index.d.ts +0 -7
- package/dist/core/cache/index.js +0 -6
- package/dist/core/cache/lru-cache.d.ts +0 -203
- package/dist/core/cache/lru-cache.js +0 -397
- package/dist/core/core/coverage/analyzer.d.ts +0 -101
- package/dist/core/core/coverage/analyzer.js +0 -415
- package/dist/core/core/coverage/collector.d.ts +0 -74
- package/dist/core/core/coverage/collector.js +0 -459
- package/dist/core/core/coverage/config.d.ts +0 -37
- package/dist/core/core/coverage/config.js +0 -156
- package/dist/core/core/coverage/index.d.ts +0 -11
- package/dist/core/core/coverage/index.js +0 -15
- package/dist/core/core/coverage/types.d.ts +0 -267
- package/dist/core/core/coverage/types.js +0 -6
- package/dist/core/core/coverage/vault.d.ts +0 -95
- package/dist/core/core/coverage/vault.js +0 -405
- package/dist/core/coverage/analyzer.d.ts +0 -101
- package/dist/core/coverage/analyzer.js +0 -415
- package/dist/core/coverage/collector.d.ts +0 -74
- package/dist/core/coverage/collector.js +0 -459
- package/dist/core/coverage/config.d.ts +0 -37
- package/dist/core/coverage/config.js +0 -156
- package/dist/core/coverage/index.d.ts +0 -11
- package/dist/core/coverage/index.js +0 -15
- package/dist/core/coverage/types.d.ts +0 -267
- package/dist/core/coverage/types.js +0 -6
- package/dist/core/coverage/vault.d.ts +0 -95
- package/dist/core/coverage/vault.js +0 -405
- package/dist/core/crawler/index.d.ts +0 -57
- package/dist/core/crawler/index.js +0 -281
- package/dist/core/crawler/journey-generator.d.ts +0 -49
- package/dist/core/crawler/journey-generator.js +0 -412
- package/dist/core/crawler/page-analyzer.d.ts +0 -88
- package/dist/core/crawler/page-analyzer.js +0 -709
- package/dist/core/crawler/selector-generator.d.ts +0 -34
- package/dist/core/crawler/selector-generator.js +0 -240
- package/dist/core/crawler/types.d.ts +0 -353
- package/dist/core/crawler/types.js +0 -6
- package/dist/core/dashboard/assets.d.ts +0 -6
- package/dist/core/dashboard/assets.js +0 -690
- package/dist/core/dashboard/index.d.ts +0 -6
- package/dist/core/dashboard/index.js +0 -5
- package/dist/core/dashboard/server.d.ts +0 -72
- package/dist/core/dashboard/server.js +0 -354
- package/dist/core/dashboard/types.d.ts +0 -70
- package/dist/core/dashboard/types.js +0 -5
- package/dist/core/discoverer/index.d.ts +0 -115
- package/dist/core/discoverer/index.js +0 -250
- package/dist/core/flakiness/index.d.ts +0 -228
- package/dist/core/flakiness/index.js +0 -384
- package/dist/core/generation/code-formatter.d.ts +0 -111
- package/dist/core/generation/code-formatter.js +0 -307
- package/dist/core/generation/code-generator.d.ts +0 -144
- package/dist/core/generation/code-generator.js +0 -293
- package/dist/core/generation/crawler-pack-generator.d.ts +0 -44
- package/dist/core/generation/crawler-pack-generator.js +0 -231
- package/dist/core/generation/generator.d.ts +0 -40
- package/dist/core/generation/generator.js +0 -76
- package/dist/core/generation/index.d.ts +0 -32
- package/dist/core/generation/index.js +0 -30
- package/dist/core/generation/pack-generator.d.ts +0 -107
- package/dist/core/generation/pack-generator.js +0 -416
- package/dist/core/generation/prompt-builder.d.ts +0 -132
- package/dist/core/generation/prompt-builder.js +0 -672
- package/dist/core/generation/source-analyzer.d.ts +0 -213
- package/dist/core/generation/source-analyzer.js +0 -657
- package/dist/core/generation/test-optimizer.d.ts +0 -117
- package/dist/core/generation/test-optimizer.js +0 -328
- package/dist/core/generation/types.d.ts +0 -214
- package/dist/core/generation/types.js +0 -4
- package/dist/core/hooks/compose.d.ts +0 -61
- package/dist/core/hooks/compose.js +0 -225
- package/dist/core/hooks/runner.d.ts +0 -68
- package/dist/core/hooks/runner.js +0 -303
- package/dist/core/index.d.ts +0 -104
- package/dist/core/index.js +0 -91
- package/dist/core/pack/migrator.d.ts +0 -51
- package/dist/core/pack/migrator.js +0 -304
- package/dist/core/pack/validator.d.ts +0 -42
- package/dist/core/pack/validator.js +0 -322
- package/dist/core/pack-v2/index.d.ts +0 -9
- package/dist/core/pack-v2/index.js +0 -8
- package/dist/core/pack-v2/loader.d.ts +0 -63
- package/dist/core/pack-v2/loader.js +0 -292
- package/dist/core/pack-v2/migrator.d.ts +0 -61
- package/dist/core/pack-v2/migrator.js +0 -480
- package/dist/core/pack-v2/validator.d.ts +0 -61
- package/dist/core/pack-v2/validator.js +0 -577
- package/dist/core/parallel/index.d.ts +0 -6
- package/dist/core/parallel/index.js +0 -6
- package/dist/core/parallel/parallel-runner.d.ts +0 -107
- package/dist/core/parallel/parallel-runner.js +0 -192
- package/dist/core/proof/bundle.d.ts +0 -137
- package/dist/core/proof/bundle.js +0 -160
- package/dist/core/proof/canonicalize.d.ts +0 -47
- package/dist/core/proof/canonicalize.js +0 -105
- package/dist/core/proof/index.d.ts +0 -13
- package/dist/core/proof/index.js +0 -18
- package/dist/core/proof/schema.d.ts +0 -217
- package/dist/core/proof/schema.js +0 -263
- package/dist/core/proof/signer.d.ts +0 -111
- package/dist/core/proof/signer.js +0 -226
- package/dist/core/proof/verifier.d.ts +0 -97
- package/dist/core/proof/verifier.js +0 -308
- package/dist/core/regression/detector.d.ts +0 -107
- package/dist/core/regression/detector.js +0 -497
- package/dist/core/regression/index.d.ts +0 -9
- package/dist/core/regression/index.js +0 -11
- package/dist/core/regression/trend-analyzer.d.ts +0 -102
- package/dist/core/regression/trend-analyzer.js +0 -345
- package/dist/core/regression/types.d.ts +0 -222
- package/dist/core/regression/types.js +0 -7
- package/dist/core/regression/vault.d.ts +0 -87
- package/dist/core/regression/vault.js +0 -289
- package/dist/core/repair/engine/fixer.d.ts +0 -24
- package/dist/core/repair/engine/fixer.js +0 -226
- package/dist/core/repair/engine/suggestion-engine.d.ts +0 -18
- package/dist/core/repair/engine/suggestion-engine.js +0 -187
- package/dist/core/repair/index.d.ts +0 -10
- package/dist/core/repair/index.js +0 -13
- package/dist/core/repair/repairer.d.ts +0 -90
- package/dist/core/repair/repairer.js +0 -284
- package/dist/core/repair/types.d.ts +0 -91
- package/dist/core/repair/types.js +0 -6
- package/dist/core/repair/utils/error-analyzer.d.ts +0 -28
- package/dist/core/repair/utils/error-analyzer.js +0 -264
- package/dist/core/reporting/html-reporter.d.ts +0 -119
- package/dist/core/reporting/html-reporter.js +0 -737
- package/dist/core/reporting/index.d.ts +0 -6
- package/dist/core/reporting/index.js +0 -6
- package/dist/core/retry/flakiness-integration.d.ts +0 -60
- package/dist/core/retry/flakiness-integration.js +0 -228
- package/dist/core/retry/index.d.ts +0 -14
- package/dist/core/retry/index.js +0 -16
- package/dist/core/retry/retry-engine.d.ts +0 -80
- package/dist/core/retry/retry-engine.js +0 -296
- package/dist/core/retry/types.d.ts +0 -178
- package/dist/core/retry/types.js +0 -52
- package/dist/core/retry/vault.d.ts +0 -77
- package/dist/core/retry/vault.js +0 -304
- package/dist/core/runner/e2e-helpers.d.ts +0 -102
- package/dist/core/runner/e2e-helpers.js +0 -153
- package/dist/core/runner/phase3-runner.d.ts +0 -200
- package/dist/core/runner/phase3-runner.js +0 -1041
- package/dist/core/secrets/crypto.d.ts +0 -75
- package/dist/core/secrets/crypto.js +0 -223
- package/dist/core/secrets/manager.d.ts +0 -76
- package/dist/core/secrets/manager.js +0 -219
- package/dist/core/security/redaction-patterns-extended.d.ts +0 -27
- package/dist/core/security/redaction-patterns-extended.js +0 -247
- package/dist/core/security/redactor.d.ts +0 -71
- package/dist/core/security/redactor.js +0 -279
- package/dist/core/self-healing/assertion-healer.d.ts +0 -97
- package/dist/core/self-healing/assertion-healer.js +0 -371
- package/dist/core/self-healing/engine.d.ts +0 -122
- package/dist/core/self-healing/engine.js +0 -538
- package/dist/core/self-healing/index.d.ts +0 -10
- package/dist/core/self-healing/index.js +0 -11
- package/dist/core/self-healing/selector-healer.d.ts +0 -103
- package/dist/core/self-healing/selector-healer.js +0 -372
- package/dist/core/self-healing/types.d.ts +0 -152
- package/dist/core/self-healing/types.js +0 -6
- package/dist/core/serve/diagnostics-collector.d.ts +0 -32
- package/dist/core/serve/diagnostics-collector.js +0 -149
- package/dist/core/serve/health-checker.d.ts +0 -44
- package/dist/core/serve/health-checker.js +0 -219
- package/dist/core/serve/index.d.ts +0 -8
- package/dist/core/serve/index.js +0 -8
- package/dist/core/serve/metrics-collector.d.ts +0 -24
- package/dist/core/serve/metrics-collector.js +0 -322
- package/dist/core/serve/process-manager.d.ts +0 -36
- package/dist/core/serve/process-manager.js +0 -213
- package/dist/core/serve/server.d.ts +0 -36
- package/dist/core/serve/server.js +0 -191
- package/dist/core/slo/config.d.ts +0 -107
- package/dist/core/slo/config.js +0 -360
- package/dist/core/slo/index.d.ts +0 -11
- package/dist/core/slo/index.js +0 -15
- package/dist/core/slo/sli-calculator.d.ts +0 -92
- package/dist/core/slo/sli-calculator.js +0 -364
- package/dist/core/slo/slo-tracker.d.ts +0 -148
- package/dist/core/slo/slo-tracker.js +0 -379
- package/dist/core/slo/types.d.ts +0 -281
- package/dist/core/slo/types.js +0 -7
- package/dist/core/slo/vault.d.ts +0 -102
- package/dist/core/slo/vault.js +0 -427
- package/dist/core/tui/index.d.ts +0 -7
- package/dist/core/tui/index.js +0 -6
- package/dist/core/tui/monitor.d.ts +0 -92
- package/dist/core/tui/monitor.js +0 -271
- package/dist/core/tui/renderer.d.ts +0 -33
- package/dist/core/tui/renderer.js +0 -218
- package/dist/core/tui/types.d.ts +0 -63
- package/dist/core/tui/types.js +0 -5
- package/dist/core/types/pack-v1.d.ts +0 -251
- package/dist/core/types/pack-v1.js +0 -5
- package/dist/core/types/pack-v2.d.ts +0 -425
- package/dist/core/types/pack-v2.js +0 -8
- package/dist/core/types/trust-score.d.ts +0 -69
- package/dist/core/types/trust-score.js +0 -191
- package/dist/core/vault/cas.d.ts +0 -90
- package/dist/core/vault/cas.js +0 -261
- package/dist/core/vault/index.d.ts +0 -326
- package/dist/core/vault/index.js +0 -1042
- package/dist/core/visual/index.d.ts +0 -6
- package/dist/core/visual/index.js +0 -6
- package/dist/core/visual/visual-regression.d.ts +0 -113
- package/dist/core/visual/visual-regression.js +0 -236
- package/dist/core/watch/index.d.ts +0 -7
- package/dist/core/watch/index.js +0 -6
- package/dist/core/watch/watch-mode.d.ts +0 -213
- package/dist/core/watch/watch-mode.js +0 -389
- package/dist/generators/index.d.ts +0 -5
- package/dist/generators/index.js +0 -5
- package/dist/generators/json-reporter.d.ts +0 -10
- package/dist/generators/json-reporter.js +0 -12
- package/dist/generators/test-generator.d.ts +0 -18
- package/dist/generators/test-generator.js +0 -78
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -246
- package/dist/scanners/dom-scanner.d.ts +0 -52
- package/dist/scanners/dom-scanner.js +0 -296
- package/dist/scanners/index.d.ts +0 -4
- package/dist/scanners/index.js +0 -4
- package/dist/schemas/pack.schema.json +0 -236
- package/dist/types/scan.d.ts +0 -68
- package/dist/types/scan.js +0 -4
- package/dist/utils/config.d.ts +0 -5
- package/dist/utils/config.js +0 -136
- /package/{bin → cli/bin}/qa360.js +0 -0
- /package/{examples → cli/examples}/accessibility.yml +0 -0
- /package/{examples → cli/examples}/api-basic.yml +0 -0
- /package/{examples → cli/examples}/complete.yml +0 -0
- /package/{examples → cli/examples}/crawler.yml +0 -0
- /package/{examples → cli/examples}/fullstack.yml +0 -0
- /package/{examples → cli/examples}/security.yml +0 -0
- /package/{examples → cli/examples}/ui-advanced.yml +0 -0
- /package/{examples → cli/examples}/ui-basic.yml +0 -0
- /package/{dist/core → core}/schemas/pack.schema.json +0 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
# QA360 MCP Demo - 60 Seconds to AI-Powered Testing
|
|
2
|
+
|
|
3
|
+
## 🎯 **Demo Script (60 seconds)**
|
|
4
|
+
|
|
5
|
+
### **Setup (10s)**
|
|
6
|
+
```bash
|
|
7
|
+
# Install QA360 MCP Server
|
|
8
|
+
npm install -g @qa360/mcp-server
|
|
9
|
+
|
|
10
|
+
# Start with full permissions
|
|
11
|
+
qa360-mcp --allow-run --allow-secrets
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### **Natural Language Pack Generation (15s)**
|
|
15
|
+
**Prompt to Claude/LLM:**
|
|
16
|
+
```
|
|
17
|
+
Generate a QA360 pack to test my web login form for security vulnerabilities and performance under 2 seconds
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Expected Response:**
|
|
21
|
+
```yaml
|
|
22
|
+
name: login-security-perf-test
|
|
23
|
+
version: 1.0.0
|
|
24
|
+
description: Security and performance testing for web login form
|
|
25
|
+
|
|
26
|
+
gates:
|
|
27
|
+
ui:
|
|
28
|
+
adapter: playwright
|
|
29
|
+
budgets:
|
|
30
|
+
max_duration_ms: 2000
|
|
31
|
+
sast:
|
|
32
|
+
adapter: semgrep
|
|
33
|
+
rules: auto
|
|
34
|
+
deps:
|
|
35
|
+
adapter: osv
|
|
36
|
+
lockfile: ./package-lock.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### **Execute Tests (20s)**
|
|
40
|
+
**Prompt:**
|
|
41
|
+
```
|
|
42
|
+
Run this pack against https://demoqa.com/login with run key "demo-linkedin-2025"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**MCP Call:**
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"tool": "qa360.run",
|
|
49
|
+
"args": {
|
|
50
|
+
"packPath": "./login-test-pack.yml",
|
|
51
|
+
"runKey": "demo-linkedin-2025",
|
|
52
|
+
"strict": true
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Response:**
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"runId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
61
|
+
"status": "passed",
|
|
62
|
+
"trust": { "score": 87 },
|
|
63
|
+
"gates": [
|
|
64
|
+
{ "name": "ui", "status": "passed", "duration_ms": 1800 },
|
|
65
|
+
{ "name": "sast", "status": "warn", "duration_ms": 3200 },
|
|
66
|
+
{ "name": "deps", "status": "passed", "duration_ms": 1100 }
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### **Analyze & Triage (10s)**
|
|
72
|
+
**Prompt:**
|
|
73
|
+
```
|
|
74
|
+
Explain the warning in my SAST gate and tell me how to fix it
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**MCP Response:**
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"explanation": {
|
|
81
|
+
"cause": "Hardcoded secret or API key detected in source code",
|
|
82
|
+
"severity": "high",
|
|
83
|
+
"category": "security"
|
|
84
|
+
},
|
|
85
|
+
"actions": [
|
|
86
|
+
{
|
|
87
|
+
"type": "fix",
|
|
88
|
+
"description": "Move secrets to environment variables",
|
|
89
|
+
"command": "qa360 secrets add API_KEY 'your-secret-value'"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### **History & Comparison (5s)**
|
|
96
|
+
**Prompt:**
|
|
97
|
+
```
|
|
98
|
+
Compare this run with my previous test and show me what improved
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Result:**
|
|
102
|
+
- Trust score: +12% improvement
|
|
103
|
+
- UI performance: 200ms faster
|
|
104
|
+
- New security finding resolved
|
|
105
|
+
- Dependencies updated
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 🎬 **LinkedIn Video Script**
|
|
110
|
+
|
|
111
|
+
### **Hook (0-5s)**
|
|
112
|
+
*"What if you could test your entire web application just by talking to AI?"*
|
|
113
|
+
|
|
114
|
+
### **Problem (5-15s)**
|
|
115
|
+
*"Traditional testing requires writing complex configurations, learning multiple tools, and manually analyzing results. It takes hours of setup for minutes of actual testing."*
|
|
116
|
+
|
|
117
|
+
### **Solution Demo (15-50s)**
|
|
118
|
+
|
|
119
|
+
**Scene 1: Natural Language (15-25s)**
|
|
120
|
+
*Screen: Claude Desktop interface*
|
|
121
|
+
```
|
|
122
|
+
User: "Test my login form for security issues and make sure it loads under 2 seconds"
|
|
123
|
+
|
|
124
|
+
Claude: "I'll generate a QA360 pack for you..."
|
|
125
|
+
```
|
|
126
|
+
*Shows YAML pack being generated automatically*
|
|
127
|
+
|
|
128
|
+
**Scene 2: Instant Execution (25-35s)**
|
|
129
|
+
*Screen: Terminal with MCP server running*
|
|
130
|
+
```
|
|
131
|
+
Claude: "Running your tests now..."
|
|
132
|
+
```
|
|
133
|
+
*Shows real test execution with live progress*
|
|
134
|
+
|
|
135
|
+
**Scene 3: Intelligent Analysis (35-45s)**
|
|
136
|
+
*Screen: Results with explanations*
|
|
137
|
+
```
|
|
138
|
+
Claude: "Found 1 security issue - hardcoded API key. Here's how to fix it..."
|
|
139
|
+
```
|
|
140
|
+
*Shows actionable remediation steps*
|
|
141
|
+
|
|
142
|
+
**Scene 4: Historical Insights (45-50s)**
|
|
143
|
+
*Screen: Trend analysis*
|
|
144
|
+
```
|
|
145
|
+
Claude: "Compared to last week, your performance improved by 23% and security score increased to 87%"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### **Call to Action (50-60s)**
|
|
149
|
+
*"QA360 MCP - Transform testing into conversation. Link in comments."*
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 🚀 **Live Demo Commands**
|
|
154
|
+
|
|
155
|
+
### **Complete 60s Demo Sequence**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# 1. Setup (copy-paste ready)
|
|
159
|
+
npm install -g @qa360/mcp-server
|
|
160
|
+
qa360-mcp --allow-run --allow-secrets &
|
|
161
|
+
|
|
162
|
+
# 2. Claude Prompts (copy-paste ready)
|
|
163
|
+
echo "Generate a QA360 pack to test my e-commerce checkout for security and performance"
|
|
164
|
+
|
|
165
|
+
# 3. Execute generated pack
|
|
166
|
+
echo "Run this pack with run key demo-$(date +%s)"
|
|
167
|
+
|
|
168
|
+
# 4. Analyze results
|
|
169
|
+
echo "Explain any security findings and show me how to fix them"
|
|
170
|
+
|
|
171
|
+
# 5. Compare with history
|
|
172
|
+
echo "Show me the trend of my test results over the last 10 runs"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### **Backup Manual Commands (if MCP fails)**
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Generate pack manually
|
|
179
|
+
cat > demo-pack.yml << EOF
|
|
180
|
+
name: demo-pack
|
|
181
|
+
version: 1.0.0
|
|
182
|
+
gates:
|
|
183
|
+
ui:
|
|
184
|
+
adapter: playwright
|
|
185
|
+
budgets:
|
|
186
|
+
max_duration_ms: 3000
|
|
187
|
+
sast:
|
|
188
|
+
adapter: semgrep
|
|
189
|
+
EOF
|
|
190
|
+
|
|
191
|
+
# Run via CLI
|
|
192
|
+
qa360 run --pack demo-pack.yml --run-key demo-manual
|
|
193
|
+
|
|
194
|
+
# Show history
|
|
195
|
+
qa360 history list --limit 5
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 📱 **Social Media Variants**
|
|
201
|
+
|
|
202
|
+
### **Twitter/X (30s version)**
|
|
203
|
+
*"AI-powered testing in 30 seconds:*
|
|
204
|
+
1. *Tell AI what to test*
|
|
205
|
+
2. *Watch it generate & run tests*
|
|
206
|
+
3. *Get intelligent analysis*
|
|
207
|
+
4. *Fix issues with AI guidance*
|
|
208
|
+
|
|
209
|
+
*QA360 MCP makes testing conversational
|
|
210
|
+
|
|
211
|
+
### **Instagram Reel (15s version)**
|
|
212
|
+
*Quick cuts showing:*
|
|
213
|
+
1. *Typing natural language prompt (3s)*
|
|
214
|
+
2. *AI generating test config (3s)*
|
|
215
|
+
3. *Tests running automatically (3s)*
|
|
216
|
+
4. *Results with AI explanations (3s)*
|
|
217
|
+
5. *"QA360 MCP" logo (3s)*
|
|
218
|
+
|
|
219
|
+
### **TikTok (15s version)**
|
|
220
|
+
*"POV: You're testing your app with AI"*
|
|
221
|
+
- *Fast-paced editing*
|
|
222
|
+
- *Trending audio*
|
|
223
|
+
- *Text overlays with key benefits*
|
|
224
|
+
- *Clear call-to-action*
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 🎯 **Key Messages**
|
|
229
|
+
|
|
230
|
+
### **Value Propositions**
|
|
231
|
+
1. **Zero Configuration**: No complex setup, just natural language
|
|
232
|
+
2. **Instant Intelligence**: AI explains results and suggests fixes
|
|
233
|
+
3. **Historical Context**: Compare runs and track improvements
|
|
234
|
+
4. **Universal Integration**: Works with Claude, VSCode, any MCP client
|
|
235
|
+
|
|
236
|
+
### **Technical Differentiators**
|
|
237
|
+
1. **24 Tools Available**: Complete testing toolkit via MCP
|
|
238
|
+
2. **Cryptographic Proofs**: Signed, verifiable test results
|
|
239
|
+
3. **Evidence Vault**: Persistent history with trend analysis
|
|
240
|
+
4. **Security First**: Rate limiting, sandboxing, audit logging
|
|
241
|
+
|
|
242
|
+
### **Target Audience**
|
|
243
|
+
- **Primary**: Developers using AI coding assistants
|
|
244
|
+
- **Secondary**: QA engineers seeking automation
|
|
245
|
+
- **Tertiary**: DevOps teams implementing CI/CD
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 📊 **Success Metrics**
|
|
250
|
+
|
|
251
|
+
### **Engagement Targets**
|
|
252
|
+
- **LinkedIn**: 10K+ views, 500+ reactions, 50+ comments
|
|
253
|
+
- **Twitter**: 5K+ impressions, 100+ retweets
|
|
254
|
+
- **GitHub**: 100+ stars on MCP server repo
|
|
255
|
+
|
|
256
|
+
### **Conversion Targets**
|
|
257
|
+
- **Downloads**: 1K+ npm installs in first week
|
|
258
|
+
- **Documentation**: 500+ unique visitors to MCP docs
|
|
259
|
+
- **Community**: 50+ Discord members asking about MCP
|
|
260
|
+
|
|
261
|
+
### **Quality Indicators**
|
|
262
|
+
- **Demo Success Rate**: 95%+ successful live demos
|
|
263
|
+
- **User Feedback**: 4.5+ stars average rating
|
|
264
|
+
- **Issue Resolution**: <24h response time for MCP issues
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## 🔧 **Technical Setup for Demos**
|
|
269
|
+
|
|
270
|
+
### **Pre-Demo Checklist**
|
|
271
|
+
```bash
|
|
272
|
+
# Verify all components
|
|
273
|
+
qa360 --version # Core installed
|
|
274
|
+
qa360-mcp --help # MCP server available
|
|
275
|
+
qa360 doctor # System healthy
|
|
276
|
+
|
|
277
|
+
# Test MCP connection
|
|
278
|
+
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | qa360-mcp
|
|
279
|
+
|
|
280
|
+
# Prepare demo pack
|
|
281
|
+
cat > demo-pack.yml << EOF
|
|
282
|
+
name: demo-showcase
|
|
283
|
+
version: 1.0.0
|
|
284
|
+
gates:
|
|
285
|
+
ui:
|
|
286
|
+
adapter: playwright
|
|
287
|
+
budgets:
|
|
288
|
+
max_duration_ms: 5000
|
|
289
|
+
EOF
|
|
290
|
+
|
|
291
|
+
# Initialize vault with sample data
|
|
292
|
+
qa360 run --pack demo-pack.yml --run-key demo-baseline
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### **Fallback Scenarios**
|
|
296
|
+
1. **MCP Connection Issues**: Use CLI commands directly
|
|
297
|
+
2. **Network Problems**: Use local examples with mock data
|
|
298
|
+
3. **Performance Issues**: Pre-record critical segments
|
|
299
|
+
4. **Audio Issues**: Have text-based backup explanations
|
|
300
|
+
|
|
301
|
+
### **Demo Environment**
|
|
302
|
+
- **OS**: macOS (most visually appealing terminal)
|
|
303
|
+
- **Terminal**: iTerm2 with custom theme
|
|
304
|
+
- **Editor**: VSCode with MCP extension
|
|
305
|
+
- **Browser**: Chrome with dev tools ready
|
|
306
|
+
- **Screen Recording**: OBS with 1080p60 settings
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 📝 **Post-Demo Follow-up**
|
|
311
|
+
|
|
312
|
+
### **Immediate Actions (within 1 hour)**
|
|
313
|
+
1. Upload demo video to all platforms
|
|
314
|
+
2. Share GitHub repository link
|
|
315
|
+
3. Post documentation links
|
|
316
|
+
4. Respond to initial comments/questions
|
|
317
|
+
|
|
318
|
+
### **Week 1 Follow-up**
|
|
319
|
+
1. Analyze engagement metrics
|
|
320
|
+
2. Address common questions in FAQ
|
|
321
|
+
3. Create follow-up content based on feedback
|
|
322
|
+
4. Engage with community discussions
|
|
323
|
+
|
|
324
|
+
### **Month 1 Assessment**
|
|
325
|
+
1. Review adoption metrics
|
|
326
|
+
2. Gather user feedback
|
|
327
|
+
3. Plan Phase 8 based on MCP success
|
|
328
|
+
4. Document lessons learned
|
|
329
|
+
|
|
330
|
+
This demo framework provides everything needed for successful QA360 MCP showcases across all major platforms, with clear success metrics and fallback plans.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{"role": "user", "content": "Generate a QA360 pack to test my web login form for security vulnerabilities and performance under 2 seconds", "timestamp": "2025-01-15T10:00:00Z"}
|
|
2
|
+
{"role": "assistant", "content": "I'll generate a QA360 pack for testing your login form with security and performance requirements.", "timestamp": "2025-01-15T10:00:01Z"}
|
|
3
|
+
{"role": "tool_call", "tool": "qa360.pack.ask", "args": {"query": "Test web login form for security vulnerabilities and performance under 2 seconds", "context": {"targets": {"type": "login_form", "performance_budget": "2000ms"}}}, "timestamp": "2025-01-15T10:00:02Z"}
|
|
4
|
+
{"role": "tool_result", "content": {"pack": "name: login-security-perf-test\nversion: 1.0.0\ndescription: Security and performance testing for web login form\n\ngates:\n ui:\n adapter: playwright\n budgets:\n max_duration_ms: 2000\n sast:\n adapter: semgrep\n rules: auto\n deps:\n adapter: osv\n lockfile: ./package-lock.json", "hints": {"tools_needed": ["playwright", "semgrep", "osv-scanner"], "estimated_duration": "1-2min", "complexity": "medium"}}, "timestamp": "2025-01-15T10:00:03Z"}
|
|
5
|
+
{"role": "assistant", "content": "Perfect! I've generated a comprehensive QA360 pack for your login form testing. Here's what it includes:\n\n```yaml\nname: login-security-perf-test\nversion: 1.0.0\ndescription: Security and performance testing for web login form\n\ngates:\n ui:\n adapter: playwright\n budgets:\n max_duration_ms: 2000\n sast:\n adapter: semgrep\n rules: auto\n deps:\n adapter: osv\n lockfile: ./package-lock.json\n```\n\nThis pack will:\n- Test UI performance with a 2-second budget\n- Scan for security vulnerabilities using Semgrep\n- Check dependencies for known vulnerabilities\n\nWould you like me to run this pack against your login form?", "timestamp": "2025-01-15T10:00:04Z"}
|
|
6
|
+
{"role": "user", "content": "Yes, run this pack against https://demoqa.com/login with run key 'demo-linkedin-2025'", "timestamp": "2025-01-15T10:00:30Z"}
|
|
7
|
+
{"role": "tool_call", "tool": "qa360.run", "args": {"packPath": "./login-security-perf-test.yml", "runKey": "demo-linkedin-2025", "strict": true}, "timestamp": "2025-01-15T10:00:31Z"}
|
|
8
|
+
{"role": "tool_result", "content": {"runId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "passed", "trust": {"score": 87, "weights": {"ui": 0.4, "sast": 0.35, "deps": 0.25}}, "gates": [{"name": "ui", "status": "passed", "duration_ms": 1800, "key_metrics": {"interactions": 3, "load_time": 1800}}, {"name": "sast", "status": "warn", "duration_ms": 3200, "key_metrics": {"findings": 2, "high_severity": 0}}, {"name": "deps", "status": "passed", "duration_ms": 1100, "key_metrics": {"vulnerabilities": 0, "packages_scanned": 45}}]}, "timestamp": "2025-01-15T10:02:15Z"}
|
|
9
|
+
{"role": "assistant", "content": "Excellent! Your tests completed successfully. Here's the summary:\n\n🎯 **Overall Result**: ✅ PASSED (Trust Score: 87%)\n\n📊 **Gate Results**:\n- **UI Performance**: ✅ PASSED (1.8s - under your 2s budget!)\n - 3 interactions tested\n - Page loaded in 1.8 seconds\n\n- **Security (SAST)**: ⚠️ WARNING (2 findings, no high severity)\n - Completed in 3.2 seconds\n - Found 2 minor security issues\n\n- **Dependencies**: ✅ PASSED (no vulnerabilities)\n - Scanned 45 packages in 1.1 seconds\n - All dependencies are secure\n\n🔍 **Next Steps**: The SAST gate found some minor security issues. Would you like me to explain what was found and how to fix it?", "timestamp": "2025-01-15T10:02:16Z"}
|
|
10
|
+
{"role": "user", "content": "Yes, explain the security findings and tell me how to fix them", "timestamp": "2025-01-15T10:02:45Z"}
|
|
11
|
+
{"role": "tool_call", "tool": "qa360.triage.explain_code", "args": {"code": "SG001", "context": {"gate": "sast", "severity": "medium"}}, "timestamp": "2025-01-15T10:02:46Z"}
|
|
12
|
+
{"role": "tool_result", "content": {"explanation": {"cause": "Hardcoded secret or API key detected in source code", "severity": "high", "category": "security"}, "actions": [{"type": "fix", "description": "Move secrets to environment variables or secure vault", "command": "qa360 secrets add SECRET_NAME \"secret_value\""}, {"type": "investigate", "description": "Review the specific Semgrep rule and code location"}], "references": [{"title": "Semgrep Rules Documentation", "url": "https://semgrep.dev/docs/writing-rules/overview/"}, {"title": "OWASP Secure Coding Practices", "url": "https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/"}]}, "timestamp": "2025-01-15T10:02:47Z"}
|
|
13
|
+
{"role": "assistant", "content": "🔍 **Security Finding Analysis**:\n\n**Issue**: Hardcoded secret or API key detected (SG001)\n- **Severity**: High\n- **Category**: Security vulnerability\n- **Cause**: Your code contains hardcoded secrets that should be stored securely\n\n🛠️ **How to Fix**:\n\n1. **Move secrets to environment variables**:\n ```bash\n qa360 secrets add API_KEY \"your-secret-value\"\n qa360 secrets add DB_PASSWORD \"your-db-password\"\n ```\n\n2. **Update your code** to use environment variables:\n ```javascript\n // Instead of: const apiKey = \"sk-1234567890abcdef\"\n const apiKey = process.env.API_KEY;\n ```\n\n3. **Review the specific locations** where secrets were found and replace them\n\n📚 **Learn More**:\n- [Semgrep Security Rules](https://semgrep.dev/docs/writing-rules/overview/)\n- [OWASP Secure Coding Practices](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/)\n\nWould you like me to help you set up the secrets management or show you the trend of your security improvements over time?", "timestamp": "2025-01-15T10:02:48Z"}
|
|
14
|
+
{"role": "user", "content": "Show me the trend of my test results over the last 10 runs", "timestamp": "2025-01-15T10:03:15Z"}
|
|
15
|
+
{"role": "tool_call", "tool": "qa360.history.trend", "args": {"window": 10}, "timestamp": "2025-01-15T10:03:16Z"}
|
|
16
|
+
{"role": "tool_result", "content": {"series": [{"timestamp": 1705312800000, "value": 87, "metadata": {"status": "passed", "findings_count": 2}}, {"timestamp": 1705226400000, "value": 82, "metadata": {"status": "passed", "findings_count": 3}}, {"timestamp": 1705140000000, "value": 75, "metadata": {"status": "failed", "findings_count": 5}}, {"timestamp": 1705053600000, "value": 78, "metadata": {"status": "passed", "findings_count": 4}}, {"timestamp": 1704967200000, "value": 71, "metadata": {"status": "passed", "findings_count": 6}}], "summary": {"average": 78.6, "trend": "up", "window_size": 5}}, "timestamp": "2025-01-15T10:03:17Z"}
|
|
17
|
+
{"role": "assistant", "content": "📈 **Your Testing Trend Analysis** (Last 10 runs):\n\n🎯 **Great Progress!** Your quality is trending **UP** ⬆️\n\n**Trust Score Evolution**:\n- **Today**: 87% ✅ (2 findings)\n- **Yesterday**: 82% ✅ (3 findings) \n- **3 days ago**: 75% ❌ (5 findings)\n- **4 days ago**: 78% ✅ (4 findings)\n- **5 days ago**: 71% ✅ (6 findings)\n\n📊 **Key Insights**:\n- **Average Trust Score**: 78.6%\n- **Improvement**: +16 points over 5 runs!\n- **Security Findings**: Reduced from 6 → 2 (67% improvement)\n- **Consistency**: 4/5 recent runs passed\n\n🏆 **What's Working**:\n- Your security posture is significantly improving\n- Performance remains consistently under budget\n- Trust score is on a strong upward trajectory\n\n🎯 **Next Goal**: Get to 90%+ trust score by addressing those last 2 security findings!\n\nWould you like me to help you tackle those remaining security issues or set up automated monitoring for your quality metrics?", "timestamp": "2025-01-15T10:03:18Z"}
|
|
18
|
+
{"role": "user", "content": "That's perfect! Can you also export this run data so I can share it with my team?", "timestamp": "2025-01-15T10:03:45Z"}
|
|
19
|
+
{"role": "tool_call", "tool": "qa360.history.export", "args": {"runId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "bundlePath": "./qa360-demo-export.zip"}, "timestamp": "2025-01-15T10:03:46Z"}
|
|
20
|
+
{"role": "tool_result", "content": {"bundlePath": "/Users/demo/qa360-demo-export.zip", "size_bytes": 2458624, "contents": ["run.json", "gates.json", "findings.json", "artifacts/", "metadata.json"]}, "timestamp": "2025-01-15T10:03:47Z"}
|
|
21
|
+
{"role": "assistant", "content": "📦 **Export Complete!** \n\nI've created a comprehensive evidence bundle for your team:\n\n**File**: `qa360-demo-export.zip` (2.4 MB)\n\n**Contents**:\n- `run.json` - Complete test execution details\n- `gates.json` - All gate results and metrics\n- `findings.json` - Security findings and recommendations\n- `artifacts/` - Screenshots, logs, and proof documents\n- `metadata.json` - Test configuration and environment info\n\n🎯 **Perfect for**:\n- Team reviews and retrospectives\n- Compliance documentation\n- CI/CD integration\n- Quality metrics tracking\n\n💡 **Pro Tip**: This bundle includes cryptographic proof of your test results, making it perfect for audit trails and compliance requirements.\n\nYour team can verify the results independently and track your quality improvements over time. Great work on the 87% trust score and the upward trend! 🚀", "timestamp": "2025-01-15T10:03:48Z"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcp.servers": [
|
|
3
|
+
{
|
|
4
|
+
"name": "qa360",
|
|
5
|
+
"command": "qa360-mcp",
|
|
6
|
+
"args": ["--allow-run"],
|
|
7
|
+
"cwd": "${workspaceFolder}",
|
|
8
|
+
"env": {
|
|
9
|
+
"QA360_LOG_LEVEL": "info"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"mcp.trace.server": "verbose",
|
|
14
|
+
"mcp.logLevel": "info",
|
|
15
|
+
"qa360.mcp.autoStart": true,
|
|
16
|
+
"qa360.mcp.defaultConfig": {
|
|
17
|
+
"allowRun": true,
|
|
18
|
+
"allowSecrets": false,
|
|
19
|
+
"maxConcurrency": 2,
|
|
20
|
+
"rateLimit": 5
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# QA360 Pack v2 - Complete Example
|
|
2
|
+
#
|
|
3
|
+
# This example demonstrates all features of Pack v2:
|
|
4
|
+
# - Multiple gates with different adapters
|
|
5
|
+
# - Authentication profiles
|
|
6
|
+
# - Hooks (setup/teardown)
|
|
7
|
+
# - Custom execution settings
|
|
8
|
+
# - Per-gate auth overrides
|
|
9
|
+
#
|
|
10
|
+
# NOTE: Some features shown here are planned but not yet fully implemented:
|
|
11
|
+
# - auth.profiles (use inline auth in gates for now)
|
|
12
|
+
# - hooks (use external scripts for setup/teardown for now)
|
|
13
|
+
|
|
14
|
+
version: 2
|
|
15
|
+
name: complete-example-pack
|
|
16
|
+
description: Complete example demonstrating all Pack v2 features
|
|
17
|
+
|
|
18
|
+
# ============================================================
|
|
19
|
+
# Authentication Profiles
|
|
20
|
+
# ============================================================
|
|
21
|
+
auth:
|
|
22
|
+
# Default auth profiles by type
|
|
23
|
+
api: default-bearer
|
|
24
|
+
ui: default-ui-login
|
|
25
|
+
|
|
26
|
+
profiles:
|
|
27
|
+
# Bearer token authentication (for APIs)
|
|
28
|
+
default-bearer:
|
|
29
|
+
type: bearer
|
|
30
|
+
config:
|
|
31
|
+
token: "${API_TOKEN:-your-token-here}"
|
|
32
|
+
|
|
33
|
+
# API Key authentication
|
|
34
|
+
api-key-auth:
|
|
35
|
+
type: api_key
|
|
36
|
+
config:
|
|
37
|
+
header_name: X-API-Key
|
|
38
|
+
key: "${API_KEY:-your-api-key}"
|
|
39
|
+
location: header
|
|
40
|
+
|
|
41
|
+
# Basic authentication
|
|
42
|
+
basic-auth:
|
|
43
|
+
type: basic
|
|
44
|
+
config:
|
|
45
|
+
username: "${BASIC_USER:-admin}"
|
|
46
|
+
password: "${BASIC_PASS:-secret}"
|
|
47
|
+
|
|
48
|
+
# UI Login authentication
|
|
49
|
+
default-ui-login:
|
|
50
|
+
type: ui_login
|
|
51
|
+
config:
|
|
52
|
+
loginUrl: "${BASE_URL}/login"
|
|
53
|
+
usernameField: "#username"
|
|
54
|
+
passwordField: "#password"
|
|
55
|
+
submitButton: "button[type='submit']"
|
|
56
|
+
username: "${UI_USER:-testuser}"
|
|
57
|
+
password: "${UI_PASS:-testpass}"
|
|
58
|
+
successSelector: ".dashboard"
|
|
59
|
+
|
|
60
|
+
# ============================================================
|
|
61
|
+
# Quality Gates
|
|
62
|
+
# ============================================================
|
|
63
|
+
gates:
|
|
64
|
+
# --------------------------------------------------------
|
|
65
|
+
# API Smoke Tests with Bearer Auth
|
|
66
|
+
# --------------------------------------------------------
|
|
67
|
+
api-health:
|
|
68
|
+
adapter: playwright-api
|
|
69
|
+
enabled: true
|
|
70
|
+
auth: default-bearer
|
|
71
|
+
config:
|
|
72
|
+
baseUrl: "${BASE_URL:-https://api.example.com}"
|
|
73
|
+
smoke:
|
|
74
|
+
- "GET /health -> 200"
|
|
75
|
+
- "GET /api/v1/status -> 200"
|
|
76
|
+
timeout: 5000
|
|
77
|
+
|
|
78
|
+
# --------------------------------------------------------
|
|
79
|
+
# API CRUD Tests with API Key
|
|
80
|
+
# --------------------------------------------------------
|
|
81
|
+
api-crud:
|
|
82
|
+
adapter: playwright-api
|
|
83
|
+
enabled: true
|
|
84
|
+
auth: api-key-auth
|
|
85
|
+
config:
|
|
86
|
+
baseUrl: "${BASE_URL:-https://api.example.com}"
|
|
87
|
+
smoke:
|
|
88
|
+
# CREATE
|
|
89
|
+
- "POST /api/v1/users -> 201"
|
|
90
|
+
# READ
|
|
91
|
+
- "GET /api/v1/users -> 200"
|
|
92
|
+
- "GET /api/v1/users/1 -> 200"
|
|
93
|
+
# UPDATE
|
|
94
|
+
- "PATCH /api/v1/users/1 -> 200"
|
|
95
|
+
# DELETE
|
|
96
|
+
- "DELETE /api/v1/users/1 -> 204"
|
|
97
|
+
budgets:
|
|
98
|
+
p95_ms: 1000
|
|
99
|
+
error_rate: 0.01
|
|
100
|
+
|
|
101
|
+
# --------------------------------------------------------
|
|
102
|
+
# UI E2E Tests with Login
|
|
103
|
+
# --------------------------------------------------------
|
|
104
|
+
ui-e2e:
|
|
105
|
+
adapter: playwright-ui
|
|
106
|
+
enabled: true
|
|
107
|
+
auth: default-ui-login
|
|
108
|
+
config:
|
|
109
|
+
baseUrl: "${BASE_URL:-https://example.com}"
|
|
110
|
+
pages:
|
|
111
|
+
- name: Dashboard
|
|
112
|
+
url: /dashboard
|
|
113
|
+
expectedElements:
|
|
114
|
+
- ".dashboard-header"
|
|
115
|
+
- "#user-menu"
|
|
116
|
+
- name: Settings
|
|
117
|
+
url: /settings
|
|
118
|
+
expectedElements:
|
|
119
|
+
- "form.settings-form"
|
|
120
|
+
- "button[type='submit']"
|
|
121
|
+
budgets:
|
|
122
|
+
a11y_score: 90
|
|
123
|
+
|
|
124
|
+
# --------------------------------------------------------
|
|
125
|
+
# Accessibility Tests
|
|
126
|
+
# --------------------------------------------------------
|
|
127
|
+
a11y:
|
|
128
|
+
adapter: playwright-ui
|
|
129
|
+
enabled: true
|
|
130
|
+
config:
|
|
131
|
+
baseUrl: "${BASE_URL:-https://example.com}"
|
|
132
|
+
pages:
|
|
133
|
+
- url: /
|
|
134
|
+
a11yRules:
|
|
135
|
+
- wcag2a
|
|
136
|
+
- wcag2aa
|
|
137
|
+
budgets:
|
|
138
|
+
violations: 5
|
|
139
|
+
|
|
140
|
+
# --------------------------------------------------------
|
|
141
|
+
# Performance Tests (K6)
|
|
142
|
+
# --------------------------------------------------------
|
|
143
|
+
perf:
|
|
144
|
+
adapter: k6-perf
|
|
145
|
+
enabled: true
|
|
146
|
+
config:
|
|
147
|
+
script: |
|
|
148
|
+
import http from 'k6/http';
|
|
149
|
+
import { check } from 'k6';
|
|
150
|
+
|
|
151
|
+
export const options = {
|
|
152
|
+
stages: [
|
|
153
|
+
{ duration: '10s', target: 10 },
|
|
154
|
+
{ duration: '20s', target: 50 },
|
|
155
|
+
{ duration: '10s', target: 0 },
|
|
156
|
+
],
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export default function () {
|
|
160
|
+
const res = http.get('${BASE_URL:-https://example.com}/api/health');
|
|
161
|
+
check(res, {
|
|
162
|
+
'status is 200': (r) => r.status === 200,
|
|
163
|
+
'response time < 500ms': (r) => r.timings.duration < 500,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
budgets:
|
|
167
|
+
p95_ms: 1000
|
|
168
|
+
p99_ms: 2000
|
|
169
|
+
error_rate: 0.05
|
|
170
|
+
|
|
171
|
+
# --------------------------------------------------------
|
|
172
|
+
# SAST Security Tests
|
|
173
|
+
# --------------------------------------------------------
|
|
174
|
+
sast:
|
|
175
|
+
adapter: semgrep-sast
|
|
176
|
+
enabled: true
|
|
177
|
+
config:
|
|
178
|
+
rules:
|
|
179
|
+
- javascript.lang.security.audit.xss
|
|
180
|
+
- javascript.lang.security.audit.sql-injection
|
|
181
|
+
- javascript.lang.security.audit.command-injection
|
|
182
|
+
paths:
|
|
183
|
+
- src/
|
|
184
|
+
- lib/
|
|
185
|
+
budgets:
|
|
186
|
+
high_findings: 0
|
|
187
|
+
medium_findings: 5
|
|
188
|
+
|
|
189
|
+
# ============================================================
|
|
190
|
+
# Hooks - Setup and Teardown
|
|
191
|
+
# ============================================================
|
|
192
|
+
hooks:
|
|
193
|
+
beforeAll:
|
|
194
|
+
# Wait for API to be ready
|
|
195
|
+
- type: wait_on
|
|
196
|
+
wait_for:
|
|
197
|
+
resource: "${BASE_URL:-https://api.example.com}/health"
|
|
198
|
+
timeout: 30000
|
|
199
|
+
|
|
200
|
+
# Start Docker services if needed
|
|
201
|
+
- type: docker
|
|
202
|
+
compose:
|
|
203
|
+
file: docker-compose.yml
|
|
204
|
+
command: up -d
|
|
205
|
+
timeout: 60000
|
|
206
|
+
|
|
207
|
+
# Run custom setup script
|
|
208
|
+
- type: run
|
|
209
|
+
command: npm run setup:test
|
|
210
|
+
timeout: 30000
|
|
211
|
+
|
|
212
|
+
afterAll:
|
|
213
|
+
# Cleanup Docker services
|
|
214
|
+
- type: docker
|
|
215
|
+
compose:
|
|
216
|
+
file: docker-compose.yml
|
|
217
|
+
command: down -v
|
|
218
|
+
timeout: 30000
|
|
219
|
+
|
|
220
|
+
# Clean test artifacts
|
|
221
|
+
- type: run
|
|
222
|
+
command: rm -rf .tmp-test-*
|
|
223
|
+
timeout: 5000
|
|
224
|
+
|
|
225
|
+
# ============================================================
|
|
226
|
+
# Execution Settings
|
|
227
|
+
# ============================================================
|
|
228
|
+
execution:
|
|
229
|
+
default_timeout: 30000 # Default timeout for each gate (30s)
|
|
230
|
+
default_retries: 2 # Retry failed gates twice
|
|
231
|
+
on_failure: continue # Continue on failure (or 'stop')
|
|
232
|
+
parallel: true # Run gates in parallel (when possible)
|
|
233
|
+
max_parallel: 3 # Max parallel gates
|
|
234
|
+
|
|
235
|
+
# ============================================================
|
|
236
|
+
# Global Budgets
|
|
237
|
+
# ============================================================
|
|
238
|
+
budgets:
|
|
239
|
+
perf_p95_ms: 2000 # P95 latency budget
|
|
240
|
+
a11y_min: 85 # Minimum accessibility score
|
|
241
|
+
sast_max_high: 0 # Max high severity findings
|
|
242
|
+
sast_max_medium: 10 # Max medium severity findings
|