# Share a Detox Test Report — React Native E2E Without the Screen Recording

Canonical: https://commareports.com/share-detox-report
Published: 2026-09-15

> Detox runs on Jest, so an HTML reporter is one config line away. Publish the run to Comma and the React Native E2E suite becomes a link — artifacts, failures and all.

# Share a Detox test report

An E2E failure in React Native is one of the hardest things to explain in
text. The test says `expect(element(by.id('checkout'))).toBeVisible()` failed;
what the reader needs is the screenshot of the screen where it wasn't, and
maybe the simulator log around it.

Detox records all of that. It just leaves it in a folder on the runner.

## Add a Jest HTML reporter

Detox drives Jest, so use Jest's reporter interface:

```bash
npm i -D jest-html-reporters
```

```js
// e2e/jest.config.js
module.exports = {
  // …your existing Detox config
  reporters: [
    "default",
    ["jest-html-reporters", { publicPath: "e2e/report", filename: "index.html" }],
  ],
};
```

Then run with artifacts on:

```bash
detox test -c ios.sim.release \
  --take-screenshots failing --record-logs failing || true
```

`--take-screenshots failing` is the setting worth having — full recordings are
large, failure screenshots are what get read.

## Publish it

Drag the `e2e/report/` folder into [the app](https://commareports.com/):
`index.html` becomes the report body, and the embedded screenshots and
attachments upload as assets with their references rewritten. From CI:

```bash
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html e2e/report/index.html \
        --arg title "Detox — $GITHUB_REF_NAME" '{title: $title, html: $html}')"
```

One id per suite, PATCHed on every run, `if: always()` so red builds publish.

## What changes when it is a link

- **Anchored threads** on the failing step, with the screenshot right there —
  "the button is off-screen on the SE, not missing." See
  [commenting on HTML](/comment-on-html).
- **Revisions**, so an intermittent failure has a history rather than a
  rumour.
- **No seat needed** for the person who can tell you whether the screen is
  wrong or the test is.

## Limits

- **Entry HTML: 5 MB.** Assets: 25 MB per file, 250 MB and 500 files total.
  Video recordings are the ones that hit the per-file cap — publish
  screenshots and keep the video in CI storage.
- **60 requests/minute per token.**

## Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision
history.

**[Publish an E2E report →](https://commareports.com/)**

### Related

- [Share an Appium report](/share-appium-report) · [Share a Maestro report](/share-maestro-report)
- [Share a Flutter test report](/share-flutter-test-report) · [Share an Android test report](/share-android-test-report)
- [Share a Jest report](/share-jest-report) · [Publish from CI](/docs/ci)
