name: "CI"

on:
    pull_request:
    push:
        branches:
            - 'master'

env:
    fail-fast: true
    PHPUNIT_FLAGS: "-v"
    SYMFONY_REQUIRE: ">=4.4"
    XDEBUG_MODE: "coverage"

jobs:
    test:
        name: PHP ${{ matrix.php-version }} + Symfony ${{ matrix.symfony-version }}
        runs-on: 'ubuntu-latest'
        continue-on-error: ${{ matrix.allowed-to-fail }}

        strategy:
            fail-fast: false
            matrix:
                php-version: ['7.4', '8.0', '8.1', '8.2', '8.3', '8.4']
                dependencies: [highest]
                allowed-to-fail: [false]
                symfony-version: [latest]
                include:
                  - php-version: nightly
                    dependencies: highest
                    allowed-to-fail: true
                    symfony-version: latest
        steps:
            - name: "Checkout code"
              uses: actions/checkout@v4.1.7

            - name: "Install PHP with extensions"
              uses: shivammathur/setup-php@2.7.0
              with:
                  coverage: xdebug
                  php-version: ${{ matrix.php-version }}
                  tools: composer:v2
                  extensions: intl, xdebug

            - name: "Install Composer dependencies (${{ matrix.dependencies }})"
              uses: "ramsey/composer-install@v3"
              with:
                dependency-versions: "${{ matrix.dependencies }}"
                composer-options: "--prefer-dist"

            - name: "Install PHPUnit"
              run: vendor/bin/simple-phpunit install

            - name: "PHPUnit version"
              run: vendor/bin/simple-phpunit --version

            - name: "Run unit tests"
              run: vendor/bin/phpunit --coverage-text --verbose

    test_js:
        name: JS tests
        runs-on: ubuntu-latest

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

            - name: "Setup node"
              uses: actions/setup-node@v4.0.3
              with:
                  node-version: 'lts/*'

            - name: "Install dependencies"
              run: npm install
              working-directory: Resources

            - name: "Run tests"
              run: npm test
              working-directory: Resources
