{"adoption": {"forks": 1458, "observed_at": "2026-08-28T04:11:30.439275+00:00", "stars": 20830}, "canonical_url": "https://ross.abutalabs.com/products/ava", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Node.js test runner that lets you develop with confidence 🚀", "domain": ["testing", "developer-tools"], "enriched": true, "function": ["testing", "cli"], "health_score": 92, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["avajs/ava"], "name": "avajs/ava", "platform": ["cli", "cross-platform"], "pushed_at": "2026-06-17T10:19:10+00:00", "repo": "avajs/ava", "stars": 20830, "tags": ["test-runner", "unit-testing", "tdd", "concurrent-tests", "async", "tap", "javascript", "nodejs"], "topics": ["test-runner", "ava", "javascript", "concurrency", "async-functions", "tap", "assert", "nodejs", "cli", "async", "performance", "unicorns", "unit-testing", "cli-app", "node", "tdd", "testing", "test-framework"], "urls": [], "use_cases": ["run unit tests for a node.js project", "run tests concurrently for faster feedback", "write async tests with promises and async functions", "watch files and rerun tests on change", "get detailed assertion failure output", "run tests in parallel in CI", "test typescript code without extra config"], "what_it_is": "AVA is a minimalist test runner for Node.js with a concise API, detailed error output, and concurrent test execution in isolated worker threads. It supports async/await, promises, observables, TypeScript, and includes a watch mode and TAP reporter.", "when_to_avoid": ["you need browser or DOM testing", "your team relies on a plugin-heavy ecosystem like Jest or Mocha", "you need snapshot testing or mocking beyond what AVA provides natively", "you test non-Node.js runtimes"], "when_to_choose": ["you want a fast, minimal test runner for Node.js with concurrent execution", "you prefer atomic tests with no implicit globals", "you need built-in TypeScript support and enhanced assertion messages", "you want watch mode and TAP output out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ava", "repo": "avajs/ava", "role": "main", "score": 85}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "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:11:30.439275+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:30.439275+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:58:32.534410+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0bca2fb30dbdff2e70ea8ae2cd5c7b28b42fcb1b06561f6b5dda3da4265aca9a", "fetched_at": "2026-08-28T04:11:30.439275+00:00", "kind": "readme", "missing": false, "url": "https://github.com/avajs/ava"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 88, "longevity": 100, "rhythm": 72}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4306, "days_push": 77, "days_rel": 108, "gap_med": 47.0, "n_releases_24m": 7}, "score": 85, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}