128 lines
3.6 KiB
YAML
128 lines
3.6 KiB
YAML
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
|
|
timeout-minutes: 10
|
|
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 '<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
|