Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@ We love contributions! Please read through these links to get started:
- 🔢 [Contribution Guidelines](https://docs.browser-use.com/development/contribution-guide)
- 👾 [Local Development Setup Guide](https://docs.browser-use.com/development/local-setup)
- 🏷️ [Issues Tagged: `#help-wanted`](https://github.com/browser-use/browser-use/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22)

For development, select Node 26 from `.node-version` before running Pyright
or the pre-commit hooks (`nvm install "$(cat .node-version)" && nvm use "$(cat .node-version)"` if you use nvm). On Linux,
Node.js 26 also requires `libatomic` (`sudo apt install libatomic1` on Debian/Ubuntu).
The Python package does not require a system Node.js installation; optional
external MCP servers have their own runtime requirements.
9 changes: 6 additions & 3 deletions .github/workflows/claude.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,11 @@ jobs:
env:
IS_SANDBOX: '1'
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version-file: '.node-version'
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
activate-environment: true
Expand All @@ -55,7 +58,7 @@ jobs:
# - run: playwright install chrome --with-deps

- name: Cache chromium binaries
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.cache/ms-playwright
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cloud_evals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
trigger_cloud_eval_image_build:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
- uses: actions/github-script@v8
with:
github-token: ${{ secrets.TRIGGER_CLOUD_BUILD_GH_KEY }}
script: |
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,30 +27,30 @@ jobs:
id-token: write
steps:
- name: Check out the repo
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4

- name: Log in to Docker Hub
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Compute Docker tags based on tag/branch
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: |
browseruse/browseruse
Expand All @@ -64,7 +64,7 @@ jobs:

- name: Build and push Docker image
id: push
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
platforms: linux/amd64,linux/arm64
context: .
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/install-script.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ jobs:
mode: [--remote-only, --local-only, --full]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand Down Expand Up @@ -113,7 +113,7 @@ jobs:
mode: [--remote-only, --local-only, --full]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Run install.sh ${{ matrix.mode }}
run: bash browser_use/skill_cli/install.sh ${{ matrix.mode }}
Expand Down Expand Up @@ -185,10 +185,10 @@ jobs:
# Fix Unicode output on Windows (checkmarks, etc.)
PYTHONIOENCODING: utf-8
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Setup Python (Windows requires manual setup)
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand Down Expand Up @@ -230,7 +230,7 @@ jobs:
name: uv pip install (Linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh
Expand Down Expand Up @@ -278,7 +278,7 @@ jobs:
name: uvx browser-use[cli] (Linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh
Expand Down
22 changes: 14 additions & 8 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,30 +21,36 @@ jobs:
name: syntax-errors
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
- uses: actions/checkout@v5
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- run: uv run ruff check --no-fix --select PLE

lint-style:
name: code-style
name: code-style (Node 26)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version-file: '.node-version'
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- run: uv python install 3.11
- run: uv sync --dev --all-extras --python 3.11
- run: uv run --no-sync pre-commit run --all-files --show-diff-on-failure

lint-typecheck:
name: type-checker
name: type-checker (Node 26)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version-file: '.node-version'
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- run: uv sync --dev --all-extras # install extras for examples to avoid pyright missing imports errors-
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ jobs:
name: pip-build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
- uses: actions/checkout@v5
- uses: astral-sh/setup-uv@v7
- run: uv build --python 3.12
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
with:
name: dist-artifact
path: |
Expand All @@ -42,9 +42,9 @@ jobs:
ANONYMIZED_TELEMETRY: 'false'

steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
- uses: actions/download-artifact@v4
- uses: actions/checkout@v5
- uses: astral-sh/setup-uv@v7
- uses: actions/download-artifact@v7
with:
name: dist-artifact

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Create pre-release tag
run: |
git fetch --tags
Expand Down Expand Up @@ -74,8 +74,8 @@ jobs:
IN_DOCKER: 'True'
ANONYMIZED_TELEMETRY: 'false'
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- uses: actions/checkout@v5
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
activate-environment: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stale-bot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
- uses: actions/stale@v10
with:
# General settings
repo-token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
36 changes: 18 additions & 18 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,18 @@ on:
jobs:
setup-chromium:
runs-on: ubuntu-latest
timeout-minutes: 5
timeout-minutes: 15 # Cold apt/browser downloads can exceed five minutes.
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- uses: actions/checkout@v5
- uses: astral-sh/setup-uv@v7

- name: Get week number for cache key
id: week
run: echo "number=$(date +%Y-W%U)" >> $GITHUB_OUTPUT

- name: Cache chromium binaries
id: cache-chromium
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.cache/ms-playwright
Expand All @@ -56,7 +56,7 @@ jobs:
TEST_FILENAMES: ${{ steps.lsgrep.outputs.TEST_FILENAMES }}
# ["test_browser", "test_tools", "test_browser_session", "test_tab_management", ...]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
# Force fresh checkout to avoid any caching issues
fetch-depth: 1
Expand Down Expand Up @@ -113,14 +113,14 @@ jobs:
exit 1
fi

- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- uses: actions/checkout@v5
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
activate-environment: true

- name: Cache uv packages and venv
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.cache/uv
Expand All @@ -137,7 +137,7 @@ jobs:

- name: Cache chromium binaries
id: cache-chromium
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.cache/ms-playwright
Expand All @@ -150,7 +150,7 @@ jobs:
run: uvx playwright install chromium --with-deps --no-shell

- name: Cache browser-use extensions
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.config/browseruse/extensions
Expand All @@ -174,7 +174,7 @@ jobs:

- name: Run test with retry
if: steps.check-file.outputs.exists == 'true'
uses: nick-fields/retry@v3
uses: nick-fields/retry@v4
with:
timeout_minutes: 4
max_attempts: 1
Expand All @@ -197,14 +197,14 @@ jobs:
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
BROWSER_USE_API_KEY: ${{ secrets.BROWSER_USE_API_KEY }}
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- uses: actions/checkout@v5
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
activate-environment: true

- name: Cache uv packages and venv
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.cache/uv
Expand All @@ -221,7 +221,7 @@ jobs:

- name: Cache chromium binaries
id: cache-chromium
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.cache/ms-playwright
Expand All @@ -234,7 +234,7 @@ jobs:
run: uvx playwright install chromium --with-deps --no-shell

- name: Cache browser-use extensions
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.config/browseruse/extensions
Expand All @@ -244,7 +244,7 @@ jobs:

- name: Run agent tasks evaluation and capture score
id: eval
uses: nick-fields/retry@v3
uses: nick-fields/retry@v4
with:
timeout_minutes: 4
max_attempts: 1
Expand All @@ -271,7 +271,7 @@ jobs:

- name: Comment PR with agent evaluation results
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
uses: actions/github-script@v8
continue-on-error: true
with:
script: |
Expand Down
1 change: 1 addition & 0 deletions .node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
26
4 changes: 2 additions & 2 deletions browser_use/skill_cli/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -544,9 +544,9 @@ install_cloudflared() {
linux)
mkdir -p "$HOME/.local/bin"
if [ "$arch" = "aarch64" ] || [ "$arch" = "arm64" ]; then
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64 -o "$HOME/.local/bin/cloudflared"
curl -fL --retry 3 --retry-delay 1 --connect-timeout 15 https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64 -o "$HOME/.local/bin/cloudflared"
else
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o "$HOME/.local/bin/cloudflared"
curl -fL --retry 3 --retry-delay 1 --connect-timeout 15 https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o "$HOME/.local/bin/cloudflared"
fi
chmod +x "$HOME/.local/bin/cloudflared"
;;
Expand Down
Loading