Chat: Make screenshot test stable #10595
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Demos Visual Tests | |
concurrency: | |
group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
paths-ignore: | |
- 'apps/**/*.md' | |
push: | |
branches: | |
- "[0-9][0-9]_[0-9]" | |
workflow_dispatch: | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_TOKEN }} | |
NX_SKIP_NX_CACHE: ${{ (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'skip-cache')) && 'true' || 'false' }} | |
BUILD_TEST_INTERNAL_PACKAGE: true | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
name: Build devextreme | |
timeout-minutes: 20 | |
steps: | |
- name: Get sources | |
uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
- uses: pnpm/action-setup@v3 | |
with: | |
version: 9 | |
run_install: false | |
- name: Get pnpm store directory | |
shell: bash | |
run: | | |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV | |
- uses: actions/cache@v4 | |
name: Setup pnpm cache | |
with: | |
path: | | |
${{ env.STORE_PATH }} | |
.nx/cache | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store | |
- name: Install dependencies | |
run: | | |
corepack enable | |
pnpm install | |
- name: DevExtreme - Build | |
run: pnpx nx build devextreme | |
testcafe: | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
STRATEGY: [screenshots, accessibility] | |
THEME: ['generic.light', 'material.blue.light', 'fluent.blue.light'] | |
CONSTEL: [jquery(1/4), jquery(2/4), jquery(3/4), jquery(4/4)] | |
env: | |
ACCESSIBILITY_TESTCAFE_REPORT_PATH: "accessibility_testcafe_report" | |
runs-on: ubuntu-latest | |
name: ${{ matrix.CONSTEL }}-${{ matrix.STRATEGY }}-${{ matrix.THEME }} | |
timeout-minutes: 30 | |
steps: | |
- name: Get sources | |
uses: actions/checkout@v4 | |
- name: Setup Chrome | |
uses: ./.github/actions/setup-chrome | |
with: | |
chrome-version: '121.0.6167.160' | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
- uses: pnpm/action-setup@v3 | |
with: | |
version: 9 | |
run_install: false | |
- name: Get pnpm store directory | |
shell: bash | |
run: | | |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV | |
- uses: actions/cache@v4 | |
name: Setup pnpm cache | |
with: | |
path: | | |
${{ env.STORE_PATH }} | |
.nx/cache | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store | |
- name: Install dependencies | |
run: | | |
corepack enable | |
pnpm install | |
- name: DevExtreme - Build | |
run: pnpx nx build devextreme | |
- name: Run Web Server | |
run: | | |
python -m http.server 8080 & | |
python -m http.server 8081 & | |
python -m http.server 8082 & | |
python -m http.server 8083 & | |
- name: Run TestCafe tests | |
shell: bash | |
working-directory: apps/demos | |
env: | |
STRATEGY: ${{ matrix.STRATEGY }} | |
CHANGEDFILEINFOSPATH: changed-files.json | |
BROWSERS: chrome:headless --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 | |
#DEBUG: hammerhead:*,testcafe:* | |
CONCURRENCY: 4 | |
TCQUARANTINE: true | |
CONSTEL: ${{ matrix.CONSTEL }} | |
THEME: ${{ matrix.THEME }} | |
# DISABLE_DEMO_TEST_SETTINGS: all # Uncomment to ignore all the visualtestrc.json settings | |
# DISABLE_DEMO_TEST_SETTINGS: ignore # Uncomment to ignore the `ignore` field | |
# DISABLE_DEMO_TEST_SETTINGS: comparison-options # Uncomment to ignore the `comparison-options` field | |
CI_ENV: true # The `ignore` field in the visualtestrc.json should be disabled when running test locally | |
run: pnpx nx test-testcafe | |
- name: Show accessibility warnings | |
if: matrix.STRATEGY == 'accessibility' | |
working-directory: apps/demos | |
run: | | |
message=$(cat $ACCESSIBILITY_TESTCAFE_REPORT_PATH) | |
echo "::warning ::$message" | |
- name: Copy screenshots artifacts | |
if: failure() && matrix.STRATEGY == 'screenshots' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: screenshots | |
path: ${{ github.workspace }}/apps/demos/testing/artifacts/compared-screenshots/**/* | |
if-no-files-found: ignore | |
- name: Copy accessibility report | |
if: matrix.STRATEGY == 'accessibility' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: accessibility-reports | |
path: apps/demos/testing/artifacts/axe-reports/* | |
if-no-files-found: ignore |