name: E2E Tests on: push: # paths: # - 'openvidu-components-angular/**' # - 'openvidu-browser/**' # pull_request: # branches: # - master repository_dispatch: types: [openvidu-components-angular] workflow_dispatch: env: CHROME_VERSION: latest jobs: # prepare_openvidu_components_angular: # if: false # name: Setup # runs-on: ubuntu-latest # steps: # - env: # COMMIT_MESSAGE: ${{ github.event.client_payload.commit-message }} # COMMIT_REF: ${{ github.event.client_payload.commit-ref }} # run: echo Commit openvidu-components-angular # - uses: actions/setup-node@v4 # with: # node-version: '20' # - name: Build openvidu-components-angular # run: | # git clone --depth 1 https://github.com/OpenVidu/openvidu openvidu && \ # cd openvidu/openvidu-components-angular && \ # npm install && \ # npm run lib:build && \ # npm run lib:pack && \ # mv dist/openvidu-components-angular/openvidu-components-angular-*.tgz ../../ # cd ../../ && \ # rm -rf openvidu # - uses: actions/upload-artifact@v4 # with: # name: artifacts # path: ${{ github.workspace }}/**.tgz # if-no-files-found: error routes_guards_tests: name: Guards and Routes runs-on: ubuntu-latest steps: - name: Checkout OpenVidu Local Deployment uses: actions/checkout@v4 with: repository: OpenVidu/openvidu-local-deployment ref: development path: openvidu-local-deployment - name: Configure Local Deployment shell: bash run: | cd openvidu-local-deployment/community ./configure_lan_private_ip_linux.sh docker compose up -d - name: Wait for OpenVidu Local Deployment to Start shell: bash run: | MAX_WAIT_SECONDS=60 SECONDS=0 until curl -s -f -o /dev/null http://localhost:7880; do if [ $SECONDS -gt $MAX_WAIT_SECONDS ]; then echo "OpenVidu Local Deployment did not start in $MAX_WAIT_SECONDS seconds" exit 1 fi echo "Waiting for openvidu-local-deployment to be ready ..." sleep 5 SECONDS=$((SECONDS+5)) done echo "OpenVidu Local Deployment started in $SECONDS seconds" - uses: actions/checkout@v4 with: ref: next path: openvidu-meet - uses: actions/setup-node@v4 with: node-version: '20' - name: Run Chrome run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:${{ env.CHROME_VERSION }} - name: Prepare openvidu-meet run: | cd openvidu-meet ./prepare.sh cd frontend npm run sync:backend cd ../backend npm run build:prod npm run start:prod & - name: Run tests env: LAUNCH_MODE: CI APP_URL: http://localhost:6080 run: npm run e2e:run-routes --prefix openvidu-meet/frontend # auth_e2e_test: # if: false # needs: prepare_openvidu_components_angular # name: Auth tests # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v4 # - uses: actions/setup-node@v4 # with: # node-version: '20' # - uses: actions/download-artifact@v4 # with: # name: artifacts # # - name: Run Browserless Chrome # # run: docker run -d -p 3000:3000 --network host browserless/chrome:1.53-chrome-stable # - name: Run Chrome # run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:127.0 # - name: Run openvidu-local-deployment # run: | # git clone --depth 1 https://github.com/OpenVidu/openvidu-local-deployment # cd openvidu-local-deployment/community # ./configure_lan_private_ip_linux.sh # docker compose up -d # - name: Install dependencies and build openvidu-meet # run: | # npm install openvidu-components-angular-*.tgz --prefix frontend && \ # npm install --prefix backend && \ # npm run build:prod --prefix backend && \ # npm run build:prod --prefix frontend && \ # mv frontend/dist/openvidu-meet/ backend/dist/public/ # - name: Wait for openvidu-local-deployment # run: | # until curl -s -f -o /dev/null http://localhost:7880; do # echo "Waiting for openvidu-local-deployment to be ready..." # sleep 5 # done # - name: Serve openvidu-meet # env: # MEET_PRIVATE_ACCESS: true # run: npm run start --prefix backend & # - name: Run tests # env: # LAUNCH_MODE: CI # run: npm run e2e:run-auth --prefix frontend # home_e2e_test: # if: false # needs: prepare_openvidu_components_angular # name: Home tests # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v4 # - uses: actions/setup-node@v4 # with: # node-version: '20' # - uses: actions/download-artifact@v4 # with: # name: artifacts # # - name: Run Browserless Chrome # # run: docker run -d -p 3000:3000 --network host browserless/chrome:1.53-chrome-stable # - name: Run Chrome # run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:127.0 # - name: Run openvidu-local-deployment # run: | # git clone --depth 1 https://github.com/OpenVidu/openvidu-local-deployment # cd openvidu-local-deployment/community # ./configure_lan_private_ip_linux.sh # docker compose up -d # - name: Install dependencies and build openvidu-meet # run: | # npm install openvidu-components-angular-*.tgz --prefix frontend && \ # npm install --prefix backend && \ # npm run build:prod --prefix backend && \ # npm run build:prod --prefix frontend && \ # mv frontend/dist/openvidu-meet/ backend/dist/public/ # - name: Wait for openvidu-local-deployment # run: | # until curl -s -f -o /dev/null http://localhost:7880; do # echo "Waiting for openvidu-local-deployment to be ready..." # sleep 5 # done # - name: Serve openvidu-meet # run: npm run start --prefix backend & # - name: Run tests # env: # LAUNCH_MODE: CI # MEET_PRIVATE_ACCESS: false # run: npm run e2e:run-home --prefix frontend # room_e2e_test: # if: false # needs: prepare_openvidu_components_angular # name: Room tests # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v4 # - uses: actions/setup-node@v4 # with: # node-version: '20' # - uses: actions/download-artifact@v4 # with: # name: artifacts # # - name: Run Browserless Chrome # # run: docker run -d -p 3000:3000 --network host browserless/chrome:1.53-chrome-stable # - name: Run Chrome # run: docker run --network=host -d -p 4444:4444 selenium/standalone-chrome:127.0 # - name: Run openvidu-local-deployment # run: | # git clone --depth 1 https://github.com/OpenVidu/openvidu-local-deployment # cd openvidu-local-deployment/community # ./configure_lan_private_ip_linux.sh # docker compose up -d # - name: Install dependencies and build openvidu-meet # run: | # npm install openvidu-components-angular-*.tgz --prefix frontend && \ # npm install --prefix backend && \ # npm run build:prod --prefix backend && \ # npm run build:prod --prefix frontend && \ # mv frontend/dist/openvidu-meet/ backend/dist/public/ # - name: Wait for openvidu-local-deployment # run: | # until curl -s -f -o /dev/null http://localhost:7880; do # echo "Waiting for openvidu-local-deployment to be ready..." # sleep 5 # done # - name: Serve openvidu-meet # run: npm run start --prefix backend & # - name: Run tests # env: # LAUNCH_MODE: CI # MEET_PRIVATE_ACCESS: false # run: npm run e2e:run-room --prefix frontend recording_e2e_test: name: Recordings tests runs-on: ubuntu-latest steps: - name: Install ffmpeg run: | sudo apt-get update sudo apt-get install -y ffmpeg - name: Checkout OpenVidu Local Deployment uses: actions/checkout@v4 with: repository: OpenVidu/openvidu-local-deployment ref: development path: openvidu-local-deployment - name: Configure Local Deployment shell: bash run: | cd openvidu-local-deployment/community ./configure_lan_private_ip_linux.sh docker compose up -d - name: Wait for OpenVidu Local Deployment to Start shell: bash run: | MAX_WAIT_SECONDS=60 SECONDS=0 until curl -s -f -o /dev/null http://localhost:7880; do if [ $SECONDS -gt $MAX_WAIT_SECONDS ]; then echo "OpenVidu Local Deployment did not start in $MAX_WAIT_SECONDS seconds" exit 1 fi echo "Waiting for openvidu-local-deployment to be ready ..." sleep 5 SECONDS=$((SECONDS+5)) done echo "OpenVidu Local Deployment started in $SECONDS seconds" - uses: actions/checkout@v4 with: ref: next path: openvidu-meet - uses: actions/setup-node@v4 with: node-version: '22.13.1' - name: Run Chrome run: | mkdir -p /tmp/downloads docker run --network=host \ -v /tmp/downloads:/tmp/downloads \ -d selenium/standalone-chrome:${{ env.CHROME_VERSION }} # grant permissions to the /tmp/downloads folder docker exec -u root \ $(docker ps -q --filter ancestor=selenium/standalone-chrome:${{ env.CHROME_VERSION }}) \ chmod 777 /tmp/downloads - name: Prepare openvidu-meet run: | cd openvidu-meet ./prepare.sh cd frontend npm run sync:backend cd ../backend npm run build:prod npm run start:prod & - name: Run tests env: LAUNCH_MODE: CI APP_URL: http://localhost:6080 run: npm run e2e:run-recordings --prefix openvidu-meet/frontend