---
title: Pest Integration with Mergify
description: Report your test results from Pest tests to Mergify
---

This guide shows how to generate JUnit reports from your Pest tests and upload
them to **Test Insights** using your CI workflow.

## Generate a JUnit Report with Pest

Pest is built on top of PHPUnit and supports JUnit XML reports through PHPUnit's
logging capabilities. You can configure Pest to output JUnit reports using
command-line options or configuration files.

### Using Command Line Options

```bash
./vendor/bin/pest --log-junit junit.xml
```

### Using Pest Configuration

Add the logging configuration to your `phpunit.xml` or `phpunit.xml.dist` (Pest uses PHPUnit's configuration):

```xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
         bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Test Suite">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
    <logging>
        <junit outputFile="junit.xml"/>
    </logging>
</phpunit>
```

Then run:

```bash
./vendor/bin/pest
```

### Using Composer Scripts

You can also add a script to your `composer.json`:

```json
{
    "scripts": {
        "test": "pest --log-junit junit.xml"
    }
}
```

Then run:

```bash
composer test
```

### Using Pest Configuration File

You can also configure logging in your `Pest.php` file:

```php
<?php

use Pest\TestSuite;

TestSuite::getInstance()->log('junit', 'junit.xml');
```

## Update Your CI Workflow

### GitHub Actions

<CIInsightsSetupNote />

After generating the JUnit report, add a step to upload the results to CI
Insights using the `mergifyio/gha-mergify-ci` action.

For example, in your workflow file:

```yaml
- name: Run Pest Tests and Generate JUnit Report
  id: tests
  continue-on-error: true
  run: ./vendor/bin/pest --log-junit junit.xml
```

<MergifyCIUploadStep reportPath="junit.xml" />
<MergifyCIUploadStepMatrix reportPath="junit.xml" />

<GhaMergifyCiQuarantineSetup />

### Buildkite

<BuildkiteCIUploadStep reportPath="junit.xml" />
<BuildkiteCIUploadStepMatrix reportPath="junit.xml" />

<BuildkiteCIQuarantineSetup />

### Any CI (Mergify CLI)

<MergifyCliUploadStep reportPath="junit.xml" testCommand="./vendor/bin/pest --log-junit junit.xml" />

## Verify and Review in Test Insights

After pushing these changes:

1. Your GitHub Actions workflow will execute your Pest tests.
2. A JUnit report (junit.xml) is generated.
3. The Mergify CI action uploads the report to Test Insights.

<ReviewInTestInsights />

## Troubleshooting Tips

<ul>
  <li>
    Pest Configuration: Ensure Pest is properly installed via Composer and the logging configuration is correct in your
    PHPUnit configuration file.
  </li>

  <CommonTroubleshootingTips />
</ul>
