name: Deploy
on: [push]

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    env:
      REACT_APP_STORAGE_BUCKET: ${{ secrets.REACT_APP_STORAGE_BUCKET }}
      REACT_APP_PROJECT_ID: ${{ secrets.REACT_APP_PROJECT_ID }}
      REACT_APP_MSG_SENDER_ID: ${{ secrets.REACT_APP_MSG_SENDER_ID }}
      REACT_APP_MEASUREMENT_ID: ${{ secrets.REACT_APP_MEASUREMENT_ID }}
      REACT_APP_DB_URL: ${{ secrets.REACT_APP_DB_URL }}
      REACT_APP_AUTH_DOMAIN: ${{ secrets.REACT_APP_AUTH_DOMAIN }}
      REACT_APP_APP_ID: ${{ secrets.REACT_APP_APP_ID }}
      REACT_APP_API_KEY: ${{ secrets.REACT_APP_API_KEY }}
    steps:
      - uses: actions/checkout@v2
      - name: Install dependencies
        run: yarn install --frozen-lockfile
      - name: Unit tests
        run: yarn test --watchAll=false
      - name: E2E tests
        uses: cypress-io/github-action@v1
        with:
          start: yarn start
          wait-on: 'http://localhost:3000'
  release:
    name: Release
    if: ${{ github.ref == 'refs/heads/master' }}
    runs-on: ubuntu-latest
    env:
      REACT_APP_STORAGE_BUCKET: ${{ secrets.REACT_APP_STORAGE_BUCKET }}
      REACT_APP_PROJECT_ID: ${{ secrets.REACT_APP_PROJECT_ID }}
      REACT_APP_MSG_SENDER_ID: ${{ secrets.REACT_APP_MSG_SENDER_ID }}
      REACT_APP_MEASUREMENT_ID: ${{ secrets.REACT_APP_MEASUREMENT_ID }}
      REACT_APP_DB_URL: ${{ secrets.REACT_APP_DB_URL }}
      REACT_APP_AUTH_DOMAIN: ${{ secrets.REACT_APP_AUTH_DOMAIN }}
      REACT_APP_APP_ID: ${{ secrets.REACT_APP_APP_ID }}
      REACT_APP_API_KEY: ${{ secrets.REACT_APP_API_KEY }}
      REACT_APP_GITHUB_TOKEN: ${{ secrets.REACT_APP_GITHUB_TOKEN }}
    steps:
      - uses: actions/checkout@v2
      - name: Install dependencies
        run: yarn install --frozen-lockfile
      - name: Build
        run: yarn build
      - name: Deploy to Firebase
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
