{"adoption": {"forks": 126, "observed_at": "2026-08-28T04:04:06.500323+00:00", "stars": 1242}, "canonical_url": "https://ross.abutalabs.com/products/redux-saga-test-plan", "card": {"archived": false, "artifact_type": "library", "description": "Test Redux Saga with an easy plan.", "domain": ["testing", "frontend", "developer-tools"], "enriched": true, "function": ["testing", "mocking"], "health_score": 69, "homepage": "http://redux-saga-test-plan.jeremyfairbank.com", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["jfairbank/redux-saga-test-plan"], "name": "jfairbank/redux-saga-test-plan", "platform": [], "pushed_at": "2026-05-09T22:34:22+00:00", "repo": "jfairbank/redux-saga-test-plan", "stars": 1242, "tags": ["redux-saga", "unit-testing", "integration-testing", "tdd", "bdd", "assertions", "nodejs", "javascript"], "topics": ["redux-saga", "testing-sagas", "testing", "redux-saga-testing", "unit-testing", "integration-testing"], "urls": [], "use_cases": ["test redux saga generators", "integration test saga effects without coupling to ordering", "unit test exact yield ordering in sagas", "mock API calls in saga tests with providers", "assert saga puts a specific action", "test sagas with reducers and state selectors"], "what_it_is": "A JavaScript testing library for Redux Saga that provides chainable assertion APIs for both unit and integration testing of sagas. It offers expectSaga for behavior-driven integration tests and testSaga for exact-effect unit tests, with provider-based mocking of effects.", "when_to_avoid": ["you don't use redux-saga", "you've migrated to Redux Toolkit with RTK Query or sagas-free patterns", "you need a library actively adding features for newer redux-saga versions"], "when_to_choose": ["you use Redux Saga and want ergonomic saga test assertions", "you want both unit and integration testing styles for sagas", "you need to mock call/select effects without hitting real APIs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/redux-saga-test-plan", "repo": "jfairbank/redux-saga-test-plan", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "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:04:06.500323+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.500323+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:08:24.848314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb2371124be86af98d8c118a13bc627e69691df8e18ac9e3abc32366ccebeb92", "fetched_at": "2026-08-28T04:04:06.500323+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jfairbank/redux-saga-test-plan"}, {"content_hash": "237e2d5b9625ee22627bf33fb477a2a3746bb40f71c1223fa594c742679c6141", "fetched_at": "2026-08-29T12:20:19.737831+00:00", "kind": "homepage", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com"}, {"content_hash": "95838bf974072741f86cbe1bce71c77747ff63d927134f93e0f1a9703f4bbae9", "fetched_at": "2026-08-29T12:20:19.745234+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/getting-started.html"}, {"content_hash": "b01e19c540775d961e69301180d3e7f6f7d9cbd39a2df3ba51051bb094e591be", "fetched_at": "2026-08-29T12:20:19.748432+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/redux-saga-test-plan"}, {"content_hash": "1752d55c4913520be4ed04dcd49d8ec53bc9661c0fe13cc0710feb81753437a2", "fetched_at": "2026-08-29T12:20:19.746906+00:00", "kind": "site_page", "missing": false, "url": "http://redux-saga-test-plan.jeremyfairbank.com/integration-testing/mocking"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 81, "longevity": 100, "rhythm": 8}, "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": 3781, "days_push": 116, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}