Istanbul 覆盖率收集 for Playwright Python,类似 @canyonjs/playwright
Project description
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 查看。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file canyonjs_playwright-0.1.2.tar.gz.
File metadata
- Download URL: canyonjs_playwright-0.1.2.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d753f5bbe1bcc0fa3c36749695a250212a54cf6914dd094763879c3e5c205fd
|
|
| MD5 |
752664b9b55d6054302aa614ac3146e5
|
|
| BLAKE2b-256 |
b61ee3f17179e52d94f530258073280075bbe9ee895aecb2b19dc406989e4cdf
|
Provenance
The following attestation bundles were made for canyonjs_playwright-0.1.2.tar.gz:
Publisher:
publish.yml on canyon-project/canyonjs-playwright-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
canyonjs_playwright-0.1.2.tar.gz -
Subject digest:
4d753f5bbe1bcc0fa3c36749695a250212a54cf6914dd094763879c3e5c205fd - Sigstore transparency entry: 1122737135
- Sigstore integration time:
-
Permalink:
canyon-project/canyonjs-playwright-python@ac7d25fe19d465685330797e79922de8ab02aeeb -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/canyon-project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ac7d25fe19d465685330797e79922de8ab02aeeb -
Trigger Event:
release
-
Statement type:
File details
Details for the file canyonjs_playwright-0.1.2-py3-none-any.whl.
File metadata
- Download URL: canyonjs_playwright-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c67c9ae18048ee0b5677c09a462b9b25b04deb41d2388befc32301cf1e5a653
|
|
| MD5 |
8af011961f215a0ec49a99b7c220887e
|
|
| BLAKE2b-256 |
ecbf158a7ae15005169c59387ab56fbb74b5f202ee61fa2e17017de43cab9800
|
Provenance
The following attestation bundles were made for canyonjs_playwright-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on canyon-project/canyonjs-playwright-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
canyonjs_playwright-0.1.2-py3-none-any.whl -
Subject digest:
6c67c9ae18048ee0b5677c09a462b9b25b04deb41d2388befc32301cf1e5a653 - Sigstore transparency entry: 1122737138
- Sigstore integration time:
-
Permalink:
canyon-project/canyonjs-playwright-python@ac7d25fe19d465685330797e79922de8ab02aeeb -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/canyon-project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ac7d25fe19d465685330797e79922de8ab02aeeb -
Trigger Event:
release
-
Statement type: