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

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

## Generate a JUnit Report with PHPUnit

PHPUnit has built-in support for JUnit XML reports. You can configure PHPUnit
to output JUnit reports using command-line options or configuration files.

### Using Command Line Options

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

### Using PHPUnit Configuration

Add the logging configuration to your `phpunit.xml` or `phpunit.xml.dist`:

```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/phpunit
```

### Using Composer Scripts

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

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

Then run:

```bash
composer test
```

## 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 PHPUnit Tests and Generate JUnit Report
  id: tests
  continue-on-error: true
  run: ./vendor/bin/phpunit --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/phpunit --log-junit junit.xml" />

## Verify and Review in Test Insights

After pushing these changes:

1. Your GitHub Actions workflow will execute your PHPUnit 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>
    PHPUnit Configuration: Ensure PHPUnit is properly installed via Composer and the logging configuration is correct.
  </li>

  <CommonTroubleshootingTips />
</ul>
