name: Test

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build_and_test:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Use Node.js 10
      uses: actions/setup-node@v1
      with:
        node-version: 10

    - name: Cache Node.js modules
      uses: actions/cache@v2
      with:
        # npm cache files are stored in `~/.npm` on Linux/macOS
        path: ~/.npm
        key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.OS }}-node-
          ${{ runner.OS }}-

    - name: Install dependencies
      run: npm ci

    - name: Run build
      run: npm run build --if-present

    - name: Test
      run: npm test

    - name: Lint
      run: npm run lint

    - name: Check-format
      run: npm run check-format
