name: Test
on:
  push:

jobs:
  test:
    name: Test
    runs-on: ubuntu-20.04
    steps:
      - name: Init check
        if: ${{ github.repository != 'AmazeeLabs/silverback-template'}}
        run: echo 'Please run the INIT script. See the root README.md for instructions.' && false

      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Setup
        uses: ./.github/actions/setup

      - name: TurboRepo local server
        uses: felixmosh/turborepo-gh-artifacts@v2
        with:
          server-token: 'local'
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Test
        run: pnpm turbo:test
        env:
          TURBO_API: 'http://127.0.0.1:9080'
          TURBO_TOKEN: 'local'
          TURBO_TEAM: 'local'

      - name: Upload Playwright report
        uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: playwright-report
          path: tests/e2e/playwright-report/
          retention-days: 3

      - name: Publish to Chromatic
        uses: chromaui/action@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
          storybookBuildDir: packages/ui/storybook-static
          storybookBaseDir: packages/ui
          onlyChanged: true
          exitOnceUploaded: true

      - name: Deploy storybook to netlify
        run:
          pnpm run --filter=@custom/ui build && npx netlify-cli deploy --prod
          --filter @custom/ui --dir=packages/ui/storybook-static
        env:
          VITEST_CLOUDINARY_CLOUDNAME: local
          NETLIFY_SITE_ID: ${{ vars.NETLIFY_STORYBOOK_ID }}
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
        if:
          ${{ github.ref  == 'refs/heads/dev' && vars.NETLIFY_STORYBOOK_ID != ''
          }}

      - name: Merge release to prod (silverback-template only)
        uses: devmasx/merge-branch@1.4.0
        if: ${{ github.repository == 'AmazeeLabs/silverback-template' && github.ref  == 'refs/heads/release'}}
        with:
          type: now
          from_branch: release
          target_branch: prod
          github_token: ${{ secrets.GITHUB_TOKEN }}

  docker_build:
    name: Docker Build
    if: startsWith(github.ref_name, 'test-all/') || startsWith(github.head_ref, 'test-all/')
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 1
      - name: Setup Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2
          bundler-cache: true
      - name: Install Pygmy
        run: gem install pygmy
      - name: Start Pygmy
        run: pygmy up
      - name: Docker Build & Up
        run: DOCKER_BUILDKIT=1 docker-compose up -d --build
      - name: Wait a bit
        run: sleep 5
      - name: Check containers status
        run: |
          if docker-compose ps | grep Exit
          then
            echo "Docker container(s) exited"
            exit 1
          else
            echo "Docker containers running"
          fi