{"adoption": {"forks": 278, "observed_at": "2026-08-28T04:08:32.874262+00:00", "stars": 4035}, "canonical_url": "https://ross.abutalabs.com/products/huxley", "card": {"archived": true, "artifact_type": "cli-tool", "description": "A testing system for catching visual regressions in Web applications.", "domain": ["testing", "web-development", "frontend", "developer-tools"], "enriched": true, "function": ["testing", "e2e-testing", "browser-extension"], "health_score": 10, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["facebookarchive/huxley"], "name": "facebookarchive/huxley", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2021-09-07T23:22:47+00:00", "repo": "facebookarchive/huxley", "stars": 4035, "tags": ["visual-regression", "screenshot-testing", "selenium", "ui-testing", "archived"], "topics": [], "urls": [], "use_cases": ["catch visual regressions in web UIs", "record browser interactions and replay them as tests", "review screenshot diffs during code review", "run screenshot comparison tests in continuous integration", "let designers review UI changes via committed screenshots"], "what_it_is": "Huxley is a Python-based testing system for catching visual regressions in web applications, built at Instagram. It records user browsing actions via Selenium WebDriver, takes screenshots, and compares them on playback to detect unintended UI changes.", "when_to_avoid": ["you need a maintained tool - the project is archived and unsupported since Facebook archived it", "you need modern browser automation features or active community support", "you prefer newer alternatives like Percy, Playwright snapshots, or BackstopJS"], "when_to_choose": ["you want screenshot-based visual regression testing driven by recorded browser actions", "your team wants designers to review UI changes as part of the commit workflow"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/huxley", "repo": "facebookarchive/huxley", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.874262+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:23:48.269993+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0162a222e8c7971ed9fbffa6a19ef39fc6e7acb5cfbf744847252ef663dae64a", "fetched_at": "2026-08-28T04:08:32.874262+00:00", "kind": "readme", "missing": false, "url": "https://github.com/facebookarchive/huxley"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4782, "days_push": 1821, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}