name: openvidu-components-angular E2E
on:
  push:
    paths:
      - 'openvidu-components-angular/**'
      - 'openvidu-browser/**'
      - '.github/workflows/openvidu-components-angular-E2E.yml'
  pull_request:
    branches:
      - master
  workflow_dispatch:


jobs:

  test_setup:
    name: Test setup
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '16'
    - name: Send repository dispatch event
      env:
        GITHUB_TOKEN: ${{ secrets.OPENVIDU_DISPATCH_EVENT_GA }}
        COMMIT_MESSAGE: ${{ github.event.head_commit.message || 'Manually' }}
        COMMIT_URL: ${{ github.event.commits[0].url || 'Manually' }}
      run: |
        curl \
        -X POST \
        -H "Accept: application/vnd.github+json" \
        -H "Authorization: Bearer ${GITHUB_TOKEN}" \
        https://api.github.com/repos/OpenVidu/openvidu-call/dispatches \
        -d '{"event_type":"openvidu-components-angular","client_payload":{"commit-message":"'"$COMMIT_MESSAGE"'","commit-ref":"'"$COMMIT_URL"'"}}'
    - name: Build openvidu-browser
      run: |
        cd openvidu-browser
        npm install
        npm run build && \
        npm pack
    - uses: actions/upload-artifact@v3
      with:
        name: openvidu-browser
        path: openvidu-browser/openvidu-browser-*.tgz


  openvidu_angular_e2e:
    needs: test_setup
    name: OpenVidu Angular E2E tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '16'
    - uses: actions/download-artifact@v3
      with:
        name: openvidu-browser
        path: openvidu-components-angular
    - name: Run Browserless Chrome
      run: docker run -d -p 3000:3000 --network host browserless/chrome:1.53-chrome-stable
    - name: Run openvidu-server-kms
      run: |
        docker run -p 4443:4443 --rm -d \
        -e OPENVIDU_SECRET=MY_SECRET \
        openvidu/openvidu-dev:latest
    - name: Install openvidu-browser and dependencies
      run: |
        cd openvidu-components-angular
        npm install openvidu-browser-*.tgz
    - name: Build openvidu-angular
      run: npm run lib:build --prefix openvidu-components-angular
    - name: Build openvidu-angular-testapp
      run: npm run build --prefix openvidu-components-angular
    - name: Serve openvidu-angular-testapp
      run: npm run start-prod --prefix openvidu-components-angular &
    - name: Run openvidu-angular E2E
      run: npm run lib:e2e-ci --prefix openvidu-components-angular

  webcomponent_e2e:
    needs: test_setup
    name: Webcomponent E2E CE tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '16'
    - uses: actions/download-artifact@v3
      with:
        name: openvidu-browser
        path: openvidu-components-angular
    - name: Run Browserless Chrome
      run: docker run -d -p 3000:3000 --network host browserless/chrome:1.53-chrome-stable
    - name: Run openvidu-server-kms
      run: |
        docker run -p 4443:4443 --rm -d \
        -e OPENVIDU_SECRET=MY_SECRET \
        openvidu/openvidu-dev:latest
    - name: Install openvidu-browser and dependencies
      run: |
        cd openvidu-components-angular
        npm install openvidu-browser-*.tgz
    - name: Build openvidu-angular
      run: npm run lib:build --prefix openvidu-components-angular
    - name: Build openvidu-webcomponent
      run: npm run webcomponent:build --prefix openvidu-components-angular
    - name: Serve Webcomponent Testapp
      run: npm run webcomponent:serve-testapp --prefix openvidu-components-angular &
    - name: Run Webcomponent E2E
      run:  npm run webcomponent:e2e-ci --prefix openvidu-components-angular

  webcomponent_e2e_pro:
    needs: test_setup
    name: Webcomponent E2E PRO tests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '16'
    - uses: actions/download-artifact@v3
      with:
        name: openvidu-browser
        path: openvidu-components-angular
    - name: Run Browserless Chrome
      run: docker run -d -p 3000:3000 --network host browserless/chrome:1.53-chrome-stable
    - name: Install openvidu-browser and dependencies
      run: |
        cd openvidu-components-angular
        npm install openvidu-browser-*.tgz
    - name: Build openvidu-angular
      run: npm run lib:build --prefix openvidu-components-angular
    - name: Build openvidu-webcomponent
      run: npm run webcomponent:build --prefix openvidu-components-angular
    - name: Serve Webcomponent Testapp
      run: npm run webcomponent:serve-testapp --prefix openvidu-components-angular &
    - name: Run Webcomponent E2E PRO
      env:
        OPENVIDU_SERVER_URL: ${{ secrets.OPENVIDU_CALL_NEXT_URL }}
        OPENVIDU_SECRET: ${{ secrets.OPENVIDU_CALL_NEXT_SECRET }}
      run: npm run webcomponent:e2e-pro-ci --prefix openvidu-components-angular
