name: 📷 UI

on:
  pull_request:
    types: [opened, synchronize, reopened]
  push:
    branches:
      - master

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: cache package-lock.json
        uses: actions/cache@v2
        with:
          path: package-temp-dir
          key: lock-${{ github.sha }}

      - name: create package-lock.json
        run: npm i --package-lock-only --ignore-scripts

      - name: hack for single file
        run: |
          if [ ! -d "package-temp-dir" ]; then
            mkdir package-temp-dir
          fi
          cp package-lock.json package-temp-dir
      - name: cache node_modules
        id: node_modules_cache_id
        uses: actions/cache@v2
        with:
          path: node_modules
          key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}

      - name: install
        if: steps.node_modules_cache_id.outputs.cache-hit != 'true'
        run: npm ci

      - name: test
        run: npm run test-image

      - name: upload snapshots artifact
        uses: actions/upload-artifact@v2
        with:
          name: snapshots
          path: imageSnapshots/
          retention-days: 3

      - name: Save commit
        if: github.event_name == 'pull_request' && github.base_ref == 'master'
        run: echo ${{ github.event.pull_request.head.sha }} > ./commit.txt

      - name: Save commit
        if: github.event_name == 'push'
        run: echo ${{ github.sha }} > ./commit.txt

      - name: Upload commit
        if: ${{ always() }}
        uses: actions/upload-artifact@v2
        with:
          name: commit
          path: ./commit.txt

      - name: Save branch
        if: github.event_name == 'pull_request' && github.base_ref == 'master'
        run: echo pull/${{ github.event.pull_request.number }}/merge > ./branch.txt

      - name: Save branch
        if: github.event_name == 'push'
        run: echo ${GITHUB_REF##*/} > ./branch.txt

      - name: Upload branch
        if: ${{ always() }}
        uses: actions/upload-artifact@v2
        with:
          name: branch
          path: ./branch.txt
