Skip to content

remove codesandbox from docs #8278

remove codesandbox from docs

remove codesandbox from docs #8278

Workflow file for this run

name: Tests
on:
pull_request:
types:
- opened
- reopened
- synchronize
push:
branches:
- 'master'
- 'develop'
- 'release/**'
workflow_dispatch:
env:
NODE_VERSION: 20
jobs:
check-scope:
name: Check the scope
runs-on: ubuntu-latest
outputs:
run-all: ${{
endsWith(github.ref, '/master') ||
endsWith(github.ref, '/develop') ||
contains(github.ref, '/release/')
}}
build-handsontable-es-cjs: ${{ steps.path-filter.outputs.build-handsontable-es-cjs }}
build-handsontable-umd: ${{ steps.path-filter.outputs.build-handsontable-umd }}
test-handsontable-unit: ${{ steps.path-filter.outputs.test-handsontable-unit }}
test-handsontable-types: ${{ steps.path-filter.outputs.test-handsontable-types }}
test-handsontable-walkontable: ${{ steps.path-filter.outputs.test-handsontable-walkontable }}
test-handsontable-e2e: ${{ steps.path-filter.outputs.test-handsontable-e2e }}
test-handsontable-e2e-min: ${{ steps.path-filter.outputs.test-handsontable-e2e-min }}
test-angular: ${{ steps.path-filter.outputs.test-angular }}
test-react: ${{ steps.path-filter.outputs.test-react }}
test-vue: ${{ steps.path-filter.outputs.test-vue }}
test-vue3: ${{ steps.path-filter.outputs.test-vue3 }}
test-visual: ${{ steps.path-filter.outputs.test-visual }}
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
- uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a # https://github.com/dorny/paths-filter/releases/tag/v3.0.1
id: path-filter
with:
filters: |
config-files: &config-files
- './handsontable/.config/**'
- './handsontable/package.json'
- './package-lock.json'
- './handsontable/hot.config.js'
- './handsontable/babel.config.js'
hot-definition-files: &hot-definition-files
- './handsontable/base.d.ts'
- './handsontable/handsontable.d.ts'
hot-source-and-scripts: &hot-source-and-scripts
- './handsontable/src/**'
- './handsontable/scripts/**'
hot-shared: &hot-shared
- *config-files
- *hot-source-and-scripts
hot-e2e-test-shared: &hot-e2e-test-shared
- './handsontable/test/e2e/**'
- './handsontable/test/scripts/**'
build-handsontable-umd:
- *hot-shared
- './handsontable/test/e2e/**'
- './handsontable/test/scripts/**'
build-handsontable-es-cjs:
- *hot-shared
- 'wrappers/**'
test-handsontable-unit:
- *hot-shared
- './handsontable/test/unit/**'
test-handsontable-types:
- *hot-shared
- *hot-definition-files
- './handsontable/test/types/**'
test-handsontable-walkontable:
- './handsontable/.config/**'
- './handsontable/test/scripts/**'
- './handsontable/src/3rdparty/walkontable/**'
test-handsontable-e2e:
- *hot-shared
- *hot-e2e-test-shared
test-handsontable-e2e-min:
- *hot-shared
- *hot-e2e-test-shared
test-angular:
- *hot-shared
- 'wrappers/angular/**'
test-react:
- *hot-shared
- 'wrappers/react/**'
test-vue:
- *hot-shared
- 'wrappers/vue/**'
test-vue3:
- *hot-shared
- 'wrappers/vue3/**'
test-visual:
- './examples/next/visual-tests/**'
- './visual-tests/**'
build-handsontable-umd:
name: "[BUILD] Handsontable: UMD"
runs-on: ubuntu-latest
needs: [ check-scope ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.build-handsontable-umd == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Build
run: |
cd handsontable
npm run build:umd && npm run build:languages
npm run build:umd.min && npm run build:languages.min
- run: tar -zcf dist.tar.gz ./handsontable/dist
- name: Upload the Handsontable UMD build artifact.
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # https://github.com/actions/upload-artifact/releases/tag/v4.3.1
with:
name: handsontable-build-umd
path: dist.tar.gz
build-handsontable-es-cjs:
name: "[BUILD] Handsontable: ES + CJS"
runs-on: ubuntu-latest
needs: [ check-scope ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.build-handsontable-es-cjs == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Build
run: |
cd handsontable
npm run build:es && npm run build:languages.es
npm run build:commonjs
npm run postbuild
- run: tar -zcf tmp.tar.gz ./handsontable/tmp
- name: Upload the Handsontable ES + CJS build artifact.
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # https://github.com/actions/upload-artifact/releases/tag/v4.3.1
with:
name: handsontable-build-es-cjs
path: tmp.tar.gz
test-handsontable-unit:
name: "[TEST] Handsontable: Unit"
runs-on: ubuntu-latest
needs: [ check-scope ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-handsontable-unit == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Test
run: |
cd handsontable
npm run test:unit
test-handsontable-types:
name: "[TEST] Handsontable: Types"
runs-on: ubuntu-latest
needs: [ check-scope ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-handsontable-types == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Test
run: |
cd handsontable
npm run test:types
test-handsontable-walkontable:
name: "[TEST] Walkontable"
runs-on: ubuntu-latest
needs: [ check-scope ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-handsontable-walkontable == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Test
run: |
cd handsontable
npm run test:walkontable
test-handsontable-e2e:
name: "[TEST] Handsontable: UMD"
runs-on: ubuntu-latest
needs: [ build-handsontable-umd ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-handsontable-e2e == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Download the Handsontable build artifact
uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # https://github.com/actions/download-artifact/releases/tag/v4.1.3
with:
name: handsontable-build-umd
path: ./
- run: tar -zxf dist.tar.gz ./handsontable/dist && rm dist.tar.gz
- name: Test
run: |
cd handsontable
npm run test:e2e.dump && npm run test:e2e.puppeteer
test-handsontable-e2e-min:
name: "[TEST] Handsontable: UMD.min"
runs-on: ubuntu-latest
needs: [ build-handsontable-umd ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-handsontable-e2e-min == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Download the Handsontable build artifact
uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # https://github.com/actions/download-artifact/releases/tag/v4.1.3
with:
name: handsontable-build-umd
path: ./
- run: tar -zxf dist.tar.gz ./handsontable/dist && rm dist.tar.gz
- name: Test
run: |
cd handsontable
npm run test:production.dump && npm run test:e2e.puppeteer
test-angular:
name: "[TEST] Wrapper: Angular"
runs-on: ubuntu-latest
needs: [ check-scope, build-handsontable-es-cjs ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-angular == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Download the Handsontable build artifact
uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # https://github.com/actions/download-artifact/releases/tag/v4.1.3
with:
name: handsontable-build-es-cjs
path: ./
- run: tar -zxf tmp.tar.gz ./handsontable/tmp && rm tmp.tar.gz
- run: cd handsontable
- run: npm run swap-package-links
- run: npm run in angular build
- run: tar --exclude='node_modules' -zcf angular.tar.gz ./wrappers/angular
- name: Upload the Angular build artifact
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # https://github.com/actions/upload-artifact/releases/tag/v4.3.1
with:
name: angular-build
path: angular.tar.gz
- name: Test
run: npm run in angular test:ci
test-react:
name: "[TEST] Wrapper: React"
runs-on: ubuntu-latest
needs: [ check-scope, build-handsontable-es-cjs ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-react == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Download the Handsontable build artifact
uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # https://github.com/actions/download-artifact/releases/tag/v4.1.3
with:
name: handsontable-build-es-cjs
path: ./
- run: tar -zxf tmp.tar.gz ./handsontable/tmp && rm tmp.tar.gz
- run: cd handsontable
- run: npm run swap-package-links
- run: npm run in react build
- run: tar --exclude='node_modules' -zcf react.tar.gz ./wrappers/react
- name: Upload the React build artifact
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # https://github.com/actions/upload-artifact/releases/tag/v4.3.1
with:
name: react-build
path: react.tar.gz
- name: Test
run: npm run in react test
test-vue:
name: "[TEST] Wrapper: Vue"
runs-on: ubuntu-latest
needs: [ check-scope, build-handsontable-es-cjs ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-vue == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Download the Handsontable build artifact
uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # https://github.com/actions/download-artifact/releases/tag/v4.1.3
with:
name: handsontable-build-es-cjs
path: ./
- run: tar -zxf tmp.tar.gz ./handsontable/tmp && rm tmp.tar.gz
- run: cd handsontable
- run: npm run swap-package-links
- run: npm run in vue build
- run: tar --exclude='node_modules' -zcf vue.tar.gz ./wrappers/vue
- name: Upload the Vue2 build artifact
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # https://github.com/actions/upload-artifact/releases/tag/v4.3.1
with:
name: vue-build
path: vue.tar.gz
- name: Test
run: npm run in vue test
test-vue3:
name: "[TEST] Wrapper: Vue3"
runs-on: ubuntu-latest
needs: [ check-scope, build-handsontable-es-cjs ]
if: |
needs.check-scope.outputs.run-all == 'true' ||
needs.check-scope.outputs.test-vue3 == 'true'
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Download the Handsontable build artifact
uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # https://github.com/actions/download-artifact/releases/tag/v4.1.3
with:
name: handsontable-build-es-cjs
path: ./
- run: tar -zxf tmp.tar.gz ./handsontable/tmp && rm tmp.tar.gz
- run: cd handsontable
- run: npm run swap-package-links
- run: npm run in vue3 build
- run: tar --exclude='node_modules' -zcf vue3.tar.gz ./wrappers/vue3
- name: Upload the Vue3 build artifact
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # https://github.com/actions/upload-artifact/releases/tag/v4.3.1
with:
name: vue3-build
path: vue3.tar.gz
- name: Test
run: npm run in vue3 test
visual-tests:
name: "[TEST] Visual tests"
runs-on: ubuntu-latest
needs:
- test-handsontable-e2e
- test-handsontable-e2e-min
- test-angular
- test-react
- test-vue
- test-vue3
if: |
!failure() && (
needs.test-handsontable-e2e.result == 'success' ||
needs.test-handsontable-e2e-min.result == 'success' ||
needs.test-angular.result == 'success' ||
needs.test-react.result == 'success' ||
needs.test-vue.result == 'success' ||
needs.test-vue3.result == 'success' ||
needs.check-scope.outputs.test-visual == 'true'
)
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # https://github.com/actions/checkout/releases/tag/v4.1.1
with:
fetch-depth: 2
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # https://github.com/actions/setup-node/releases/tag/v4.0.2
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- run: npm ci --no-audit
- name: Install system dependencies
run: npm run in visual-tests install-system-dependencies
- name: Download artifacts
uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # https://github.com/actions/download-artifact/releases/tag/v4.1.3
with:
path: ./
- run: |
if test -f "handsontable-build-es-cjs/tmp.tar.gz"; then
tar -zxf handsontable-build-es-cjs/tmp.tar.gz ./handsontable/tmp
rm -r handsontable-build-es-cjs
else
npm run in handsontable build:es
npm run in handsontable build:commonjs
npm run in handsontable build:languages.es
fi
npm run in handsontable postbuild
- run: |
if test -f "handsontable-build-umd/dist.tar.gz"; then
tar -zxf handsontable-build-umd/dist.tar.gz ./handsontable/dist
rm -r handsontable-build-umd
else
npm run in handsontable build:umd
npm run in handsontable build:umd.min
npm run in handsontable build:languages
npm run in handsontable build:languages.min
fi
npm run in handsontable postbuild
- name: Build wrappers and test examples
run: npm run build -- -e handsontable
- name: Run tests
run: npm run in visual-tests test
- name: Upload the screenshot to Argos CI
env:
ARGOS_TOKEN: ${{ secrets.ARGOS_TOKEN }}
run: npm run in visual-tests upload