{"adoption": {"forks": 156, "observed_at": "2026-08-28T04:08:09.542732+00:00", "stars": 3550}, "canonical_url": "https://ross.abutalabs.com/products/expect", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Expect tests your agent's code in a real browser", "domain": ["testing", "developer-tools", "web-development"], "enriched": true, "function": ["testing", "e2e-testing", "agent-framework", "mcp", "cli"], "health_score": 87, "homepage": "https://expect.dev", "language": "TypeScript", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["millionco/expect"], "name": "millionco/expect", "platform": ["cli", "cross-platform"], "pushed_at": "2026-05-06T07:58:53+00:00", "repo": "millionco/expect", "stars": 3550, "tags": ["browser-testing", "playwright", "qa-automation", "agent-skill", "mcp-server", "code-review", "ai-agents", "nodejs"], "topics": ["agent", "browser", "test", "expect"], "urls": [], "use_cases": ["test my agent's code changes in a real browser", "automated QA for pull requests in CI", "find broken hover states, dead links, and missing metadata", "check performance metrics like INP and LCP on my web app", "run security checks on npm dependencies and CSRF vulnerabilities", "simulate logged-in users to catch regressions", "add browser testing to Claude Code or Cursor without writing Playwright scripts"], "what_it_is": "Expect is a CLI tool and MCP skill that reads your git changes, generates a test plan, and runs it in a real browser using Playwright. It integrates with coding agents like Claude Code, Codex, and Cursor to automatically find regressions and issues, then lets the agent fix them.", "when_to_avoid": ["You need mobile or cross-browser testing (not yet supported)", "You want deterministic, hand-written test suites with explicit assertions", "You need a hosted or enterprise testing service (not yet available)"], "when_to_choose": ["You want automated browser-based QA of code changes without maintaining test scripts or selectors", "You use AI coding agents and want them to find and fix regressions themselves", "You need PR-level testing in CI with real cookies and real browser behavior"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/expect", "repo": "millionco/expect", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "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:09.542732+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:09.542732+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:34:21.546130+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "814f330f4d023072c7412643f20fea1745bfd132e3471ece07acc009a96c0c77", "fetched_at": "2026-08-28T04:08:09.542732+00:00", "kind": "readme", "missing": false, "url": "https://github.com/millionco/expect"}, {"content_hash": "6475e347a9cbac0b7196e378051794aca2e8cf03d7a36940109070a05a59aaea", "fetched_at": "2026-08-29T09:28:39.195136+00:00", "kind": "homepage", "missing": false, "url": "https://expect.dev"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 81, "longevity": 12, "rhythm": 78}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["young", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 174, "days_push": 119, "days_rel": 150, "gap_med": 0, "n_releases_24m": 2}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}