Skip to content

ci: run tests on 4.x and fix the test matrix - #223

Closed
CodeWithDennis wants to merge 2 commits into
4.xfrom
ci/run-tests-on-4x
Closed

CodeWithDennis wants to merge 2 commits into
4.xfrom
ci/run-tests-on-4x

Conversation

@CodeWithDennis

@CodeWithDennis CodeWithDennis commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

The test workflow only triggered on main, which doesn't exist, so pushes and PRs to 4.x (e.g. #222) never got any checks.

Changes to run-tests.yml

  • Trigger on push and pull_request to 4.x.
  • Drop PHP 8.1: composer.json requires php: ^8.2.
  • Test Laravel 12 and 13 only:
    • Laravel 10 can never resolve: filament/forms ^4/^5 requires illuminate/contracts ^11.28.
    • Laravel 11 is end-of-life, and every release, including the latest 11.57.0, has unpatched security advisories. Composer now blocks insecure versions by default (policy.advisories.block), so composer update fails for all 11.* rows. Testing it would mean turning that protection off in CI.
  • Set testbench and carbon for every Laravel row. Before, only the Laravel 10 row had them, so the 12.* and 13.* rows ran composer require "orchestra/testbench:" with an empty constraint.
    • Laravel 12 → testbench 10.*, carbon ^3.8.4
    • Laravel 13 → testbench 11.*, carbon ^3.8.4 (excluded on PHP 8.2, since Laravel 13 / testbench 11 need PHP 8.3+)
  • fail-fast: false, so every failing combination shows up instead of being cancelled.

fix-php-code-styling.yml and dependabot-auto-merge.yml have no branch filter, so they need no change.

Resolution check

I dry-ran composer update locally with config.platform.php set, for both this branch's composer.json and the one from #222 (Pest ^5.0):

PHP Laravel stability framework Pest PHPUnit
8.2 12.* prefer-lowest 12.69.0 3.8.5 11.5.50
8.3 13.* prefer-lowest 13.30.0 4.4.1 12.5.12
8.4 13.* prefer-lowest 13.30.0 4.4.1 12.5.12
8.5 13.* prefer-stable (#222) 13.36.0 5.3.2 13.4.2

So adding Pest 5 in #222 doesn't break older PHP versions; they keep resolving to Pest 3/4.

composer.json still advertises illuminate/contracts ^10.0|^11.0 and orchestra/testbench ^8.0|^9.0. Removing those is a separate decision, so this PR doesn't touch them.

- Trigger on pushes and PRs to 4.x (main does not exist)
- Drop PHP 8.1 (composer.json requires ^8.2)
- Replace Laravel 10 with 11: filament/forms ^4|^5 requires illuminate ^11.28
- Set testbench and carbon for every Laravel row (11 -> 9.*, 12 -> 10.*, 13 -> 11.*)
- Disable fail-fast so every failing combination is reported
Every Laravel 11 release has unpatched security advisories (EOL), so
Composer's default advisory blocking makes the 11.* rows unresolvable.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant