Skip to main content

playwright-use

Natural-language UI tests, no imperative code. Playwright + AI.

https://github.com/user-attachments/assets/1aa826fd-e05b-462b-a717-8a4b448a38ed

Setup

python -m venv .venv && . .venv/Scripts/activate   # Windows PowerShell
pip install -r requirements.txt
python -m playwright install chromium

Configure Azure OpenAI

Create a .env in project root:

AZURE_OPENAI_API_KEY=...
AZURE_OPENAI_ENDPOINT=https://<resource>.openai.azure.com/
AZURE_OPENAI_DEPLOYMENT=<deployment_name>
AZURE_OPENAI_API_VERSION=2024-08-01-preview
LLM_PROVIDER=azure-openai

Other providers

  • OpenAI:
LLM_PROVIDER=openai
OPENAI_API_KEY=...
# optional
OPENAI_MODEL=gpt-4o-mini
OPENAI_BASE=https://api.openai.com/v1
  • Anthropic (Claude):
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=...
ANTHROPIC_MODEL=claude-3-haiku-20240307
  • Groq:
LLM_PROVIDER=groq
GROQ_API_KEY=...
GROQ_MODEL=llama3-8b-8192

Run a goal

Headless (default):

python main.py goals/login.goal.yaml

Headed (recommended for debugging):

python main.py goals/login.goal.yaml --headed

Or, when installed as a package (see Packaging):

playwright-use goals/login.goal.yaml --headed

Artifacts are written to runs/<GoalName_Timestamp>/:

  • report.html, report.json
  • events.log
  • trace.zip, *.webm
  • step_*.png, step_fail_*.png

Goal file format

name: "Login and Checkout Flow"
url: "https://www.saucedemo.com"
steps:
  - description: "Open the site"
  - description: "Log in with username 'standard_user' and password 'secret_sauce'"
  - description: "Add 'Sauce Labs Backpack' to the cart"
  - description: "Go to cart"
  - description: "Click checkout"
  - description: "Fill in first name 'Toni', last name 'Ramchandani', zip code '411001'"
  - description: "Click Continue"
  - description: "Click Finish"
assertions:
  - "The final page shows a confirmation that order is placed"
  - "URL contains 'checkout-complete'"

Notes:

  • ${var} placeholders can be used inside descriptions/assertions and are replaced from an optional vars: map.

Headed vs Headless

  • Headed: launches maximized; viewport inherits OS window size for realistic layout.
  • Headless: uses a deterministic 1280x800 viewport for reproducibility.

How it works (high-level)

  • Each step’s natural-language description is converted into a JSON action plan by Azure OpenAI (core/planner.py).
  • Actions are executed via Playwright with robust element resolution (core/healer.py) and resiliency in inputs and checkboxes (core/executor.py).
  • Assertions check URL fragments or use a strict LLM oracle (core/oracle.py).
  • Reports are generated by core/reporter.py.

Aliases (self-learning)

  • The runner caches successful hint→selector mappings per host in fixtures/aliases.yaml.
  • You can also predefine entries there. File is hot‑reloaded.

Packaging

Build and install locally:

pip install --upgrade build twine
python -m build
pip install dist/*.whl

Run via console script:

playwright-use goals/login.goal.yaml --headed

Publish to PyPI (requires credentials):

twine upload dist/*

License

This project is licensed under the MIT License. See LICENSE.

See also: ARCHITECTURE.md for internals and diagrams.

Release files for playwright-use 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for playwright-use 0.1.6
File Size Uploaded
playwright_use-0.1.6.tar.gz 20.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for playwright-use 0.1.6
File Interpreter ABI Platform
playwright_use-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 41.6 kB

Release files / playwright_use-0.1.6.tar.gz

Download URL playwright_use-0.1.6.tar.gz
Size 20.2 kB
Tags Source
SHA-256 checksum
How to use checksums
469ff81679620ac6832b0f8ed5de9c1c07c93bf16a7cd6ea39f94603ded1dccb
BLAKE2b-256 checksum
How to use checksums
ffa427f5cb0e2a78fe3a6ec910c623af604aa09c505f66c1c24c008ff2ad60bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.2

Release files / playwright_use-0.1.6-py3-none-any.whl

Download URL playwright_use-0.1.6-py3-none-any.whl
Size 21.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8477c57a82c8feeaf027d7a809817119744708204ecb4b17fd1ad9f8be839896
BLAKE2b-256 checksum
How to use checksums
74e2349ac8ac8877e3c2c3e49ab156110c91ba1b266038d08ddc148191c608d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.2

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page