Skip to content

Create E2E app for browsers tests #28

Create E2E app for browsers tests

Create E2E app for browsers tests #28

Workflow file for this run

name: Browser Tests
defaults:
run:
shell: bash
on:
push:
paths-ignore:
- 'src/*/doc/**'
- 'src/**/*.md'
- 'ux.symfony.com/**'
- '.github/workflows/app-tests.yaml'
- '.github/workflows/unit-tests.yaml'
pull_request:
paths-ignore:
- 'src/*/doc/**'
- 'src/**/*.md'
- 'ux.symfony.com/**'
- '.github/workflows/app-tests.yaml'
- '.github/workflows/unit-tests.yaml'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
symfony: ['6.4.*', '7.3.*']
env:
SYMFONY_REQUIRE: '${{ matrix.symfony }}'
steps:
- uses: actions/checkout@v4
- run: npm i -g corepack && corepack enable
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'pnpm'
cache-dependency-path: |
pnpm-lock.yaml
package.json
- name: Install root JS dependencies
run: pnpm install --frozen-lockfile
- name: Install custom browsers
run: node ./bin/get_browsers.mjs
- name: Install browsers with Playwright
run: pnpm exec playwright install firefox ffmpeg
- uses: shivammathur/setup-php@v2
with:
php-version: 8.2
tools: symfony-cli, flex
- name: Install root PHP dependencies
uses: ramsey/composer-install@v3
with:
working-directory: ${{ github.workspace }}
- name: Build root packages
run: php .github/build-packages.php
- name: Start Docker containers
run: docker compose up -d --build
working-directory: test_apps/e2e-app
- name: Configure E2E app
run: |
echo 'APP_ENV=test' >> .env.local
echo 'APP_DEBUG=0' >> .env.local
working-directory: test_apps/e2e-app
- name: Install E2E PHP dependencies
uses: ramsey/composer-install@v3
with:
dependency-versions: highest
working-directory: test_apps/e2e-app
- name: Prepare E2E app
run: |
symfony composer dump-env
symfony console cache:warmup
working-directory: test_apps/e2e-app
- name: Start E2E app
run: symfony serve --daemon
working-directory: test_apps/e2e-app
- name: Run browser tests
run: pnpm run test:browser
id: browser-tests
- uses: actions/upload-artifact@v4
if: ${{ steps.browser-tests.outcome == 'failure' }}
with:
name: Playwright report
path: .playwright-report/
retention-days: 7
- uses: actions/upload-artifact@v4
if: ${{ steps.browser-tests.outcome == 'failure' }}
with:
name: Symfony logs
path: test_apps/e2e-app/var/log/
retention-days: 7