Skip to content

Commit 2098236

Browse files
e2e demos tests: reanimate run in Material theme (#31729)
1 parent 4761230 commit 2098236

File tree

272 files changed

+255
-407
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

272 files changed

+255
-407
lines changed

.github/workflows/demos_visual_tests.yml

Lines changed: 118 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,7 @@ jobs:
126126
- uses: actions/cache@v4
127127
name: Setup pnpm cache
128128
with:
129-
path: |
130-
${{ env.STORE_PATH }}
131-
.nx/cache
129+
path: ${{ env.STORE_PATH }}
132130
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
133131
restore-keys: |
134132
${{ runner.os }}-pnpm-store
@@ -139,14 +137,28 @@ jobs:
139137
- name: DevExtreme - Build
140138
if: needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'none'
141139
shell: bash
142-
run: pnpx nx build devextreme
140+
run: |
141+
pnpx nx build devextreme-scss
142+
pnpx nx build devextreme
143143
144144
- name: DevExtreme - Build-all
145145
if: needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none'
146146
env:
147147
BUILD_TEST_INTERNAL_PACKAGE: true
148148
run: pnpm run all:build-dev
149149

150+
- name: Zip artifacts (for jQuery tests)
151+
working-directory: ./packages/devextreme
152+
run: |
153+
7z a -tzip -mx3 -mmt2 artifacts.zip artifacts ../devextreme-scss/scss/bundles
154+
155+
- name: Upload build artifacts (for jQuery tests)
156+
uses: actions/upload-artifact@v4
157+
with:
158+
name: devextreme-artifacts-jquery
159+
path: ./packages/devextreme/artifacts.zip
160+
retention-days: 1
161+
150162
- name: Move packages
151163
if: needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none'
152164
run: |
@@ -201,12 +213,10 @@ jobs:
201213
run: |
202214
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
203215
204-
- uses: actions/cache@v4
205-
name: Setup pnpm cache
216+
- uses: actions/cache/restore@v4
217+
name: Restore pnpm cache
206218
with:
207-
path: |
208-
${{ env.STORE_PATH }}
209-
.nx/cache
219+
path: ${{ env.STORE_PATH }}
210220
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
211221
restore-keys: |
212222
${{ runner.os }}-pnpm-store
@@ -270,12 +280,10 @@ jobs:
270280
run: |
271281
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
272282
273-
- uses: actions/cache@v4
274-
name: Setup pnpm cache
283+
- uses: actions/cache/restore@v4
284+
name: Restore pnpm cache
275285
with:
276-
path: |
277-
${{ env.STORE_PATH }}
278-
.nx/cache
286+
path: ${{ env.STORE_PATH }}
279287
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
280288
restore-keys: |
281289
${{ runner.os }}-pnpm-store
@@ -337,12 +345,10 @@ jobs:
337345
run: |
338346
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
339347
340-
- uses: actions/cache@v4
341-
name: Setup pnpm cache
348+
- uses: actions/cache/restore@v4
349+
name: Restore pnpm cache
342350
with:
343-
path: |
344-
${{ env.STORE_PATH }}
345-
.nx/cache
351+
path: ${{ env.STORE_PATH }}
346352
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
347353
restore-keys: |
348354
${{ runner.os }}-pnpm-store
@@ -426,12 +432,10 @@ jobs:
426432
run: |
427433
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
428434
429-
- uses: actions/cache@v4
430-
name: Setup pnpm cache
435+
- uses: actions/cache/restore@v4
436+
name: Restore pnpm cache
431437
with:
432-
path: |
433-
${{ env.STORE_PATH }}
434-
.nx/cache
438+
path: ${{ env.STORE_PATH }}
435439
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
436440
restore-keys: |
437441
${{ runner.os }}-pnpm-store
@@ -490,18 +494,15 @@ jobs:
490494
fail-fast: false
491495
matrix:
492496
STRATEGY: [screenshots, accessibility]
493-
# THEME: ['material.blue.light', 'fluent.blue.light']
494-
THEME: ['fluent.blue.light']
495-
CONSTEL: [jquery(1/4), jquery(2/4), jquery(3/4), jquery(4/4), jquery]
497+
THEME: ['material.blue.light', 'fluent.blue.light']
498+
CONSTEL: [jquery(1/3), jquery(2/3), jquery(3/3), jquery]
496499
exclude:
497500
- STRATEGY: accessibility
498-
CONSTEL: jquery(1/4)
499-
- STRATEGY: accessibility
500-
CONSTEL: jquery(2/4)
501+
CONSTEL: jquery(1/3)
501502
- STRATEGY: accessibility
502-
CONSTEL: jquery(3/4)
503+
CONSTEL: jquery(2/3)
503504
- STRATEGY: accessibility
504-
CONSTEL: jquery(4/4)
505+
CONSTEL: jquery(3/3)
505506
- STRATEGY: screenshots
506507
CONSTEL: jquery
507508
env:
@@ -515,6 +516,16 @@ jobs:
515516
- name: Get sources
516517
uses: actions/checkout@v4
517518

519+
- name: Download artifacts
520+
uses: actions/download-artifact@v4
521+
with:
522+
name: devextreme-artifacts-jquery
523+
path: ./packages/devextreme
524+
525+
- name: Unpack artifacts
526+
working-directory: ./packages/devextreme
527+
run: 7z x artifacts.zip -aoa
528+
518529
- name: Setup Chrome
519530
uses: ./.github/actions/setup-chrome
520531
with:
@@ -535,36 +546,57 @@ jobs:
535546
run: |
536547
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
537548
538-
- uses: actions/cache@v4
539-
name: Setup pnpm cache
549+
- uses: actions/cache/restore@v4
550+
name: Restore pnpm cache
540551
with:
541-
path: |
542-
${{ env.STORE_PATH }}
543-
.nx/cache
552+
path: ${{ env.STORE_PATH }}
544553
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
545554
restore-keys: |
546555
${{ runner.os }}-pnpm-store
547556
548557
- name: Install dependencies
549558
run: pnpm install --frozen-lockfile
550559

551-
- name: DevExtreme - Build
552-
run: pnpx nx build devextreme
560+
- name: Cache Roboto font
561+
if: contains(matrix.THEME, 'material')
562+
id: cache-roboto
563+
uses: actions/cache@v4
564+
with:
565+
path: /usr/share/fonts/truetype/roboto
566+
key: roboto-font-${{ runner.os }}
567+
568+
- name: Install Roboto font for Material theme
569+
if: contains(matrix.THEME, 'material') && steps.cache-roboto.outputs.cache-hit != 'true'
570+
run: |
571+
echo "Installing Roboto font..."
572+
sudo apt-get update -qq
573+
sudo apt-get install -y -qq fonts-roboto fonts-roboto-unhinted
574+
sudo fc-cache -f -v > /dev/null 2>&1 || true
575+
echo "Roboto font installed"
553576
554577
- name: Run Web Server
578+
run: python -m http.server 8080 &
579+
580+
- name: Set Chrome flags
581+
id: chrome-flags
555582
run: |
556-
python -m http.server 8080 &
557-
python -m http.server 8081 &
558-
python -m http.server 8082 &
559-
python -m http.server 8083 &
583+
BASE_FLAGS="chrome:headless --window-size=1200,800 --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl=swiftshader --disable-features=PaintHolding --js-flags=--random-seed=2147483647"
584+
585+
# For Material theme, enable better font rendering to avoid instability
586+
if [[ "${{ matrix.THEME }}" != *"material"* ]]; then
587+
BASE_FLAGS="$BASE_FLAGS --font-render-hinting=none --disable-font-subpixel-positioning"
588+
fi
589+
590+
echo "flags=$BASE_FLAGS" >> $GITHUB_OUTPUT
560591
561-
- name: Run TestCafe tests
592+
- name: Run TestCafe tests (jQuery)
562593
shell: bash
563594
working-directory: apps/demos
564595
env:
596+
NODE_OPTIONS: --max-old-space-size=8192
565597
STRATEGY: ${{ matrix.STRATEGY }}
566598
CHANGEDFILEINFOSPATH: changed-files.json
567-
BROWSERS: chrome:headless --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl="swiftshader" --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning
599+
BROWSERS: ${{ steps.chrome-flags.outputs.flags }}
568600
#DEBUG: hammerhead:*,testcafe:*
569601
CONCURRENCY: 4
570602
TCQUARANTINE: true
@@ -609,7 +641,26 @@ jobs:
609641
strategy:
610642
fail-fast: false
611643
matrix:
612-
CONSTEL: [react(1/4), react(2/4), react(3/4), react(4/4), vue(1/4), vue(2/4), vue(3/4), vue(4/4), angular(1/4), angular(2/4), angular(3/4), angular(4/4)]
644+
CONSTEL: [
645+
react(1/3),
646+
react(2/3),
647+
react(3/3),
648+
vue(1/5),
649+
vue(2/5),
650+
vue(3/5),
651+
vue(4/5),
652+
vue(5/5),
653+
angular(1/10),
654+
angular(2/10),
655+
angular(3/10),
656+
angular(4/10),
657+
angular(5/10),
658+
angular(6/10),
659+
angular(7/10),
660+
angular(8/10),
661+
angular(9/10),
662+
angular(10/10),
663+
]
613664
THEME: ['fluent.blue.light']
614665

615666
runs-on: devextreme-shr2
@@ -645,12 +696,10 @@ jobs:
645696
run: |
646697
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
647698
648-
- uses: actions/cache@v4
649-
name: Setup pnpm cache
699+
- uses: actions/cache/restore@v4
700+
name: Restore pnpm cache
650701
with:
651-
path: |
652-
${{ env.STORE_PATH }}
653-
.nx/cache
702+
path: ${{ env.STORE_PATH }}
654703
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
655704
restore-keys: |
656705
${{ runner.os }}-pnpm-store
@@ -682,17 +731,26 @@ jobs:
682731
- name: Run Web Server
683732
run: |
684733
python -m http.server 8080 &
685-
python -m http.server 8081 &
686-
python -m http.server 8082 &
687-
python -m http.server 8083 &
734+
735+
- name: Set concurrency based on framework
736+
id: set-concurrency
737+
run: |
738+
if [[ "${{ matrix.CONSTEL }}" == react* ]]; then
739+
echo "concurrency=3" >> $GITHUB_OUTPUT
740+
elif [[ "${{ matrix.CONSTEL }}" == angular* ]]; then
741+
echo "concurrency=2" >> $GITHUB_OUTPUT
742+
else
743+
echo "concurrency=2" >> $GITHUB_OUTPUT
744+
fi
688745
689746
- name: Run TestCafe tests
690747
shell: bash
691748
working-directory: apps/demos
692749
env:
693-
BROWSERS: chrome:headless --window-size=1200,800 --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl="swiftshader" --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning
750+
NODE_OPTIONS: --max-old-space-size=8192
751+
BROWSERS: chrome:headless --window-size=1200,800 --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl=swiftshader --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning
694752
# DEBUG: hammerhead:*,testcafe:*
695-
CONCURRENCY: 4
753+
CONCURRENCY: ${{ steps.set-concurrency.outputs.concurrency }}
696754
TCQUARANTINE: true
697755
CONSTEL: ${{ matrix.CONSTEL }}
698756
THEME: ${{ matrix.THEME }}
@@ -763,12 +821,10 @@ jobs:
763821
run: |
764822
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
765823
766-
- uses: actions/cache@v4
767-
name: Setup pnpm cache
824+
- uses: actions/cache/restore@v4
825+
name: Restore pnpm cache
768826
with:
769-
path: |
770-
${{ env.STORE_PATH }}
771-
.nx/cache
827+
path: ${{ env.STORE_PATH }}
772828
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
773829
restore-keys: |
774830
${{ runner.os }}-pnpm-store
@@ -815,7 +871,7 @@ jobs:
815871
working-directory: apps/demos
816872
env:
817873
CHANGEDFILEINFOSPATH: changed-files.json
818-
BROWSERS: chrome:headless --window-size=1200,800 --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl="swiftshader" --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning
874+
BROWSERS: chrome:headless --window-size=1200,800 --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-partial-raster --disable-skia-runtime-opts --run-all-compositor-stages-before-draw --disable-new-content-rendering-timeout --disable-threaded-animation --disable-threaded-scrolling --disable-checker-imaging --disable-image-animation-resync --use-gl=swiftshader --disable-features=PaintHolding --js-flags=--random-seed=2147483647 --font-render-hinting=none --disable-font-subpixel-positioning
819875
# DEBUG: hammerhead:*,testcafe:*
820876
CONCURRENCY: 1
821877
TCQUARANTINE: true

.github/workflows/testcafe_tests.yml

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
run: echo "should-run=${{ env.RUN_TESTS }}" >> $GITHUB_OUTPUT
3131

3232
build:
33-
name: build
33+
name: Build DevExtreme
3434
needs: check-should-run
3535
if: needs.check-should-run.outputs.should-run == 'true'
3636

@@ -58,9 +58,7 @@ jobs:
5858
- uses: actions/cache@v4
5959
name: Setup pnpm cache
6060
with:
61-
path: |
62-
${{ env.STORE_PATH }}
63-
.nx/cache
61+
path: ${{ env.STORE_PATH }}
6462
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
6563
restore-keys: |
6664
${{ runner.os }}-pnpm-store
@@ -72,7 +70,9 @@ jobs:
7270
shell: bash
7371
env:
7472
NODE_OPTIONS: --max-old-space-size=8192
75-
run: pnpx nx build devextreme
73+
run: |
74+
pnpx nx build devextreme-scss
75+
pnpx nx build devextreme
7676
7777
- name: Zip artifacts
7878
working-directory: ./packages/devextreme
@@ -161,9 +161,7 @@ jobs:
161161
- uses: actions/cache/restore@v4
162162
name: Restore pnpm cache
163163
with:
164-
path: |
165-
${{ env.STORE_PATH }}
166-
.nx/cache
164+
path: ${{ env.STORE_PATH }}
167165
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
168166
restore-keys: |
169167
${{ runner.os }}-pnpm-store

apps/demos/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@
149149
"stylelint-config-standard": "35.0.0",
150150
"systemjs-builder": "0.16.15",
151151
"testcafe": "3.7.2",
152+
"testcafe-reporter-spec-time": "4.0.0",
152153
"ts-node": "10.9.2",
153154
"vue-tsc": "^3.0.6"
154155
},

0 commit comments

Comments
 (0)