# Flaky Tests

## What is a flaky test?

A flaky test is a test that did not succeed on the first attempt. It fails only occasionally: one time it passes, another time fails, and the next time pass again, without any changes.

Flaky tests are marked with a dedicated badge.

![Run Summary with 1 flaky test detected](/files/K2Zflfs1GxJlPjXRVM8g)

## How to activate flaky test detection?

Flaky tests are automatically activated for [when](https://playwright.dev/docs/test-retries) retries are enabled. When a test has retries enabled and it doesn't pass on the first attempt, it is marked as flaky.

## Why are flaky tests bad?

A flaky test **can block a CI/CD pipeline**, making feature delivery slower than it needs to be. Flaky tests are not deterministic — making them useless and expensive to repair.

In summary, flaky tests are considered harmful because:

* You cannot trust them - neither system / component under test nor the test itself is reliable
* Even if flaky tests passes, your end users can experience intermittent issues
* Flaky tests increase the duration of your testing suite
* Flaky tests are expensive to repair and maintain

## How to get rid of flaky tests?

### Measure and Identify Flakiness

Use [Test Explorer](/dashboard/test-suite-performance-explorer/tests-explorer.md) to see the tests with the highest flakiness rate.

<figure><img src="/files/vnhUTcar5qhdGef0PpJC" alt=""><figcaption></figcaption></figure>

## Eliminate Flaky Tests

Brows past test executions and examine what error messages cause flakiness using [Test Explorer](/dashboard/test-suite-performance-explorer/tests-explorer.md#individual-test-analysis).

<figure><img src="/files/YGfxiKStfuCF3Rlc4HId" alt=""><figcaption><p>Test history tab show flaky execution for a particular test</p></figcaption></figure>

<figure><img src="/files/E06andfi9g84NpbRJ2Ue" alt=""><figcaption><p>The error above is a 100% cause of flakiness for the test</p></figcaption></figure>

Most common reason for flakiness

* Using fixed wait times
* Long complex and fragile
* Sharing data and state between tests

## Fail on Flaky Tests

{% hint style="info" %}
`failOnFlakyTests` property is available in Playwright **v1.52+**, and in `@currents/playwright` starting from **v1.12.3**.
{% endhint %}

Starting with Playwright v1.52, the runner can be configured to exit with an error if any test has been marked as flaky [see the official docs](https://playwright.dev/docs/api/class-testconfig#test-config-fail-on-flaky-tests). This is particularly useful on CI systems where the presence of flaky tests should block the pipeline.

#### Configuration

In your `playwright.config.ts`, enable the option by setting `failOnFlakyTests` to `true` (for example, based on the `CI` environment variable):

```ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  // Exit with an error if any test is marked flaky.
  failOnFlakyTests: Boolean(process.env.CI),
});
```

#### Command-Line Option

Alternatively, the same behavior can be enabled via the CLI flag:

```bash
# Using Playwright test command
npx playwright test --fail-on-flaky-tests

# Using the Playwright wrapper
npx pwc --fail-on-flaky-tests

# Using the orchestration
npx pwc-p --fail-on-flaky-tests
```

When this flag is present, the test run will exit with a non-zero status if any tests are detected as flaky, ensuring flaky tests block your CI pipeline.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.currents.dev/dashboard/tests/flaky-tests.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
