canyonjs-playwright-python
@canyonjs/playwright 的 Python 实现,为 Playwright Python 提供 Istanbul 覆盖率收集能力。
安装
pip install canyonjs-playwright
或从源码安装(开发模式):
pip install -e .
用法
方式一:pytest_plugins(推荐,类似 baseTest.ts)
在 conftest.py 中添加一行即可自动启用,所有使用 page 的测试都会自动收集覆盖率:
# conftest.py
pytest_plugins = ["canyonjs_playwright.pytest_plugin"]
测试用例无需修改,直接使用 page:
def test_example(page):
page.goto("https://example.com")
assert "Example" in page.title()
方式二:自定义输出目录
# conftest.py
import os
os.environ["CANYON_OUTPUT_DIR"] = ".canyon_output"
pytest_plugins = ["canyonjs_playwright.pytest_plugin"]
方式三:手动使用 fixture
# conftest.py
from canyonjs_playwright import create_coverage_context_fixture
coverage_context = create_coverage_context_fixture(output_dir=".canyon_output")
# test_example.py
def test_example(page, coverage_context):
page.goto("https://example.com")
运行步骤
1. 创建虚拟环境(推荐)
python3 -m venv venv
source venv/bin/activate # macOS/Linux
# Windows: venv\Scripts\activate
2. 安装依赖
python -m pip install -r requirements.txt
3. 安装 Chromium 浏览器
python -m playwright install chromium
4. 运行测试
python -m pytest
可选参数
| 参数 | 说明 |
|---|---|
--headed |
有界面模式运行(显示浏览器窗口) |
-v |
详细输出 |
--tracing=retain-on-failure |
失败时保留 trace 便于调试 |
项目结构
canyonjs-playwright-python/
├── src/
│ └── canyonjs_playwright/ # 包源码
│ ├── __init__.py
│ ├── fixtures.py
│ └── pytest_plugin.py
├── tests/
│ ├── conftest.py
│ ├── test_baidu.py
│ └── test_canyon.py
├── pyproject.toml
├── requirements.txt
├── pytest.ini
└── .github/workflows/
└── playwright.yml
输出
覆盖率数据写入 coverage-{timestamp}.json,默认目录为 .canyon_output。
注意:仅当被测页面有 Istanbul 注入的
window.__coverage__时才会生成覆盖率文件。
依赖
- Python >= 3.8
- playwright >= 1.40.0
- pytest-playwright >= 0.4.0
CI
推送到 GitHub 后,GitHub Actions 会自动运行测试。失败时可在 Actions 页面下载 trace 文件,在 trace.playwright.dev 查看。
Metadata
Release files for canyonjs-playwright 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| canyonjs_playwright-0.1.2.tar.gz | 3.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| canyonjs_playwright-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.5 kB
Release files / canyonjs_playwright-0.1.2.tar.gz
| Download URL | canyonjs_playwright-0.1.2.tar.gz |
|---|---|
| Size | 3.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4d753f5bbe1bcc0fa3c36749695a250212a54cf6914dd094763879c3e5c205fd
|
|
BLAKE2b-256 checksum How to use checksums |
b61ee3f17179e52d94f530258073280075bbe9ee895aecb2b19dc406989e4cdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 18, 2026.
Transparency logRelease files / canyonjs_playwright-0.1.2-py3-none-any.whl
| Download URL | canyonjs_playwright-0.1.2-py3-none-any.whl |
|---|---|
| Size | 4.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6c67c9ae18048ee0b5677c09a462b9b25b04deb41d2388befc32301cf1e5a653
|
|
BLAKE2b-256 checksum How to use checksums |
ecbf158a7ae15005169c59387ab56fbb74b5f202ee61fa2e17017de43cab9800
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 18, 2026.
Transparency log