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.jsonevents.logtrace.zip,*.webmstep_*.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 optionalvars: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.
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| playwright_use-0.1.6.tar.gz | 20.2 kB | Without provenance | Details for playwright_use-0.1.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| playwright_use-0.1.6-py3-none-any.whl | Python 3 | none | any | Details for playwright_use-0.1.6-py3-none-any.whl |
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
|
Security for playwright-use 0.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.