qa360 2.1.7 → 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 -43
- package/dist/commands/ai.js +0 -616
- 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,32 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
cd /Users/bassiroudiop/QA360
|
|
3
|
+
|
|
4
|
+
echo "=== COMPARAISON BRANCHES main vs develop ==="
|
|
5
|
+
echo ""
|
|
6
|
+
|
|
7
|
+
# Fetch pour être sûr d'avoir les dernières infos
|
|
8
|
+
git fetch origin --quiet
|
|
9
|
+
|
|
10
|
+
echo "📊 COMMITS SUR develop NON PRÉSENTS SUR main:"
|
|
11
|
+
echo "================================================"
|
|
12
|
+
git log origin/main..origin/develop --oneline | head -50
|
|
13
|
+
|
|
14
|
+
echo ""
|
|
15
|
+
echo "📈 STATISTIQUES:"
|
|
16
|
+
echo "================"
|
|
17
|
+
AHEAD=$(git rev-list --count origin/main..origin/develop)
|
|
18
|
+
BEHIND=$(git rev-list --count origin/develop..origin/main)
|
|
19
|
+
echo "develop est $AHEAD commits EN AVANCE sur main"
|
|
20
|
+
echo "develop est $BEHIND commits EN RETARD sur main"
|
|
21
|
+
|
|
22
|
+
echo ""
|
|
23
|
+
echo "📅 DERNIER COMMIT SUR main:"
|
|
24
|
+
git log origin/main -1 --format="%h - %s (%cr)"
|
|
25
|
+
|
|
26
|
+
echo ""
|
|
27
|
+
echo "📅 DERNIER COMMIT SUR develop:"
|
|
28
|
+
git log origin/develop -1 --format="%h - %s (%cr)"
|
|
29
|
+
|
|
30
|
+
echo ""
|
|
31
|
+
echo "📁 FICHIERS DIFFÉRENTS (résumé):"
|
|
32
|
+
git diff --stat origin/main..origin/develop | tail -5
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5E6oDirXySnYKtpHfgbbSGVBkJFScbfHVGKj1Q2b+aA5sjC7CbON2uJma27146i5Y+OgBRUCyzKSZVLPpBrU2Q==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ObIwuwmzjdriZmtu9eOouWPjoAUVAssykmVSz6Qa1Nk=
|
package/cli/CHANGELOG.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to QA360 Proof CLI will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.1.0] - 2025-10-26
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **AJV 2020-12 Support**: Full JSON Schema Draft 2020-12 validation (RFC-compliant)
|
|
12
|
+
- **CI Matrix**: 9-job validation matrix (3 OS × 3 Node versions)
|
|
13
|
+
- **Comprehensive Tests**: 11 unit tests + 3 smoke tests
|
|
14
|
+
- **Cross-platform Build**: Automated build script with OS detection
|
|
15
|
+
- **Dependency Lock**: Frozen AJV versions (anti-regression)
|
|
16
|
+
- **CI Badges**: Status badges in README
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- **Schema Validation**: Migrated from draft-07 to draft-2020-12
|
|
20
|
+
- **Build System**: Idempotent cross-platform build script
|
|
21
|
+
- **prepublishOnly**: Added doctor --strict validation before publish
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
- **ESM Imports**: Fixed AJV 2020 import for Node.js ESM compatibility
|
|
25
|
+
- **Schema Path**: Corrected import paths in test files
|
|
26
|
+
|
|
27
|
+
### Security
|
|
28
|
+
- **Provenance**: Added npm provenance for supply chain security
|
|
29
|
+
- **Dependency Freeze**: Locked ajv@8.17.1, ajv-formats@2.1.1, ajv-draft-04@1.0.0
|
|
30
|
+
|
|
31
|
+
## [1.1.0-rc] - 2025-10-25
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
- **Initial Release Candidate**: First public release
|
|
35
|
+
- **Commands**: `doctor`, `verify`
|
|
36
|
+
- **Flags**: `--json`, `--strict`, `--verbose`
|
|
37
|
+
- **Documentation**: Complete guides and examples
|
|
38
|
+
|
|
39
|
+
### Features
|
|
40
|
+
- 🔒 **Local-first**: 100% offline, no network dependencies
|
|
41
|
+
- 🔐 **Cryptographic trust**: Ed25519 signatures, SHA-256 hashing
|
|
42
|
+
- 🌍 **Cross-OS**: Windows, macOS, Linux validated
|
|
43
|
+
- ⚡ **Zero friction**: Auto-generates keys
|
|
44
|
+
-
|
|
45
|
+
|
|
46
|
+
## [Unreleased]
|
|
47
|
+
|
|
48
|
+
### Planned
|
|
49
|
+
- RFC 3161 TSA timestamp support (Phase 6)
|
|
50
|
+
- W3C DID / Sigstore identity (Phase 6)
|
|
51
|
+
- Revocation mechanism (Phase 6)
|
|
52
|
+
- Compliance metadata (Phase 6)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Version History
|
|
57
|
+
|
|
58
|
+
- **1.1.0** (2025-10-26): Stable release with AJV 2020-12 + CI lockdown
|
|
59
|
+
- **1.1.0-rc** (2025-10-25): Release candidate
|
|
60
|
+
- **0.9.0-core** (2025-10-24): Internal development version
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Quick Validation
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Install
|
|
68
|
+
npm i -g @qa360/cli@1.1.0
|
|
69
|
+
|
|
70
|
+
# Verify version
|
|
71
|
+
qa360 --version
|
|
72
|
+
|
|
73
|
+
# System check
|
|
74
|
+
qa360 doctor --strict
|
|
75
|
+
|
|
76
|
+
# Verify proof
|
|
77
|
+
qa360 verify examples/proofs/httpbin-proof.json --json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Expected**: All commands succeed, proof validates correctly.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
For detailed changes, see [GitHub Releases](https://github.com/qa360/qa360/releases).
|
package/cli/LICENSE
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Business Source License 1.1
|
|
2
|
+
|
|
3
|
+
Licensor: XyqoTech
|
|
4
|
+
Licensed Work: QA360 Cloud Preview
|
|
5
|
+
Change Date: 2027-10-01
|
|
6
|
+
Change License: MIT
|
|
7
|
+
|
|
8
|
+
Terms
|
|
9
|
+
|
|
10
|
+
The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-production use of the Licensed Work. The Licensor may make an Additional Use Grant, above, permitting limited production use.
|
|
11
|
+
|
|
12
|
+
Effective on the Change Date, or the fourth anniversary of the first publicly available distribution of a specific version of the Licensed Work under this License, whichever comes first, the Licensor hereby grants you rights under the terms of the Change License, and the rights granted in the paragraph above terminate.
|
|
13
|
+
|
|
14
|
+
If your use of the Licensed Work does not comply with the requirements currently in effect as described in this License, you must purchase a commercial license from the Licensor, its affiliated entities, or authorized resellers, or you must refrain from using the Licensed Work.
|
|
15
|
+
|
|
16
|
+
All copies of the original and modified Licensed Work, and derivative works of the Licensed Work, are subject to this License. This License applies separately for each version of the Licensed Work and the Change Date may vary for each version of the Licensed Work released by Licensor.
|
|
17
|
+
|
|
18
|
+
You must conspicuously display this License on each original or modified copy of the Licensed Work. If you receive the Licensed Work in original or modified form from a third party, the terms and conditions set forth in this License apply to your use of that work.
|
|
19
|
+
|
|
20
|
+
Any use of the Licensed Work in violation of this License will automatically terminate your rights under this License for the current and all other versions of the Licensed Work.
|
|
21
|
+
|
|
22
|
+
This License does not grant you any right in any trademark or logo of Licensor or its affiliates (provided that you may use a trademark or logo of Licensor as expressly required by this License).
|
|
23
|
+
|
|
24
|
+
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
|
package/cli/README.md
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# qa360
|
|
2
|
+
|
|
3
|
+
**QA360 Proof CLI** - Quality as Cryptographic Proof
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/qa360)
|
|
6
|
+
[](https://github.com/xyqotech/qa360/blob/main/LICENSE)
|
|
7
|
+
[](https://github.com/xyqotech/qa360)
|
|
8
|
+
[](https://github.com/xyqotech/qa360)
|
|
9
|
+
|
|
10
|
+
> **Official package** published by [xyqotech](https://github.com/xyqotech) with npm provenance signatures
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
### Option 1: Global installation (recommended for regular use)
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# macOS: use sudo if you get EACCES permission errors
|
|
18
|
+
sudo npm install -g qa360
|
|
19
|
+
|
|
20
|
+
# Or configure npm prefix (one-time setup)
|
|
21
|
+
mkdir -p ~/.npm-global
|
|
22
|
+
npm config set prefix '~/.npm-global'
|
|
23
|
+
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
|
|
24
|
+
source ~/.zshrc
|
|
25
|
+
npm install -g qa360
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Option 2: Direct usage with npx (no installation needed)
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Run directly without installing
|
|
32
|
+
npx qa360@latest run test.yml
|
|
33
|
+
npx qa360@latest verify proof.json
|
|
34
|
+
npx qa360@latest doctor
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Note**: On first run, Playwright browsers will be automatically downloaded (~100MB). This happens only once.
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
### 1. Generate a test pack
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Option 1: Interactive mode (recommended for first-time users)
|
|
45
|
+
qa360 init
|
|
46
|
+
|
|
47
|
+
# Option 2: Use a template directly
|
|
48
|
+
qa360 init --template api-basic --yes
|
|
49
|
+
|
|
50
|
+
# Option 3: Copy an example
|
|
51
|
+
qa360 examples copy api-basic
|
|
52
|
+
qa360 examples list # See all available examples
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. Run tests
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
qa360 run
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 3. Verify proof
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
qa360 verify .qa360/runs/
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Usage
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Generate test pack (interactive)
|
|
71
|
+
qa360 init
|
|
72
|
+
|
|
73
|
+
# Generate with template
|
|
74
|
+
qa360 init --template api-basic
|
|
75
|
+
qa360 init --template fullstack
|
|
76
|
+
qa360 init --template security
|
|
77
|
+
qa360 init --template complete
|
|
78
|
+
|
|
79
|
+
# Examples commands
|
|
80
|
+
qa360 examples list # List all examples
|
|
81
|
+
qa360 examples copy api-basic # Copy example to qa360.yml
|
|
82
|
+
qa360 examples show fullstack # Preview example content
|
|
83
|
+
|
|
84
|
+
# System health check
|
|
85
|
+
qa360 doctor
|
|
86
|
+
|
|
87
|
+
# Run test pack
|
|
88
|
+
qa360 run # Auto-detects qa360.yml
|
|
89
|
+
qa360 run custom-pack.yml # Use specific file
|
|
90
|
+
|
|
91
|
+
# Verify proof bundle
|
|
92
|
+
qa360 verify .qa360/runs/
|
|
93
|
+
qa360 verify proof.json
|
|
94
|
+
|
|
95
|
+
# View run history
|
|
96
|
+
qa360 history list
|
|
97
|
+
qa360 history show <run-id>
|
|
98
|
+
|
|
99
|
+
# Export proof bundle
|
|
100
|
+
qa360 history export <run-id> --bundle proof-bundle.zip
|
|
101
|
+
|
|
102
|
+
# Clean up old runs (garbage collection)
|
|
103
|
+
qa360 history gc # Default: keep last 10 runs
|
|
104
|
+
qa360 history gc --keep-last 20 # Keep last 20 runs
|
|
105
|
+
qa360 history gc --dry-run # Preview what would be deleted
|
|
106
|
+
|
|
107
|
+
# Pin/unpin runs (pinned runs are never deleted by gc)
|
|
108
|
+
qa360 history pin <run-id>
|
|
109
|
+
qa360 history unpin <run-id>
|
|
110
|
+
|
|
111
|
+
# With JSON output (CI-friendly)
|
|
112
|
+
qa360 doctor --json
|
|
113
|
+
qa360 verify proof.json --json
|
|
114
|
+
qa360 history list --json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Available Templates
|
|
118
|
+
|
|
119
|
+
| Template | Description | Gates |
|
|
120
|
+
|----------|-------------|-------|
|
|
121
|
+
| **api-basic** | Simple API smoke tests | api_smoke |
|
|
122
|
+
| **ui-basic** | Basic UI/E2E tests | ui |
|
|
123
|
+
| **fullstack** | API + UI + Performance | api_smoke, ui, perf |
|
|
124
|
+
| **security** | Security testing suite | sast, dast, secrets, deps |
|
|
125
|
+
| **accessibility** | Accessibility testing | ui, a11y |
|
|
126
|
+
| **complete** | All quality gates | All (8 gates) |
|
|
127
|
+
|
|
128
|
+
## Example Files
|
|
129
|
+
|
|
130
|
+
Pre-made examples are included in the package:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# List examples
|
|
134
|
+
ls examples/
|
|
135
|
+
|
|
136
|
+
# Copy an example
|
|
137
|
+
cp examples/api-basic.yml qa360.yml
|
|
138
|
+
|
|
139
|
+
# Run example directly
|
|
140
|
+
qa360 run examples/api-basic.yml
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Commands
|
|
144
|
+
|
|
145
|
+
| Command | Description |
|
|
146
|
+
|---------|-------------|
|
|
147
|
+
| `init` | Generate test pack interactively |
|
|
148
|
+
| `examples` | Manage example templates (list, copy, show) |
|
|
149
|
+
| `run` | Execute test pack |
|
|
150
|
+
| `verify` | Verify cryptographic proof bundles |
|
|
151
|
+
| `doctor` | Check system health, auto-fix issues |
|
|
152
|
+
| `history` | View run history and results |
|
|
153
|
+
| `report` | Generate reports |
|
|
154
|
+
| `secrets` | Manage encrypted secrets |
|
|
155
|
+
| `pack` | Pack validation and linting |
|
|
156
|
+
|
|
157
|
+
### History Commands
|
|
158
|
+
|
|
159
|
+
The `history` command provides comprehensive management of test run history stored in the Evidence Vault:
|
|
160
|
+
|
|
161
|
+
| Subcommand | Description | Example |
|
|
162
|
+
|------------|-------------|---------|
|
|
163
|
+
| `list` | List recent test runs | `qa360 history list --limit 20` |
|
|
164
|
+
| `show <run-id>` | Show detailed run information | `qa360 history show abc123` |
|
|
165
|
+
| `diff <id1> <id2>` | Compare two test runs | `qa360 history diff abc123 def456` |
|
|
166
|
+
| `trend` | Show trust score trends | `qa360 history trend --window 30` |
|
|
167
|
+
| `export <run-id>` | Export run as ZIP bundle | `qa360 history export abc123 --bundle proof.zip` |
|
|
168
|
+
| `gc` | Garbage collect old runs | `qa360 history gc --keep-last 10` |
|
|
169
|
+
| `pin <run-id>` | Pin run (protect from gc) | `qa360 history pin abc123` |
|
|
170
|
+
| `unpin <run-id>` | Unpin run | `qa360 history unpin abc123` |
|
|
171
|
+
|
|
172
|
+
#### Export Bundle Contents
|
|
173
|
+
|
|
174
|
+
When exporting a run with `qa360 history export <run-id> --bundle proof.zip`, the ZIP contains:
|
|
175
|
+
|
|
176
|
+
- `proof.json` - Cryptographically signed proof document
|
|
177
|
+
- `report.pdf` - Human-readable PDF report (if generated)
|
|
178
|
+
- `run.json` - Complete run details (gates, findings, artifacts)
|
|
179
|
+
- `artifacts/` - All test artifacts (screenshots, logs, etc.)
|
|
180
|
+
- `VERIFICATION.json` - Verification instructions and metadata
|
|
181
|
+
|
|
182
|
+
#### Garbage Collection
|
|
183
|
+
|
|
184
|
+
The `gc` command removes old test runs and orphaned artifacts to free disk space:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Preview what would be deleted (dry-run)
|
|
188
|
+
qa360 history gc --dry-run
|
|
189
|
+
|
|
190
|
+
# Keep last 20 runs, delete older ones
|
|
191
|
+
qa360 history gc --keep-last 20
|
|
192
|
+
|
|
193
|
+
# Default behavior (keeps last 10 unpinned runs)
|
|
194
|
+
qa360 history gc
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Important**: Pinned runs are NEVER deleted by garbage collection. Use `qa360 history pin <run-id>` to protect important runs.
|
|
198
|
+
|
|
199
|
+
## Exit Codes
|
|
200
|
+
|
|
201
|
+
| Code | Meaning |
|
|
202
|
+
|------|---------|
|
|
203
|
+
| 0 | Success |
|
|
204
|
+
| 1 | Verification failed |
|
|
205
|
+
| 2 | File not found |
|
|
206
|
+
| 3 | Invalid schema |
|
|
207
|
+
| 4 | Missing key |
|
|
208
|
+
| 5 | Internal error |
|
|
209
|
+
|
|
210
|
+
## Requirements
|
|
211
|
+
|
|
212
|
+
- Node.js >= 18.0.0
|
|
213
|
+
- npm or pnpm
|
|
214
|
+
|
|
215
|
+
## Documentation
|
|
216
|
+
|
|
217
|
+
- [Quick Start](https://github.com/xyqotech/qa360/blob/main/docs/quickstart-5min.md)
|
|
218
|
+
- [Full Documentation](https://github.com/xyqotech/qa360/blob/main/docs/README.md)
|
|
219
|
+
|
|
220
|
+
## License
|
|
221
|
+
|
|
222
|
+
MIT
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# QA360 Examples
|
|
2
|
+
|
|
3
|
+
This directory contains example pack files for different testing scenarios.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
Copy an example to your project:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Copy API basic example
|
|
11
|
+
cp examples/api-basic.yml qa360.yml
|
|
12
|
+
|
|
13
|
+
# Edit and customize
|
|
14
|
+
vim qa360.yml
|
|
15
|
+
|
|
16
|
+
# Run tests
|
|
17
|
+
qa360 run
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Available Examples
|
|
21
|
+
|
|
22
|
+
### 1. **api-basic.yml** - API Smoke Tests
|
|
23
|
+
Simple REST/GraphQL health checks.
|
|
24
|
+
|
|
25
|
+
**Gates**: `api_smoke`
|
|
26
|
+
|
|
27
|
+
**Use case**: Verify API endpoints are responding correctly
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
qa360 run examples/api-basic.yml
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
### 2. **ui-basic.yml** - UI/E2E Tests
|
|
36
|
+
Basic browser automation tests.
|
|
37
|
+
|
|
38
|
+
**Gates**: `ui`
|
|
39
|
+
|
|
40
|
+
**Use case**: Test web pages load correctly
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
qa360 run examples/ui-basic.yml
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
### 2b. **ui-advanced.yml** - UI Tests with Playwright++
|
|
49
|
+
Advanced UI testing with artifacts, video, screenshots, and HTML reports.
|
|
50
|
+
|
|
51
|
+
**Gates**: `ui`
|
|
52
|
+
|
|
53
|
+
**Features**:
|
|
54
|
+
- Automatic screenshots on failure
|
|
55
|
+
- Video recording
|
|
56
|
+
- Trace capture for debugging
|
|
57
|
+
- Interactive HTML report generation
|
|
58
|
+
- Configurable bail on failures
|
|
59
|
+
|
|
60
|
+
**Use case**: Full-featured UI testing with rich artifacts
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
qa360 run examples/ui-advanced.yml
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### 2c. **crawler.yml** - Web Crawler
|
|
69
|
+
Auto-generate tests by crawling a web application.
|
|
70
|
+
|
|
71
|
+
**Gates**: `ui`
|
|
72
|
+
|
|
73
|
+
**Features**:
|
|
74
|
+
- Automatic discovery of pages and forms
|
|
75
|
+
- Generate test packs from existing sites
|
|
76
|
+
- Smart selector generation
|
|
77
|
+
|
|
78
|
+
**Use case**: Quick start with existing applications
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
qa360 run examples/crawler.yml
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### 3. **fullstack.yml** - Full Stack Tests
|
|
87
|
+
API + UI + Performance testing.
|
|
88
|
+
|
|
89
|
+
**Gates**: `api_smoke`, `ui`, `perf`
|
|
90
|
+
|
|
91
|
+
**Use case**: Complete application testing with Docker Compose integration
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
qa360 run examples/fullstack.yml
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### 4. **security.yml** - Security Suite
|
|
100
|
+
Comprehensive security scanning.
|
|
101
|
+
|
|
102
|
+
**Gates**: `sast`, `dast`, `secrets`, `deps`
|
|
103
|
+
|
|
104
|
+
**Use case**: Security audit with vulnerability scanning
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
qa360 run examples/security.yml
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### 5. **accessibility.yml** - Accessibility Tests
|
|
113
|
+
WCAG compliance testing.
|
|
114
|
+
|
|
115
|
+
**Gates**: `ui`, `a11y`
|
|
116
|
+
|
|
117
|
+
**Use case**: Ensure website meets accessibility standards
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
qa360 run examples/accessibility.yml
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### 6. **complete.yml** - Complete Test Suite
|
|
126
|
+
All quality gates enabled.
|
|
127
|
+
|
|
128
|
+
**Gates**: All (8 gates)
|
|
129
|
+
|
|
130
|
+
**Use case**: Comprehensive quality assurance for production-ready applications
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
qa360 run examples/complete.yml
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Interactive Generator
|
|
139
|
+
|
|
140
|
+
Generate a custom pack with:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
qa360 init
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
This will walk you through creating a pack file tailored to your needs.
|
|
147
|
+
|
|
148
|
+
## Customization
|
|
149
|
+
|
|
150
|
+
All examples use placeholder URLs. Replace with your actual endpoints:
|
|
151
|
+
|
|
152
|
+
- `https://api.example.com` → Your API URL
|
|
153
|
+
- `https://example.com` → Your web application URL
|
|
154
|
+
- `http://localhost:3000` → Your local dev server
|
|
155
|
+
|
|
156
|
+
## Learn More
|
|
157
|
+
|
|
158
|
+
- [Pack Schema Documentation](https://github.com/xyqotech/qa360/blob/main/docs/pack-schema.md)
|
|
159
|
+
- [Quality Gates Reference](https://github.com/xyqotech/qa360/blob/main/docs/gates.md)
|
|
160
|
+
- [Full Documentation](https://github.com/xyqotech/qa360/blob/main/docs/README.md)
|
package/cli/package.json
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qa360",
|
|
3
|
+
"version": "2.2.0",
|
|
4
|
+
"description": "QA360 Proof CLI - Quality as Cryptographic Proof",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"qa360": "bin/qa360.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"bin",
|
|
14
|
+
"README.md",
|
|
15
|
+
"LICENSE",
|
|
16
|
+
"examples"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc --project tsconfig.bundle.json",
|
|
20
|
+
"build:pkg": "tsc",
|
|
21
|
+
"build:bundle": "bash scripts/bundle-for-npm.sh",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:coverage": "vitest run --coverage",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"dev": "tsx watch src/index.ts",
|
|
26
|
+
"clean": "rimraf dist src/core",
|
|
27
|
+
"prepack": "node scripts/validate-package.js",
|
|
28
|
+
"prepublishOnly": "npm run build:bundle && sed -i.bak 's/\"qa360-core\": \"workspace:\\*\",//g' package.json && rm -f package.json.bak",
|
|
29
|
+
"postpublish": "git checkout package.json 2>/dev/null || true",
|
|
30
|
+
"publish:dry": "npm run build:bundle && sed -i.bak 's/\"qa360-core\": \"workspace:\\*\",//g' package.json && npm publish --dry-run; git checkout package.json",
|
|
31
|
+
"publish:real": "npm run build:bundle && npm publish --access public --provenance"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@playwright/test": "^1.49.0",
|
|
35
|
+
"adm-zip": "^0.5.16",
|
|
36
|
+
"ajv": "^8.17.1",
|
|
37
|
+
"ajv-draft-04": "^1.0.0",
|
|
38
|
+
"ajv-formats": "^2.1.1",
|
|
39
|
+
"chalk": "^4.1.2",
|
|
40
|
+
"cli-table3": "^0.6.5",
|
|
41
|
+
"commander": "^11.0.0",
|
|
42
|
+
"glob": "^10.4.5",
|
|
43
|
+
"inquirer": "^8.2.7",
|
|
44
|
+
"js-yaml": "^4.1.0",
|
|
45
|
+
"ollama": "^0.5.1",
|
|
46
|
+
"ora": "^5.4.1",
|
|
47
|
+
"playwright": "^1.57.0",
|
|
48
|
+
"qa360-core": "workspace:*",
|
|
49
|
+
"sqlite3": "^5.1.6",
|
|
50
|
+
"tweetnacl": "^1.0.3"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/adm-zip": "^0.5.7",
|
|
54
|
+
"@types/inquirer": "^9.0.9",
|
|
55
|
+
"@vitest/coverage-v8": "1.6.0",
|
|
56
|
+
"tsx": "^4.0.0",
|
|
57
|
+
"vitest": "1.6.0"
|
|
58
|
+
},
|
|
59
|
+
"keywords": [
|
|
60
|
+
"qa360",
|
|
61
|
+
"cli",
|
|
62
|
+
"testing",
|
|
63
|
+
"proof"
|
|
64
|
+
],
|
|
65
|
+
"author": "QA360 Core Team",
|
|
66
|
+
"license": "MIT",
|
|
67
|
+
"repository": {
|
|
68
|
+
"type": "git",
|
|
69
|
+
"url": "https://github.com/xyqotech/qa360.git",
|
|
70
|
+
"directory": "cli"
|
|
71
|
+
},
|
|
72
|
+
"homepage": "https://github.com/xyqotech/qa360",
|
|
73
|
+
"bugs": {
|
|
74
|
+
"url": "https://github.com/xyqotech/qa360/issues"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
echo "🔧 Bundling QA360 for npm publication..."
|
|
5
|
+
|
|
6
|
+
# Clean previous builds
|
|
7
|
+
echo "🧹 Cleaning previous builds..."
|
|
8
|
+
rm -rf dist/
|
|
9
|
+
rm -rf src/core/
|
|
10
|
+
|
|
11
|
+
# Copy core source to cli
|
|
12
|
+
echo "📦 Copying core source code..."
|
|
13
|
+
mkdir -p src/core
|
|
14
|
+
cp -r ../core/src/* src/core/
|
|
15
|
+
cp -r ../core/schemas src/core/
|
|
16
|
+
|
|
17
|
+
# Update imports in CLI to use local core
|
|
18
|
+
echo "🔄 Updating imports..."
|
|
19
|
+
find src/commands -type f -name "*.ts" -exec sed -i.bak "s|from 'qa360-core'|from '../core/index.js'|g" {} \;
|
|
20
|
+
find src/commands -type f -name "*.ts" -exec sed -i.bak "s|import('qa360-core')|import('../core/index.js')|g" {} \;
|
|
21
|
+
find src/commands -type f -name "*.ts.bak" -exec rm {} \;
|
|
22
|
+
# Also update utils/config.ts
|
|
23
|
+
find src/utils -type f -name "*.ts" -exec sed -i.bak "s|from 'qa360-core'|from '../core/index.js'|g" {} \;
|
|
24
|
+
find src/utils -type f -name "*.ts.bak" -exec rm {} \;
|
|
25
|
+
# Also update src/index.ts if it has qa360-core imports
|
|
26
|
+
sed -i.bak "s|from 'qa360-core'|from './core/index.js'|g" src/index.ts 2>/dev/null || true
|
|
27
|
+
rm -f src/index.ts.bak
|
|
28
|
+
|
|
29
|
+
# Build TypeScript with bundle config
|
|
30
|
+
echo "🔨 Building TypeScript..."
|
|
31
|
+
npx tsc --project tsconfig.bundle.json
|
|
32
|
+
|
|
33
|
+
# Copy schemas to dist (TypeScript doesn't copy JSON files)
|
|
34
|
+
echo "📄 Copying schemas to dist..."
|
|
35
|
+
mkdir -p dist/core/schemas
|
|
36
|
+
mkdir -p dist/schemas
|
|
37
|
+
cp -r ../core/schemas/* dist/core/schemas/
|
|
38
|
+
cp -r ../core/schemas/* dist/schemas/
|
|
39
|
+
|
|
40
|
+
# Clean up temporary source files (but keep dist/)
|
|
41
|
+
echo "🧹 Cleaning temporary files..."
|
|
42
|
+
rm -rf src/core/
|
|
43
|
+
|
|
44
|
+
# Restore original files (for development) - only restore files that weren't fixed for encoding
|
|
45
|
+
echo "Restoring original files..."
|
|
46
|
+
git checkout src/commands/doctor.ts src/commands/pack.ts src/commands/report.ts src/commands/run.ts src/commands/secrets.ts src/commands/serve.ts src/utils/config.ts 2>/dev/null || true
|
|
47
|
+
# Do NOT restore files that were fixed for encoding issues or have other fixes:
|
|
48
|
+
# - history.ts (pin fix), ask.ts, ai.ts, explain.ts, generate.ts, coverage.ts, flakiness.ts, init.ts, monitor.ts, ollama.ts, regression.ts, repair.ts, retry.ts, slo.ts, verify.ts
|
|
49
|
+
# - index.ts (pack commands re-enabled), tsconfig.json (pack.ts removed from exclude)
|
|
50
|
+
|
|
51
|
+
echo "✅ Bundle complete! dist/ contains bundled code ready for npm publish"
|