on: pull_request_target: # Use pull_request_target branches: [master, beta, release] jobs: test: runs-on: ubuntu-latest container: image: ghcr.io/thomasnordquist/mqtt-explorer-ui-tests:latest volumes: - ./:/app options: --user root steps: - uses: actions/checkout@v4 - name: Install Packages run: yarn install --frozen-lockfile - name: Build run: yarn build - name: Test run: yarn test ui-tests: runs-on: ubuntu-latest container: image: ghcr.io/thomasnordquist/mqtt-explorer-ui-tests:latest volumes: - ./:/app options: --user root steps: - uses: actions/checkout@v4 - name: Install Packages run: yarn install --frozen-lockfile - name: Build run: yarn build - name: Run UI Tests run: ./scripts/runUiTests.sh - name: Upload Test Screenshots if: always() uses: actions/upload-artifact@v4 with: name: ui-test-screenshots path: | test-screenshot-*.png retention-days: 30 demo-video: runs-on: ubuntu-latest container: image: ghcr.io/thomasnordquist/mqtt-explorer-ui-tests:latest volumes: - ./:/app options: --user root steps: - uses: actions/checkout@v4 - name: Install Packages run: yarn install --frozen-lockfile - name: Build run: yarn build - name: Generate Demo Video run: yarn ui-test - name: Post-processing run: ./scripts/prepareVideo.sh - uses: hkusu/s3-upload-action@v2 id: upload # specify some ID for use in subsequent steps with: aws-access-key-id: ${{ vars.AWS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: 'eu-central-1' aws-bucket: ${{ vars.AWS_BUCKET }} file-path: './ui-test.gif' content-type: image/gif output-file-url: 'true' - name: Show URL run: echo '${{ steps.upload.outputs.file-url }}' id: artifact-upload-step - run: echo '' >> $GITHUB_STEP_SUMMARY test-browser: runs-on: ubuntu-latest services: mosquitto: image: eclipse-mosquitto:2 ports: - 1883:1883 options: >- --health-cmd "mosquitto_sub -t '$SYS/#' -C 1" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install Dependencies run: yarn install --frozen-lockfile - name: Build Browser Mode run: yarn build:server - name: Test App run: yarn test:app - name: Test Backend run: yarn test:backend - name: Start Server in Background run: | yarn start:server & echo $! > server.pid env: MQTT_EXPLORER_USERNAME: test MQTT_EXPLORER_PASSWORD: test123 PORT: 3000 - name: Wait for Server run: | timeout 30 bash -c 'until curl -f http://localhost:3000; do sleep 1; done' - name: Browser Smoke Test run: | # Test server is running curl -f http://localhost:3000 || exit 1 echo "Browser mode server is running successfully" - name: Stop Server if: always() run: | if [ -f server.pid ]; then kill $(cat server.pid) || true rm server.pid fi