2020 - ' .github/workflows/app-tests.yaml'
2121 - ' .github/workflows/unit-tests.yaml'
2222
23+ concurrency :
24+ group : ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
25+ cancel-in-progress : true
26+
2327jobs :
24- js :
28+ test :
2529 runs-on : ubuntu-latest
30+ strategy :
31+ fail-fast : false
32+ matrix :
33+ symfony : ['6.4', '7.3']
34+ env :
35+ SYMFONY_REQUIRE : ' ${{ matrix.symfony }}.*'
2636 steps :
2737 - uses : actions/checkout@v4
38+
2839 - run : npm i -g corepack && corepack enable
2940 - uses : actions/setup-node@v4
3041 with :
@@ -33,21 +44,76 @@ jobs:
3344 cache-dependency-path : |
3445 pnpm-lock.yaml
3546 package.json
36- src/**/package.json
37- - run : pnpm install --frozen-lockfile
3847
39- - name : Install custom browsers
40- run : node ./bin/get_browsers.mjs
48+ - name : Install root JS dependencies
49+ run : pnpm install --frozen-lockfile
50+
51+ - name : Install custom browsers
52+ run : node ./bin/get_browsers.mjs
53+
54+ - name : Install browsers with Playwright
55+ run : pnpm exec playwright install firefox ffmpeg
56+
57+ - uses : shivammathur/setup-php@v2
58+ with :
59+ php-version : 8.2
60+ tools : symfony-cli, flex
61+
62+ - name : Install root PHP dependencies
63+ uses : ramsey/composer-install@v3
64+ with :
65+ working-directory : ${{ github.workspace }}
66+
67+ - name : Build root packages
68+ run : php .github/build-packages.php
4169
42- - name : Install browsers with Playwright
43- run : pnpm exec playwright install firefox ffmpeg
70+ - name : Start Docker containers
71+ run : docker compose up -d --build
72+ working-directory : test_apps/e2e-app
4473
45- # TODO: Install the E2E app + run webserver
46- - run : pnpm run test:browser
74+ - name : Configure E2E app
75+ run : |
76+ echo 'APP_ENV=prod' >> .env.local
77+ echo 'APP_DEBUG=0' >> .env.local
78+ echo 'APP_SECRET=df4c071596e64cc75a349456f2887ae2419ae650' >> .env.local
79+ working-directory : test_apps/e2e-app
80+
81+ - name : Install E2E PHP dependencies
82+ uses : ramsey/composer-install@v3
83+ with :
84+ working-directory : test_apps/e2e-app
85+ dependency-versions : highest
86+ composer-options : --no-dev
87+ custom-cache-suffix : symfony-${{ matrix.symfony }}
88+
89+ - name : Prepare E2E app
90+ run : |
91+ symfony composer dump-autoload --classmap-authoritative --no-dev
92+ symfony composer dump-env
93+ symfony console asset-map:compile
94+ symfony console ux:icons:warm-cache
95+ working-directory : test_apps/e2e-app
96+
97+ - name : Start E2E app
98+ run : symfony serve --daemon
99+ working-directory : test_apps/e2e-app
100+
101+ - name : Run browser tests
102+ run : pnpm run test:browser
103+ id : browser-tests
104+
105+ - uses : actions/upload-artifact@v4
106+ if : ${{ always() && steps.browser-tests.conclusion == 'failure' }}
107+ with :
108+ name : Playwright report and output (${{ matrix.symfony }})
109+ path : |
110+ src/**/assets/.playwright-report/
111+ src/**/assets/.playwright-output/
112+ retention-days : 7
47113
48114 - uses : actions/upload-artifact@v4
49- if : ${{ !cancelled() }}
115+ if : ${{ always() && steps.browser-tests.conclusion == 'failure' }}
50116 with :
51- name : playwright-report
52- path : .playwright-report /
117+ name : Symfony logs (${{ matrix.symfony }})
118+ path : test_apps/e2e-app/var/log /
53119 retention-days : 7
0 commit comments