Scheduler: JS -> TS (part 3 + 4) #26808
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: 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 |