name: CI Front
on:
  push:
    branches:
      - main
  pull_request_target:
jobs:
  front-test:
    runs-on: ubuntu-latest
    env:
      REACT_APP_API_URL: http://127.0.0.1:3000/graphql
      REACT_APP_AUTH_URL: http://127.0.0.1:3000/auth
      REACT_APP_FILES_URL: http://127.0.0.1:3000/files
    steps:
      - uses: actions/checkout@v3
        if: github.event_name == 'push'
        with:
          ref: ${{ github.head_ref || github.ref_name }}
      - uses: actions/checkout@v3
        if: github.event_name == 'pull_request_target'
        with:
          ref: "refs/pull/${{ github.event.number }}/merge"
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: "18"
      - name: Front / Write .env
        run: |
          cd front
          touch .env
          echo "REACT_APP_API_URL: $REACT_APP_API_URL" >> .env
          echo "REACT_APP_AUTH_URL: $REACT_APP_AUTH_URL" >> .env
          echo "REACT_APP_FILES_URL: $REACT_APP_FILES_URL" >> .env
      - name: Front / Install Dependencies
        run: cd front && yarn
      - name: Front / Install Playwright
        run: cd front && npx playwright install --with-deps
      - name: Front / Run linter
        run: cd front && yarn lint
      - name: Front / Build Storybook
        run: cd front && yarn storybook:build --quiet
      - name: Front / Run storybook tests
        run: |
          cd front && npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" \
            "npx http-server storybook-static --silent --port 6006" \
            "yarn storybook:coverage"
      - name: Front / Run jest tests
        run: |
          cd front && yarn test
