Skip to content

fix: harden run-robot-suite-tests.sh setup and OS compatibility - #1065

Open
matweew wants to merge 5 commits into
masterfrom
fix/run-robot-suite-tests-setup
Open

matweew wants to merge 5 commits into
masterfrom
fix/run-robot-suite-tests-setup

Conversation

@matweew

@matweew matweew commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • --help/-h now exits immediately before any venv setup
  • python -m pip replaces bin/pip (the binary is absent on some Debian/Ubuntu venvs)
  • Broken venv detection: recreates the venv if import pip fails; preflight check for python3-venv with clear install instructions
  • Python discovery: scans for an available python3 binary instead of assuming it exists
  • --prefer-binary on pip install avoids slow source compilation (grpcio, etc.)
  • Suite filter bug fix: -s '*'.tests.api.suite was passing literal apostrophes to robot; replaced with bash array SUITE_FILTER=(-s "*.tests.api.suite")
  • set -o pipefail: pipes now propagate the real exit code instead of always succeeding
  • Ubuntu 26.04 / Playwright compatibility: detects the "does not support chromium" error from rfbrowser, patches coreBundle.js to map ubuntu26.x hosts to ubuntu24.04 builds, then downloads the browser directly

Test plan

  • ./bin/run-robot-suite-tests.sh --help prints usage and exits 0
  • ./bin/run-robot-suite-tests.sh api runs without suite filter errors
  • ./bin/run-robot-suite-tests.sh ui installs Chromium on Ubuntu 26.04 via the fallback patch
  • Fresh venv is created correctly when existing venv has broken pip

🤖 Generated with Claude Code

matweew and others added 5 commits June 11, 2026 10:16
- Add --help/-h early exit before venv setup
- Use python -m pip instead of bin/pip (absent on some Debian/Ubuntu venvs)
- Recreate venv if pip is not importable
- Preflight check for python3-venv with clear install instructions
- Detect available Python 3 binary rather than assuming python3 is valid
- Use python -m pip install --prefer-binary to avoid slow source builds
- Fix suite filter passing literal quotes to robot (-s '*'.tests.api.suite)
  by using a bash array SUITE_FILTER=(-s "*.tests.api.suite")
- Add set -o pipefail so pipes propagate real exit codes
- On UI: detect playwright OS-unsupported error, patch platform detection
  in coreBundle.js to use ubuntu24.04 builds for ubuntu26.x hosts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Defaults to headless. Pass --headed to open browser windows during UI
test execution. Works with pabot (each worker opens its own window).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When pabot spawns worker processes, each one starts its own Node.js
rfbrowser server that has no access to the parent DISPLAY. The
documented fix (Browser/browser.py) is to start one shared server in
the main process (which has DISPLAY) and point all workers to it via
ROBOT_FRAMEWORK_BROWSER_NODE_PORT before pabot runs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
pabot worker subprocesses have no DISPLAY access so headed browsers
never appear. In headed mode, skip pabot entirely and run all smoke
tests sequentially with a single robot process.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…back

Without this, playwright installs to ~/.cache/ms-playwright/ instead of
the rfbrowser wrapper's .local-browsers directory, causing a missing
executable error at test runtime.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant