Problem
.github/workflows/run-tests.yml and .github/workflows/test-matrix.yml both trigger on the exact same events:
on:
push:
branches: [main]
pull_request:
branches: [main]
and both run essentially the same job (composer require ... && composer update && vendor/bin/pest), but with matrices that have already diverged:
run-tests.yml: php: [8.3, 8.2] × laravel: [11.*, 12.*] × os: [ubuntu-latest, windows-latest, macos-latest] (12 combinations, fail-fast: true)
test-matrix.yml: php: [8.4, 8.3, 8.2] × laravel: [11.*] on ubuntu-latest only, plus one bolted-on include entry for Laravel 12.* / PHP 8.3 (4 combinations total, fail-fast: false), and it additionally runs vendor/bin/pint --test as a step gated on matrix.php == '8.3' && matrix.laravel == '11.*'.
Where
.github/workflows/run-tests.yml
.github/workflows/test-matrix.yml
Why it matters
Every push and PR to main runs both pipelines in full, roughly doubling CI minutes for largely redundant coverage, and the two matrices have already drifted apart in ways that are easy to miss: test-matrix.yml is the only place PHP 8.4 is tested at all (relevant to #86, which asks to extend the matrix to 8.4/8.5 — but that extension already exists here, just not in the "main" run-tests.yml workflow, and not on Windows/macOS), and Pint style checks only run from test-matrix.yml, not run-tests.yml. A contributor looking at run-tests.yml alone would reasonably assume it's the full test matrix and miss that style checks and PHP 8.4 coverage live in a separate, easily-overlooked file. This is a distinct problem from #86 (extending PHP version coverage) — the issue here is the redundant/duplicated pipeline structure itself.
Suggested fix
Consolidate into a single workflow with one matrix definition covering the intended full OS × PHP × Laravel cross-product (including the Pint step), removing the duplicate trigger and the resulting doubled CI cost. If a genuine reason exists to keep them separate (e.g. one is meant to be a fast smoke test and the other a full matrix), rename and scope them accordingly and document the distinction, since right now they read as two people having built the same thing independently.
Problem
.github/workflows/run-tests.ymland.github/workflows/test-matrix.ymlboth trigger on the exact same events:and both run essentially the same job (
composer require ... && composer update && vendor/bin/pest), but with matrices that have already diverged:run-tests.yml:php: [8.3, 8.2]×laravel: [11.*, 12.*]×os: [ubuntu-latest, windows-latest, macos-latest](12 combinations,fail-fast: true)test-matrix.yml:php: [8.4, 8.3, 8.2]×laravel: [11.*]onubuntu-latestonly, plus one bolted-onincludeentry for Laravel 12.* / PHP 8.3 (4 combinations total,fail-fast: false), and it additionally runsvendor/bin/pint --testas a step gated onmatrix.php == '8.3' && matrix.laravel == '11.*'.Where
.github/workflows/run-tests.yml.github/workflows/test-matrix.ymlWhy it matters
Every push and PR to
mainruns both pipelines in full, roughly doubling CI minutes for largely redundant coverage, and the two matrices have already drifted apart in ways that are easy to miss:test-matrix.ymlis the only place PHP 8.4 is tested at all (relevant to #86, which asks to extend the matrix to 8.4/8.5 — but that extension already exists here, just not in the "main"run-tests.ymlworkflow, and not on Windows/macOS), and Pint style checks only run fromtest-matrix.yml, notrun-tests.yml. A contributor looking atrun-tests.ymlalone would reasonably assume it's the full test matrix and miss that style checks and PHP 8.4 coverage live in a separate, easily-overlooked file. This is a distinct problem from #86 (extending PHP version coverage) — the issue here is the redundant/duplicated pipeline structure itself.Suggested fix
Consolidate into a single workflow with one matrix definition covering the intended full OS × PHP × Laravel cross-product (including the Pint step), removing the duplicate trigger and the resulting doubled CI cost. If a genuine reason exists to keep them separate (e.g. one is meant to be a fast smoke test and the other a full matrix), rename and scope them accordingly and document the distinction, since right now they read as two people having built the same thing independently.