Visual Tests #5111
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: Visual Tests | |
concurrency: | |
group: wf-${{github.event.pull_request.number}}-${{github.workflow}} | |
cancel-in-progress: true | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 * * * 6,0' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
name: Build DevExtreme | |
timeout-minutes: 15 | |
steps: | |
#Git | |
- name: Get sources | |
uses: actions/checkout@v2 | |
- name: Clone devextreme repo from PR author fork | |
continue-on-error: true | |
if: github.event_name == 'pull_request' | |
run: git clone -b ${{github.event.pull_request.head.ref}} https://github.com/${{github.event.pull_request.user.login}}/devextreme ./devextreme-repo | |
- name: Clone devextreme repo | |
run: | | |
BASE_BRANCH=$(node -p -e "require('./package.json').version.slice(0, 4).replace('.', '_')") | |
test -d ./devextreme-repo || git clone -b $BASE_BRANCH https://github.com/devexpress/devextreme ./devextreme-repo | |
#Build Devextreme | |
- name: DevExtreme - Restore npm cache | |
uses: actions/cache@v2 | |
with: | |
path: ./devextreme-repo/node_modules | |
key: ${{ runner.os }}-devextreme-node-modules-${{ hashFiles('devextreme-repo/package-lock.json') }} | |
restore-keys: ${{ runner.os }}-devextreme-node-modules | |
- name: Use Node.js 15 | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '15' | |
- name: DevExtreme - Install packages | |
working-directory: ./devextreme-repo | |
run: npm install --no-audit --no-fund | |
- name: DevExtreme - Build | |
working-directory: ./devextreme-repo | |
run: npm run build-npm-devextreme | |
- name: DevExtreme - Pack | |
working-directory: ./devextreme-repo/artifacts/npm/devextreme | |
run: npm pack | |
#Build Demos | |
- name: Demos - Restore npm cache | |
uses: actions/cache@v2 | |
with: | |
path: ./node_modules | |
key: ${{ runner.os }}-node-modules-${{ hashFiles('package-lock.json') }} | |
restore-keys: ${{ runner.os }}-node-modules | |
- name: Demos - Install packages | |
run: | | |
npm install --no-audit --no-fund | |
- name: Demos - Install devextreme package | |
run: npm install $(find ./devextreme-repo/artifacts/npm/devextreme/ -maxdepth 1 -name "devextreme-*.tgz") | |
#Publish artifacts | |
- name: Zip node_modules | |
run: 7z a -t7z -mx3 -mmt2 node_modules.7z node_modules | |
- name: Copy build artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: devextreme-sources | |
path: node_modules.7z | |
retention-days: 1 | |
testcafe: | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
CONSTEL: [jquery(1/4), jquery(2/4), jquery(3/4), jquery(4/4)] | |
runs-on: ubuntu-latest | |
name: ${{ matrix.CONSTEL }} | |
timeout-minutes: 20 | |
steps: | |
- name: Get sources | |
uses: actions/checkout@v2 | |
- name: Download devextreme sources | |
uses: actions/download-artifact@v2 | |
with: | |
name: devextreme-sources | |
- name: Unpack artifacts | |
run: 7z x node_modules.7z | |
- name: Prepare JS | |
run: npm run prepare-js | |
- 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: Get changed files | |
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'force all tests') | |
run: | | |
curl --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ | |
--url https://api.github.com/repos/${{github.repository}}/pulls/${{github.event.pull_request.number}}/files > changed-files.json | |
- name: Run TestCafe tests | |
env: | |
CHANGEDFILEINFOSPATH: ${{ github.workspace }}/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 }} | |
# 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: npm run test-testcafe | |
- name: Copy screenshots artifacts | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: screenshots | |
path: ${{ github.workspace }}/testing/artifacts/compared-screenshots/* | |
if-no-files-found: ignore |