name: ci on: [push, pull_request] jobs: should-skip: continue-on-error: true runs-on: ubuntu-latest # Map a step output to a job output outputs: should-skip-job: ${{steps.skip-check.outputs.should_skip}} steps: - id: skip-check uses: fkirc/skip-duplicate-actions@v2.1.0 with: github_token: ${{github.token}} ci: needs: should-skip if: ${{needs.should-skip.outputs.should-skip-job != 'true'}} strategy: fail-fast: false matrix: os: [ubuntu-latest] env: BROWSER_STACK_USERNAME: ${{secrets.BROWSER_STACK_USERNAME}} BROWSER_STACK_ACCESS_KEY: ${{secrets.BROWSER_STACK_ACCESS_KEY}} runs-on: ${{matrix.os}} steps: - name: checkout code uses: actions/checkout@v2 - name: Cache dependencies uses: actions/cache@v2 with: path: | ~/.npm **/node_modules key: ${{runner.os}}-npm-${{hashFiles('**/package-lock.json')}} restore-keys: | ${{runner.os}}-npm- ${{runner.os}}- - name: read node version from .nvmrc run: echo ::set-output name=NVMRC::$(cat .nvmrc) shell: bash id: nvm - name: update apt cache on linux w/o browserstack run: sudo apt-get update if: ${{startsWith(matrix.os, 'ubuntu') && !env.BROWSER_STACK_USERNAME}} - name: install ffmpeg/pulseaudio for firefox on linux w/o browserstack run: sudo apt-get install ffmpeg pulseaudio if: ${{startsWith(matrix.os, 'ubuntu') && !env.BROWSER_STACK_USERNAME}} - name: start pulseaudio for firefox on linux w/o browserstack run: pulseaudio -D if: ${{startsWith(matrix.os, 'ubuntu') && !env.BROWSER_STACK_USERNAME}} - name: setup node uses: actions/setup-node@v1 with: node-version: '${{steps.nvm.outputs.NVMRC}}' # turn off the default setup-node problem watchers... - run: echo "::remove-matcher owner=eslint-compact::" - run: echo "::remove-matcher owner=eslint-stylish::" - run: echo "::remove-matcher owner=tsc::" - name: npm install run: npm i --prefer-offline --no-audit - name: run npm test uses: GabrielBB/xvfb-action@v1 with: run: npm run test