name: run-tests

on:
    push:
    pull_request:
    schedule:
        -   cron: '0 0 * * *'

jobs:
    test:

        runs-on: ubuntu-latest
        strategy:
            fail-fast: true
            matrix:
                php: [7.4, 7.3, 7.2, 7.1]
                dependency-version: [prefer-lowest, prefer-stable]

        env:
            extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick

        name: P${{ matrix.php }} - ${{ matrix.dependency-version }}

        steps:
            -   name: Checkout code
                uses: actions/checkout@v1

            -   name: Cache dependencies
                uses: actions/cache@v1
                with:
                    path: ~/.composer/cache/files
                    key: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }}

            -   name: Setup PHP extensions
                id: cache-env
                uses: shivammathur/cache-extensions@v1
                with:
                    php-version: ${{ matrix.php }}
                    extensions: ${{ env.extensions }}
                    key: php-extensions-cache-v1

            -   name: Setup PHP
                uses: shivammathur/setup-php@v1
                with:
                    php-version: ${{ matrix.php }}
                    extensions: ${{ env.extensions }}
                    coverage: none

            -   name: Install dependencies
                run: |
                    composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest

            -   name: Install Puppeteer
                run: npm install puppeteer

            -   name: Execute tests
                run: vendor/bin/phpunit
