name: webclient
on:
  workflow_dispatch:
  # For now, only run on requests, not the main branches.
  pull_request:
    paths:
      - "client/web/**"
      - ".github/workflows/webclient.yml"
      - "!**.md"
  # TODO(soniaappasamy): enable for main branch after an initial waiting period.
  #push:
  #  branches:
  #    - main

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  webclient:
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
      - name: Install deps
        run: ./tool/yarn --cwd client/web
      - name: Run lint
        run: ./tool/yarn --cwd client/web run --silent lint
      - name: Run test
        run: ./tool/yarn --cwd client/web run --silent test
      - name: Run formatter check
        run: |
          ./tool/yarn --cwd client/web run --silent format-check || ( \
            echo "Run this command on your local device to fix the error:" && \
            echo "" && \
            echo "  ./tool/yarn --cwd client/web format" && \
            echo "" && exit 1)
