Update FileManager Etalon (#3225) #12826
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: Frameworks | |
concurrency: | |
group: wf-${{github.event.pull_request.number || github.sha}}-${{github.workflow}} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
push: | |
branches: | |
- "[0-9][0-9]_[0-9]" | |
workflow_dispatch: | |
schedule: | |
- cron: '0 */2 * * 6,0' | |
jobs: | |
build-devextreme: | |
runs-on: ubuntu-latest | |
name: Build DevExtreme | |
timeout-minutes: 20 | |
steps: | |
#Git | |
- name: Get sources | |
uses: actions/checkout@v3 | |
- 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}} --depth 1 https://github.com/${{github.event.pull_request.user.login}}/devextreme ./devextreme | |
- name: Clone devextreme repo | |
run: | | |
BASE_BRANCH=$(node -p -e "require('./package.json').version.slice(0, 4).replace('.', '_')") | |
test -d ./devextreme || git clone -b $BASE_BRANCH --depth 1 https://github.com/devexpress/devextreme ./devextreme | |
#Build Devextreme | |
- name: Use Node.js 15 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '15' | |
- name: Restore npm cache | |
uses: ./.github/actions/restore-npm-cache | |
with: | |
package-lock-hash: ${{ hashFiles('devextreme/package-lock.json') }} | |
- name: Install packages | |
working-directory: ./devextreme | |
run: npm install --no-audit --no-fund | |
- name: Build | |
working-directory: ./devextreme | |
run: npm run build-npm-devextreme | |
- name: Pack | |
working-directory: ./devextreme/artifacts/npm/devextreme | |
run: npm pack | |
- name: Copy package | |
run: cp ./devextreme/artifacts/npm/devextreme/*.tgz ./devextreme-installer.tgz | |
- name: Copy build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: devextreme-sources | |
path: | | |
devextreme-installer.tgz | |
retention-days: 1 | |
build-react: | |
runs-on: ubuntu-latest | |
name: Build React | |
timeout-minutes: 20 | |
needs: build-devextreme | |
steps: | |
- uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-quality: ga | |
dotnet-version: | | |
3.1 | |
6.0 | |
#Git | |
- name: Get sources | |
uses: actions/checkout@v3 | |
- 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}} --depth 1 https://github.com/${{github.event.pull_request.user.login}}/devextreme ./devextreme | |
- name: Clone devextreme repo | |
run: | | |
BASE_BRANCH=$(node -p -e "require('./package.json').version.slice(0, 4).replace('.', '_')") | |
test -d ./devextreme || git clone -b $BASE_BRANCH --depth 1 https://github.com/devexpress/devextreme ./devextreme | |
- name: Restore npm cache | |
uses: ./.github/actions/restore-npm-cache | |
with: | |
package-lock-hash: ${{ hashFiles('devextreme/package-lock.json') }} | |
- name: Install packages | |
working-directory: ./devextreme | |
run: npm install --no-audit --no-fund | |
- name: Discover declarations | |
working-directory: ./devextreme | |
run: npm run discover-declarations | |
#Build devextreme-react | |
- name: Use Node.js 14 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '14' | |
- name: Download devextreme sources | |
uses: actions/download-artifact@v3 | |
with: | |
name: devextreme-sources | |
- name: Clone devextreme-react 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}} --depth 1 https://github.com/${{github.event.pull_request.user.login}}/devextreme-react ./devextreme-react-repo | |
- name: Clone devextreme-react repo | |
run: test -d ./devextreme-react-repo || git clone -b 22.2 https://github.com/devexpress/devextreme-react ./devextreme-react-repo | |
- name: Copy devextreme package | |
run: | | |
mkdir ./devextreme-react-repo/devextreme-setup | |
cp ./devextreme-installer.tgz ./devextreme-react-repo/devextreme-setup | |
- name: Get devextreme-react ref | |
working-directory: ./devextreme-react-repo | |
id: devextreme-react-ref | |
run: echo "::set-output name=head::$(git rev-parse HEAD)" | |
- name: Install devextreme package | |
working-directory: ./devextreme-react-repo | |
run: | | |
pushd devextreme-setup | |
installerName=$(realpath .)/$(ls *.tgz) | |
popd | |
cd ./packages/devextreme-react | |
npm install --save-dev $installerName | |
cd ../sandbox | |
npm install --save-dev $installerName | |
cd ../../ | |
npm install --save-dev $installerName | |
- name: Install packages for devextreme-react | |
working-directory: ./devextreme-react-repo | |
run: npm install --no-audit --no-fund | |
- name: Build and Pack | |
working-directory: ./devextreme-react-repo | |
run: npm run pack | |
- name: Copy devextreme-react package | |
run: cp ./devextreme-react-repo/packages/devextreme-react/npm/*.tgz ./devextreme-react-installer.tgz | |
- name: Copy build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: devextreme-sources | |
path: | | |
devextreme-react-installer.tgz | |
retention-days: 1 | |
build-vue: | |
runs-on: ubuntu-latest | |
name: Build Vue | |
timeout-minutes: 20 | |
needs: build-devextreme | |
steps: | |
- uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-quality: ga | |
dotnet-version: | | |
3.1 | |
6.0 | |
#Git | |
- name: Get sources | |
uses: actions/checkout@v3 | |
- 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}} --depth 1 https://github.com/${{github.event.pull_request.user.login}}/devextreme ./devextreme | |
- name: Clone devextreme repo | |
run: | | |
BASE_BRANCH=$(node -p -e "require('./package.json').version.slice(0, 4).replace('.', '_')") | |
test -d ./devextreme || git clone -b $BASE_BRANCH --depth 1 https://github.com/devexpress/devextreme ./devextreme | |
- name: Restore npm cache | |
uses: ./.github/actions/restore-npm-cache | |
with: | |
package-lock-hash: ${{ hashFiles('devextreme/package-lock.json') }} | |
- name: Install packages | |
working-directory: ./devextreme | |
run: npm install --no-audit --no-fund | |
- name: Discover declarations | |
working-directory: ./devextreme | |
run: npm run discover-declarations | |
#Build devextreme-vue | |
- name: Use Node.js 14 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '14' | |
- name: Download devextreme sources | |
uses: actions/download-artifact@v3 | |
with: | |
name: devextreme-sources | |
- name: Clone devextreme-vue 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}} --depth 1 https://github.com/${{github.event.pull_request.user.login}}/devextreme-vue ./devextreme-vue-repo | |
- name: Clone devextreme-vue repo | |
run: test -d ./devextreme-vue-repo || git clone -b 22.2 https://github.com/devexpress/devextreme-vue ./devextreme-vue-repo | |
- name: Copy devextreme package | |
run: | | |
mkdir ./devextreme-vue-repo/devextreme-setup | |
cp ./devextreme-installer.tgz ./devextreme-vue-repo/devextreme-setup | |
- name: Get devextreme-vue ref | |
working-directory: ./devextreme-vue-repo | |
id: devextreme-vue-ref | |
run: echo "::set-output name=head::$(git rev-parse HEAD)" | |
- name: Install devextreme package | |
working-directory: ./devextreme-vue-repo | |
run: | | |
pushd devextreme-setup | |
installerName=$(realpath .)/$(ls *.tgz) | |
popd | |
cd ./packages/devextreme-vue | |
npm install --save-dev $installerName | |
cd ../sandbox | |
npm install --save-dev $installerName | |
cd ../vue2-strategy | |
npm install --save-dev $installerName | |
cd ../../ | |
npm install --save-dev --legacy-peer-deps $installerName | |
- name: Install packages for devextreme-vue | |
working-directory: ./devextreme-vue-repo | |
run: npm install --no-audit --no-fund | |
- name: Build and Pack | |
working-directory: ./devextreme-vue-repo | |
run: npm run pack | |
- name: Copy devextreme-vue package | |
run: cp ./devextreme-vue-repo/packages/devextreme-vue/npm/*.tgz ./devextreme-vue-installer.tgz | |
- name: Copy build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: devextreme-sources | |
path: | | |
devextreme-vue-installer.tgz | |
retention-days: 1 | |
build-angular: | |
runs-on: ubuntu-latest | |
name: Build Angular | |
timeout-minutes: 20 | |
needs: build-devextreme | |
steps: | |
#Git | |
- name: Get sources | |
uses: actions/checkout@v3 | |
- 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}} --depth 1 https://github.com/${{github.event.pull_request.user.login}}/devextreme ./devextreme | |
- name: Clone devextreme repo | |
run: | | |
BASE_BRANCH=$(node -p -e "require('./package.json').version.slice(0, 4).replace('.', '_')") | |
test -d ./devextreme || git clone -b $BASE_BRANCH --depth 1 https://github.com/devexpress/devextreme ./devextreme | |
- name: Restore npm cache | |
uses: ./.github/actions/restore-npm-cache | |
with: | |
package-lock-hash: ${{ hashFiles('devextreme/package-lock.json') }} | |
- name: Install packages | |
working-directory: ./devextreme | |
run: npm install --no-audit --no-fund | |
- name: Discover declarations | |
working-directory: ./devextreme | |
run: npm run discover-declarations | |
#Build devextreme-angular | |
- name: Use Node.js 14 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '14' | |
- name: Download devextreme sources | |
uses: actions/download-artifact@v3 | |
with: | |
name: devextreme-sources | |
- name: Clone devextreme-angular 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}} --depth 1 https://github.com/${{github.event.pull_request.user.login}}/devextreme-angular ./devextreme-angular-repo | |
- name: Clone devextreme-angular repo | |
run: test -d ./devextreme-angular-repo || git clone -b 22.2 https://github.com/devexpress/devextreme-angular ./devextreme-angular-repo | |
- name: Copy devextreme package | |
run: | | |
mkdir ./devextreme-angular-repo/devextreme-setup | |
cp ./devextreme-installer.tgz ./devextreme-angular-repo/devextreme-setup | |
- name: Get devextreme-angular ref | |
working-directory: ./devextreme-angular-repo | |
id: devextreme-angular-ref | |
run: echo "::set-output name=head::$(git rev-parse HEAD)" | |
- name: Install devextreme package | |
working-directory: ./devextreme-angular-repo | |
run: | | |
pushd devextreme-setup | |
installerName=$(realpath .)/$(ls *.tgz) | |
popd | |
cd ./packages/devextreme-angular | |
npm install --save-dev $installerName | |
cd ../sandbox | |
npm install --save-dev $installerName | |
cd ../../ | |
npm install --save-dev $installerName | |
- name: Install packages for devextreme-angular | |
working-directory: ./devextreme-angular-repo | |
run: npm install --no-audit --no-fund | |
- name: Build and Pack | |
working-directory: ./devextreme-angular-repo | |
run: npm run pack | |
- name: Copy devextreme-angular package | |
run: cp ./devextreme-angular-repo/packages/devextreme-angular/npm/dist/*.tgz ./devextreme-angular-installer.tgz | |
- name: Copy build artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: devextreme-sources | |
path: | | |
devextreme-angular-installer.tgz | |
retention-days: 1 | |
build-demos: | |
runs-on: ubuntu-latest | |
name: Build Demos | |
timeout-minutes: 20 | |
needs: [build-angular, build-react, build-vue] | |
steps: | |
- name: Get sources | |
uses: actions/checkout@v3 | |
- name: Use Node.js 14 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '14' | |
- name: Download devextreme sources | |
uses: actions/download-artifact@v3 | |
with: | |
name: devextreme-sources | |
- name: Restore npm cache | |
uses: ./.github/actions/restore-npm-cache | |
with: | |
package-lock-hash: ${{ hashFiles('package-lock.json') }} | |
- name: Delete DX packages | |
run: sed -i '/22.2-next/d' ./package.json | |
- name: Use Node.js 15 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '15' | |
- name: Install packages | |
run: npm install --no-audit --no-fund | |
- name: Install package | |
run: | | |
npm install devextreme-installer.tgz | |
npm install devextreme-react-installer.tgz | |
npm install devextreme-vue-installer.tgz | |
npm install devextreme-angular-installer.tgz | |
- name: Prepare bundles | |
run: npm run prepare-bundles | |
- name: Demos - Run tsc | |
run: tsc --noEmit | |
#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@v3 | |
with: | |
name: devextreme-sources | |
path: | | |
node_modules.7z | |
bundles/ | |
retention-days: 1 | |
lint: | |
name: Lint code base | |
needs: build-demos | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- name: Get sources | |
uses: actions/checkout@v3 | |
- name: Delete DX packages | |
run: sed -i '/22.2-next/d' ./package.json | |
- name: Download devextreme sources | |
uses: actions/download-artifact@v3 | |
with: | |
name: devextreme-sources | |
- name: Unpack artifacts | |
run: 7z x node_modules.7z | |
- name: Install packages | |
run: | | |
npm install devextreme-installer.tgz | |
npm install devextreme-react-installer.tgz | |
npm install devextreme-vue-installer.tgz | |
npm install devextreme-angular-installer.tgz | |
- name: Run npm install | |
run: npm install --no-audit --no-fund | |
- uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: 5.0.408 | |
- name: Prepare dotnet | |
run: | | |
dotnet new globaljson --sdk-version 5.0.408 | |
dotnet tool install -g dotnet-format --version 5.1.225507 | |
- name: Run lint | |
run: npm run lint | |
testcafe: | |
needs: build-demos | |
strategy: | |
fail-fast: false | |
matrix: | |
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)] | |
runs-on: ubuntu-latest | |
name: ${{ matrix.CONSTEL }} | |
timeout-minutes: 60 | |
steps: | |
- name: Get sources | |
uses: actions/checkout@v3 | |
- uses: ./.github/actions/pin-browsers | |
- name: Delete DX packages | |
run: sed -i '/22.2-next/d' ./package.json | |
- name: Download devextreme sources | |
uses: actions/download-artifact@v3 | |
with: | |
name: devextreme-sources | |
- name: Unpack artifacts | |
run: 7z x node_modules.7z | |
- name: Prepare JS | |
run: npm run prepare-js | |
- name: Prepare Bundles | |
run: npx gulp bundles | |
- 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: | | |
gh api \ | |
-H "Accept: application/vnd.github+json" \ | |
"/repos/{owner}/{repo}/pulls/${{github.event.pull_request.number}}/files?per_page=100" --paginate --jq 'map({filename})' >> changed-files.json | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- 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: Get screenshots artifacts name | |
if: ${{ failure() }} | |
id: screenshotname | |
run: echo ::set-output name=value::$(echo "${{ matrix.CONSTEL }}" | grep -oP "^\w+") | |
- name: Copy screenshots artifacts | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: screenshots-${{ steps.screenshotname.outputs.value }} | |
path: ${{ github.workspace }}/testing/artifacts/compared-screenshots/* | |
if-no-files-found: ignore |