Skip to content

Commit

Permalink
Upgrade test application
Browse files Browse the repository at this point in the history
  • Loading branch information
loevgaard committed Jun 10, 2024
1 parent 5a3eaac commit 74d14f7
Show file tree
Hide file tree
Showing 52 changed files with 318 additions and 593 deletions.
202 changes: 93 additions & 109 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ name: "build"
on:
push:
branches:
- "*.x"
- "1.*.x" # Matches our branch versioning that mirrors Sylius', e.g. '1.12.x'
- "master"
- "main"
paths-ignore:
- "**/*.md"
pull_request:
Expand All @@ -24,14 +26,14 @@ jobs:
strategy:
matrix:
php-version:
- "7.4"
- "8.1" # Always use the lowest version of PHP since a higher version could create actual syntax errors in lower versions

dependencies:
- "highest"

steps:
- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"

- name: "Setup PHP, with composer and extensions"
uses: "shivammathur/setup-php@v2"
Expand All @@ -41,7 +43,7 @@ jobs:
coverage: "none"

- name: "Install composer dependencies"
uses: "ramsey/composer-install@v2"
uses: "ramsey/composer-install@v3"
with:
dependency-versions: "${{ matrix.dependencies }}"

Expand All @@ -54,6 +56,10 @@ jobs:
- name: "Check style"
run: "composer check-style"

- name: "Rector"
run: "vendor/bin/rector process --dry-run"
continue-on-error: true

- name: "Lint yaml files"
run: "(cd tests/Application && bin/console lint:yaml ../../src/Resources)"

Expand All @@ -68,19 +74,20 @@ jobs:
strategy:
matrix:
php-version:
- "7.4"
- "8.0"
- "8.1"
- "8.2"

dependencies:
- "lowest"
- "highest"

symfony:
- "^5.4"
- "~5.4.0"
- "~6.4.0"

steps:
- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"

- name: "Setup PHP, with composer and extensions"
uses: "shivammathur/setup-php@v2"
Expand All @@ -90,19 +97,22 @@ jobs:
php-version: "${{ matrix.php-version }}"
tools: "composer-require-checker, composer-unused, flex"

- name: "Remove require-dev section in composer.json"
run: "composer config --unset require-dev"

- name: "Install composer dependencies"
uses: "ramsey/composer-install@v2"
uses: "ramsey/composer-install@v3"
env:
SYMFONY_REQUIRE: "${{ matrix.symfony }}"
with:
dependency-versions: "${{ matrix.dependencies }}"

- name: "Run maglnet/composer-require-checker"
run: "composer-require-checker check --config-file=$(pwd)/composer-require-checker.json"
run: "composer-require-checker check"

- name: "Run composer-unused/composer-unused"
run: "composer-unused || true" # todo remove when https://github.com/shivammathur/setup-php/issues/703 is fixed

run: "composer-unused"
static-code-analysis:
name: "Static Code Analysis (PHP${{ matrix.php-version }} | Deps: ${{ matrix.dependencies }} | SF${{ matrix.symfony }})"

Expand All @@ -111,19 +121,20 @@ jobs:
strategy:
matrix:
php-version:
- "7.4"
- "8.0"
- "8.1"
- "8.2"

dependencies:
- "lowest"
- "highest"

symfony:
- "^5.4"
- "~5.4.0"
- "~6.4.0"

steps:
- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"

- name: "Setup PHP, with composer and extensions"
uses: "shivammathur/setup-php@v2"
Expand All @@ -133,16 +144,16 @@ jobs:
php-version: "${{ matrix.php-version }}"
tools: "flex"

- name: "Remove sylius/sylius from composer.json"
run: "composer remove --dev --no-update --no-plugins --no-scripts sylius/sylius"

- name: "Install composer dependencies"
uses: "ramsey/composer-install@v2"
uses: "ramsey/composer-install@v3"
env:
SYMFONY_REQUIRE: "${{ matrix.symfony }}"
with:
dependency-versions: "${{ matrix.dependencies }}"

- name: "Cache warmup"
run: "(cd tests/Application && bin/console cache:warmup)"

- name: "Static analysis"
run: "vendor/bin/psalm --php-version=${{ matrix.php-version }}"

Expand All @@ -154,19 +165,20 @@ jobs:
strategy:
matrix:
php-version:
- "7.4"
- "8.0"
- "8.1"

- "8.2"

dependencies:
- "lowest"
- "highest"

symfony:
- "^5.4"
- "~5.4.0"
- "~6.4.0"

steps:
- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"

- name: "Setup PHP, with composer and extensions"
uses: "shivammathur/setup-php@v2"
Expand All @@ -177,17 +189,14 @@ jobs:
tools: "flex"

- name: "Install composer dependencies"
uses: "ramsey/composer-install@v2"
uses: "ramsey/composer-install@v3"
env:
SYMFONY_REQUIRE: "${{ matrix.symfony }}"
with:
dependency-versions: "${{ matrix.dependencies }}"

- name: "Run phpunit"
run: "composer phpunit"

- name: "Run phpspec"
run: "composer phpspec"

integration-tests:
name: "Integration tests (PHP${{ matrix.php-version }} | Deps: ${{ matrix.dependencies }} | SF${{ matrix.symfony }})"
Expand All @@ -197,126 +206,101 @@ jobs:
strategy:
matrix:
php-version:
- "7.4"
- "8.0"
- "8.1"
- "8.2"

dependencies:
- "lowest"
- "highest"

symfony:
- "^5.4"
- "~5.4.0"
- "~6.4.0"

steps:
- name: "Start MySQL"
run: "sudo /etc/init.d/mysql start"

- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"

- name: "Setup PHP, with composer and extensions"
uses: "shivammathur/setup-php@v2"
with:
php-version: "${{ matrix.php-version }}"
extensions: "${{ env.PHP_EXTENSIONS }}"
coverage: "none"
tools: "symfony"

- name: "Setup node"
uses: "actions/setup-node@v2"
with:
node-version: "12.x"
extensions: "${{ env.PHP_EXTENSIONS }}"
php-version: "${{ matrix.php-version }}"
tools: "flex"

- name: "Install composer dependencies"
uses: "ramsey/composer-install@v2"
uses: "ramsey/composer-install@v3"
env:
SYMFONY_REQUIRE: "${{ matrix.symfony }}"
with:
dependency-versions: "${{ matrix.dependencies }}"

- name: "Lint container"
run: "(cd tests/Application && bin/console lint:container) || true"
run: "(cd tests/Application && bin/console lint:container)"

- name: "Create database"
run: "(cd tests/Application && bin/console doctrine:database:create -vvv)"
run: "(cd tests/Application && bin/console doctrine:database:create)"

- name: "Create database schema"
run: "(cd tests/Application && bin/console doctrine:schema:create -vvv)"
run: "(cd tests/Application && bin/console doctrine:schema:create)"

- name: "Validate Doctrine mapping"
run: "(cd tests/Application && bin/console doctrine:schema:validate -vvv)"

- name: "Get Yarn cache directory"
id: "yarn-cache"
run: "echo \"::set-output name=dir::$(yarn cache dir)\""
run: "(cd tests/Application && bin/console doctrine:schema:validate -vvv)" # The verbose flag will show 'missing' SQL statements, if any

mutation-tests:
name: "Mutation tests"

runs-on: "ubuntu-latest"

strategy:
matrix:
php-version:
- "8.2"

dependencies:
- "highest"

steps:
- name: "Checkout"
uses: "actions/checkout@v4"

- name: "Cache Yarn"
uses: "actions/cache@v2"
- name: "Setup PHP, with composer and extensions"
uses: "shivammathur/setup-php@v2"
with:
path: "${{ steps.yarn-cache.outputs.dir }}"
key: "yarn-${{ hashFiles('**/package.json **/yarn.lock') }}"
restore-keys: "yarn-"

- name: "Install JS dependencies"
run: "(cd tests/Application && yarn install)"

- name: "Install assets"
run: "(cd tests/Application && bin/console assets:install public -vvv)"

- name: "Build assets"
run: "(cd tests/Application && yarn build)"

- name: "Output PHP version for Symfony CLI"
run: "php -v | head -n 1 | awk '{ print $2 }' > .php-version"

- name: "Install certificates"
run: "symfony server:ca:install"

- name: "Run Chrome Headless"
run: "google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1 > /dev/null 2>&1 &"

- name: "Wait for Chrome to start"
run: |
until curl -s http://127.0.0.1:9222/json/version | grep "Browser" > /dev/null 2>&1
do
sleep 1
done
- name: "Run webserver"
run: "(cd tests/Application && symfony server:start --port=8080 --dir=public --daemon)"

- name: "Wait for webserver to start"
run: |
until symfony server:list | grep /public > /dev/null 2>&1
do
sleep 1
done
- name: "Run behat"
run: "vendor/bin/behat --colors --strict -vvv --no-interaction || vendor/bin/behat --colors --strict -vvv --no-interaction --rerun"

- name: "Upload Behat logs"
uses: "actions/upload-artifact@v2"
if: "failure()"
coverage: "pcov"
extensions: "${{ env.PHP_EXTENSIONS }}"
php-version: "${{ matrix.php-version }}"

- name: "Install composer dependencies"
uses: "ramsey/composer-install@v3"
with:
name: "Behat logs"
path: "etc/build/"
if-no-files-found: "ignore"
dependency-versions: "${{ matrix.dependencies }}"

- name: "Run infection"
run: "vendor/bin/infection"
env:
STRYKER_DASHBOARD_API_KEY: "${{ secrets.STRYKER_DASHBOARD_API_KEY }}"

code-coverage:
name: "Code Coverage"
name: "Code Coverage (PHP${{ matrix.php-version }} | Deps: ${{ matrix.dependencies }})"

runs-on: "ubuntu-latest"

strategy:
matrix:
php-version:
- "8.1"
- "8.2"

dependencies:
- "highest"

steps:
- name: "Checkout"
uses: "actions/checkout@v3"
uses: "actions/checkout@v4"

- name: "Setup PHP, with composer and extensions"
uses: "shivammathur/setup-php@v2"
Expand All @@ -329,14 +313,14 @@ jobs:
run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\""

- name: "Install composer dependencies"
uses: "ramsey/composer-install@v2"
uses: "ramsey/composer-install@v3"
with:
dependency-versions: "${{ matrix.dependencies }}"

- name: "Collect code coverage with pcov and phpunit/phpunit"
run: "vendor/bin/phpunit --coverage-clover=.build/logs/clover.xml"

- name: "Send code coverage report to Codecov.io"
env:
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}"
run: "bash <(curl -s https://codecov.io/bash)"
uses: "codecov/codecov-action@v3"
with:
token: "${{ secrets.CODECOV_TOKEN }}"
Loading

0 comments on commit 74d14f7

Please sign in to comment.