From c57ebeb1b897a939c98a648a7befc6a0c0a1ca92 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Tue, 4 Aug 2026 07:26:05 +0100 Subject: [PATCH 1/2] Upgrade to PHP 8.4 and Pest 5 --- .github/workflows/run-tests.yml | 55 ++++++++++++++++++++++++------ .github/workflows/tia-baseline.yml | 47 +++++++++++++++++++++++++ composer.json | 12 ++++--- phpunit.xml.dist | 1 + tests/Pest.php | 5 +++ 5 files changed, 104 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/tia-baseline.yml diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 4a59bf0a..45c32ba9 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -22,7 +22,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.3 + php-version: 8.4 extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo coverage: none @@ -67,7 +67,7 @@ jobs: laravel: 11.x stability: prefer-stable # Dependency floor - - php: 8.3 + - php: 8.4 laravel: 11.x stability: prefer-lowest # PHP 8.5 (allowed failure) @@ -116,9 +116,10 @@ jobs: strategy: fail-fast: false matrix: - php: [8.4, 8.3] + php: [8.4] laravel: [13.x, 12.x, 11.x] stability: [prefer-lowest, prefer-stable] + shard: [1/2, 2/2] include: # PHP 8.5 (allowed failure) - php: '8.5' @@ -127,7 +128,7 @@ jobs: allow-failure: true continue-on-error: ${{ matrix.allow-failure || false }} - name: Tests - P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - SQLite + name: Tests - P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - SQLite - shard ${{ matrix.shard }} steps: - name: Checkout code @@ -167,7 +168,7 @@ jobs: run: composer build - name: Execute tests - run: composer test + run: composer test:shard -- --shard=${{ matrix.shard }} mysql: runs-on: ubuntu-latest @@ -193,18 +194,34 @@ jobs: - php: 8.4 laravel: 13.x stability: prefer-stable + shard: 1/2 + - php: 8.4 + laravel: 13.x + stability: prefer-stable + shard: 2/2 # Dependency floor - - php: 8.3 + - php: 8.4 + laravel: 11.x + stability: prefer-lowest + shard: 1/2 + - php: 8.4 laravel: 11.x stability: prefer-lowest + shard: 2/2 # PHP 8.5 (allowed failure) - php: '8.5' laravel: 13.x stability: prefer-stable + shard: 1/2 + allow-failure: true + - php: '8.5' + laravel: 13.x + stability: prefer-stable + shard: 2/2 allow-failure: true continue-on-error: ${{ matrix.allow-failure || false }} - name: Tests - P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - MySQL 8.0 + name: Tests - P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - MySQL 8.0 - shard ${{ matrix.shard }} steps: - name: Checkout code @@ -244,7 +261,7 @@ jobs: run: composer build - name: Execute tests - run: composer test + run: composer test:shard -- --shard=${{ matrix.shard }} env: DB_CONNECTION: mysql DB_HOST: localhost @@ -275,18 +292,34 @@ jobs: - php: 8.4 laravel: 13.x stability: prefer-stable + shard: 1/2 + - php: 8.4 + laravel: 13.x + stability: prefer-stable + shard: 2/2 # Dependency floor - - php: 8.3 + - php: 8.4 laravel: 11.x stability: prefer-lowest + shard: 1/2 + - php: 8.4 + laravel: 11.x + stability: prefer-lowest + shard: 2/2 # PHP 8.5 (allowed failure) - php: '8.5' laravel: 13.x stability: prefer-stable + shard: 1/2 + allow-failure: true + - php: '8.5' + laravel: 13.x + stability: prefer-stable + shard: 2/2 allow-failure: true continue-on-error: ${{ matrix.allow-failure || false }} - name: Tests - P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - PostgreSQL 15 + name: Tests - P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - PostgreSQL 15 - shard ${{ matrix.shard }} steps: - name: Checkout code @@ -326,7 +359,7 @@ jobs: run: composer build - name: Execute tests - run: composer test + run: composer test:shard -- --shard=${{ matrix.shard }} env: DB_CONNECTION: pgsql DB_HOST: localhost diff --git a/.github/workflows/tia-baseline.yml b/.github/workflows/tia-baseline.yml new file mode 100644 index 00000000..6323f499 --- /dev/null +++ b/.github/workflows/tia-baseline.yml @@ -0,0 +1,47 @@ +name: TIA baseline + +on: + push: + branches: + - main + schedule: + - cron: '0 3 * * *' + workflow_dispatch: + +jobs: + baseline: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 8.4 + extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo + coverage: pcov + + - name: Install dependencies + run: composer install --prefer-dist --no-interaction + + - name: Build tests environment + run: composer build + + - name: Record TIA baseline + run: vendor/bin/pest --parallel --processes=4 --ci --tia --fresh + + - name: Resolve TIA baseline path + id: baseline + run: echo "path=$(vendor/bin/pest --baseline)" >> "$GITHUB_OUTPUT" + + - name: Upload TIA baseline + uses: actions/upload-artifact@v4 + with: + name: pest-tia-baseline + path: ${{ steps.baseline.outputs.path }} + include-hidden-files: true + retention-days: 30 diff --git a/composer.json b/composer.json index d80b33b0..b416b4e1 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "source": "https://github.com/cachethq/core" }, "require": { - "php": "^8.3", + "php": "^8.4", "ext-simplexml": "*", "doctrine/dbal": "^3.6", "filament/filament": "^5.0", @@ -48,10 +48,10 @@ "laravel/pail": "^1.1", "laravel/pint": "^1.24", "orchestra/testbench": "^9.15.1|^10.0|^11.0", - "pestphp/pest": "^4.3", - "pestphp/pest-plugin-laravel": "^4.0", + "pestphp/pest": "^5.0", + "pestphp/pest-plugin-laravel": "^5.0", "pestphp/pest-plugin-livewire": "*", - "pestphp/pest-plugin-type-coverage": "^4.0", + "pestphp/pest-plugin-type-coverage": "^5.0", "psalm/plugin-laravel": "^3.14" }, "minimum-stability": "dev", @@ -110,7 +110,9 @@ "test:lint": [ "pint --test" ], - "test:unit": "pest --parallel --processes=10 --ci --compact", + "test:unit": "pest --parallel --processes=4 --ci --compact", + "test:shard": "pest --parallel --processes=4 --ci --compact", + "test:shards": "pest --parallel --processes=4 --ci --update-shards", "test": [ "@test:unit" ] diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 484633f2..456119df 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -12,6 +12,7 @@ + diff --git a/tests/Pest.php b/tests/Pest.php index 53a63a92..a7919286 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -3,3 +3,8 @@ use Cachet\Tests\TestCase; uses(TestCase::class)->in(__DIR__); + +pest()->tia() + ->locally() + ->baselined() + ->filtered(); From d4f9a1b083cab67efcd0f6c5932491e4b77163f5 Mon Sep 17 00:00:00 2001 From: James Brooks Date: Tue, 4 Aug 2026 08:03:20 +0100 Subject: [PATCH 2/2] Fix Pest 5 CI workflows --- .github/workflows/run-tests.yml | 34 ++++++++++++++++++------------ .github/workflows/tia-baseline.yml | 3 +++ composer.json | 2 +- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 5ebed353..bfa4f82c 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -9,6 +9,9 @@ on: schedule: - cron: '0 0 * * *' +env: + GH_TOKEN: ${{ github.token }} + jobs: build-assets: runs-on: ubuntu-latest @@ -28,7 +31,7 @@ jobs: - name: Install PHP dependencies run: | - composer require "laravel/framework:13.x" --no-interaction --no-update + composer require "laravel/framework:13.x" "orchestra/testbench:^11.0" --no-interaction --no-update composer update --prefer-dist --no-interaction - name: Setup Node @@ -60,12 +63,9 @@ jobs: - php: 8.4 laravel: 13.x stability: prefer-stable - - php: 8.4 - laravel: 12.x - stability: prefer-stable # Dependency floor - php: 8.4 - laravel: 12.x + laravel: 13.x stability: prefer-lowest # PHP 8.5 (allowed failure) - php: '8.5' @@ -101,7 +101,7 @@ jobs: - name: Install dependencies run: | - composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update + composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:^11.0" --no-interaction --no-update composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Run PHPStan @@ -114,7 +114,7 @@ jobs: fail-fast: false matrix: php: [8.4] - laravel: [13.x, 12.x] + laravel: [13.x] stability: [prefer-lowest, prefer-stable] shard: [1/2, 2/2] include: @@ -122,6 +122,12 @@ jobs: - php: '8.5' laravel: 13.x stability: prefer-stable + shard: 1/2 + allow-failure: true + - php: '8.5' + laravel: 13.x + stability: prefer-stable + shard: 2/2 allow-failure: true continue-on-error: ${{ matrix.allow-failure || false }} @@ -152,7 +158,7 @@ jobs: - name: Install dependencies run: | - composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update + composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:^11.0" --no-interaction --no-update composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Download compiled assets @@ -198,11 +204,11 @@ jobs: shard: 2/2 # Dependency floor - php: 8.4 - laravel: 12.x + laravel: 13.x stability: prefer-lowest shard: 1/2 - php: 8.4 - laravel: 12.x + laravel: 13.x stability: prefer-lowest shard: 2/2 # PHP 8.5 (allowed failure) @@ -245,7 +251,7 @@ jobs: - name: Install dependencies run: | - composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update + composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:^11.0" --no-interaction --no-update composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Download compiled assets @@ -296,11 +302,11 @@ jobs: shard: 2/2 # Dependency floor - php: 8.4 - laravel: 12.x + laravel: 13.x stability: prefer-lowest shard: 1/2 - php: 8.4 - laravel: 12.x + laravel: 13.x stability: prefer-lowest shard: 2/2 # PHP 8.5 (allowed failure) @@ -343,7 +349,7 @@ jobs: - name: Install dependencies run: | - composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update + composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:^11.0" --no-interaction --no-update composer update --${{ matrix.stability }} --prefer-dist --no-interaction - name: Download compiled assets diff --git a/.github/workflows/tia-baseline.yml b/.github/workflows/tia-baseline.yml index 6323f499..401ca6e9 100644 --- a/.github/workflows/tia-baseline.yml +++ b/.github/workflows/tia-baseline.yml @@ -8,6 +8,9 @@ on: - cron: '0 3 * * *' workflow_dispatch: +env: + GH_TOKEN: ${{ github.token }} + jobs: baseline: runs-on: ubuntu-latest diff --git a/composer.json b/composer.json index 01081118..a17e11e0 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,7 @@ "laravel/boost": "^2.0", "laravel/pail": "^1.1", "laravel/pint": "^1.24", - "orchestra/testbench": "^10.0|^11.0", + "orchestra/testbench": "^11.0", "pestphp/pest": "^5.0", "pestphp/pest-plugin-laravel": "^5.0", "pestphp/pest-plugin-livewire": "*",