Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Coverage

on:
# Run testing on all push and pull requests that have committed changes in PHP files
push:
paths:
- '**/*.php'
pull_request:
paths:
- '**/*.php'
# Make it possible to run the workflow manually
workflow_dispatch:

permissions:
contents: read

jobs:
coverage:

runs-on: ubuntu-latest

name: Code coverage report

steps:

#- name: Configure operating system
# run: sudo apt-get update && sudo apt-get install -y locales locales-all

- name: Checkout code
uses: actions/checkout@v6.0.2
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Cache Playwright browsers
id: playwright-cache
uses: actions/cache@v3
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-latest
restore-keys: |
playwright-${{ runner.os }}-latest
playwright-${{ runner.os }}-

- name: Install and update Playwright
run: |
if [ ! -d ~/.cache/ms-playwright ]; then
npm install playwright@latest
npx playwright install --with-deps
fi

- name: Validate composer.json and composer.lock
run: composer validate --strict

- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5.0.5
with:
path: vendor
key: coverage-${{ hashFiles('**/composer.lock') }}

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
coverage: xdebug
extensions: mbstring, gd, intl, pcntl

- name: Install dependencies
run: composer update --prefer-dist --no-progress --prefer-stable

- name: Setup testbench environment
run: |
cp workbench/.env.example workbench/.env
sed -i 's/APP_KEY=/APP_KEY=base64:ZQvPGC7uVADkjOgtGIIuCI8u3\/Pzu+VaRObIbHsgjCc=/' workbench/.env
sed -i 's/APP_ENV=local/APP_ENV=testing/' workbench/.env
grep "APP_KEY=base64:" workbench/.env
npm install
php vendor/bin/testbench vendor:publish --tag='filament-shield-config'
php vendor/bin/testbench filament:assets
php vendor/bin/testbench package:sync-skeleton

- name: Run test suite with coverage
run: vendor/bin/pest --coverage-clover ./coverage.xml

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v6.0.0
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: ./coverage.xml
verbose: true
60 changes: 43 additions & 17 deletions .github/workflows/test-runner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,23 @@ jobs:

runs-on: ubuntu-latest

# Define the matrix of different PHP, Laravel, and testbench versions
# Define the matrix of different PHP, Laravel, testbench versions, and shards
strategy:
# Fail the whole workflow if one of the jobs fails
fail-fast: true
matrix:
php: [ 8.3, 8.4, 8.5 ]
laravel: [ 11.*, 12.* ]
dependency-version: [ prefer-stable ]
shard: [ 1, 2, 3, 4 ]
include:
# Laravel 12 uses Orchestra Testbench 10
- laravel: 12.*
testbench: 10.*
# Laravel 11 uses Orchestra Testbench 9
- laravel: 11.*
testbench: 9.*
name: PHP ${{ matrix.php }} / L${{ matrix.laravel }} / ${{ matrix.dependency-version }}
name: PHP ${{ matrix.php }} / L${{ matrix.laravel }} / ${{ matrix.dependency-version }} / Shard ${{ matrix.shard }}/4

steps:

Expand All @@ -46,6 +47,29 @@ jobs:
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

- name: Cache Playwright browsers
id: playwright-cache
uses: actions/cache@v3
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-latest
restore-keys: |
playwright-${{ runner.os }}-latest
playwright-${{ runner.os }}-

- name: Install and update Playwright
run: |
if [ ! -d ~/.cache/ms-playwright ]; then
npm install playwright@latest
npx playwright install --with-deps
fi

- name: Validate composer.json and composer.lock
run: composer validate --strict

Expand All @@ -60,23 +84,25 @@ jobs:
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: xdebug
# extensions: mbstring, gd, intl
coverage: none
extensions: mbstring, gd, intl, pcntl

- name: Install dependencies
run: |
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
composer update --${{ matrix.dependency-version }} --prefer-dist --no-progress --no-interaction
composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update
composer require "orchestra/testbench:${{ matrix.testbench }}" --dev --no-interaction --no-update
composer update --${{ matrix.dependency-version }} --prefer-dist --no-progress --no-interaction --no-scripts

- name: Setup testbench environment
run: |
cp workbench/.env.example workbench/.env
sed -i 's/APP_KEY=/APP_KEY=base64:ZQvPGC7uVADkjOgtGIIuCI8u3\/Pzu+VaRObIbHsgjCc=/' workbench/.env
sed -i 's/APP_ENV=local/APP_ENV=testing/' workbench/.env
grep "APP_KEY=base64:" workbench/.env
npm install
php vendor/bin/testbench vendor:publish --tag='filament-shield-config'
php vendor/bin/testbench filament:assets
php vendor/bin/testbench package:sync-skeleton

- name: Run test suite
run: composer test -- --coverage-clover ./coverage.xml

- name: Upload coverage reports to Codecov
# Make sure the Codecov action is only executed once
if: matrix.php == '8.3' && matrix.laravel == '12.*' && matrix.dependency-version == 'prefer-stable'
uses: codecov/codecov-action@v6.0.0
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: ./coverage.xml
verbose: true
run: vendor/bin/pest --shard=${{ matrix.shard }}/4 --parallel
8 changes: 5 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,10 @@
"require-dev": {
"laravel/pint": "^1.21",
"orchestra/testbench": "^9.9|^10.0",
"pestphp/pest": "^3.7",
"pestphp/pest-plugin-livewire": "^3.0"
"pestphp/pest": "^4.0",
"pestphp/pest-plugin-browser": "^4.0",
"pestphp/pest-plugin-laravel": "^4.0",
"pestphp/pest-plugin-livewire": "^4.0"
},
"scripts": {
"post-autoload-dump": [
Expand All @@ -64,7 +66,7 @@
"post-install-cmd": "@setup",
"post-update-cmd": "@setup",
"format": "vendor/bin/pint",
"test": "vendor/bin/testbench package:test",
"test": "vendor/bin/pest --parallel",
"clear": "@php vendor/bin/testbench package:purge-skeleton --ansi",
"prepare": "@php vendor/bin/testbench package:discover --ansi",
"build": "@php vendor/bin/testbench workbench:build --ansi",
Expand Down
81 changes: 64 additions & 17 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@
"@commitlint/cli": "^19.7.1",
"@commitlint/config-conventional": "^19.7.1",
"husky": "^9.1.7"
},
"dependencies": {
"playwright": "^1.59.1"
}
}
Loading
Loading