Environment:MarketSquare Robotframework browser CI GitHub Actions
| Knowledge Sources | |
|---|---|
| Domains | Infrastructure, CI_CD |
| Last Updated | 2026-02-12 04:00 GMT |
Overview
GitHub Actions CI environment with a multi-OS, multi-Python, multi-Node.js test matrix for continuous integration and release automation.
Description
This environment defines the CI/CD pipeline configuration for robotframework-browser. The CI runs on GitHub Actions with a comprehensive test matrix covering multiple operating systems (Ubuntu, Windows, macOS including Intel and ARM), Python versions (3.10 through 3.14), and Node.js versions (20.x, 22.x, 24.x). Tests are sharded across 4 groups for parallel execution. The release workflow builds and publishes packages to PyPI and npm.
Usage
Use this environment for understanding CI requirements, debugging CI failures, or extending the test matrix. It is the mandatory context for the Library_Development_and_Release workflow's Github_Release_Workflow implementation.
System Requirements
| Category | Requirement | Notes |
|---|---|---|
| OS | ubuntu-latest, windows-latest, macos-latest | Plus ubuntu-24.04-arm, macos-15-intel |
| Python | 3.10, 3.11, 3.12, 3.13, 3.14 | Full matrix coverage |
| Node.js | 20.x, 22.x, 24.x | Tested combinations per matrix |
| Timeout | 30 minutes per job | Prevents runaway test execution |
Dependencies
CI Services
- GitHub Actions runners (ubuntu, windows, macos)
- `actions/checkout@v6`
- `actions/setup-node`
- `actions/setup-python`
CI-Specific Requirements
- Xvfb for headless testing on Linux
- Playwright system dependencies (`npx playwright install-deps`)
- npm and pip caching for performance
Development Dependencies
- `invoke` >= 2.2.1 (task runner)
- `pytest` >= 9.0.1
- `mypy` >= 1.18.2
- `ruff` >= 0.14.5
- `robotframework-pabot` >= 5.1.0 (parallel test execution)
- `twine` >= 6.2.0 (PyPI publishing)
- `robotframework-robocop` >= 6.10.0 (linting)
Credentials
The following secrets/variables are used in CI:
- `SYS_VAR_CI_INSTALL_TEST` — Set to `0` by default in CI; controls installation test behavior.
- PyPI token (for release publishing)
- npm token (for release publishing)
Quick Install
# Reproduce CI environment locally
python bootstrap.py
source .venv/bin/activate # or .venv\Scripts\activate on Windows
inv deps
inv build
inv utest
inv atest --shard 1/4
Code Evidence
CI test matrix from `.github/workflows/on-push.yml:27-77`:
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
python-version: "3.10"
node-version: 22.x
shard: 1
- os: ubuntu-latest
python-version: "3.14"
node-version: 22.x
shard: 3
- os: macos-latest
python-version: "3.11"
node-version: 20.x
shard: 1
CI environment variable from `.github/workflows/on-push.yml:16-17`:
env:
SYS_VAR_CI_INSTALL_TEST: 0
Common Errors
| Error Message | Cause | Solution |
|---|---|---|
| Test timeout after 30 minutes | Acceptance tests too slow on specific OS/version | Check test shard distribution; increase timeout if needed |
| `xvfb-run: error` | Xvfb not available on Linux runner | Ensure Xvfb is installed as part of Playwright system dependencies |
| npm cache miss | First run or cache key changed | Expected on cache invalidation; will re-download |
Compatibility Notes
- fail-fast disabled: The CI matrix uses `fail-fast: false` to ensure all OS/version combinations are tested even if one fails.
- Test sharding: Tests are split into 4 shards for parallel execution. Each matrix entry runs one shard.
- Daily schedule: CI runs on a daily cron schedule (`15 10 * * *`) in addition to push/PR triggers to catch upstream breakage.