quality-intelligence-engine 2.2.3 → 2.2.5
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/.github/workflows/playwright.yml +27 -0
- package/.github/workflows/quality-intelligence.yml +45 -0
- package/CHANGELOG.md +164 -0
- package/REFACTORING_SUMMARY.md +417 -0
- package/artifacts/failure-analysis/run-1769595909824-login_with_valid_user.md +25 -0
- package/artifacts/failure-analysis/run-1769596445203-login_with_valid_user.md +25 -0
- package/artifacts/failure-analysis/run-1769596573162-login_with_valid_user.md +34 -0
- package/artifacts/failure-analysis/run-1769596591727-login_with_valid_user.md +25 -0
- package/artifacts/failure-analysis/run-1769596600117-login_with_valid_user.md +34 -0
- package/artifacts/failure-analysis/run-1769596782107-login_with_valid_user.md +32 -0
- package/artifacts/failure-analysis/run-1769596940770-login_with_valid_user.md +28 -0
- package/artifacts/failure-analysis/run-1769596960417-login_with_valid_user.md +28 -0
- package/artifacts/failure-analysis/run-1769596981303-login_with_valid_user.md +28 -0
- package/artifacts/failure-analysis/run-1769597351831-login_with_valid_user.md +21 -0
- package/artifacts/failure-analysis/run-1769597486816-login_with_valid_user.md +21 -0
- package/artifacts/failure-analysis/run-1769599708378-login_with_valid_user.md +22 -0
- package/artifacts/failure-analysis/run-1769600327960-login_with_valid_user.md +22 -0
- package/artifacts/failure-analysis/run-1769600596201-saucedemo__login_fails_with_wrong_password_fail.md +22 -0
- package/artifacts/failure-analysis/run-1769600682675-saucedemo__login_fails_with_wrong_password_fail.md +22 -0
- package/artifacts/failure-analysis/run-1769602090701-saucedemo__add_to_cart_button_is_hidden_fail.md +30 -0
- package/artifacts/failure-analysis/run-1769602090701-saucedemo__cart_count_updates_to_2_after_adding_one_item_fail.md +30 -0
- package/artifacts/failure-analysis/run-1769602090701-saucedemo__checkout_navigates_to_payment_page_directly_fail.md +30 -0
- package/artifacts/failure-analysis/run-1769602090701-saucedemo__inventory_shows_10_products_fail.md +30 -0
- package/artifacts/failure-analysis/run-1769602090701-saucedemo__products_sorted_high_to_low_start_with_999_fail.md +30 -0
- package/artifacts/failure-history/1769696674298.json +9 -0
- package/artifacts/failure-history/1769697768622.json +10 -0
- package/artifacts/failure-history/1769697923557.json +10 -0
- package/artifacts/failure-history/1769698160213.json +11 -0
- package/artifacts/failure-history/1769698353440.json +11 -0
- package/artifacts/failure-history/1769698763306.json +11 -0
- package/artifacts/failure-history/1769698878947.json +11 -0
- package/artifacts/failure-history/1769699909817.json +11 -0
- package/artifacts/failure-history/1769703130913.json +11 -0
- package/artifacts/failure-history/1769703142113.json +11 -0
- package/artifacts/failure-history/1769703158978.json +11 -0
- package/artifacts/failure-history/1769703406025.json +11 -0
- package/artifacts/failure-history/1769703422720.json +11 -0
- package/artifacts/failure-history/1769703518837.json +11 -0
- package/artifacts/failure-history/1769703530419.json +11 -0
- package/artifacts/failure-history/1769703577078.json +11 -0
- package/artifacts/failure-history/1769704067098.json +11 -0
- package/artifacts/failure-history/1769704074618.json +11 -0
- package/artifacts/failure-history/1769704084948.json +11 -0
- package/artifacts/failure-history/1769704091950.json +11 -0
- package/artifacts/failure-history/1769704435355.json +11 -0
- package/artifacts/failure-history/1769704832871.json +11 -0
- package/artifacts/failure-history/1769707051830.json +11 -0
- package/artifacts/failure-history/1769739820395.json +11 -0
- package/artifacts/failure-history/1769739820400.json +11 -0
- package/artifacts/failure-history/1769742422254.json +11 -0
- package/artifacts/failure-history/1769743106016.json +11 -0
- package/artifacts/failure-history/1769743121857.json +11 -0
- package/artifacts/failure-history/1769750875212.json +11 -0
- package/artifacts/failure-history/1769750880790.json +11 -0
- package/artifacts/failure-history/1769761177923.json +11 -0
- package/artifacts/failure-history/1769761191176.json +11 -0
- package/bin/qi.ts +37 -0
- package/config/agent.config.json +18 -0
- package/data/failures/fingerprints/0ded7b45.json +10 -0
- package/data/failures/fingerprints/2437666a.json +8 -0
- package/data/failures/fingerprints/3746e3b4.json +42 -0
- package/data/failures/fingerprints/533e258f.json +10 -0
- package/data/failures/fingerprints/56b547d3.json +10 -0
- package/data/failures/fingerprints/693661fa.json +10 -0
- package/data/failures/fingerprints/789126b1.json +8 -0
- package/data/failures/fingerprints/936d995e.json +10 -0
- package/data/failures/fingerprints/ba5f6c0a.json +10 -0
- package/data/failures/fingerprints/f148a261.json +56 -0
- package/data/failures/fingerprints/fa14440f.json +14 -0
- package/data/failures/registry.json +57 -0
- package/data/flakiness/history.json +71 -0
- package/dist/bin/qi.js +0 -0
- package/dist/src/intelligence/failure-fingerprinting/failure.classifier.js +5 -1
- package/dist/src/intelligence/failure-fingerprinting/failure.tracker.js +5 -0
- package/dist/src/playwright/qi.reporter.js +17 -0
- package/final.sanity.test.ts +46 -0
- package/input/raw-failure.json +36 -0
- package/input/raw-pass.json +33 -0
- package/output/run-2026-01-28_02-48-38-420/BACKEND_API_FAILURE-AuthController.java-/users/{id}/analysis.md +50 -0
- package/output/run-2026-01-28_02-48-38-420/TEST_FAILURE-Unknown--/analysis.md +50 -0
- package/output/run-2026-01-28_02-48-52-140/BACKEND_API_FAILURE-AuthController.java-/users/{id}/analysis.md +50 -0
- package/output/run-2026-01-28_02-48-52-140/TEST_FAILURE-Unknown--/analysis.md +50 -0
- package/output/run-2026-01-28_03-13-16-302/BACKEND_API_FAILURE-AuthController.java-/users/{id}/analysis.md +50 -0
- package/output/run-2026-01-28_03-13-16-302/PASS-checkout.spec.ts-API_WARNING/analysis.md +49 -0
- package/output/run-2026-01-28_03-13-16-302/PASS-login.spec.ts-FLAKY_PASS/analysis.md +49 -0
- package/output/run-2026-01-28_03-13-16-302/TEST_FAILURE-Unknown--/analysis.md +50 -0
- package/output/run-2026-01-28_03-29-49-786/BACKEND_API_FAILURE-AuthController.java-/users/{id}/analysis.md +50 -0
- package/package.json +4 -10
- package/playwright-results/.last-run.json +17 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--chromium/error-context.md +31 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--chromium/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--chromium/trace.zip +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--chromium/video.webm +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--chromium-retry1/error-context.md +31 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--chromium-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--chromium-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--chromium-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--firefox/error-context.md +31 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--firefox/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--firefox/trace.zip +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--firefox/video.webm +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--firefox-retry1/error-context.md +31 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--firefox-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--firefox-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--firefox-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--webkit/error-context.md +31 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--webkit/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--webkit/trace.zip +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--webkit/video.webm +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--webkit-retry1/error-context.md +31 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--webkit-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--webkit-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-email-like-valid-d5dc6-rname-format-rejected-FAIL--webkit-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--chromium/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--chromium/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--chromium/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--chromium/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--chromium-retry1/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--chromium-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--chromium-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--chromium-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--firefox/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--firefox/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--firefox/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--firefox/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--firefox-retry1/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--firefox-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--firefox-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--firefox-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--webkit/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--webkit/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--webkit/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--webkit/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--webkit-retry1/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--webkit-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--webkit-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-7c4f3-to-cart-button-hidden-FAIL--webkit-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--chromium/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--chromium/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--chromium/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--chromium/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--chromium-retry1/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--chromium-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--chromium-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--chromium-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--firefox/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--firefox/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--firefox/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--firefox/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--firefox-retry1/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--firefox-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--firefox-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--firefox-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--webkit/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--webkit/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--webkit/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--webkit/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--webkit-retry1/error-context.md +112 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--webkit-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--webkit-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-cd423-entory-count-mismatch-FAIL--webkit-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--chromium/error-context.md +31 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--chromium/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--chromium/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--chromium/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--chromium-retry1/error-context.md +31 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--chromium-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--chromium-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--chromium-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--firefox/error-context.md +31 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--firefox/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--firefox/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--firefox/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--firefox-retry1/error-context.md +31 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--firefox-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--firefox-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--firefox-retry1/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--webkit/error-context.md +31 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--webkit/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--webkit/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--webkit/video.webm +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--webkit-retry1/error-context.md +31 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--webkit-retry1/test-failed-1.png +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--webkit-retry1/trace.zip +0 -0
- package/playwright-results/saucedemo-numeric-mismatch-f085e-E-unauthorized-access-FAIL--webkit-retry1/video.webm +0 -0
- package/playwright.config.ts +42 -0
- package/quality-intelligence-engine-2.2.0.tgz +0 -0
- package/quality-intelligence-engine-2.2.2.tgz +0 -0
- package/sanity.test.ts +33 -0
- package/src/adapters/playwright-folder.adapter.ts +85 -0
- package/src/adapters/playwright-json.adapter.ts +49 -0
- package/src/adapters/playwright.adapter.ts +44 -0
- package/src/cli/qi-test.ts +20 -0
- package/src/cli/qi.ts +67 -0
- package/src/cli/ui/divider.ts +9 -0
- package/src/cli/ui/failureLogger.ts +33 -0
- package/src/configLoader.ts +70 -0
- package/src/console/issue-view.ts +193 -0
- package/src/failure-analysis/failure-analyzer.ts +43 -0
- package/src/final-run.ts +174 -0
- package/src/final-runner.ts +31 -0
- package/src/fixtures/networkCollector.ts +27 -0
- package/src/history/failure-history.store.ts +23 -0
- package/src/history/failure-history.types.ts +12 -0
- package/src/history/failure-trend.analyzer.ts +49 -0
- package/src/index.ts +10 -0
- package/src/integrations/ci/ci-annotator.ts +42 -0
- package/src/intelligence/confidence-calibration.engine.ts +41 -0
- package/src/intelligence/decision-intelligence/confidence.engine.ts +18 -0
- package/src/intelligence/decision-intelligence/decision.config.ts +18 -0
- package/src/intelligence/decision-intelligence/decision.engine.ts +30 -0
- package/src/intelligence/decision-intelligence/decision.types.ts +15 -0
- package/src/intelligence/failure-fingerprinting/failure.classifier.ts +61 -0
- package/src/intelligence/failure-fingerprinting/failure.store.ts +42 -0
- package/src/intelligence/failure-fingerprinting/failure.tracker.ts +28 -0
- package/src/intelligence/failure-fingerprinting/fingerprint.generator.ts +28 -0
- package/src/intelligence/failure-fingerprinting/fingerprint.types.ts +14 -0
- package/src/intelligence/flakiness-intelligence/flakiness.analyzer.ts +23 -0
- package/src/intelligence/flakiness-intelligence/flakiness.fingerprint.ts +14 -0
- package/src/intelligence/flakiness-intelligence/flakiness.store.ts +24 -0
- package/src/intelligence/flakiness-intelligence/flakiness.tracker.ts +42 -0
- package/src/intelligence/flakiness-intelligence/flakiness.types.ts +8 -0
- package/src/intelligence/intelligence.pipeline.ts +20 -0
- package/src/intelligence/llm-explainer.ts +29 -0
- package/src/intelligence/root-cause/rootcause.engine.ts +46 -0
- package/src/intelligence/trend-intelligence/trend.engine.ts +42 -0
- package/src/markdownWriter.ts +68 -0
- package/src/normalizer.ts +31 -0
- package/src/passAnalyzer.ts +38 -0
- package/src/pipeline/ai.summarizer.ts +39 -0
- package/src/pipeline/failure-analysis.pipeline.ts +13 -0
- package/src/pipeline/failure-grouping.pipeline.ts +88 -0
- package/src/playwright/qi.reporter.ts +26 -0
- package/src/reporter.ts +88 -0
- package/src/reporters/qi-reporter.js +34 -0
- package/src/rules.ts +35 -0
- package/src/runManager.ts +21 -0
- package/src/runner.ts +12 -0
- package/src/runtime/networkCollector.ts +36 -0
- package/src/stackParser.ts +22 -0
- package/src/test-run.ts +59 -0
- package/src/types/analysis-result.ts +16 -0
- package/src/types/failure.types.ts +28 -0
- package/src/types/playwright-failure.ts +10 -0
- package/src/types.ts +102 -0
- package/src/utils/artifact.locator.ts +42 -0
- package/src/utils/confidence-constants.ts +111 -0
- package/src/utils/file-utils.ts +146 -0
- package/src/v2/llm/llm-advisor.ts +22 -0
- package/src/v2/pipeline/v2-intelligence.pipeline.ts +21 -0
- package/src/v2/self-healing/self-healer.ts +60 -0
- package/src/v2/trace-intelligence/trace-analyzer.ts +42 -0
- package/src/v2-test-run.ts +74 -0
- package/tests/fixtures.ts +40 -0
- package/tests/saucedemo-login-validation.spec.ts +74 -0
- package/tsconfig.json +16 -0
- package/tsconfig.playwright.json +13 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Page snapshot
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
- generic [ref=e3]:
|
|
5
|
+
- generic [ref=e4]: Swag Labs
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e9]:
|
|
8
|
+
- generic [ref=e10]:
|
|
9
|
+
- textbox "Username" [ref=e11]: invalid-email@
|
|
10
|
+
- img [ref=e12]
|
|
11
|
+
- generic [ref=e14]:
|
|
12
|
+
- textbox "Password" [ref=e15]: secret_sauce
|
|
13
|
+
- img [ref=e16]
|
|
14
|
+
- 'heading "Epic sadface: Username and password do not match any user in this service" [level=3] [ref=e19]':
|
|
15
|
+
- button [ref=e20] [cursor=pointer]:
|
|
16
|
+
- img [ref=e21]
|
|
17
|
+
- text: "Epic sadface: Username and password do not match any user in this service"
|
|
18
|
+
- button "Login" [active] [ref=e23] [cursor=pointer]
|
|
19
|
+
- generic [ref=e25]:
|
|
20
|
+
- generic [ref=e26]:
|
|
21
|
+
- heading "Accepted usernames are:" [level=4] [ref=e27]
|
|
22
|
+
- text: standard_user
|
|
23
|
+
- text: locked_out_user
|
|
24
|
+
- text: problem_user
|
|
25
|
+
- text: performance_glitch_user
|
|
26
|
+
- text: error_user
|
|
27
|
+
- text: visual_user
|
|
28
|
+
- generic [ref=e28]:
|
|
29
|
+
- heading "Password for all users:" [level=4] [ref=e29]
|
|
30
|
+
- text: secret_sauce
|
|
31
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Page snapshot
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
- generic [ref=e3]:
|
|
5
|
+
- generic [ref=e4]: Swag Labs
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e9]:
|
|
8
|
+
- generic [ref=e10]:
|
|
9
|
+
- textbox "Username" [ref=e11]: invalid-email@
|
|
10
|
+
- img [ref=e12]
|
|
11
|
+
- generic [ref=e14]:
|
|
12
|
+
- textbox "Password" [ref=e15]: secret_sauce
|
|
13
|
+
- img [ref=e16]
|
|
14
|
+
- 'heading "Epic sadface: Username and password do not match any user in this service" [level=3] [ref=e19]':
|
|
15
|
+
- button [ref=e20] [cursor=pointer]:
|
|
16
|
+
- img [ref=e21]
|
|
17
|
+
- text: "Epic sadface: Username and password do not match any user in this service"
|
|
18
|
+
- button "Login" [active] [ref=e23] [cursor=pointer]
|
|
19
|
+
- generic [ref=e25]:
|
|
20
|
+
- generic [ref=e26]:
|
|
21
|
+
- heading "Accepted usernames are:" [level=4] [ref=e27]
|
|
22
|
+
- text: standard_user
|
|
23
|
+
- text: locked_out_user
|
|
24
|
+
- text: problem_user
|
|
25
|
+
- text: performance_glitch_user
|
|
26
|
+
- text: error_user
|
|
27
|
+
- text: visual_user
|
|
28
|
+
- generic [ref=e28]:
|
|
29
|
+
- heading "Password for all users:" [level=4] [ref=e29]
|
|
30
|
+
- text: secret_sauce
|
|
31
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Page snapshot
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
- generic [ref=e3]:
|
|
5
|
+
- generic [ref=e4]: Swag Labs
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e9]:
|
|
8
|
+
- generic [ref=e10]:
|
|
9
|
+
- textbox "Username" [ref=e11]: invalid-email@
|
|
10
|
+
- img [ref=e12]
|
|
11
|
+
- generic [ref=e14]:
|
|
12
|
+
- textbox "Password" [ref=e15]: secret_sauce
|
|
13
|
+
- img [ref=e16]
|
|
14
|
+
- 'heading "Epic sadface: Username and password do not match any user in this service" [level=3] [ref=e19]':
|
|
15
|
+
- button [ref=e20] [cursor=pointer]:
|
|
16
|
+
- img [ref=e21]
|
|
17
|
+
- text: "Epic sadface: Username and password do not match any user in this service"
|
|
18
|
+
- button "Login" [active] [ref=e23] [cursor=pointer]
|
|
19
|
+
- generic [ref=e25]:
|
|
20
|
+
- generic [ref=e26]:
|
|
21
|
+
- heading "Accepted usernames are:" [level=4] [ref=e27]
|
|
22
|
+
- text: standard_user
|
|
23
|
+
- text: locked_out_user
|
|
24
|
+
- text: problem_user
|
|
25
|
+
- text: performance_glitch_user
|
|
26
|
+
- text: error_user
|
|
27
|
+
- text: visual_user
|
|
28
|
+
- generic [ref=e28]:
|
|
29
|
+
- heading "Password for all users:" [level=4] [ref=e29]
|
|
30
|
+
- text: secret_sauce
|
|
31
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Page snapshot
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
- generic [ref=e3]:
|
|
5
|
+
- generic [ref=e4]: Swag Labs
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e9]:
|
|
8
|
+
- generic [ref=e10]:
|
|
9
|
+
- textbox "Username" [ref=e11]: invalid-email@
|
|
10
|
+
- img [ref=e12]
|
|
11
|
+
- generic [ref=e14]:
|
|
12
|
+
- textbox "Password" [ref=e15]: secret_sauce
|
|
13
|
+
- img [ref=e16]
|
|
14
|
+
- 'heading "Epic sadface: Username and password do not match any user in this service" [level=3] [ref=e19]':
|
|
15
|
+
- button [ref=e20] [cursor=pointer]:
|
|
16
|
+
- img [ref=e21]
|
|
17
|
+
- text: "Epic sadface: Username and password do not match any user in this service"
|
|
18
|
+
- button "Login" [ref=e23] [cursor=pointer]
|
|
19
|
+
- generic [ref=e25]:
|
|
20
|
+
- generic [ref=e26]:
|
|
21
|
+
- heading "Accepted usernames are:" [level=4] [ref=e27]
|
|
22
|
+
- text: standard_user
|
|
23
|
+
- text: locked_out_user
|
|
24
|
+
- text: problem_user
|
|
25
|
+
- text: performance_glitch_user
|
|
26
|
+
- text: error_user
|
|
27
|
+
- text: visual_user
|
|
28
|
+
- generic [ref=e28]:
|
|
29
|
+
- heading "Password for all users:" [level=4] [ref=e29]
|
|
30
|
+
- text: secret_sauce
|
|
31
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Page snapshot
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
- generic [ref=e3]:
|
|
5
|
+
- generic [ref=e4]: Swag Labs
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e9]:
|
|
8
|
+
- generic [ref=e10]:
|
|
9
|
+
- textbox "Username" [ref=e11]: invalid-email@
|
|
10
|
+
- img [ref=e12]
|
|
11
|
+
- generic [ref=e14]:
|
|
12
|
+
- textbox "Password" [ref=e15]: secret_sauce
|
|
13
|
+
- img [ref=e16]
|
|
14
|
+
- 'heading "Epic sadface: Username and password do not match any user in this service" [level=3] [ref=e19]':
|
|
15
|
+
- button [ref=e20] [cursor=pointer]:
|
|
16
|
+
- img [ref=e21]
|
|
17
|
+
- text: "Epic sadface: Username and password do not match any user in this service"
|
|
18
|
+
- button "Login" [ref=e23] [cursor=pointer]
|
|
19
|
+
- generic [ref=e25]:
|
|
20
|
+
- generic [ref=e26]:
|
|
21
|
+
- heading "Accepted usernames are:" [level=4] [ref=e27]
|
|
22
|
+
- text: standard_user
|
|
23
|
+
- text: locked_out_user
|
|
24
|
+
- text: problem_user
|
|
25
|
+
- text: performance_glitch_user
|
|
26
|
+
- text: error_user
|
|
27
|
+
- text: visual_user
|
|
28
|
+
- generic [ref=e28]:
|
|
29
|
+
- heading "Password for all users:" [level=4] [ref=e29]
|
|
30
|
+
- text: secret_sauce
|
|
31
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Page snapshot
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
- generic [ref=e3]:
|
|
5
|
+
- generic [ref=e4]:
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e6]:
|
|
8
|
+
- generic [ref=e7]:
|
|
9
|
+
- button "Open Menu" [ref=e8] [cursor=pointer]
|
|
10
|
+
- img "Open Menu" [ref=e9]
|
|
11
|
+
- generic [ref=e11]: Swag Labs
|
|
12
|
+
- generic [ref=e14]:
|
|
13
|
+
- generic [ref=e15]: Products
|
|
14
|
+
- generic [ref=e17] [cursor=pointer]:
|
|
15
|
+
- generic [ref=e18]: Name (A to Z)
|
|
16
|
+
- combobox [ref=e19]:
|
|
17
|
+
- option "Name (A to Z)" [selected]
|
|
18
|
+
- option "Name (Z to A)"
|
|
19
|
+
- option "Price (low to high)"
|
|
20
|
+
- option "Price (high to low)"
|
|
21
|
+
- generic [ref=e23]:
|
|
22
|
+
- generic [ref=e24]:
|
|
23
|
+
- link "Sauce Labs Backpack" [ref=e26] [cursor=pointer]:
|
|
24
|
+
- /url: "#"
|
|
25
|
+
- img "Sauce Labs Backpack" [ref=e27]
|
|
26
|
+
- generic [ref=e28]:
|
|
27
|
+
- generic [ref=e29]:
|
|
28
|
+
- link "Sauce Labs Backpack" [ref=e30] [cursor=pointer]:
|
|
29
|
+
- /url: "#"
|
|
30
|
+
- generic [ref=e31]: Sauce Labs Backpack
|
|
31
|
+
- generic [ref=e32]: carry.allTheThings() with the sleek, streamlined Sly Pack that melds uncompromising style with unequaled laptop and tablet protection.
|
|
32
|
+
- generic [ref=e33]:
|
|
33
|
+
- generic [ref=e34]: $29.99
|
|
34
|
+
- button "Add to cart" [ref=e35] [cursor=pointer]
|
|
35
|
+
- generic [ref=e36]:
|
|
36
|
+
- link "Sauce Labs Bike Light" [ref=e38] [cursor=pointer]:
|
|
37
|
+
- /url: "#"
|
|
38
|
+
- img "Sauce Labs Bike Light" [ref=e39]
|
|
39
|
+
- generic [ref=e40]:
|
|
40
|
+
- generic [ref=e41]:
|
|
41
|
+
- link "Sauce Labs Bike Light" [ref=e42] [cursor=pointer]:
|
|
42
|
+
- /url: "#"
|
|
43
|
+
- generic [ref=e43]: Sauce Labs Bike Light
|
|
44
|
+
- generic [ref=e44]: A red light isn't the desired state in testing but it sure helps when riding your bike at night. Water-resistant with 3 lighting modes, 1 AAA battery included.
|
|
45
|
+
- generic [ref=e45]:
|
|
46
|
+
- generic [ref=e46]: $9.99
|
|
47
|
+
- button "Add to cart" [ref=e47] [cursor=pointer]
|
|
48
|
+
- generic [ref=e48]:
|
|
49
|
+
- link "Sauce Labs Bolt T-Shirt" [ref=e50] [cursor=pointer]:
|
|
50
|
+
- /url: "#"
|
|
51
|
+
- img "Sauce Labs Bolt T-Shirt" [ref=e51]
|
|
52
|
+
- generic [ref=e52]:
|
|
53
|
+
- generic [ref=e53]:
|
|
54
|
+
- link "Sauce Labs Bolt T-Shirt" [ref=e54] [cursor=pointer]:
|
|
55
|
+
- /url: "#"
|
|
56
|
+
- generic [ref=e55]: Sauce Labs Bolt T-Shirt
|
|
57
|
+
- generic [ref=e56]: Get your testing superhero on with the Sauce Labs bolt T-shirt. From American Apparel, 100% ringspun combed cotton, heather gray with red bolt.
|
|
58
|
+
- generic [ref=e57]:
|
|
59
|
+
- generic [ref=e58]: $15.99
|
|
60
|
+
- button "Add to cart" [ref=e59] [cursor=pointer]
|
|
61
|
+
- generic [ref=e60]:
|
|
62
|
+
- link "Sauce Labs Fleece Jacket" [ref=e62] [cursor=pointer]:
|
|
63
|
+
- /url: "#"
|
|
64
|
+
- img "Sauce Labs Fleece Jacket" [ref=e63]
|
|
65
|
+
- generic [ref=e64]:
|
|
66
|
+
- generic [ref=e65]:
|
|
67
|
+
- link "Sauce Labs Fleece Jacket" [ref=e66] [cursor=pointer]:
|
|
68
|
+
- /url: "#"
|
|
69
|
+
- generic [ref=e67]: Sauce Labs Fleece Jacket
|
|
70
|
+
- generic [ref=e68]: It's not every day that you come across a midweight quarter-zip fleece jacket capable of handling everything from a relaxing day outdoors to a busy day at the office.
|
|
71
|
+
- generic [ref=e69]:
|
|
72
|
+
- generic [ref=e70]: $49.99
|
|
73
|
+
- button "Add to cart" [ref=e71] [cursor=pointer]
|
|
74
|
+
- generic [ref=e72]:
|
|
75
|
+
- link "Sauce Labs Onesie" [ref=e74] [cursor=pointer]:
|
|
76
|
+
- /url: "#"
|
|
77
|
+
- img "Sauce Labs Onesie" [ref=e75]
|
|
78
|
+
- generic [ref=e76]:
|
|
79
|
+
- generic [ref=e77]:
|
|
80
|
+
- link "Sauce Labs Onesie" [ref=e78] [cursor=pointer]:
|
|
81
|
+
- /url: "#"
|
|
82
|
+
- generic [ref=e79]: Sauce Labs Onesie
|
|
83
|
+
- generic [ref=e80]: Rib snap infant onesie for the junior automation engineer in development. Reinforced 3-snap bottom closure, two-needle hemmed sleeved and bottom won't unravel.
|
|
84
|
+
- generic [ref=e81]:
|
|
85
|
+
- generic [ref=e82]: $7.99
|
|
86
|
+
- button "Add to cart" [ref=e83] [cursor=pointer]
|
|
87
|
+
- generic [ref=e84]:
|
|
88
|
+
- link "Test.allTheThings() T-Shirt (Red)" [ref=e86] [cursor=pointer]:
|
|
89
|
+
- /url: "#"
|
|
90
|
+
- img "Test.allTheThings() T-Shirt (Red)" [ref=e87]
|
|
91
|
+
- generic [ref=e88]:
|
|
92
|
+
- generic [ref=e89]:
|
|
93
|
+
- link "Test.allTheThings() T-Shirt (Red)" [ref=e90] [cursor=pointer]:
|
|
94
|
+
- /url: "#"
|
|
95
|
+
- generic [ref=e91]: Test.allTheThings() T-Shirt (Red)
|
|
96
|
+
- generic [ref=e92]: This classic Sauce Labs t-shirt is perfect to wear when cozying up to your keyboard to automate a few tests. Super-soft and comfy ringspun combed cotton.
|
|
97
|
+
- generic [ref=e93]:
|
|
98
|
+
- generic [ref=e94]: $15.99
|
|
99
|
+
- button "Add to cart" [ref=e95] [cursor=pointer]
|
|
100
|
+
- contentinfo [ref=e96]:
|
|
101
|
+
- list [ref=e97]:
|
|
102
|
+
- listitem [ref=e98]:
|
|
103
|
+
- link "Twitter" [ref=e99] [cursor=pointer]:
|
|
104
|
+
- /url: https://twitter.com/saucelabs
|
|
105
|
+
- listitem [ref=e100]:
|
|
106
|
+
- link "Facebook" [ref=e101] [cursor=pointer]:
|
|
107
|
+
- /url: https://www.facebook.com/saucelabs
|
|
108
|
+
- listitem [ref=e102]:
|
|
109
|
+
- link "LinkedIn" [ref=e103] [cursor=pointer]:
|
|
110
|
+
- /url: https://www.linkedin.com/company/sauce-labs/
|
|
111
|
+
- generic [ref=e104]: © 2026 Sauce Labs. All Rights Reserved. Terms of Service | Privacy Policy
|
|
112
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Page snapshot
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
- generic [ref=e3]:
|
|
5
|
+
- generic [ref=e4]:
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e6]:
|
|
8
|
+
- generic [ref=e7]:
|
|
9
|
+
- button "Open Menu" [ref=e8] [cursor=pointer]
|
|
10
|
+
- img "Open Menu" [ref=e9]
|
|
11
|
+
- generic [ref=e11]: Swag Labs
|
|
12
|
+
- generic [ref=e14]:
|
|
13
|
+
- generic [ref=e15]: Products
|
|
14
|
+
- generic [ref=e17] [cursor=pointer]:
|
|
15
|
+
- generic [ref=e18]: Name (A to Z)
|
|
16
|
+
- combobox [ref=e19]:
|
|
17
|
+
- option "Name (A to Z)" [selected]
|
|
18
|
+
- option "Name (Z to A)"
|
|
19
|
+
- option "Price (low to high)"
|
|
20
|
+
- option "Price (high to low)"
|
|
21
|
+
- generic [ref=e23]:
|
|
22
|
+
- generic [ref=e24]:
|
|
23
|
+
- link "Sauce Labs Backpack" [ref=e26] [cursor=pointer]:
|
|
24
|
+
- /url: "#"
|
|
25
|
+
- img "Sauce Labs Backpack" [ref=e27]
|
|
26
|
+
- generic [ref=e28]:
|
|
27
|
+
- generic [ref=e29]:
|
|
28
|
+
- link "Sauce Labs Backpack" [ref=e30] [cursor=pointer]:
|
|
29
|
+
- /url: "#"
|
|
30
|
+
- generic [ref=e31]: Sauce Labs Backpack
|
|
31
|
+
- generic [ref=e32]: carry.allTheThings() with the sleek, streamlined Sly Pack that melds uncompromising style with unequaled laptop and tablet protection.
|
|
32
|
+
- generic [ref=e33]:
|
|
33
|
+
- generic [ref=e34]: $29.99
|
|
34
|
+
- button "Add to cart" [ref=e35] [cursor=pointer]
|
|
35
|
+
- generic [ref=e36]:
|
|
36
|
+
- link "Sauce Labs Bike Light" [ref=e38] [cursor=pointer]:
|
|
37
|
+
- /url: "#"
|
|
38
|
+
- img "Sauce Labs Bike Light" [ref=e39]
|
|
39
|
+
- generic [ref=e40]:
|
|
40
|
+
- generic [ref=e41]:
|
|
41
|
+
- link "Sauce Labs Bike Light" [ref=e42] [cursor=pointer]:
|
|
42
|
+
- /url: "#"
|
|
43
|
+
- generic [ref=e43]: Sauce Labs Bike Light
|
|
44
|
+
- generic [ref=e44]: A red light isn't the desired state in testing but it sure helps when riding your bike at night. Water-resistant with 3 lighting modes, 1 AAA battery included.
|
|
45
|
+
- generic [ref=e45]:
|
|
46
|
+
- generic [ref=e46]: $9.99
|
|
47
|
+
- button "Add to cart" [ref=e47] [cursor=pointer]
|
|
48
|
+
- generic [ref=e48]:
|
|
49
|
+
- link "Sauce Labs Bolt T-Shirt" [ref=e50] [cursor=pointer]:
|
|
50
|
+
- /url: "#"
|
|
51
|
+
- img "Sauce Labs Bolt T-Shirt" [ref=e51]
|
|
52
|
+
- generic [ref=e52]:
|
|
53
|
+
- generic [ref=e53]:
|
|
54
|
+
- link "Sauce Labs Bolt T-Shirt" [ref=e54] [cursor=pointer]:
|
|
55
|
+
- /url: "#"
|
|
56
|
+
- generic [ref=e55]: Sauce Labs Bolt T-Shirt
|
|
57
|
+
- generic [ref=e56]: Get your testing superhero on with the Sauce Labs bolt T-shirt. From American Apparel, 100% ringspun combed cotton, heather gray with red bolt.
|
|
58
|
+
- generic [ref=e57]:
|
|
59
|
+
- generic [ref=e58]: $15.99
|
|
60
|
+
- button "Add to cart" [ref=e59] [cursor=pointer]
|
|
61
|
+
- generic [ref=e60]:
|
|
62
|
+
- link "Sauce Labs Fleece Jacket" [ref=e62] [cursor=pointer]:
|
|
63
|
+
- /url: "#"
|
|
64
|
+
- img "Sauce Labs Fleece Jacket" [ref=e63]
|
|
65
|
+
- generic [ref=e64]:
|
|
66
|
+
- generic [ref=e65]:
|
|
67
|
+
- link "Sauce Labs Fleece Jacket" [ref=e66] [cursor=pointer]:
|
|
68
|
+
- /url: "#"
|
|
69
|
+
- generic [ref=e67]: Sauce Labs Fleece Jacket
|
|
70
|
+
- generic [ref=e68]: It's not every day that you come across a midweight quarter-zip fleece jacket capable of handling everything from a relaxing day outdoors to a busy day at the office.
|
|
71
|
+
- generic [ref=e69]:
|
|
72
|
+
- generic [ref=e70]: $49.99
|
|
73
|
+
- button "Add to cart" [ref=e71] [cursor=pointer]
|
|
74
|
+
- generic [ref=e72]:
|
|
75
|
+
- link "Sauce Labs Onesie" [ref=e74] [cursor=pointer]:
|
|
76
|
+
- /url: "#"
|
|
77
|
+
- img "Sauce Labs Onesie" [ref=e75]
|
|
78
|
+
- generic [ref=e76]:
|
|
79
|
+
- generic [ref=e77]:
|
|
80
|
+
- link "Sauce Labs Onesie" [ref=e78] [cursor=pointer]:
|
|
81
|
+
- /url: "#"
|
|
82
|
+
- generic [ref=e79]: Sauce Labs Onesie
|
|
83
|
+
- generic [ref=e80]: Rib snap infant onesie for the junior automation engineer in development. Reinforced 3-snap bottom closure, two-needle hemmed sleeved and bottom won't unravel.
|
|
84
|
+
- generic [ref=e81]:
|
|
85
|
+
- generic [ref=e82]: $7.99
|
|
86
|
+
- button "Add to cart" [ref=e83] [cursor=pointer]
|
|
87
|
+
- generic [ref=e84]:
|
|
88
|
+
- link "Test.allTheThings() T-Shirt (Red)" [ref=e86] [cursor=pointer]:
|
|
89
|
+
- /url: "#"
|
|
90
|
+
- img "Test.allTheThings() T-Shirt (Red)" [ref=e87]
|
|
91
|
+
- generic [ref=e88]:
|
|
92
|
+
- generic [ref=e89]:
|
|
93
|
+
- link "Test.allTheThings() T-Shirt (Red)" [ref=e90] [cursor=pointer]:
|
|
94
|
+
- /url: "#"
|
|
95
|
+
- generic [ref=e91]: Test.allTheThings() T-Shirt (Red)
|
|
96
|
+
- generic [ref=e92]: This classic Sauce Labs t-shirt is perfect to wear when cozying up to your keyboard to automate a few tests. Super-soft and comfy ringspun combed cotton.
|
|
97
|
+
- generic [ref=e93]:
|
|
98
|
+
- generic [ref=e94]: $15.99
|
|
99
|
+
- button "Add to cart" [ref=e95] [cursor=pointer]
|
|
100
|
+
- contentinfo [ref=e96]:
|
|
101
|
+
- list [ref=e97]:
|
|
102
|
+
- listitem [ref=e98]:
|
|
103
|
+
- link "Twitter" [ref=e99] [cursor=pointer]:
|
|
104
|
+
- /url: https://twitter.com/saucelabs
|
|
105
|
+
- listitem [ref=e100]:
|
|
106
|
+
- link "Facebook" [ref=e101] [cursor=pointer]:
|
|
107
|
+
- /url: https://www.facebook.com/saucelabs
|
|
108
|
+
- listitem [ref=e102]:
|
|
109
|
+
- link "LinkedIn" [ref=e103] [cursor=pointer]:
|
|
110
|
+
- /url: https://www.linkedin.com/company/sauce-labs/
|
|
111
|
+
- generic [ref=e104]: © 2026 Sauce Labs. All Rights Reserved. Terms of Service | Privacy Policy
|
|
112
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Page snapshot
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
- generic [ref=e3]:
|
|
5
|
+
- generic [ref=e4]:
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e6]:
|
|
8
|
+
- generic [ref=e7]:
|
|
9
|
+
- button "Open Menu" [ref=e8] [cursor=pointer]
|
|
10
|
+
- img "Open Menu" [ref=e9]
|
|
11
|
+
- generic [ref=e11]: Swag Labs
|
|
12
|
+
- generic [ref=e14]:
|
|
13
|
+
- generic [ref=e15]: Products
|
|
14
|
+
- generic [ref=e17] [cursor=pointer]:
|
|
15
|
+
- generic [ref=e18]: Name (A to Z)
|
|
16
|
+
- combobox [ref=e19]:
|
|
17
|
+
- option "Name (A to Z)" [selected]
|
|
18
|
+
- option "Name (Z to A)"
|
|
19
|
+
- option "Price (low to high)"
|
|
20
|
+
- option "Price (high to low)"
|
|
21
|
+
- generic [ref=e23]:
|
|
22
|
+
- generic [ref=e24]:
|
|
23
|
+
- link "Sauce Labs Backpack" [ref=e26] [cursor=pointer]:
|
|
24
|
+
- /url: "#"
|
|
25
|
+
- img "Sauce Labs Backpack" [ref=e27]
|
|
26
|
+
- generic [ref=e28]:
|
|
27
|
+
- generic [ref=e29]:
|
|
28
|
+
- link "Sauce Labs Backpack" [ref=e30] [cursor=pointer]:
|
|
29
|
+
- /url: "#"
|
|
30
|
+
- generic [ref=e31]: Sauce Labs Backpack
|
|
31
|
+
- generic [ref=e32]: carry.allTheThings() with the sleek, streamlined Sly Pack that melds uncompromising style with unequaled laptop and tablet protection.
|
|
32
|
+
- generic [ref=e33]:
|
|
33
|
+
- generic [ref=e34]: $29.99
|
|
34
|
+
- button "Add to cart" [ref=e35] [cursor=pointer]
|
|
35
|
+
- generic [ref=e36]:
|
|
36
|
+
- link "Sauce Labs Bike Light" [ref=e38] [cursor=pointer]:
|
|
37
|
+
- /url: "#"
|
|
38
|
+
- img "Sauce Labs Bike Light" [ref=e39]
|
|
39
|
+
- generic [ref=e40]:
|
|
40
|
+
- generic [ref=e41]:
|
|
41
|
+
- link "Sauce Labs Bike Light" [ref=e42] [cursor=pointer]:
|
|
42
|
+
- /url: "#"
|
|
43
|
+
- generic [ref=e43]: Sauce Labs Bike Light
|
|
44
|
+
- generic [ref=e44]: A red light isn't the desired state in testing but it sure helps when riding your bike at night. Water-resistant with 3 lighting modes, 1 AAA battery included.
|
|
45
|
+
- generic [ref=e45]:
|
|
46
|
+
- generic [ref=e46]: $9.99
|
|
47
|
+
- button "Add to cart" [ref=e47] [cursor=pointer]
|
|
48
|
+
- generic [ref=e48]:
|
|
49
|
+
- link "Sauce Labs Bolt T-Shirt" [ref=e50] [cursor=pointer]:
|
|
50
|
+
- /url: "#"
|
|
51
|
+
- img "Sauce Labs Bolt T-Shirt" [ref=e51]
|
|
52
|
+
- generic [ref=e52]:
|
|
53
|
+
- generic [ref=e53]:
|
|
54
|
+
- link "Sauce Labs Bolt T-Shirt" [ref=e54] [cursor=pointer]:
|
|
55
|
+
- /url: "#"
|
|
56
|
+
- generic [ref=e55]: Sauce Labs Bolt T-Shirt
|
|
57
|
+
- generic [ref=e56]: Get your testing superhero on with the Sauce Labs bolt T-shirt. From American Apparel, 100% ringspun combed cotton, heather gray with red bolt.
|
|
58
|
+
- generic [ref=e57]:
|
|
59
|
+
- generic [ref=e58]: $15.99
|
|
60
|
+
- button "Add to cart" [ref=e59] [cursor=pointer]
|
|
61
|
+
- generic [ref=e60]:
|
|
62
|
+
- link "Sauce Labs Fleece Jacket" [ref=e62] [cursor=pointer]:
|
|
63
|
+
- /url: "#"
|
|
64
|
+
- img "Sauce Labs Fleece Jacket" [ref=e63]
|
|
65
|
+
- generic [ref=e64]:
|
|
66
|
+
- generic [ref=e65]:
|
|
67
|
+
- link "Sauce Labs Fleece Jacket" [ref=e66] [cursor=pointer]:
|
|
68
|
+
- /url: "#"
|
|
69
|
+
- generic [ref=e67]: Sauce Labs Fleece Jacket
|
|
70
|
+
- generic [ref=e68]: It's not every day that you come across a midweight quarter-zip fleece jacket capable of handling everything from a relaxing day outdoors to a busy day at the office.
|
|
71
|
+
- generic [ref=e69]:
|
|
72
|
+
- generic [ref=e70]: $49.99
|
|
73
|
+
- button "Add to cart" [ref=e71] [cursor=pointer]
|
|
74
|
+
- generic [ref=e72]:
|
|
75
|
+
- link "Sauce Labs Onesie" [ref=e74] [cursor=pointer]:
|
|
76
|
+
- /url: "#"
|
|
77
|
+
- img "Sauce Labs Onesie" [ref=e75]
|
|
78
|
+
- generic [ref=e76]:
|
|
79
|
+
- generic [ref=e77]:
|
|
80
|
+
- link "Sauce Labs Onesie" [ref=e78] [cursor=pointer]:
|
|
81
|
+
- /url: "#"
|
|
82
|
+
- generic [ref=e79]: Sauce Labs Onesie
|
|
83
|
+
- generic [ref=e80]: Rib snap infant onesie for the junior automation engineer in development. Reinforced 3-snap bottom closure, two-needle hemmed sleeved and bottom won't unravel.
|
|
84
|
+
- generic [ref=e81]:
|
|
85
|
+
- generic [ref=e82]: $7.99
|
|
86
|
+
- button "Add to cart" [ref=e83] [cursor=pointer]
|
|
87
|
+
- generic [ref=e84]:
|
|
88
|
+
- link "Test.allTheThings() T-Shirt (Red)" [ref=e86] [cursor=pointer]:
|
|
89
|
+
- /url: "#"
|
|
90
|
+
- img "Test.allTheThings() T-Shirt (Red)" [ref=e87]
|
|
91
|
+
- generic [ref=e88]:
|
|
92
|
+
- generic [ref=e89]:
|
|
93
|
+
- link "Test.allTheThings() T-Shirt (Red)" [ref=e90] [cursor=pointer]:
|
|
94
|
+
- /url: "#"
|
|
95
|
+
- generic [ref=e91]: Test.allTheThings() T-Shirt (Red)
|
|
96
|
+
- generic [ref=e92]: This classic Sauce Labs t-shirt is perfect to wear when cozying up to your keyboard to automate a few tests. Super-soft and comfy ringspun combed cotton.
|
|
97
|
+
- generic [ref=e93]:
|
|
98
|
+
- generic [ref=e94]: $15.99
|
|
99
|
+
- button "Add to cart" [ref=e95] [cursor=pointer]
|
|
100
|
+
- contentinfo [ref=e96]:
|
|
101
|
+
- list [ref=e97]:
|
|
102
|
+
- listitem [ref=e98]:
|
|
103
|
+
- link "Twitter" [ref=e99] [cursor=pointer]:
|
|
104
|
+
- /url: https://twitter.com/saucelabs
|
|
105
|
+
- listitem [ref=e100]:
|
|
106
|
+
- link "Facebook" [ref=e101] [cursor=pointer]:
|
|
107
|
+
- /url: https://www.facebook.com/saucelabs
|
|
108
|
+
- listitem [ref=e102]:
|
|
109
|
+
- link "LinkedIn" [ref=e103] [cursor=pointer]:
|
|
110
|
+
- /url: https://www.linkedin.com/company/sauce-labs/
|
|
111
|
+
- generic [ref=e104]: © 2026 Sauce Labs. All Rights Reserved. Terms of Service | Privacy Policy
|
|
112
|
+
```
|
|
Binary file
|
|
Binary file
|