Skip to content

Scheduler: JS -> TS (part 3 + 4) #26808

Scheduler: JS -> TS (part 3 + 4)

Scheduler: JS -> TS (part 3 + 4) #26808

name: DevExtreme package tests
concurrency:
group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}}
cancel-in-progress: true
on:
pull_request:
push:
branches: [23_2]
env:
NX_SKIP_NX_CACHE: ${{ (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'skip-cache')) && 'true' || 'false' }}
jobs:
build:
runs-on: devextreme-shr2
steps:
- name: Get sources
uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '18.16.1'
- name: Restore npm cache
uses: actions/cache@v3
with:
path: '**/node_modules'
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-modules
- name: Install packages in devextreme repo
run: npm install --no-audit --no-fund
- name: Build devextreme repo
run: npx nx build devextreme-main
- name: Pack devextreme package
working-directory: ./packages/devextreme/artifacts/npm/devextreme
run: npm pack
- name: Pack devextreme-dist package
working-directory: ./packages/devextreme/artifacts/npm/devextreme-dist
run: npm pack
- name: Copy packages
run: |
cp ./packages/devextreme/artifacts/npm/devextreme/*.tgz ./devextreme-installer.tgz
cp ./packages/devextreme/artifacts/npm/devextreme-dist/*.tgz ./devextreme-dist-installer.tgz
- name: Copy build artifacts
uses: actions/upload-artifact@v3
with:
name: devextreme-npm
path: |
devextreme-installer.tgz
devextreme-dist-installer.tgz
retention-days: 1
test_bundlers:
name: Bundlers tests
needs: build
runs-on: devextreme-shr2
timeout-minutes: 60
steps:
- name: Get sources
uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '18.16.1'
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: devextreme-npm
path: ./packages/devextreme/testing/bundlers
- name: Install bundlers
working-directory: ./packages/devextreme/testing/bundlers
run: npm install --no-audit --no-fund
- name: Install DevExtreme package
working-directory: ./packages/devextreme/testing/bundlers
run: npm install --save-dev devextreme-installer.tgz
- name: Generate entry files
working-directory: ./packages/devextreme/testing/bundlers
run: npm run generate-entry-files
- name: Build webpack cjs
working-directory: ./packages/devextreme/testing/bundlers
run: npm run build:webpack-cjs
- name: Build browserify cjs
working-directory: ./packages/devextreme/testing/bundlers
run: npm run build:browserify-cjs
- name: Build webpack
working-directory: ./packages/devextreme/testing/bundlers
run: npm run build:webpack
- name: Build rollup
working-directory: ./packages/devextreme/testing/bundlers
run: npm run build:rollup
- name: Build parcel
working-directory: ./packages/devextreme/testing/bundlers
run: npm run build:parcel
- name: Build vite
working-directory: ./packages/devextreme/testing/bundlers
run: npm run build:vite
test_demos:
needs: build
strategy:
fail-fast: false
matrix:
CONSTEL: [jquery(1/4), jquery(2/4), jquery(3/4), jquery(4/4)]
runs-on: devextreme-shr2
name: Demos visual tests ${{ matrix.CONSTEL }}
timeout-minutes: 30
steps:
- name: Get sources
uses: actions/checkout@v4
- uses: ./.github/actions/pin-browsers
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '18.16.1'
- name: Clone devextreme-demos repo from PR author fork
continue-on-error: true
if: github.event_name == 'pull_request'
run: |
REMOTE_URL=https://github.com/${{github.event.pull_request.user.login}}/devextreme-demos
REMOTE_BRANCH=${{github.event.pull_request.head.ref}}
if [ "$(git ls-remote --heads $REMOTE_URL $REMOTE_BRANCH | wc -l)" == "1" ]; then
git clone -b $REMOTE_BRANCH $REMOTE_URL ./devextreme-demos
fi
- name: Clone devextreme-demos repo
run: |
BASE_BRANCH=$(node -p -e "require('./package.json').version.slice(0, 4).replace('.', '_')")
test -d ./devextreme-demos || git clone -b $BASE_BRANCH https://github.com/devexpress/devextreme-demos ./devextreme-demos
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: devextreme-npm
path: ./devextreme-demos
- name: Delete DX packages
working-directory: ./devextreme-demos
run: sed -i '/23.2-next/d' ./package.json
- name: Install packages for devextreme-demos
working-directory: ./devextreme-demos
run: npm install --no-audit --no-fund
- name: Install devextreme package
working-directory: ./devextreme-demos
run: npm install --legacy-peer-deps devextreme-installer.tgz devextreme-dist-installer.tgz
- name: Prepare JS
working-directory: ./devextreme-demos
run: npm run prepare-js
- name: Run Web Server
working-directory: ./devextreme-demos
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
working-directory: ./devextreme-demos
env:
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
CONCURRENCY: 4
TCQUARANTINE: true
CONSTEL: ${{ matrix.CONSTEL }}
CI_ENV: true
run: |
npm i [email protected]
npm run test-testcafe
- name: Copy screenshots artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: screenshots
path: ${{ github.workspace }}/devextreme-demos/testing/artifacts/*
if-no-files-found: ignore
notify:
runs-on: devextreme-shr2
name: Send notifications
needs:
- build
- test_bundlers
- test_demos
if: always() && contains(needs.*.result, 'failure')
steps:
- uses: actions/checkout@v4
- uses: DevExpress/github-actions/send-teams-notification@main
with:
hook_url: ${{secrets.TEAMS_ALERT}}
bearer_token: ${{secrets.GITHUB_TOKEN}}
specific_repo: DevExpress/DevExtreme
specific_branch: 23_2