> For the complete documentation index, see [llms.txt](https://docs.opendatadiscovery.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opendatadiscovery.org/features/data-quality/test-results-import.md).

# Test Results Import

Monitor test suite results in ODD Platform without thinking about masking or removing sensitive data — your datasets do not migrate to your ODD Platform installation, the platform gathers test results only.

The platform ingests test results from four canonical paths today, plus a custom-framework escape hatch.

![](/files/Azyw8yGntHWNr8SQrbr5)

## Great Expectations

Push-client integration via [`odd-great-expectations`](/integrations/integrations/odd-great-expectations.md). Add the action to your Great Expectations checkpoint configuration; on each validation run the action emits the validation results into ODD's Ingestion API. Test outcomes surface on the dataset's detail page **Test reports** tab and aggregate into the [Quality Dashboard](/features/data-quality/dashboard.md).

## dbt tests

Push-client integration via [`odd-dbt`](/integrations/integrations/odd-dbt.md). Run `dbt test` (or your normal `dbt build`); the adapter emits the test outcomes into ODD's Ingestion API. The same surface conventions as Great Expectations — per-dataset Test reports tab + dashboard aggregation.

## Statistical profiles via `odd-collector-profiler`

Pull-strategy collector that uses Capital One's [DataProfiler](https://github.com/capitalone/DataProfiler) under the hood. See [`odd-collector-profiler`](/integrations/integrations/odd-collector-profiler.md) for the adapter's per-source coverage. Profile results contribute to the platform's quality signal alongside framework-driven test outcomes — the dashboard renders them as part of the same anomaly-class breakdown.

## Custom frameworks

For frameworks not covered by an existing adapter, push results directly through the platform's [Ingestion API](/introduction/main-concepts.md#odd-specification) — the same contract every other producer uses. Author a small client that maps your framework's outcomes onto ODD's `DataEntityList` schema with the `DataQualityTest` and `DataQualityTestRun` entity types, and POST that payload to **`POST /ingestion/entities`**.

Do **not** send test results to `POST /ingestion/entities/datasets/stats` — that endpoint accepts a `DatasetStatisticsList` (per-column statistical profiles, the path the [`odd-collector-profiler`](/integrations/integrations/odd-collector-profiler.md) uses), not a `DataEntityList`. A `DataEntityList` posted there does not land as test results. See the specification's [Ingestion API documentation](https://github.com/opendatadiscovery/opendatadiscovery-specification/blob/main/specification/specification.md) for the wire contract.

## Where to next

* [Quality Dashboard](/features/data-quality/dashboard.md) — where ingested test results aggregate into the cross-catalog quality view.
* [Dataset Quality Statuses (SLA)](/features/data-quality/sla-statuses.md) — operator-set Minor / Major / Critical severities on test results, plus the BI-report SLA endpoint.
* [Visibility for Data Quality Engineer](/use-cases/use-cases/dq-visibility.md) — the end-to-end DQ-engineer workflow.
* [Alerting](/features/active-platform-features/alerting.md) — where DQ-test-failed alerts surface and how they route to operators.
* [`odd-great-expectations`](/integrations/integrations/odd-great-expectations.md), [`odd-dbt`](/integrations/integrations/odd-dbt.md), [`odd-collector-profiler`](/integrations/integrations/odd-collector-profiler.md) — the per-integration setup pages.
