> For the complete documentation index, see [llms.txt](https://docs.drizz.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.drizz.dev/running-tests/self-healing.md).

# Self-healing

When a step fails, Drizz attempts to repair it mid-run and continue. Every repaired step is badged in the report.

|                   |                                                                |
| ----------------- | -------------------------------------------------------------- |
| **Platforms**     | Android · iOS                                                  |
| **Handles**       | Tap · Type · Swipe · Validate                                  |
| **Attempts**      | Around 5 per run. After that, failures fail                    |
| **In the report** | Healed steps are badged, and the run reads **Passed (healed)** |
| **Watch out**     | Healing attempts are shared across the whole run, not per step |

## Prerequisites

None. Healing is on by default and requires no configuration.

## Behavior

<table data-search="false"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Trigger</strong></td><td>A step fails</td></tr><tr><td><strong>Action</strong></td><td>Drizz reads the current screen, resolves the intent of the step, and attempts an alternative route to it</td></tr><tr><td><strong>On success</strong></td><td>The run continues from that step</td></tr><tr><td><strong>Step types handled</strong></td><td>Tap, type and swipe. All other failures fail normally</td></tr><tr><td><strong>Attempt budget</strong></td><td>Around 5 per run, shared across every step in the run. Once spent, later failures fail outright even if repairable</td></tr><tr><td><strong>Report marking</strong></td><td>Healed steps carry a healed badge</td></tr><tr><td><strong>Run status</strong></td><td><code>Passed (healed)</code>, not <code>Passed</code> — see <a href="/pages/75PJpg9l527HNAFO85yu">Statuses</a></td></tr><tr><td><strong>Cannot resume</strong></td><td>If Drizz cannot rejoin the original script after a repair, the run reports that it could not resume. This is a failure, not a healed pass</td></tr></tbody></table>

A step that heals on repeated runs has a weak description. Healed steps are badged in the report so they can be located and rewritten — use the app's exact on-screen wording, or add neighbor or section context. See [When a step fails](/reports-and-debugging/when-a-step-fails.md).

{% hint style="warning" %}
Healing attempts are shared across the whole run. Steps healing early in a test spend the budget a transient failure later in the same test would have used.
{% endhint %}

## Turn healing off

Healing is disabled per app by Drizz. There is no self-serve setting.

1. Identify the package or bundle ID.
2. Ask your Drizz contact to disable healing for it.
3. Run the suite and confirm failed steps now fail outright rather than reporting `Passed (healed)`.

## Common mistakes

| What you do                                               | What happens                                                           |
| --------------------------------------------------------- | ---------------------------------------------------------------------- |
| Read `Passed (healed)` as `Passed`                        | The suite is held together by repairs and the pass rate hides it       |
| Skip the healed list on a green run                       | The same steps fail outright on a later run                            |
| Add waits to stop a step healing                          | Healing responds to the description, not the timing                    |
| Assume healing rescues any failure                        | It handles tap, type and swipe only, and only while attempts remain    |
| Expect healing to fix a wrong-screen failure              | If an earlier step went wrong, the repair belongs on that earlier step |
| Leave a paraphrased description in place because it heals | Every run spends attempt budget on it                                  |

## Next

* [When a step fails](/reports-and-debugging/when-a-step-fails.md)
* [Statuses](/reports-and-debugging/statuses.md)
* [Reading a report](/reports-and-debugging/reading-a-report.md)

***

*Last updated: 6 August 2026*
