# This is a basic workflow to help you get started with Actions name: CI # Controls when the action will run. on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [ master ] pull_request: branches: [ master ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # https://stackoverflow.com/a/72408109/3443137 concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" base: # The type of runner that the job will run on runs-on: ubuntu-22.04 # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v4 - name: Setup Node.js environment uses: actions/setup-node@v4.0.0 with: node-version-file: ".nvmrc" # https://docs.github.com/en/free-pro-team@latest/actions/guides/caching-dependencies-to-speed-up-workflows - name: Reuse npm cache folder uses: actions/cache@v3 env: cache-name: cache-node-modules with: # reuse the npm-cache and some node_modules folders path: | ~/.npm ./node_modules ./test-electron/node_modules # invalidate cache when any package.json changes key: ${{ runner.os }}-npm-x3-${{ env.cache-name }}-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-npm-x3-${{ env.cache-name }}- ${{ runner.os }}-npm-x3- ${{ runner.os }}- # install - name: install node modules run: npm install --legacy-peer-deps - name: build run: npm run build - name: check build size webpack run: npm run size:webpack - name: check build size browserify run: npm run size:browserify - name: check build size rollup run: npm run size:rollup - name: code format run: npm run lint - name: test typings run: npm run test:typings - name: test modules run: npm run test:modules - name: test browser uses: GabrielBB/xvfb-action@v1 with: working-directory: ./ #optional run: npm run test:browser - name: test performance run: npm run test:performance - name: test e2e uses: GabrielBB/xvfb-action@v1 with: working-directory: ./ #optional run: npm run test:e2e # run the node test in an own task, so we can use a node-version matrix. test-node: runs-on: ubuntu-22.04 strategy: matrix: node: ['18.18.2', '20.9.0'] steps: - uses: actions/checkout@v4 - name: Setup Node.js environment uses: actions/setup-node@v4.0.0 with: node-version: ${{ matrix.node }} # https://docs.github.com/en/free-pro-team@latest/actions/guides/caching-dependencies-to-speed-up-workflows - name: Reuse npm cache folder uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: | ~/.npm ./node_modules ./test-electron/node_modules # invalidate cache when any package.json changes key: ${{ runner.os }}-npm-test-node-x3-${{ matrix.node }}-${{ env.cache-name }}-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-npm-test-node-x3-${{ matrix.node }}-${{ env.cache-name }}- ${{ runner.os }}-npm-test-node ${{ runner.os }}-test-node - name: install node modules run: npm install --legacy-peer-deps - name: build run: npm run build - name: test node run: npm run test:node test-deno: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Setup Node.js environment uses: actions/setup-node@v4.0.0 with: node-version-file: ".nvmrc" # https://docs.github.com/en/free-pro-team@latest/actions/guides/caching-dependencies-to-speed-up-workflows - name: Reuse npm cache folder uses: actions/cache@v3 env: cache-name: cache-node-deno-modules with: path: | ~/.npm ./node_modules ./test-electron/node_modules # invalidate cache when any package.json changes key: ${{ runner.os }}-npm-test-deno-x3-${{ env.cache-name }}-${{ hashFiles('**/package.json') }} restore-keys: | ${{ runner.os }}-npm-test-deno-x3-${{ env.cache-name }}- ${{ runner.os }}-npm-test-deno ${{ runner.os }}-test-deno - name: install node modules run: npm install --legacy-peer-deps - name: build run: npm run build - name: Reuse deno cache folder uses: actions/cache@v3 env: cache-name: cache-deno-modules with: path: | /home/runner/.cache/deno # do not cache based on package.json because deno install randomly fails # and it would then never succeed on the first run on dependency updateds key: ${{ runner.os }}-deno-x3- - uses: denoland/setup-deno@v1 with: # https://github.com/denoland/deno/releases deno-version: "1.37.2" - name: run deno tests run: | sudo npm i -g cross-env deno info npm run test:deno # TODO this does not work atm. fix this. # - name: test electron # uses: GabrielBB/xvfb-action@v1 # with: # working-directory: ./test-electron # run: npm install --depth 0 --silent && npm run test