[Snyk] Upgrade: @babel/core, @babel/plugin-proposal-class-properties, @babel/plugin-transform-modules-amd, @babel/plugin-transform-modules-commonjs, @babel/plugin-transform-react-jsx, @babel/plugin-transform-runtime, @babel/runtime, @babel/preset-env, @babel/preset-react #3
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
# NOTE: Changes to this file should also be applied to './test-windows.yml' | |
name: Node.js Tests | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
pull_request: | |
env: | |
CI: true | |
jobs: | |
see_if_should_skip: | |
continue-on-error: true | |
runs-on: ubuntu-latest | |
# Map a step output to a job output | |
outputs: | |
should_skip: ${{ steps.skip_check.outputs.should_skip }} | |
steps: | |
- id: skip_check | |
uses: fkirc/skip-duplicate-actions@36feb0d8d062137530c2e00bd278d138fe191289 | |
with: | |
cancel_others: 'false' | |
github_token: ${{ github.token }} | |
paths: '[".github/workflows/test.yml", ".node-version", ".npmrc", "app.json", "content/**", "data/**","lib/**", "Dockerfile", "feature-flags.json", "Gemfile", "Gemfile.lock", "middleware/**", "node_modules/**","package.json", "package-lock.json", "server.js", "tests/**", "translations/**", "Procfile", "webpack.config.js"]' | |
test: | |
needs: see_if_should_skip | |
# Run on self-hosted if the private repo or ubuntu-latest if the public repo | |
# See pull # 17442 in the private repo for context | |
runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }} | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
test-group: [content, graphql, meta, rendering, routing, unit] | |
steps: | |
# Each of these ifs needs to be repeated at each step to make sure the required check still runs | |
# Even if if doesn't do anything | |
- if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' }} | |
name: Check out repo | |
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f | |
with: | |
# Enables cloning the Early Access repo later with the relevant PAT | |
persist-credentials: 'false' | |
- if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' }} | |
name: Setup node | |
uses: actions/setup-node@c46424eee26de4078d34105d3de3cc4992202b1e | |
with: | |
node-version: 14.x | |
- if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' }} | |
name: Get npm cache directory | |
id: npm-cache | |
run: | | |
echo "::set-output name=dir::$(npm config get cache)" | |
- if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' }} | |
name: Cache node modules | |
uses: actions/cache@0781355a23dac32fd3bac414512f4b903437991a | |
with: | |
path: ${{ steps.npm-cache.outputs.dir }} | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' }} | |
name: Install dependencies | |
run: npm ci | |
- if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' && github.repository == 'github/docs-internal' }} | |
name: Clone early access | |
run: npm run heroku-postbuild | |
env: | |
DOCUBOT_REPO_PAT: ${{ secrets.DOCUBOT_REPO_PAT }} | |
GIT_BRANCH: ${{ github.ref }} | |
- if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' && github.repository != 'github/docs-internal' }} | |
name: Run build script | |
run: npm run build | |
- if: ${{ needs.see_if_should_skip.outputs.should_skip != 'true' }} | |
name: Run tests | |
run: npx jest tests/${{ matrix.test-group }}/ | |
env: | |
NODE_OPTIONS: '--max_old_space_size=4096' |