Add browser support with Socket.io transport, authentication, performance-optimized IPC, and CI/CD #106
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | |
| - name: UI-Test | |
| 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 '<picture><img src="${{ steps.upload.outputs.file-url }}"></picture>' >> $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 |