name: Tests on: push: branches: - master - develop pull_request: jobs: frontendTests: runs-on: ubuntu-latest name: JavaScript steps: - name: Checkout changes uses: actions/checkout@v1 - name: Install Node uses: actions/setup-node@v1 with: node-version: 8 - name: Install Node dependencies run: npm install - name: Run tests run: npm run test phpUnitTests: runs-on: ubuntu-latest strategy: max-parallel: 6 matrix: phpVersions: ['7.2', '7.3', '7.4'] fail-fast: false name: Unit Tests / PHP ${{ matrix.phpVersions }} steps: - name: Checkout changes uses: actions/checkout@v1 - name: Install PHP uses: shivammathur/setup-php@v1 with: php-version: ${{ matrix.phpVersions }} extensions: mbstring, intl, gd, xml, sqlite - name: Setup problem matchers for PHPUnit run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: Set Composer cache id: composer-cache run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache Composer dependencies uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} restore-keys: ${{ runner.os }}-composer- - name: Install Composer dependencies run: composer install --no-interaction --no-progress --no-suggest --no-scripts - name: Run post-update Composer scripts run: php artisan package:discover - name: Reset October modules run: | git reset --hard HEAD composer dumpautoload - name: Run Linting and Tests run: | ./vendor/bin/parallel-lint --exclude vendor --exclude storage --exclude tests/fixtures/plugins/testvendor/goto/Plugin.php . ./vendor/bin/phpunit --prepend ./vendor/october/rain/src/Support/helpers.php duskTests: runs-on: ubuntu-latest name: Browser Tests steps: - name: Checkout changes uses: actions/checkout@v1 - name: Install PHP uses: shivammathur/setup-php@v1 with: php-version: '7.3' extensions: mbstring, intl, gd, xml, sqlite - name: Setup problem matcher for PHPUnit run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: Set Composer cache id: composer-cache run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache Composer dependencies uses: actions/cache@v1 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} restore-keys: ${{ runner.os }}-composer- - name: Install Dusk plugin run: | curl -fLs https://github.com/rainlab/dusk-plugin/archive/master.zip -o rainlab-dusk.zip mkdir -p plugins/rainlab unzip rainlab-dusk.zip -d plugins/rainlab mv plugins/rainlab/dusk-plugin-master plugins/rainlab/dusk - name: Install Composer dependencies run: composer install --no-interaction --no-progress --no-suggest - name: Run post-update Composer scripts run: php artisan package:discover - name: Reset October modules run: | git reset --hard HEAD composer dumpautoload - name: Install Chrome 78 driver run: php artisan dusk:chrome-driver 78 - name: Start Chrome driver run: ./vendor/laravel/dusk/bin/chromedriver-linux > /dev/null 2>&1 & - name: Run Laravel Server run: php artisan serve > /dev/null 2>&1 & - name: Run Dusk Tests run: php artisan dusk - name: Upload Dusk Screenshots uses: actions/upload-artifact@v1 if: failure() with: name: dusk-screenshots path: ./tests/Browser/screenshots