name: qa on: push: branches: - main - 2.x pull_request: schedule: - cron: '0 0 * * *' # Daily at midnight jobs: javascript-tests: runs-on: ubuntu-latest name: JavaScript Tests steps: - name: ๐Ÿ“ฅ Checkout Code uses: actions/checkout@v4 - name: ๐Ÿ”ง Setup Node.js uses: actions/setup-node@v4 with: node-version: '20.x' cache: 'npm' - name: ๐Ÿ“ฆ Install Dependencies run: npm ci - name: โœ… Run Tests run: npm run test - name: ๐Ÿ“Š Run Coverage run: npm run test:coverage static-analysis: runs-on: ubuntu-latest strategy: fail-fast: false matrix: php: [ 8.2 ] name: php v${{ matrix.php }} steps: - name: ๐Ÿ“ฅ Checkout Code uses: actions/checkout@v4 - name: ๐Ÿ”ง Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} coverage: none - name: ๐Ÿšš Cache Composer Dependencies uses: actions/cache@v4 with: path: ~/.composer/cache key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }} restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}- - name: ๐Ÿ“ฆ Install Dependencies run: | composer config --global allow-plugins true composer install --no-interaction --prefer-dist --optimize-autoloader - name: ๐Ÿงน Run PHP CS Fixer (Code Style) run: vendor/bin/php-cs-fixer fix --dry-run --diff - name: ๐Ÿ” Run PHPStan (Static Analysis) run: vendor/bin/phpstan analyse --no-progress - name: ๐Ÿš€ Run PHPLint (Syntax Check) run: vendor/bin/phplint prime-test: needs: static-analysis runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - { php: 8.4, phpunit: 10.5.* } - { php: 8.3, phpunit: 10.5.* } - { php: 8.2, phpunit: 10.5.* } name: php v${{ matrix.php }} steps: - name: ๐Ÿ“ฅ Checkout code uses: actions/checkout@v4 - name: ๐Ÿ”ง Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} coverage: none - name: ๐Ÿšš Cache dependencies uses: actions/cache@v4 with: path: ~/.composer/cache key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }} restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}- - name: ๐Ÿ“ฆ Install dependencies run: | sed -i '/"require": {/,/},/d; /"require-dev": {/,/},/d' composer.json composer config --global allow-plugins true composer require "phpunit/phpunit:${{ matrix.phpunit }}" "mockery/mockery" "psr/container" --no-interaction --no-update composer update --prefer-lowest -W --no-interaction --prefer-dist --optimize-autoloader - name: โœ… Execute tests run: vendor/bin/phpunit --testsuite prime symfony-test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - { symfony: 8.0.x-dev, php: 8.4, phpunit: 10.5.* } - { symfony: 7.4.x-dev, php: 8.2, phpunit: 10.5.* } - { symfony: 7.3.*, php: 8.5, phpunit: 10.5.* } - { symfony: 7.3.*, php: 8.4, phpunit: 10.5.* } - { symfony: 7.3.*, php: 8.3, phpunit: 10.5.* } - { symfony: 7.3.*, php: 8.2, phpunit: 10.5.* } - { symfony: 7.2.*, php: 8.2, phpunit: 10.5.* } - { symfony: 7.1.*, php: 8.2, phpunit: 10.5.* } - { symfony: 7.0.*, php: 8.2, phpunit: 10.5.* } name: symfony v${{ matrix.symfony }} x php v${{ matrix.php }} steps: - name: ๐Ÿ“ฅ Checkout code uses: actions/checkout@v4 - name: ๐Ÿ”ง Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} coverage: none - name: ๐Ÿšš Cache dependencies uses: actions/cache@v4 with: path: ~/.composer/cache key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('composer.json') }} restore-keys: ${{ runner.os }}-composer-${{ matrix.php }}- - name: ๐Ÿ“ฆ Install dependencies run: | sed -i '/"require": {/,/},/d; /"require-dev": {/,/},/d' composer.json composer config --global allow-plugins true composer config extra.symfony.require "${{ matrix.symfony }}" if [[ "${{ matrix.symfony }}" == *"-dev"* ]]; then echo "Setting minimum-stability to dev for ${{ matrix.symfony }}" composer config minimum-stability "dev" composer config prefer-stable true fi composer require "symfony/config:${{ matrix.symfony }}" "symfony/console:${{ matrix.symfony }}" "symfony/dependency-injection:${{ matrix.symfony }}" "symfony/framework-bundle:${{ matrix.symfony }}" "symfony/http-kernel:${{ matrix.symfony }}" "symfony/translation:${{ matrix.symfony }}" "symfony/twig-bundle:${{ matrix.symfony }}" "phpunit/phpunit:${{ matrix.phpunit }}" "mockery/mockery" "psr/container" "monolog/monolog" --no-interaction --no-update if [[ "${{ matrix.symfony }}" == *"-dev"* ]]; then echo "Running composer update (latest dependencies)" composer update -W --no-interaction --prefer-dist --optimize-autoloader else echo "Running composer update --prefer-lowest" composer update --prefer-lowest -W --no-interaction --prefer-dist --optimize-autoloader fi - name: โœ… Execute tests run: vendor/bin/phpunit --testsuite symfony laravel-test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - { laravel: 13.x-dev, testbench: 11.x-dev, php: 8.5, phpunit: 11.5.* } - { laravel: 13.x-dev, testbench: 11.x-dev, php: 8.4, phpunit: 11.5.* } - { laravel: 13.x-dev, testbench: 11.x-dev, php: 8.3, phpunit: 11.5.* } - { laravel: 12.*, testbench: 10.*, php: 8.5, phpunit: 11.5.* } - { laravel: 12.*, testbench: 10.*, php: 8.4, phpunit: 11.5.* } - { laravel: 12.*, testbench: 10.*, php: 8.3, phpunit: 11.5.* } - { laravel: 12.*, testbench: 10.*, php: 8.2, phpunit: 11.5.* } - { laravel: 11.*, testbench: 9.*, php: 8.2, phpunit: 10.5.* } name: laravel v${{ matrix.laravel }} x php v${{ matrix.php }} steps: - name: ๐Ÿ“ฅ Checkout code uses: actions/checkout@v4 - name: ๐Ÿ”ง Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: fileinfo coverage: none - name: ๐Ÿšš Cache dependencies uses: actions/cache@v4 with: path: ~/.composer/cache key: ${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} restore-keys: ${{ matrix.php }}-composer - name: ๐Ÿ“ฆ Install dependencies run: | sed -i '/\"require\": {/,/},/d; /\"require-dev\": {/,/},/d' composer.json composer config --global allow-plugins true if [[ "${{ matrix.laravel }}" == *"-dev"* ]]; then echo "Setting minimum-stability to dev for ${{ matrix.laravel }}" composer config minimum-stability "dev" composer config prefer-stable true fi composer require "laravel/framework:${{ matrix.laravel }}" "phpunit/phpunit:${{ matrix.phpunit }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update if [[ "${{ matrix.laravel }}" == *"-dev"* ]]; then echo "Running composer update (latest dependencies)" composer update -W --no-interaction --prefer-dist --optimize-autoloader else echo "Running composer update --prefer-lowest" composer update --prefer-lowest -W --no-interaction --prefer-dist --optimize-autoloader fi - name: โœ… Execute tests run: vendor/bin/phpunit --testsuite laravel