name: Playwright Tests

on:
  push:
    branches:
      - master
    paths-ignore:
      - '**/*.md'
      - 'doc/**'
      - 'logo/**'
  workflow_dispatch:
  pull_request:
    branches:
      - master
    paths-ignore:
      - '**/*.md'
      - 'doc/**'
      - 'logo/**'
  schedule:
    - cron: "0 4 * * *" # Runs every day at 4am: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule

jobs:
  build-and-test-playwright:
    name: Playwright Tests (ubuntu-22.04,  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: Install IPython Kernel
        shell: bash
        run: |
          python3 -m pip install ipykernel==6.15.2
          python3 -m ipykernel install --user

      - name: Build Browser
        shell: bash
        run: |
          npm ci
          npm run build:browser
          npm run download:plugins
        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: Test (playwright)
        shell: bash
        run: cd examples/playwright && npm run ui-tests-ci

      - name: Archive test results
        uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 #v4
        if: ${{ !cancelled() }}
        with:
          name: playwright-test-results
          path: |
            examples/playwright/test-results/
            examples/playwright/playwright-report/
          retention-days: 7
