name: Validate Studio Flow (Browserless) on: workflow_dispatch: inputs: browserless_ws: description: 'WebSocket endpoint for browserless (wss://...)' required: true default: '' browserless_token: description: 'Optional token for browserless (appended as ?token=...)' required: false default: '' streamyard_email: description: 'Optional StreamYard email (for login)' required: false default: '' streamyard_password: description: 'Optional StreamYard password (for login)' required: false default: '' jobs: browserless-validate: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' - name: Install deps run: | npm ci || npm install --no-audit --no-fund - name: Ensure puppeteer-core installed run: | if [ ! -d node_modules/puppeteer-core ]; then npm install --no-audit --no-fund puppeteer-core@24.30.0; fi - name: Run browserless flow env: BROWSERLESS_WS: ${{ github.event.inputs.browserless_ws }} BROWSERLESS_TOKEN: ${{ github.event.inputs.browserless_token }} STREAMYARD_EMAIL: ${{ github.event.inputs.streamyard_email }} STREAMYARD_PASSWORD: ${{ github.event.inputs.streamyard_password }} run: | echo "Connecting to browserless at $BROWSERLESS_WS" node e2e/streamyard-flow-browserless.js - name: Upload results if: always() uses: actions/upload-artifact@v4 with: name: browserless-studio-flow-results path: | e2e/streamyard-flow-browserless-result.json e2e/streamyard_flow_browserless.png - name: Show result if: always() run: | echo '---- result (if present) ----' if [ -f e2e/streamyard-flow-browserless-result.json ]; then cat e2e/streamyard-flow-browserless-result.json; else echo 'No JSON result found'; fi echo '------------------------------'