Eris
Eris is a free, self-hosted PHP library that brings QuickCheck-style property-based testing to PHPUnit.
What Eris is
Eris is a free, self-hosted PHP library that brings QuickCheck-style property-based testing to PHPUnit. It generates input samples and runs them against properties defined for the system under test. When an assertion fails, Eris tries to simplify the generated input and reports the simplest failing value it finds. Generators cover scalar values, collections, composite values, and domain data such as names, dates, and regular-expression-matching strings. A pseudorandom seed can be set to attempt to reproduce a run. Each forAll() call generates 100 values by default, while iteration counts and test duration can be configured. The duration is approximate because the current iteration and any shrinking it causes must finish before stopping. Eris can also generate reproducible random data outside PHPUnit, including in other testing frameworks or scripts. Composer is the installation method, using it as a development dependency. The repository lists compatibility with PHP 8.1 through 8.4 and PHPUnit 10.x through 13.x. Eris is MIT licensed, credits Giorgio Sironi, and accepts support and feature requests through GitHub issues.
Good
- Free and self-hosted
- Shrinks failed assertion inputs
- Supports reproducible test runs
- 100 generated values by default
- Works with PHPUnit
Watch out
- Supports PHP only
- Time limits are approximate
- Generic exceptions interrupt the test callback
- Requires Composer installation
Who it suits
Eris suits PHP developers using PHPUnit who want generated property tests, shrinking of failed assertions, and reproducible runs. It can also serve scripts or other testing frameworks as a random-data library.
Verdict
Eris provides focused property-based testing for PHP projects, with generators, shrinking, and seed-based reproduction. Its documented compatibility and PHPUnit integration make it most relevant to teams already using that ecosystem.
The facts
Each one read from Eris's own pages, with the date it was checked.
What it does
- Compatibility
- The repository lists support for PHP 8.1 through 8.4 and PHPUnit 10.x through 13.x.checked 7 Oct 2026
- Configurable runtime
- The number of generated iterations and a test duration can be configured, though the duration is approximate because a running iteration and any shrinking must finish.checked 7 Oct 2026
- Default sample size
- By default, Eris runs 100 generated values for each forAll() call.checked 7 Oct 2026
- Failure shrinking
- When an assertion fails, Eris attempts to simplify the generated input and reports the simplest failing value it finds.checked 7 Oct 2026
- Generated testing
- It generates samples of inputs and runs them against properties defined for the system under test.checked 7 Oct 2026
- Generators
- Its documented generators cover scalar values, collections, composite values, and domain-based values such as names and dates.checked 7 Oct 2026
- Input generators
- Documented generators cover scalar values, collections, composite values, and domain data such as names, dates, and regex-matching strings.checked 7 Oct 2026
- Installation
- The README gives Composer as the installation method and shows the command composer require --dev giorgiosironi/eris.checked 7 Oct 2026
- License
- The repository identifies the project as MIT licensed.checked 7 Oct 2026
- Listeners
- Listeners can receive events during test runs, and documented examples collect generated-value frequencies or write progress logs.checked 7 Oct 2026
- Maintainer
- The project documentation credits Giorgio Sironi.checked 7 Oct 2026
- Notable limit
- The documentation says a configured time limit is approximate because the current iteration and any resulting shrinking must finish before the test stops.checked 7 Oct 2026
- Outside PHPUnit
- Eris can also be used as a library to generate reproducible random data in other testing frameworks or scripts.checked 7 Oct 2026
- PHPUnit integration
- Eris can be installed as a Composer development dependency and its examples can be run with PHPUnit.checked 7 Oct 2026
- Purpose
- Eris brings QuickCheck-style property-based testing to PHP and PHPUnit.checked 7 Oct 2026
- Reproducibility
- When Eris is used outside PHPUnit, the documentation says reproducibility can be obtained by setting the ERIS_SEED environment variable.checked 7 Oct 2026
- Runtime controls
- A forAll call generates 100 values by default, and users can configure iteration counts or a test duration.checked 7 Oct 2026
- Security and license
- The GitHub repository identifies an MIT license; the opened maker pages do not state security certifications or compliance claims.checked 7 Oct 2026
- Shrinking caveat
- Shrinking is performed for assertion failures, while generic exceptions from the test callback interrupt the test.checked 7 Oct 2026
- Support
- The project invites users to open GitHub issues for support and feature requests.checked 7 Oct 2026
- Supported versions
- The repository README lists PHP 8.1–8.4 and PHPUnit 10.x–13.x as compatible versions.checked 7 Oct 2026
- Usage outside PHPUnit
- Eris can be used outside PHPUnit as a library for reproducible random data generation, including in other testing frameworks or scripts.checked 7 Oct 2026
The company
- Maker
- The repository is under Giorgio Sironi’s GitHub account, whose profile lists Cambridge, UK.checked 7 Oct 2026
Alternatives to Eris
- 1

fast-check
Free planOpen sourceWebAPILinuxSelf-hosted7.1Free plan - 2
ScalaCheck
Free planLinuxmacOSWindows6.6Free plan - 3
Gopter
Free planLinuxSelf-hosted6.4Free plan - 4
JSVerify
Free planWebSelf-hosted6.4Free plan - 5
Racket QuickCheck
Free planLinuxmacOSWindows6.4Free plan - 6
FsCheck
Free planLinuxmacOSWindows6.3Free plan
