qa360 2.3.0 → 2.3.2
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/README.md +155 -262
- package/{cli/dist → dist}/commands/ai.js +1 -1
- package/{cli/dist → dist}/commands/ask.js +49 -22
- package/{cli/dist → dist}/commands/coverage.js +17 -4
- package/{cli/dist → dist}/commands/crawl.js +2 -2
- package/{cli/dist → dist}/commands/doctor.js +2 -2
- package/{cli/dist → dist}/commands/explain.js +2 -2
- package/{cli/dist → dist}/commands/flakiness.js +1 -1
- package/{cli/dist → dist}/commands/generate.js +12 -5
- package/{cli/dist → dist}/commands/history.js +1 -1
- package/{cli/dist → dist}/commands/monitor.js +3 -3
- package/{cli/dist → dist}/commands/ollama.js +14 -6
- package/{cli/dist → dist}/commands/pack.js +2 -2
- package/{cli/dist → dist}/commands/regression.js +1 -1
- package/{cli/dist → dist}/commands/repair.js +1 -1
- package/{cli/dist → dist}/commands/retry.js +1 -1
- package/{cli/dist → dist}/commands/run.d.ts +5 -1
- package/{cli/dist → dist}/commands/run.js +87 -1
- package/{cli/dist → dist}/commands/secrets.js +1 -1
- package/{cli/dist → dist}/commands/serve.js +1 -1
- package/{cli/dist → dist}/commands/slo.js +1 -1
- package/{cli/dist → dist}/commands/verify.js +1 -1
- package/{cli/dist → dist}/core/adapters/playwright-native-api.d.ts +2 -0
- package/{cli/dist → dist}/core/adapters/playwright-native-api.js +20 -1
- package/{cli/dist → dist}/core/adapters/playwright-ui.d.ts +21 -0
- package/dist/core/adapters/playwright-ui.js +2050 -0
- package/{cli/dist → dist}/core/ai/ollama-provider.d.ts +4 -0
- package/{cli/dist → dist}/core/ai/ollama-provider.js +41 -8
- package/{cli/dist → dist}/core/artifacts/ui-artifacts.js +24 -4
- package/dist/core/auth/backup-codes-provider.d.ts +91 -0
- package/dist/core/auth/backup-codes-provider.js +215 -0
- package/{cli/dist → dist}/core/auth/basic-auth-provider.d.ts +6 -0
- package/{cli/dist → dist}/core/auth/basic-auth-provider.js +24 -6
- package/dist/core/auth/digest-auth-provider.d.ts +116 -0
- package/dist/core/auth/digest-auth-provider.js +244 -0
- package/dist/core/auth/hcaptcha-handler.d.ts +103 -0
- package/dist/core/auth/hcaptcha-handler.js +288 -0
- package/{cli/dist → dist}/core/auth/index.d.ts +81 -4
- package/{cli/dist → dist}/core/auth/index.js +15 -1
- package/dist/core/auth/oauth-handler.d.ts +408 -0
- package/dist/core/auth/oauth-handler.js +636 -0
- package/{cli/dist → dist}/core/auth/oauth2-provider.d.ts +9 -0
- package/dist/core/auth/oauth2-provider.js +227 -0
- package/dist/core/auth/otp-provider.d.ts +93 -0
- package/dist/core/auth/otp-provider.js +288 -0
- package/dist/core/auth/recaptcha-handler.d.ts +119 -0
- package/dist/core/auth/recaptcha-handler.js +301 -0
- package/dist/core/auth/remember-me-handler.d.ts +142 -0
- package/dist/core/auth/remember-me-handler.js +255 -0
- package/dist/core/auth/saml-handler.d.ts +173 -0
- package/dist/core/auth/saml-handler.js +364 -0
- package/dist/core/auth/webauthn-handler.d.ts +182 -0
- package/dist/core/auth/webauthn-handler.js +310 -0
- package/dist/core/crawler/advanced-interactions.d.ts +342 -0
- package/dist/core/crawler/advanced-interactions.js +1069 -0
- package/dist/core/crawler/blob-url-download-handler.d.ts +145 -0
- package/dist/core/crawler/blob-url-download-handler.js +392 -0
- package/dist/core/crawler/consent-handler.d.ts +49 -0
- package/dist/core/crawler/consent-handler.js +258 -0
- package/dist/core/crawler/cookie-manager.d.ts +166 -0
- package/dist/core/crawler/cookie-manager.js +353 -0
- package/dist/core/crawler/coop-coep-handler.d.ts +136 -0
- package/dist/core/crawler/coop-coep-handler.js +338 -0
- package/dist/core/crawler/csp-handler.d.ts +151 -0
- package/dist/core/crawler/csp-handler.js +415 -0
- package/dist/core/crawler/download-handler.d.ts +155 -0
- package/dist/core/crawler/download-handler.js +370 -0
- package/dist/core/crawler/email-testing-handler.d.ts +214 -0
- package/dist/core/crawler/email-testing-handler.js +398 -0
- package/dist/core/crawler/error-tracking-handler.d.ts +177 -0
- package/dist/core/crawler/error-tracking-handler.js +378 -0
- package/dist/core/crawler/form-handler.d.ts +100 -0
- package/dist/core/crawler/form-handler.js +465 -0
- package/dist/core/crawler/framework-wait-handler.d.ts +96 -0
- package/dist/core/crawler/framework-wait-handler.js +464 -0
- package/dist/core/crawler/geolocation-handler.d.ts +112 -0
- package/dist/core/crawler/geolocation-handler.js +276 -0
- package/dist/core/crawler/index.d.ts +78 -0
- package/{cli/dist → dist}/core/crawler/index.js +74 -1
- package/dist/core/crawler/intelligent-selector-generator.d.ts +164 -0
- package/dist/core/crawler/intelligent-selector-generator.js +612 -0
- package/{cli/dist → dist}/core/crawler/journey-generator.js +44 -1
- package/{cli/dist → dist}/core/crawler/page-analyzer.d.ts +16 -1
- package/{cli/dist → dist}/core/crawler/page-analyzer.js +469 -17
- package/dist/core/crawler/permissions-handler.d.ts +112 -0
- package/dist/core/crawler/permissions-handler.js +236 -0
- package/dist/core/crawler/permissions-policy-handler.d.ts +113 -0
- package/dist/core/crawler/permissions-policy-handler.js +402 -0
- package/dist/core/crawler/presets.d.ts +100 -0
- package/dist/core/crawler/presets.js +887 -0
- package/dist/core/crawler/repl-debug-handler.d.ts +105 -0
- package/dist/core/crawler/repl-debug-handler.js +552 -0
- package/dist/core/crawler/reporting-api-handler.d.ts +212 -0
- package/dist/core/crawler/reporting-api-handler.js +344 -0
- package/{cli/dist → dist}/core/crawler/selector-generator.d.ts +9 -0
- package/{cli/dist → dist}/core/crawler/selector-generator.js +99 -23
- package/dist/core/crawler/site-profiler.d.ts +89 -0
- package/dist/core/crawler/site-profiler.js +290 -0
- package/dist/core/crawler/sourcemaps-handler.d.ts +144 -0
- package/dist/core/crawler/sourcemaps-handler.js +420 -0
- package/dist/core/crawler/stacked-modals-handler.d.ts +118 -0
- package/dist/core/crawler/stacked-modals-handler.js +429 -0
- package/dist/core/crawler/trusted-types-handler.d.ts +149 -0
- package/dist/core/crawler/trusted-types-handler.js +413 -0
- package/{cli/dist → dist}/core/crawler/types.d.ts +68 -2
- package/dist/core/crawler/wait-strategies.d.ts +108 -0
- package/dist/core/crawler/wait-strategies.js +399 -0
- package/dist/core/fixtures/factories.d.ts +180 -0
- package/dist/core/fixtures/factories.js +279 -0
- package/dist/core/fixtures/index.d.ts +6 -0
- package/dist/core/fixtures/index.js +6 -0
- package/{cli/dist → dist}/core/generation/crawler-pack-generator.d.ts +13 -3
- package/dist/core/generation/crawler-pack-generator.js +232 -0
- package/{cli/dist → dist}/core/generation/index.d.ts +2 -0
- package/{cli/dist → dist}/core/generation/index.js +2 -0
- package/{cli/dist → dist}/core/index.d.ts +2 -0
- package/{cli/dist → dist}/core/index.js +4 -0
- package/dist/core/network/index.d.ts +7 -0
- package/dist/core/network/index.js +7 -0
- package/dist/core/network/network-manager.d.ts +237 -0
- package/dist/core/network/network-manager.js +343 -0
- package/dist/core/network/network-simulator.d.ts +158 -0
- package/dist/core/network/network-simulator.js +261 -0
- package/{cli/dist → dist}/core/pack/validator.js +2 -2
- package/{cli/dist → dist}/core/pack-v2/migrator.d.ts +5 -0
- package/{cli/dist → dist}/core/pack-v2/migrator.js +81 -6
- package/{cli/dist → dist}/core/pack-v2/validator.js +4 -3
- package/{cli/dist → dist}/core/pom/base-page.js +1 -1
- package/{cli/dist → dist}/core/pom/loader.js +1 -1
- package/dist/core/reporting/index.d.ts +9 -0
- package/dist/core/reporting/index.js +10 -0
- package/dist/core/reporting/junit-reporter.d.ts +114 -0
- package/dist/core/reporting/junit-reporter.js +306 -0
- package/{cli/dist → dist}/core/runner/e2e-helpers.d.ts +1 -1
- package/{cli/dist → dist}/core/runner/e2e-helpers.js +2 -2
- package/{cli/dist → dist}/core/runner/phase3-runner.d.ts +3 -0
- package/{cli/dist → dist}/core/runner/phase3-runner.js +45 -14
- package/dist/core/sharding/test-sharding.d.ts +137 -0
- package/dist/core/sharding/test-sharding.js +233 -0
- package/dist/core/storage/cookie-manager.d.ts +160 -0
- package/dist/core/storage/cookie-manager.js +268 -0
- package/dist/core/storage/index.d.ts +7 -0
- package/dist/core/storage/index.js +7 -0
- package/dist/core/storage/storage-helpers.d.ts +138 -0
- package/dist/core/storage/storage-helpers.js +315 -0
- package/dist/core/test-helpers/index.d.ts +6 -0
- package/dist/core/test-helpers/index.js +6 -0
- package/dist/core/test-helpers/state-reset.d.ts +119 -0
- package/dist/core/test-helpers/state-reset.js +234 -0
- package/{cli/dist → dist}/core/types/pack-v1.d.ts +15 -2
- package/{cli/dist → dist}/core/types/pack-v2.d.ts +1 -1
- package/dist/core/upload/chunked-uploader.d.ts +150 -0
- package/dist/core/upload/chunked-uploader.js +289 -0
- package/dist/core/upload/index.d.ts +11 -0
- package/dist/core/upload/index.js +8 -0
- package/dist/core/upload/mime-validator.d.ts +119 -0
- package/dist/core/upload/mime-validator.js +373 -0
- package/dist/core/upload/presigned-uploader.d.ts +118 -0
- package/dist/core/upload/presigned-uploader.js +274 -0
- package/dist/core/utils/device-emulation.d.ts +194 -0
- package/dist/core/utils/device-emulation.js +380 -0
- package/dist/core/utils/index.d.ts +8 -0
- package/dist/core/utils/index.js +8 -0
- package/dist/core/utils/retry.d.ts +145 -0
- package/dist/core/utils/retry.js +242 -0
- package/dist/core/utils/smart-wait.d.ts +133 -0
- package/dist/core/utils/smart-wait.js +417 -0
- package/dist/core/visual/index.d.ts +7 -0
- package/dist/core/visual/index.js +7 -0
- package/dist/core/visual/pixel-diff.d.ts +87 -0
- package/dist/core/visual/pixel-diff.js +213 -0
- package/dist/core/visual/screenshot-helper.d.ts +130 -0
- package/dist/core/visual/screenshot-helper.js +223 -0
- package/{cli/dist → dist}/index.js +2 -3
- package/{cli/dist → dist}/utils/config.d.ts +1 -1
- package/{cli/dist → dist}/utils/config.js +36 -3
- package/examples/README.md +160 -0
- package/examples/accessibility.yml +48 -0
- package/examples/api-basic.yml +27 -0
- package/examples/complete.yml +146 -0
- package/examples/crawler.yml +38 -0
- package/examples/fullstack.yml +78 -0
- package/examples/security.yml +58 -0
- package/examples/ui-advanced.yml +49 -0
- package/examples/ui-basic.yml +24 -0
- package/package.json +33 -67
- package/CHANGELOG.md +0 -330
- package/CONTRIBUTING.md +0 -273
- package/QUICK_START.md +0 -191
- package/cli/CHANGELOG.md +0 -84
- package/cli/LICENSE +0 -24
- package/cli/README.md +0 -222
- package/cli/dist/core/adapters/playwright-ui.js +0 -864
- package/cli/dist/core/auth/oauth2-provider.js +0 -114
- package/cli/dist/core/coverage/analyzer.d.ts +0 -101
- package/cli/dist/core/coverage/analyzer.js +0 -415
- package/cli/dist/core/coverage/collector.d.ts +0 -74
- package/cli/dist/core/coverage/collector.js +0 -459
- package/cli/dist/core/coverage/config.d.ts +0 -37
- package/cli/dist/core/coverage/config.js +0 -156
- package/cli/dist/core/coverage/index.d.ts +0 -11
- package/cli/dist/core/coverage/index.js +0 -15
- package/cli/dist/core/coverage/types.d.ts +0 -267
- package/cli/dist/core/coverage/types.js +0 -6
- package/cli/dist/core/coverage/vault.d.ts +0 -95
- package/cli/dist/core/coverage/vault.js +0 -405
- package/cli/dist/core/crawler/index.d.ts +0 -57
- package/cli/dist/core/fixtures/index.d.ts +0 -8
- package/cli/dist/core/fixtures/index.js +0 -8
- package/cli/dist/core/generation/crawler-pack-generator.js +0 -231
- package/cli/dist/core/reporting/index.d.ts +0 -6
- package/cli/dist/core/reporting/index.js +0 -6
- package/cli/dist/core/visual/index.d.ts +0 -6
- package/cli/dist/core/visual/index.js +0 -6
- package/cli/package.json +0 -76
- package/core/LICENSE +0 -24
- package/core/README.md +0 -105
- package/core/package.json +0 -90
- package/core/schemas/pack.schema.json +0 -236
- /package/{cli/bin → bin}/qa360.js +0 -0
- /package/{cli/dist → dist}/cli-minimal.d.ts +0 -0
- /package/{cli/dist → dist}/cli-minimal.js +0 -0
- /package/{cli/dist → dist}/commands/ai.d.ts +0 -0
- /package/{cli/dist → dist}/commands/ask.d.ts +0 -0
- /package/{cli/dist → dist}/commands/coverage.d.ts +0 -0
- /package/{cli/dist → dist}/commands/crawl.d.ts +0 -0
- /package/{cli/dist → dist}/commands/doctor.d.ts +0 -0
- /package/{cli/dist → dist}/commands/examples.d.ts +0 -0
- /package/{cli/dist → dist}/commands/examples.js +0 -0
- /package/{cli/dist → dist}/commands/explain.d.ts +0 -0
- /package/{cli/dist → dist}/commands/flakiness.d.ts +0 -0
- /package/{cli/dist → dist}/commands/generate.d.ts +0 -0
- /package/{cli/dist → dist}/commands/history.d.ts +0 -0
- /package/{cli/dist → dist}/commands/init.d.ts +0 -0
- /package/{cli/dist → dist}/commands/init.js +0 -0
- /package/{cli/dist → dist}/commands/monitor.d.ts +0 -0
- /package/{cli/dist → dist}/commands/ollama.d.ts +0 -0
- /package/{cli/dist → dist}/commands/pack.d.ts +0 -0
- /package/{cli/dist → dist}/commands/regression.d.ts +0 -0
- /package/{cli/dist → dist}/commands/repair.d.ts +0 -0
- /package/{cli/dist → dist}/commands/report.d.ts +0 -0
- /package/{cli/dist → dist}/commands/report.js +0 -0
- /package/{cli/dist → dist}/commands/retry.d.ts +0 -0
- /package/{cli/dist → dist}/commands/scan.d.ts +0 -0
- /package/{cli/dist → dist}/commands/scan.js +0 -0
- /package/{cli/dist → dist}/commands/secrets.d.ts +0 -0
- /package/{cli/dist → dist}/commands/serve.d.ts +0 -0
- /package/{cli/dist → dist}/commands/slo.d.ts +0 -0
- /package/{cli/dist → dist}/commands/verify.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/gitleaks-secrets.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/gitleaks-secrets.js +0 -0
- /package/{cli/dist → dist}/core/adapters/jest-adapter.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/jest-adapter.js +0 -0
- /package/{cli/dist → dist}/core/adapters/k6-perf.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/k6-perf.js +0 -0
- /package/{cli/dist → dist}/core/adapters/osv-deps.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/osv-deps.js +0 -0
- /package/{cli/dist → dist}/core/adapters/playwright-native-adapter.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/playwright-native-adapter.js +0 -0
- /package/{cli/dist → dist}/core/adapters/pytest-adapter.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/pytest-adapter.js +0 -0
- /package/{cli/dist → dist}/core/adapters/semgrep-sast.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/semgrep-sast.js +0 -0
- /package/{cli/dist → dist}/core/adapters/unit-test-types.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/unit-test-types.js +0 -0
- /package/{cli/dist → dist}/core/adapters/vitest-adapter.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/vitest-adapter.js +0 -0
- /package/{cli/dist → dist}/core/adapters/zap-dast.d.ts +0 -0
- /package/{cli/dist → dist}/core/adapters/zap-dast.js +0 -0
- /package/{cli/dist → dist}/core/ai/anthropic-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/ai/anthropic-provider.js +0 -0
- /package/{cli/dist → dist}/core/ai/deepseek-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/ai/deepseek-provider.js +0 -0
- /package/{cli/dist → dist}/core/ai/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/ai/index.js +0 -0
- /package/{cli/dist → dist}/core/ai/llm-client.d.ts +0 -0
- /package/{cli/dist → dist}/core/ai/llm-client.js +0 -0
- /package/{cli/dist → dist}/core/ai/mock-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/ai/mock-provider.js +0 -0
- /package/{cli/dist → dist}/core/ai/openai-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/ai/openai-provider.js +0 -0
- /package/{cli/dist → dist}/core/ai/provider-factory.d.ts +0 -0
- /package/{cli/dist → dist}/core/ai/provider-factory.js +0 -0
- /package/{cli/dist → dist}/core/artifacts/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/artifacts/index.js +0 -0
- /package/{cli/dist → dist}/core/artifacts/ui-artifacts.d.ts +0 -0
- /package/{cli/dist → dist}/core/assertions/engine.d.ts +0 -0
- /package/{cli/dist → dist}/core/assertions/engine.js +0 -0
- /package/{cli/dist → dist}/core/assertions/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/assertions/index.js +0 -0
- /package/{cli/dist → dist}/core/assertions/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/assertions/types.js +0 -0
- /package/{cli/dist → dist}/core/auth/api-key-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/auth/api-key-provider.js +0 -0
- /package/{cli/dist → dist}/core/auth/aws-iam-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/auth/aws-iam-provider.js +0 -0
- /package/{cli/dist → dist}/core/auth/azure-ad-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/auth/azure-ad-provider.js +0 -0
- /package/{cli/dist → dist}/core/auth/gcp-adc-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/auth/gcp-adc-provider.js +0 -0
- /package/{cli/dist → dist}/core/auth/jwt-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/auth/jwt-provider.js +0 -0
- /package/{cli/dist → dist}/core/auth/manager.d.ts +0 -0
- /package/{cli/dist → dist}/core/auth/manager.js +0 -0
- /package/{cli/dist → dist}/core/auth/totp-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/auth/totp-provider.js +0 -0
- /package/{cli/dist → dist}/core/auth/ui-login-provider.d.ts +0 -0
- /package/{cli/dist → dist}/core/auth/ui-login-provider.js +0 -0
- /package/{cli/dist → dist}/core/cache/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/cache/index.js +0 -0
- /package/{cli/dist → dist}/core/cache/lru-cache.d.ts +0 -0
- /package/{cli/dist → dist}/core/cache/lru-cache.js +0 -0
- /package/{cli/dist/core → dist}/core/coverage/analyzer.d.ts +0 -0
- /package/{cli/dist/core → dist}/core/coverage/analyzer.js +0 -0
- /package/{cli/dist/core → dist}/core/coverage/collector.d.ts +0 -0
- /package/{cli/dist/core → dist}/core/coverage/collector.js +0 -0
- /package/{cli/dist/core → dist}/core/coverage/config.d.ts +0 -0
- /package/{cli/dist/core → dist}/core/coverage/config.js +0 -0
- /package/{cli/dist/core → dist}/core/coverage/index.d.ts +0 -0
- /package/{cli/dist/core → dist}/core/coverage/index.js +0 -0
- /package/{cli/dist/core → dist}/core/coverage/types.d.ts +0 -0
- /package/{cli/dist/core → dist}/core/coverage/types.js +0 -0
- /package/{cli/dist/core → dist}/core/coverage/vault.d.ts +0 -0
- /package/{cli/dist/core → dist}/core/coverage/vault.js +0 -0
- /package/{cli/dist → dist}/core/crawler/journey-generator.d.ts +0 -0
- /package/{cli/dist → dist}/core/crawler/types.js +0 -0
- /package/{cli/dist → dist}/core/dashboard/assets.d.ts +0 -0
- /package/{cli/dist → dist}/core/dashboard/assets.js +0 -0
- /package/{cli/dist → dist}/core/dashboard/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/dashboard/index.js +0 -0
- /package/{cli/dist → dist}/core/dashboard/server.d.ts +0 -0
- /package/{cli/dist → dist}/core/dashboard/server.js +0 -0
- /package/{cli/dist → dist}/core/dashboard/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/dashboard/types.js +0 -0
- /package/{cli/dist → dist}/core/discoverer/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/discoverer/index.js +0 -0
- /package/{cli/dist → dist}/core/fixtures/loader.d.ts +0 -0
- /package/{cli/dist → dist}/core/fixtures/loader.js +0 -0
- /package/{cli/dist → dist}/core/fixtures/resolver.d.ts +0 -0
- /package/{cli/dist → dist}/core/fixtures/resolver.js +0 -0
- /package/{cli/dist → dist}/core/fixtures/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/fixtures/types.js +0 -0
- /package/{cli/dist → dist}/core/flakiness/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/flakiness/index.js +0 -0
- /package/{cli/dist → dist}/core/generation/code-formatter.d.ts +0 -0
- /package/{cli/dist → dist}/core/generation/code-formatter.js +0 -0
- /package/{cli/dist → dist}/core/generation/code-generator.d.ts +0 -0
- /package/{cli/dist → dist}/core/generation/code-generator.js +0 -0
- /package/{cli/dist → dist}/core/generation/generator.d.ts +0 -0
- /package/{cli/dist → dist}/core/generation/generator.js +0 -0
- /package/{cli/dist → dist}/core/generation/pack-generator.d.ts +0 -0
- /package/{cli/dist → dist}/core/generation/pack-generator.js +0 -0
- /package/{cli/dist → dist}/core/generation/prompt-builder.d.ts +0 -0
- /package/{cli/dist → dist}/core/generation/prompt-builder.js +0 -0
- /package/{cli/dist → dist}/core/generation/source-analyzer.d.ts +0 -0
- /package/{cli/dist → dist}/core/generation/source-analyzer.js +0 -0
- /package/{cli/dist → dist}/core/generation/test-optimizer.d.ts +0 -0
- /package/{cli/dist → dist}/core/generation/test-optimizer.js +0 -0
- /package/{cli/dist → dist}/core/generation/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/generation/types.js +0 -0
- /package/{cli/dist → dist}/core/hooks/compose.d.ts +0 -0
- /package/{cli/dist → dist}/core/hooks/compose.js +0 -0
- /package/{cli/dist → dist}/core/hooks/runner.d.ts +0 -0
- /package/{cli/dist → dist}/core/hooks/runner.js +0 -0
- /package/{cli/dist → dist}/core/pack/migrator.d.ts +0 -0
- /package/{cli/dist → dist}/core/pack/migrator.js +0 -0
- /package/{cli/dist → dist}/core/pack/validator.d.ts +0 -0
- /package/{cli/dist → dist}/core/pack-v2/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/pack-v2/index.js +0 -0
- /package/{cli/dist → dist}/core/pack-v2/loader.d.ts +0 -0
- /package/{cli/dist → dist}/core/pack-v2/loader.js +0 -0
- /package/{cli/dist → dist}/core/pack-v2/validator.d.ts +0 -0
- /package/{cli/dist → dist}/core/parallel/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/parallel/index.js +0 -0
- /package/{cli/dist → dist}/core/parallel/parallel-runner.d.ts +0 -0
- /package/{cli/dist → dist}/core/parallel/parallel-runner.js +0 -0
- /package/{cli/dist → dist}/core/pom/base-page.d.ts +0 -0
- /package/{cli/dist → dist}/core/pom/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/pom/index.js +0 -0
- /package/{cli/dist → dist}/core/pom/loader.d.ts +0 -0
- /package/{cli/dist → dist}/core/pom/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/pom/types.js +0 -0
- /package/{cli/dist → dist}/core/proof/bundle.d.ts +0 -0
- /package/{cli/dist → dist}/core/proof/bundle.js +0 -0
- /package/{cli/dist → dist}/core/proof/canonicalize.d.ts +0 -0
- /package/{cli/dist → dist}/core/proof/canonicalize.js +0 -0
- /package/{cli/dist → dist}/core/proof/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/proof/index.js +0 -0
- /package/{cli/dist → dist}/core/proof/schema.d.ts +0 -0
- /package/{cli/dist → dist}/core/proof/schema.js +0 -0
- /package/{cli/dist → dist}/core/proof/signer.d.ts +0 -0
- /package/{cli/dist → dist}/core/proof/signer.js +0 -0
- /package/{cli/dist → dist}/core/proof/verifier.d.ts +0 -0
- /package/{cli/dist → dist}/core/proof/verifier.js +0 -0
- /package/{cli/dist → dist}/core/regression/detector.d.ts +0 -0
- /package/{cli/dist → dist}/core/regression/detector.js +0 -0
- /package/{cli/dist → dist}/core/regression/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/regression/index.js +0 -0
- /package/{cli/dist → dist}/core/regression/trend-analyzer.d.ts +0 -0
- /package/{cli/dist → dist}/core/regression/trend-analyzer.js +0 -0
- /package/{cli/dist → dist}/core/regression/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/regression/types.js +0 -0
- /package/{cli/dist → dist}/core/regression/vault.d.ts +0 -0
- /package/{cli/dist → dist}/core/regression/vault.js +0 -0
- /package/{cli/dist → dist}/core/repair/engine/fixer.d.ts +0 -0
- /package/{cli/dist → dist}/core/repair/engine/fixer.js +0 -0
- /package/{cli/dist → dist}/core/repair/engine/suggestion-engine.d.ts +0 -0
- /package/{cli/dist → dist}/core/repair/engine/suggestion-engine.js +0 -0
- /package/{cli/dist → dist}/core/repair/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/repair/index.js +0 -0
- /package/{cli/dist → dist}/core/repair/repairer.d.ts +0 -0
- /package/{cli/dist → dist}/core/repair/repairer.js +0 -0
- /package/{cli/dist → dist}/core/repair/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/repair/types.js +0 -0
- /package/{cli/dist → dist}/core/repair/utils/error-analyzer.d.ts +0 -0
- /package/{cli/dist → dist}/core/repair/utils/error-analyzer.js +0 -0
- /package/{cli/dist → dist}/core/reporting/html-reporter.d.ts +0 -0
- /package/{cli/dist → dist}/core/reporting/html-reporter.js +0 -0
- /package/{cli/dist → dist}/core/retry/flakiness-integration.d.ts +0 -0
- /package/{cli/dist → dist}/core/retry/flakiness-integration.js +0 -0
- /package/{cli/dist → dist}/core/retry/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/retry/index.js +0 -0
- /package/{cli/dist → dist}/core/retry/retry-engine.d.ts +0 -0
- /package/{cli/dist → dist}/core/retry/retry-engine.js +0 -0
- /package/{cli/dist → dist}/core/retry/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/retry/types.js +0 -0
- /package/{cli/dist → dist}/core/retry/vault.d.ts +0 -0
- /package/{cli/dist → dist}/core/retry/vault.js +0 -0
- /package/{cli/dist → dist}/core/schemas/pack.schema.json +0 -0
- /package/{cli/dist → dist}/core/secrets/crypto.d.ts +0 -0
- /package/{cli/dist → dist}/core/secrets/crypto.js +0 -0
- /package/{cli/dist → dist}/core/secrets/manager.d.ts +0 -0
- /package/{cli/dist → dist}/core/secrets/manager.js +0 -0
- /package/{cli/dist → dist}/core/security/redaction-patterns-extended.d.ts +0 -0
- /package/{cli/dist → dist}/core/security/redaction-patterns-extended.js +0 -0
- /package/{cli/dist → dist}/core/security/redactor.d.ts +0 -0
- /package/{cli/dist → dist}/core/security/redactor.js +0 -0
- /package/{cli/dist → dist}/core/self-healing/assertion-healer.d.ts +0 -0
- /package/{cli/dist → dist}/core/self-healing/assertion-healer.js +0 -0
- /package/{cli/dist → dist}/core/self-healing/engine.d.ts +0 -0
- /package/{cli/dist → dist}/core/self-healing/engine.js +0 -0
- /package/{cli/dist → dist}/core/self-healing/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/self-healing/index.js +0 -0
- /package/{cli/dist → dist}/core/self-healing/selector-healer.d.ts +0 -0
- /package/{cli/dist → dist}/core/self-healing/selector-healer.js +0 -0
- /package/{cli/dist → dist}/core/self-healing/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/self-healing/types.js +0 -0
- /package/{cli/dist → dist}/core/serve/diagnostics-collector.d.ts +0 -0
- /package/{cli/dist → dist}/core/serve/diagnostics-collector.js +0 -0
- /package/{cli/dist → dist}/core/serve/health-checker.d.ts +0 -0
- /package/{cli/dist → dist}/core/serve/health-checker.js +0 -0
- /package/{cli/dist → dist}/core/serve/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/serve/index.js +0 -0
- /package/{cli/dist → dist}/core/serve/metrics-collector.d.ts +0 -0
- /package/{cli/dist → dist}/core/serve/metrics-collector.js +0 -0
- /package/{cli/dist → dist}/core/serve/process-manager.d.ts +0 -0
- /package/{cli/dist → dist}/core/serve/process-manager.js +0 -0
- /package/{cli/dist → dist}/core/serve/server.d.ts +0 -0
- /package/{cli/dist → dist}/core/serve/server.js +0 -0
- /package/{cli/dist → dist}/core/slo/config.d.ts +0 -0
- /package/{cli/dist → dist}/core/slo/config.js +0 -0
- /package/{cli/dist → dist}/core/slo/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/slo/index.js +0 -0
- /package/{cli/dist → dist}/core/slo/sli-calculator.d.ts +0 -0
- /package/{cli/dist → dist}/core/slo/sli-calculator.js +0 -0
- /package/{cli/dist → dist}/core/slo/slo-tracker.d.ts +0 -0
- /package/{cli/dist → dist}/core/slo/slo-tracker.js +0 -0
- /package/{cli/dist → dist}/core/slo/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/slo/types.js +0 -0
- /package/{cli/dist → dist}/core/slo/vault.d.ts +0 -0
- /package/{cli/dist → dist}/core/slo/vault.js +0 -0
- /package/{cli/dist → dist}/core/tui/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/tui/index.js +0 -0
- /package/{cli/dist → dist}/core/tui/monitor.d.ts +0 -0
- /package/{cli/dist → dist}/core/tui/monitor.js +0 -0
- /package/{cli/dist → dist}/core/tui/renderer.d.ts +0 -0
- /package/{cli/dist → dist}/core/tui/renderer.js +0 -0
- /package/{cli/dist → dist}/core/tui/types.d.ts +0 -0
- /package/{cli/dist → dist}/core/tui/types.js +0 -0
- /package/{cli/dist → dist}/core/types/pack-v1.js +0 -0
- /package/{cli/dist → dist}/core/types/pack-v2.js +0 -0
- /package/{cli/dist → dist}/core/types/trust-score.d.ts +0 -0
- /package/{cli/dist → dist}/core/types/trust-score.js +0 -0
- /package/{cli/dist → dist}/core/vault/cas.d.ts +0 -0
- /package/{cli/dist → dist}/core/vault/cas.js +0 -0
- /package/{cli/dist → dist}/core/vault/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/vault/index.js +0 -0
- /package/{cli/dist → dist}/core/visual/visual-regression.d.ts +0 -0
- /package/{cli/dist → dist}/core/visual/visual-regression.js +0 -0
- /package/{cli/dist → dist}/core/watch/index.d.ts +0 -0
- /package/{cli/dist → dist}/core/watch/index.js +0 -0
- /package/{cli/dist → dist}/core/watch/watch-mode.d.ts +0 -0
- /package/{cli/dist → dist}/core/watch/watch-mode.js +0 -0
- /package/{cli/dist → dist}/generators/index.d.ts +0 -0
- /package/{cli/dist → dist}/generators/index.js +0 -0
- /package/{cli/dist → dist}/generators/json-reporter.d.ts +0 -0
- /package/{cli/dist → dist}/generators/json-reporter.js +0 -0
- /package/{cli/dist → dist}/generators/test-generator.d.ts +0 -0
- /package/{cli/dist → dist}/generators/test-generator.js +0 -0
- /package/{cli/dist → dist}/index.d.ts +0 -0
- /package/{cli/dist → dist}/scanners/dom-scanner.d.ts +0 -0
- /package/{cli/dist → dist}/scanners/dom-scanner.js +0 -0
- /package/{cli/dist → dist}/scanners/index.d.ts +0 -0
- /package/{cli/dist → dist}/scanners/index.js +0 -0
- /package/{cli/dist → dist}/schemas/pack.schema.json +0 -0
- /package/{cli/dist → dist}/types/scan.d.ts +0 -0
- /package/{cli/dist → dist}/types/scan.js +0 -0
package/CONTRIBUTING.md
DELETED
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
# Contributing to QA360
|
|
2
|
-
|
|
3
|
-
## 🚀 IMPORTANT - AI INTEGRATION IN PROGRESS
|
|
4
|
-
|
|
5
|
-
**Status**: Phases 1-3 terminées | Phase 4 en préparation
|
|
6
|
-
|
|
7
|
-
QA360 est en cours de **transformation AI-native** avec Ollama (100% gratuit, local).
|
|
8
|
-
|
|
9
|
-
**Progression**: Voir [`docs/OLLAMA_REFACTORING_ROADMAP.md`](./docs/OLLAMA_REFACTORING_ROADMAP.md)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Mission Statement
|
|
14
|
-
|
|
15
|
-
QA360 transforms software testing into **verifiable, signed, and traceable proofs**.
|
|
16
|
-
|
|
17
|
-
Our goal: Make quality **executable, measurable, and legally provable** while remaining **simple, portable, and sovereign**.
|
|
18
|
-
|
|
19
|
-
## 🔄 Architecture Pivot (2025)
|
|
20
|
-
|
|
21
|
-
### Bilan des Phases Terminées
|
|
22
|
-
|
|
23
|
-
| Phase | Composant | Tests | Statut |
|
|
24
|
-
|-------|-----------|-------|--------|
|
|
25
|
-
| **Phase 1** | Ollama Provider | 96 | ✅ Terminé |
|
|
26
|
-
| **Phase 2** | Auth Module (9 providers) | 92 | ✅ Terminé |
|
|
27
|
-
| **Phase 3** | Pack Validation | 210 | ✅ Terminé |
|
|
28
|
-
|
|
29
|
-
**Total Phases 1-3**: 398 tests ajoutés
|
|
30
|
-
|
|
31
|
-
### Ce qui a changé
|
|
32
|
-
|
|
33
|
-
| Aspect | Avant | Après |
|
|
34
|
-
|--------|-------|-------|
|
|
35
|
-
| **AI Provider** | Non | OllamaProvider (retry, timeout) |
|
|
36
|
-
| **Test Discovery** | Manuel (pack.yml) | TestDiscoverer (auto-détection) |
|
|
37
|
-
| **Authentification** | Secrets chiffrés simples | 9 providers (JWT, OAuth2, TOTP, Cloud, UI Login) |
|
|
38
|
-
| **Pack Format** | Simple (array-based) | Complet (object-based + auth profiles) |
|
|
39
|
-
| **Validation** | PackValidator basic | PackValidator (36 codes d'erreur) |
|
|
40
|
-
|
|
41
|
-
### Ce qui est PRÉSERVÉ (Le cœur de QA360)
|
|
42
|
-
|
|
43
|
-
✅ **Proof System** - Signatures Ed25519, vérification, canonicalisation
|
|
44
|
-
✅ **Evidence Vault** - SQLite + CAS, stockage immuable
|
|
45
|
-
✅ **Pack System** - Configuration déclarative
|
|
46
|
-
✅ **Security Redactor** - Protection des secrets
|
|
47
|
-
✅ **Adapters** - Playwright, k6, Semgrep, ZAP, Gitleaks, OSV
|
|
48
|
-
|
|
49
|
-
### Prochaines Phases
|
|
50
|
-
|
|
51
|
-
| Phase | Sujet | Statut |
|
|
52
|
-
|-------|-------|--------|
|
|
53
|
-
| **Phase 4** | AI Test Generation | ⏳ À faire |
|
|
54
|
-
| **Phase 5** | Integration & Polish | ⏳ À faire |
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## Development Principles
|
|
59
|
-
|
|
60
|
-
### 📌 Versioning System
|
|
61
|
-
|
|
62
|
-
**IMPORTANT**: QA360 uses **Node.js-style versioning** (Major.Minor.Patch).
|
|
63
|
-
|
|
64
|
-
Example: `v1.4.5` (similar to Node.js `v18.20.5`)
|
|
65
|
-
|
|
66
|
-
- **Major** (X.0.0): Breaking changes, major rewrites
|
|
67
|
-
- **Minor** (1.X.0): New features, backward compatible
|
|
68
|
-
- **Patch** (1.4.X): Bug fixes, minor improvements
|
|
69
|
-
|
|
70
|
-
Always reference versions with the **`v`** prefix in documentation and commits.
|
|
71
|
-
|
|
72
|
-
### 🎯 Core Values
|
|
73
|
-
- **Simplicity**: One command, one file, one proof
|
|
74
|
-
- **Auditability**: Every action is traceable and verifiable
|
|
75
|
-
- **Elegance**: Clean code that speaks for itself
|
|
76
|
-
- **Portability**: Works everywhere, depends on nothing external
|
|
77
|
-
- **AI-Native**: Utilise Ollama pour une génération intelligente
|
|
78
|
-
- **Auth-Complete**: Gère tous les scénarios d'authentification
|
|
79
|
-
|
|
80
|
-
### 🏗️ Architecture Guidelines
|
|
81
|
-
- **Local-first**: Ollama runs locally, no cloud dependency for AI
|
|
82
|
-
- **BYOCI**: Bring Your Own CI/CD integration
|
|
83
|
-
- **Monorepo**: All components in one repository
|
|
84
|
-
- **TypeScript**: Type safety and developer experience
|
|
85
|
-
- **AI-Enhanced**: Generation de code via Ollama (DeepSeek Coder)
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Development Workflow
|
|
90
|
-
|
|
91
|
-
### Branch Strategy (SIMPLIFIED)
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
main ← Production releases (STABLE)
|
|
95
|
-
↑
|
|
96
|
-
develop ← Development branch (WORK HERE)
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**IMPORTANT - Workflow simplifié**:
|
|
100
|
-
1. Travailler **directement sur `develop`**
|
|
101
|
-
2. Committer et pousser sur `develop`
|
|
102
|
-
3. Vérifier que la **CI est verte** sur `develop`
|
|
103
|
-
4. Merger `develop` vers `main` **uniquement quand tout est vert**
|
|
104
|
-
5. Vérifier que la **CI est aussi verte** sur `main`
|
|
105
|
-
6. **Supprimer toutes les autres branches** (pas de `feature/*`, pas de confusion)
|
|
106
|
-
|
|
107
|
-
### Workflow complet
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
# 1. S'assurer d'être sur develop
|
|
111
|
-
git checkout develop
|
|
112
|
-
git pull origin develop
|
|
113
|
-
|
|
114
|
-
# 2. Travailler sur develop
|
|
115
|
-
# ... faire les modifications ...
|
|
116
|
-
|
|
117
|
-
# 3. Committer
|
|
118
|
-
git add .
|
|
119
|
-
git commit -m "fix(scope): description"
|
|
120
|
-
|
|
121
|
-
# 4. Pusher
|
|
122
|
-
git push origin develop
|
|
123
|
-
|
|
124
|
-
# 5. Attendre que la CI soit verte sur develop
|
|
125
|
-
|
|
126
|
-
# 6. Merger vers main
|
|
127
|
-
git checkout main
|
|
128
|
-
git pull origin main
|
|
129
|
-
git merge develop
|
|
130
|
-
git push origin main
|
|
131
|
-
|
|
132
|
-
# 7. Vérifier que la CI est verte sur main
|
|
133
|
-
|
|
134
|
-
# 8. Nettoyer les branches locales (supprimer feature/*)
|
|
135
|
-
git branch | grep -E 'feature/' | xargs git branch -D 2>/dev/null || true
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### ⚠️ Règles strictes
|
|
139
|
-
|
|
140
|
-
**OBLIGATOIRE**:
|
|
141
|
-
- ✅ Travailler sur `develop` uniquement
|
|
142
|
-
- ✅ CI verte sur `develop` avant merge vers `main`
|
|
143
|
-
- ✅ CI verte sur `main` après merge
|
|
144
|
-
- ✅ Supprimer les branches `feature/*` locales et distantes
|
|
145
|
-
|
|
146
|
-
**INTERDIT**:
|
|
147
|
-
- ❌ Créer des branches `feature/*`
|
|
148
|
-
- ❌ Travailler directement sur `main`
|
|
149
|
-
- ❌ Merge vers `main` si la CI n'est pas verte
|
|
150
|
-
- ❌ Laisser des branches orphelines
|
|
151
|
-
|
|
152
|
-
### Commit Convention
|
|
153
|
-
|
|
154
|
-
Nous utilisons [Conventional Commits](https://www.conventionalcommits.org/):
|
|
155
|
-
|
|
156
|
-
```
|
|
157
|
-
feat(ai): add Ollama provider with DeepSeek Coder support
|
|
158
|
-
feat(auth): implement JWT manager with auto-refresh
|
|
159
|
-
feat(cli): add generate command for AI test generation
|
|
160
|
-
fix(core): resolve signature verification edge case
|
|
161
|
-
refactor(adapters): inject auth manager into playwright adapter
|
|
162
|
-
docs(auth): add authentication guide
|
|
163
|
-
test(vault): add evidence storage integration tests
|
|
164
|
-
chore(deps): add ollama dependency
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### ⛔ Publication NPM - DÉACTIVÉ
|
|
168
|
-
|
|
169
|
-
**ATTENTION**: Les publications NPM sont temporairement désactivées pendant la refactorisation.
|
|
170
|
-
|
|
171
|
-
Le workflow `.github/workflows/release.yml` est désactivé via `if: false`.
|
|
172
|
-
|
|
173
|
-
**Ne PAS**:
|
|
174
|
-
- ❌ Créer de tag `v*` sur `main`
|
|
175
|
-
- ❌ Publier sur npm
|
|
176
|
-
- ❌ Incrémenter la version dans `package.json`
|
|
177
|
-
|
|
178
|
-
**Oui, continuez à**:
|
|
179
|
-
- ✅ Travailler sur `develop`
|
|
180
|
-
- ✅ Committer et pousser régulièrement
|
|
181
|
-
- ✅ Faire des commits conventionnels
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## Phase-by-Phase Development
|
|
186
|
-
|
|
187
|
-
**Phase actuelle**: **Phase 3 terminée, Phase 4 en préparation**
|
|
188
|
-
|
|
189
|
-
| Phase | Status | Description | Tests |
|
|
190
|
-
|-------|--------|-------------|-------|
|
|
191
|
-
| **Phase 1** | ✅ Terminé | Ollama Provider, TestDiscoverer, PackConfig | 96 |
|
|
192
|
-
| **Phase 2** | ✅ Terminé | Auth Module (9 providers) | 92 |
|
|
193
|
-
| **Phase 3** | ✅ Terminé | Pack Validation, Migration, Loader | 210 |
|
|
194
|
-
| **Phase 4** | ⏳ À faire | AI Test Generation | - |
|
|
195
|
-
| **Phase 5** | ⏳ À faire | Integration & Polish | - |
|
|
196
|
-
|
|
197
|
-
**Tests Globaux**: 1859 passing (CLI: 358, Core: 1455, MCP: 46)
|
|
198
|
-
|
|
199
|
-
---
|
|
200
|
-
|
|
201
|
-
## Code Standards
|
|
202
|
-
|
|
203
|
-
### TypeScript Configuration
|
|
204
|
-
- Strict mode enabled
|
|
205
|
-
- No `any` types allowed
|
|
206
|
-
- Comprehensive error handling
|
|
207
|
-
|
|
208
|
-
### Testing Requirements
|
|
209
|
-
- Unit tests for all core functions
|
|
210
|
-
- Integration tests for CLI commands
|
|
211
|
-
- End-to-end tests for complete workflows
|
|
212
|
-
|
|
213
|
-
### Documentation Standards
|
|
214
|
-
- Every module has a README.md
|
|
215
|
-
- Usage examples for all public APIs
|
|
216
|
-
- Error messages are pedagogical and guiding
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Getting Started
|
|
221
|
-
|
|
222
|
-
### Prerequisites
|
|
223
|
-
|
|
224
|
-
**Obligatoire**:
|
|
225
|
-
- Node.js 18+
|
|
226
|
-
- TypeScript 5+
|
|
227
|
-
- pnpm 9+
|
|
228
|
-
|
|
229
|
-
**Optionnel mais recommandé pour le développement**:
|
|
230
|
-
- Ollama (pour IA locale) - `brew install ollama`
|
|
231
|
-
- DeepSeek Coder model - `ollama pull deepseek-coder`
|
|
232
|
-
|
|
233
|
-
### Setup
|
|
234
|
-
```bash
|
|
235
|
-
git clone <repository>
|
|
236
|
-
cd QA360
|
|
237
|
-
pnpm install
|
|
238
|
-
pnpm run build
|
|
239
|
-
pnpm test
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### Ollama Setup (pour développement IA)
|
|
243
|
-
```bash
|
|
244
|
-
# Installer Ollama
|
|
245
|
-
brew install ollama # macOS
|
|
246
|
-
# Ou https://ollama.com pour d'autres OS
|
|
247
|
-
|
|
248
|
-
# Démarrer Ollama
|
|
249
|
-
ollama serve
|
|
250
|
-
|
|
251
|
-
# Télécharger le modèle de code
|
|
252
|
-
ollama pull deepseek-coder
|
|
253
|
-
|
|
254
|
-
# Vérifier
|
|
255
|
-
ollama list
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
---
|
|
259
|
-
|
|
260
|
-
## Running Tests
|
|
261
|
-
|
|
262
|
-
```bash
|
|
263
|
-
pnpm test # Tous les tests
|
|
264
|
-
pnpm test:core # Tests core uniquement
|
|
265
|
-
pnpm test:cli # Tests CLI uniquement
|
|
266
|
-
pnpm lint # Code quality
|
|
267
|
-
pnpm type-check # TypeScript validation
|
|
268
|
-
pnpm test:all # Tout (lint + type-check + test)
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
## Code Standards
|
package/QUICK_START.md
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
# 🚀 QA360 - Guide de Démarrage Simple
|
|
2
|
-
|
|
3
|
-
Transformez vos tests en preuves vérifiables en 5 minutes.
|
|
4
|
-
|
|
5
|
-
> **🚀 Beta Testing (15 Jan - 26 Fév 2025)** - Rejoignez le programme ! [Voir le plan beta](./docs/BETA_TESTING.md)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## ⚡ Installation (2 minutes)
|
|
10
|
-
|
|
11
|
-
### Windows
|
|
12
|
-
|
|
13
|
-
1. Ouvrez **PowerShell** en administrateur
|
|
14
|
-
2. Installez QA360 :
|
|
15
|
-
|
|
16
|
-
```powershell
|
|
17
|
-
npm install -g xyqotech/qa360#develop
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### Mac / Linux
|
|
21
|
-
|
|
22
|
-
1. Ouvrez le **Terminal**
|
|
23
|
-
2. Installez QA360 :
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
npm install -g xyqotech/qa360#develop
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Vérifier l'installation
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
qa360 --version
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Vous devriez voir : `v1.4.5` ou plus.
|
|
36
|
-
|
|
37
|
-
> **Problème ?** Lancez `qa360 doctor --fix` pour un diagnostic automatique
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## 🧪 Votre Premier Test (3 minutes)
|
|
42
|
-
|
|
43
|
-
### Étape 1 : Créer un dossier
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
mkdir mon-test
|
|
47
|
-
cd mon-test
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Étape 2 : Créer votre fichier de test
|
|
51
|
-
|
|
52
|
-
Créez un fichier `test.yml` :
|
|
53
|
-
|
|
54
|
-
```yaml
|
|
55
|
-
name: "Mon Premier Test"
|
|
56
|
-
description: "Test simple d'API"
|
|
57
|
-
|
|
58
|
-
gates:
|
|
59
|
-
- api_health
|
|
60
|
-
|
|
61
|
-
targets:
|
|
62
|
-
api:
|
|
63
|
-
baseUrl: "https://httpbin.org"
|
|
64
|
-
smoke:
|
|
65
|
-
- "GET /status/200 -> 200"
|
|
66
|
-
- "GET /get -> 200"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Étape 3 : Lancer le test
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
qa360 run test.yml
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Résultat attendu
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
✅ API Health : PASSED (2/2)
|
|
79
|
-
✅ Preuve générée : .qa360/runs/xxxxx-proof.json
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 🎓 Ce que vous venez de faire
|
|
85
|
-
|
|
86
|
-
1. **Tester une API** - Vous avez vérifié que httpbin.org fonctionne
|
|
87
|
-
2. **Générer une preuve** - QA360 a signé cryptographiquement les résultats
|
|
88
|
-
3. **Sauvegarder l'historique** - Les résultats sont stockés localement
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## 🔐 Vérifier la Preuve
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
qa360 verify .qa360/runs/<dernier>-proof.json
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Résultat :
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
✅ Preuve VALIDE
|
|
102
|
-
✅ Signature : Ed25519
|
|
103
|
-
✅ Date : 2025-01-03
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## 📋 Commandes Utiles
|
|
109
|
-
|
|
110
|
-
| Commande | Ce que ça fait |
|
|
111
|
-
|----------|---------------|
|
|
112
|
-
| `qa360 run <fichier.yml>` | Lance les tests |
|
|
113
|
-
| `qa360 verify <preuve.json>` | Vérifie une preuve |
|
|
114
|
-
| `qa360 history list` | Voir les tests passés |
|
|
115
|
-
| `qa360 doctor` | Diagnostic système |
|
|
116
|
-
| `qa360 examples list` | Voir les exemples |
|
|
117
|
-
| `qa360 init --beginner` | Créer un test facilement |
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## 📁 Exemples Disponibles
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
# Voir tous les exemples
|
|
125
|
-
qa360 examples list
|
|
126
|
-
|
|
127
|
-
# Copier un exemple
|
|
128
|
-
qa360 examples copy api-basic
|
|
129
|
-
qa360 examples copy fullstack
|
|
130
|
-
qa360 examples copy perf-test
|
|
131
|
-
|
|
132
|
-
# Lancer un exemple
|
|
133
|
-
qa360 run api-basic/qa360.yml
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## 🎯 Prochaines Étapes
|
|
139
|
-
|
|
140
|
-
1. **Tester votre propre API** : Modifiez `baseUrl` dans le fichier `test.yml`
|
|
141
|
-
2. **Explorer les exemples** : `qa360 examples list`
|
|
142
|
-
3. **Créer des tests complexes** : Consultez le [Guide Utilisateur](./docs/USER_GUIDE.md)
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## 🐛 Un Problème ?
|
|
147
|
-
|
|
148
|
-
### Erreur : `command not found: qa360`
|
|
149
|
-
|
|
150
|
-
```bash
|
|
151
|
-
# Vérifiez que npm est dans le PATH
|
|
152
|
-
npm config get prefix
|
|
153
|
-
|
|
154
|
-
# Si besoin, ajoutez à votre PATH :
|
|
155
|
-
# Windows : $env:Path += ";C:\Users\<votre-user>\AppData\Roaming\npm"
|
|
156
|
-
# Mac/Linux : export PATH="$PATH:$(npm config get prefix)/bin"
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### Erreur : `EACCES` (permission refusée)
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
# Mac/Linux : utilisez sudo
|
|
163
|
-
sudo npm install -g xyqotech/qa360#develop
|
|
164
|
-
|
|
165
|
-
# Ou corrigez les permissions npm
|
|
166
|
-
mkdir ~/.npm-global
|
|
167
|
-
npm config set prefix '~/.npm-global'
|
|
168
|
-
export PATH=~/.npm-global/bin:$PATH
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### Autre erreur
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
qa360 doctor --fix > diagnostic.txt
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
Envoyez `diagnostic.txt` sur :
|
|
178
|
-
- Discord : https://discord.gg/qa360
|
|
179
|
-
- GitHub : https://github.com/xyqotech/qa360/issues
|
|
180
|
-
|
|
181
|
-
---
|
|
182
|
-
|
|
183
|
-
## 📚 En Savoir Plus
|
|
184
|
-
|
|
185
|
-
- [Programme Beta Test](./docs/BETA_TESTING.md) - Participez au beta !
|
|
186
|
-
- [Guide Utilisateur Complet](./docs/USER_GUIDE.md) - Toutes les fonctionnalités
|
|
187
|
-
- [Documentation Technique](./docs/ARCHITECTURE.md) - Comment ça marche
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
**C'est tout !** Vous savez utiliser QA360 en 5 minutes 🚀
|
package/cli/CHANGELOG.md
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
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.
|