mirror of
https://github.com/feder-cr/invisible_playwright.git
synced 2026-06-07 08:35:12 +02:00
The companion Firefox source-fork repo was renamed today from feder-cr/invisible-firefox to feder-cr/invisible_firefox so the two canonical project repos share the same underscore naming (invisible_playwright + invisible_firefox). GitHub redirects clones of the old URL transparently, so anyone with an existing clone keeps working without changes. New clones go through the underscore URL directly. This commit updates all in-repo references (README, CHANGELOG, CONTRIBUTING, SECURITY, ISSUE_TEMPLATE/config.yml) to the new name. No code, no version bump, no behavior change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
79 lines
3.1 KiB
Markdown
79 lines
3.1 KiB
Markdown
# Contributing to invisible_playwright
|
|
|
|
Thanks for your interest in improving this project. Contributions are welcome via issues and pull requests.
|
|
|
|
## Quick links
|
|
|
|
- **Bug?** Open a [bug report](https://github.com/feder-cr/invisible_playwright/issues/new?template=bug_report.yml).
|
|
- **Idea?** Open a [feature request](https://github.com/feder-cr/invisible_playwright/issues/new?template=feature_request.yml).
|
|
- **Security issue?** Do **not** open a public issue — see [SECURITY.md](SECURITY.md).
|
|
- **The C++ patches** live in the companion repo [feder-cr/invisible_firefox](https://github.com/feder-cr/invisible_firefox) (branch `stealth/150`). Bugs in fingerprint spoofing usually belong there.
|
|
|
|
## Scope
|
|
|
|
This repository ships the **Python wrapper** (`invisible_playwright`) around a pre-built patched Firefox. In scope:
|
|
|
|
- The `InvisiblePlaywright` sync/async API and launcher
|
|
- The fingerprint sampler (`_fpforge`)
|
|
- Binary download/caching, CLI, proxy plumbing
|
|
- Tests, docs, examples, packaging
|
|
|
|
Out of scope (belongs in `invisible_firefox`):
|
|
|
|
- Changes to the Firefox C++ source
|
|
- New preferences exposed by the patched binary
|
|
- Canvas / WebGL / WebRTC / font spoofing logic
|
|
|
|
## Development setup
|
|
|
|
```bash
|
|
git clone https://github.com/feder-cr/invisible_playwright.git
|
|
cd invisible_playwright
|
|
python -m venv .venv
|
|
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
|
pip install -e ".[dev]"
|
|
python -m invisible_playwright fetch # download the patched Firefox binary
|
|
```
|
|
|
|
Requires Python 3.11+ and one of: Windows x86_64, Linux x86_64.
|
|
|
|
## Running tests
|
|
|
|
```bash
|
|
pytest # unit + integration (default — fast)
|
|
pytest -m e2e # end-to-end, requires the patched binary
|
|
pytest -m slow # wheel-build regression tests
|
|
```
|
|
|
|
Markers are defined in `pyproject.toml`. The default run excludes `slow` and `e2e`.
|
|
|
|
## Pull requests
|
|
|
|
1. Fork and create a topic branch (`fix/...`, `feat/...`, `docs/...`).
|
|
2. Keep PRs focused — one logical change per PR.
|
|
3. Add or update tests for any behavior change.
|
|
4. Make sure the default `pytest` run is green.
|
|
5. Follow [Conventional Commits](https://www.conventionalcommits.org/) for commit messages (e.g. `fix(launcher): handle missing profile dir`).
|
|
6. Update `README.md` or `docs/` when changing user-visible behavior.
|
|
7. Open the PR against `main`, fill in the PR template, and link any related issue.
|
|
|
|
CI must be green before merge.
|
|
|
|
## Reporting bugs
|
|
|
|
Before opening, please:
|
|
|
|
- Search [existing issues](https://github.com/feder-cr/invisible_playwright/issues) — the bug may already be tracked.
|
|
- Reproduce on the **latest release** if possible.
|
|
- Confirm the issue is in the Python wrapper, not the patched Firefox itself. If a fingerprint is leaking or a detector flags the browser, open the issue at `feder-cr/invisible_firefox` instead.
|
|
|
|
Include:
|
|
|
|
- OS and version, Python version, `invisible_playwright` version (`invisible_playwright version`)
|
|
- A minimal reproduction
|
|
- Expected vs actual behavior
|
|
- Relevant logs / stack traces
|
|
|
|
## License
|
|
|
|
By contributing, you agree that your contributions will be licensed under the MIT License (see [LICENSE](LICENSE)).
|