Skip to content

Releases: pestphp/pest

v4.7.4

25 Jun 19:14
Immutable release. Only release title and notes can be modified.
ee2e97e

Choose a tag to compare

  • fix: internal plugin runtime exception
  • chore: bumps actions/checkout from 6.0.3 to 7.0.0

v4.7.3

12 Jun 06:06
Immutable release. Only release title and notes can be modified.
87882a8

Choose a tag to compare

  • fix: improve dd output on parallel testing
  • fix: gitlab url not being possible to change
  • fix: team city output being duplicated

v4.7.2

01 Jun 06:10
Immutable release. Only release title and notes can be modified.
40b88b6

Choose a tag to compare

  • fix: pao dealing with pest's fatal errors

v4.7.1

01 Jun 05:37
Immutable release. Only release title and notes can be modified.
92e76eb

Choose a tag to compare

  • fix: improve reporting fatal exceptions
  • chore: various security improvements

v4.7.0

03 May 16:10

Choose a tag to compare

  • maintenance release

v4.6.3

18 Apr 13:52

Choose a tag to compare

chore: bumps phpunit

v4.6.2

18 Apr 02:37

Choose a tag to compare

fix: bumps phpunit, as previous versions became invalid due GHSA-qrr6-mg7r-m243

v4.6.1

15 Apr 16:16

Choose a tag to compare

  • fix: up to 30% faster boot times before your test suite runs (measured on laravel cloud)
  • fix: if you pass --filter or a test file, --update-snapshots now only updates the snapshots that match

v4.6.0

14 Apr 17:33

Choose a tag to compare

For better shard balance, Pest can distribute tests based on their actual execution time using the --update-shards option. This ensures each shard takes roughly the same wall-clock time, minimizing how long your slowest CI job runs.

Step 1: Generate the timing data by running your full test suite with --update-shards:

./vendor/bin/pest --update-shards

This runs all tests and records each test class's duration into tests/.pest/shards.json. You can also combine it with --parallel to speed things up:

./vendor/bin/pest --parallel --update-shards

Step 2: Commit tests/.pest/shards.json to your repository. This file is human-readable and looks like this:

{
    "timings": {
        "Tests\\Feature\\Payments\\StripeCheckoutTest": 1.608,
        "Tests\\Feature\\Reports\\SalesReportTest": 2.105,
        "Tests\\Unit\\Models\\UserTest": 0.050
    },
    "checksum": "...",
    "updated_at": "2026-04-14T10:30:00+00:00"
}

Step 3: When you run --shard and tests/.pest/shards.json exists, Pest automatically uses time-balanced distribution:

./vendor/bin/pest --shard=1/5

The output will indicate that time-balanced sharding is active:

Shard:    1 of 5 — 12 files ran, out of 50 (time-balanced).

v4.5.0

10 Apr 20:05

Choose a tag to compare

Announcement: x.com/enunomaduro/status/2042697927483609449