@@ -136,7 +136,88 @@ jobs:
136
136
cache : ' yarn'
137
137
cache-dependency-path : |
138
138
yarn.lock
139
- **/package.json
139
+ package.json
140
+ src/**/package.json
140
141
- run : yarn --immutable
141
142
- run : yarn playwright install
142
143
- run : yarn test
144
+
145
+ test-app-encore-app :
146
+ name : " Test Apps / Encore (${{ matrix.name}})"
147
+ runs-on : ubuntu-latest
148
+ strategy :
149
+ fail-fast : false
150
+ matrix :
151
+ include :
152
+ - name : Internal, from "vendor/"
153
+ ux-packages-source : php-vendor
154
+ - name : External, from "npm add"
155
+ ux-packages-source : js-packages
156
+ steps :
157
+ # Setup
158
+ - uses : actions/checkout@v4
159
+
160
+ - run : corepack enable
161
+
162
+ - uses : actions/setup-node@v4
163
+ with :
164
+ cache : ' yarn'
165
+ cache-dependency-path : |
166
+ yarn.lock
167
+ package.json
168
+ src/**/package.json
169
+ test_apps/encore-app/package.json
170
+
171
+ - uses : shivammathur/setup-php@v2
172
+
173
+ - name : Install root dependencies
174
+ uses : ramsey/composer-install@v3
175
+ with :
176
+ working-directory : ${{ github.workspace }}
177
+
178
+ - name : Build root packages
179
+ run : php .github/build-packages.php
180
+ working-directory : ${{ github.workspace }}
181
+
182
+ - uses : ramsey/composer-install@v3
183
+ with :
184
+ dependency-versions : ' highest'
185
+ working-directory : test_apps/encore-app
186
+
187
+ - if : matrix.ux-packages-source == 'js-packages'
188
+ working-directory : test_apps/encore-app
189
+ run : |
190
+ PACKAGES_TO_INSTALL=''
191
+ for PACKAGE in $(cd ../..; yarn workspaces list --no-private --json); do
192
+ PACKAGE_DIR=../../$(echo $PACKAGE | jq -r '.location')
193
+ PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL $PACKAGE_DIR"
194
+ done
195
+ echo "Installing packages: $PACKAGES_TO_INSTALL"
196
+ yarn add --dev $PACKAGES_TO_INSTALL
197
+
198
+ # Validations
199
+ - name : Ensure UX packages are installed from "${{ matrix.ux-packages-source == 'php-vendor' && 'vendor/symfony/ux-...' || '../../../src/**/assets' }}"
200
+ working-directory : test_apps/encore-app
201
+ run : |
202
+ for PACKAGE in $(cat package.json | jq -c '(.dependencies // {}) + (.devDependencies // {}) | to_entries[] | select(.key | startswith("@symfony/ux-")) | {name: .key, version: .value}'); do
203
+ PACKAGE_NAME=$(echo $PACKAGE | jq -r '.name')
204
+ PACKAGE_VERSION=$(echo $PACKAGE | jq -r '.version')
205
+
206
+ echo -n "Checking $PACKAGE_NAME@$PACKAGE_VERSION..."
207
+ if [[ $PACKAGE_VERSION == $EXPECTED_PATTERN* ]]; then
208
+ echo " OK"
209
+ else
210
+ echo " KO"
211
+ echo "The package version of $PACKAGE_NAME must starts with the pattern (e.g.: $EXPECTED_PATTERN), got $PACKAGE_VERSION instead."
212
+ exit 1
213
+ fi
214
+ done;
215
+ env :
216
+ EXPECTED_PATTERN : ${{ matrix.ux-packages-source == 'php-vendor' && 'file:vendor/symfony/*' || '../../src/*' }}
217
+
218
+ - name : Run Encore
219
+ working-directory : test_apps/encore-app
220
+ run : |
221
+ YARN_ENABLE_HARDENED_MODE=0 YARN_ENABLE_IMMUTABLE_INSTALLS=0 yarn || (echo "Unable to install Yarn dependencies" && exit 1)
222
+ yarn encore dev || (echo "Unable to build Encore assets (dev)" && exit 1)
223
+ yarn encore production || (echo "Unable to build Encore assets (production)" && exit 1)
0 commit comments