Skip to content

[CI] Add E2E tests

[CI] Add E2E tests #73

Workflow file for this run

name: "CI"
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
permissions:
contents: read
jobs:
dep:
name: "Dependencies"
runs-on: ubuntu-latest
steps:
- name: "Git: checkout"
uses: actions/checkout@v4
- name: "PHP: setup 8.3"
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
coverage: none
tools: composer
- name: "Composer: cache config"
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: "Composer: cache restore"
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-
- name: "Composer: validate"
run: composer validate --strict
- name: "Composer: install"
run: composer install --prefer-dist --no-progress --no-suggest
- name: "Composer: audit"
run: composer audit
cs:
name: "Code style"
runs-on: ubuntu-latest
steps:
- name: "Git: checkout"
uses: actions/checkout@v4
- name: "PHP: setup 8.3"
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
coverage: none
tools: php-cs-fixer
- name: "Php-CS-Fixer: version"
run: php-cs-fixer -V
- name: "Php-CS-Fixer: check"
run: php-cs-fixer check --diff
sa:
name: "Static Analysis"
runs-on: ubuntu-latest
steps:
- name: "Git: checkout"
uses: actions/checkout@v4
- name: "PHP: setup ${{ matrix.php-version }}"
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
coverage: none
tools: phpstan
- name: "Composer: cache config"
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: "Composer: cache restore"
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-
- name: "Composer: validate"
run: composer validate --strict
- name: "Composer: install"
run: composer install --prefer-dist --no-progress --no-suggest
- name: "PHPStan: version"
run: phpstan --version
- name: "PHPStan: analyse"
run: phpstan analyse src/
tests:
name: "Tests (PHP ${{ matrix.php-version }} ${{ matrix.dependencies }})"
runs-on: ubuntu-latest
strategy:
matrix:
include:
- php-version: '8.2'
dependencies: 'low'
- php-version: '8.3'
dependencies: 'high'
- php-version: '8.4'
dependencies: 'high'
fail-fast: false
steps:
- name: "Git: Checkout"
uses: actions/checkout@v4
- name: "PHP: setup ${{ matrix.php-version }}"
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
coverage: xdebug
ini-values: xdebug.mode=coverage
- name: "PHP: php matcher"
run: |
echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- name: "Composer: cache config"
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: "Composer: cache restore"
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}-${{ matrix.php-version }}-${{ matrix.dependencies }}
restore-keys: ${{ runner.os }}-composer-
- name: "Composer: validate"
run: composer validate --strict
- name: "Composer: install ${{ matrix.dependencies }} deps"
run: |
if [ "${{ matrix.dependencies }}" == "low" ]; then
composer update --prefer-lowest --prefer-dist --no-progress --no-suggest;
else
composer install --prefer-dist --no-progress --no-suggest;
fi
- name: "PHPUnit: version"
run: php vendor/bin/phpunit --version
- name: "PHPUnit: tests"
run: php vendor/bin/phpunit
# - name: "Codecov: upload"
# uses: codecov/codecov-action@v4.0.1
# with:
# token: ${{ secrets.CODECOV_TOKEN }}
e2e:
#
# This job is largely based on the BiomeJsBundle CI workflow written by Kocal
# https://github.com/Kocal/BiomeJsBundle/
#
name: E2E dev (${{ matrix.os }})
strategy:
matrix:
os:
- ubuntu-latest
# - windows-latest
# - macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: "PHP: setup (8.4)"
uses: shivammathur/setup-php@v2
with:
php-version: 8.4
tools: symfony-cli
- name: "[Composer] Install dependencies"
run: symfony composer install --prefer-dist --no-interaction --no-progress
- name: "[Symfony] Create new webapp"
run: |
git config --global user.email "smn.andre@gmail.com"
git config --global user.name "Simon André"
symfony new my_app --webapp
- name: "[Composer] Add sensiolabs/minify-bundle"
run: |
symfony composer config repositories.minify-bundle '{"type":"path", "url":"../","options":{"symlink":true}}'
symfony composer config minimum-stability dev
symfony composer config --json extra.symfony.allow-contrib 'true'
symfony composer require 'sensiolabs/minify-bundle:*' --no-interaction
working-directory: my_app
- name: "[Minify] Check configuration"
run: symfony console debug:config sensiolabs_minify -v
working-directory: my_app
- name: "[Minify] Run minify:install"
run: symfony console minify:install -v
working-directory: my_app
- name: "[Minify] Run minify:asset"
run: symfony console minify:asset assets/styles/app.css -v
working-directory: my_app
- name: "[Minify] Run asset-map:compile"
run: symfony console asset-map:compile -vv
working-directory: my_app