{"adoption": {"forks": 504, "observed_at": "2026-08-28T04:06:06.579343+00:00", "stars": 2023}, "canonical_url": "https://ross.abutalabs.com/products/reportportal", "card": {"archived": false, "artifact_type": "service", "description": "Main Repository. ReportPortal starts here - see readme below.", "domain": ["testing", "developer-tools"], "enriched": true, "function": ["testing", "monitoring", "analytics", "self-hosted"], "health_score": 99, "homepage": "http://reportportal.io", "language": "Makefile", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["reportportal/reportportal"], "name": "reportportal/reportportal", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2026-08-20T12:25:16+00:00", "repo": "reportportal/reportportal", "stars": 2023, "tags": ["test-reporting", "test-automation", "reporting-dashboard", "microservices", "test-results-aggregation", "reporting", "automation", "devops", "docker", "web-server"], "topics": ["automation", "automated-testing", "reporting-engine", "testing-tools"], "urls": [], "use_cases": ["aggregate test results from CI pipelines into a live dashboard", "analyze and triage automated test failures with ML-assisted root cause detection", "centralize logs and attachments from Selenium or API test runs", "track test automation trends and flaky tests over time", "link test failures to JIRA issues", "self-host a reporting service for QA teams"], "what_it_is": "ReportPortal is a self-hosted, service-oriented platform for aggregating, analyzing, and visualizing results from automated test runs. It integrates with test frameworks via agents, stores logs and attachments, and uses ML analysis to identify the most relevant test failure causes.", "when_to_avoid": ["you only need simple unit test reports from a single build tool", "you cannot operate a multi-service Docker deployment with RabbitMQ, MinIO, and a gateway", "you need a lightweight library embedded in your codebase rather than a standalone server"], "when_to_choose": ["your team runs large volumes of automated tests and needs centralized real-time reporting", "you want ML-based failure triage and deduplication of test failures", "you need integrations with test frameworks, CI tools, and bug trackers like JIRA", "you prefer a self-hosted, Docker-deployable reporting platform"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/reportportal", "repo": "reportportal/reportportal", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "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:06:06.579343+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:06.579343+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:00:03.535548+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0500cca2564017070e1279c11a78eb014ccd3a38c50af2a0c72b323b9bbf0fcd", "fetched_at": "2026-08-28T04:06:06.579343+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reportportal/reportportal"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 98}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3638, "days_push": 13, "days_rel": 19, "gap_med": 12, "n_releases_24m": 30}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}