name: Production Build Smoke Test

on:
  push:
    branches:
      - master
    paths-ignore:
      - '**/*.md'
      - 'doc/**'
      - 'logo/**'
  workflow_dispatch:
  pull_request:
    branches:
      - master
    paths-ignore:
      - '**/*.md'
      - 'doc/**'
      - 'logo/**'

jobs:
  build-and-test-playwright:
    name: Smoke Test for Browser Example Production Build on ubuntu-22.04 with Node.js 22.x

    runs-on: ubuntu-22.04
    timeout-minutes: 60

    steps:
      - name: Checkout
        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0

      - name: Use Node.js "22.x"
        uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2
        with:
          node-version: "22.x"
          registry-url: "https://registry.npmjs.org"

      - name: Use Python 3.13
        uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
        with:
          python-version: "3.13"

      - name: Build Browser Example Application for Production
        shell: bash
        run: |
          npm ci
          cd examples/browser && npm run build:production
        env:
          NODE_OPTIONS: --max_old_space_size=4096
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # https://github.com/microsoft/vscode-ripgrep/issues/9

      - name: Build Playwright
        shell: bash
        run: |
          cd examples/playwright && npm run build

      - name: Run Smoke Test (examples/playwright/src/tests/theia-app)
        shell: bash
        run: npm run test:playwright -- theia-app
