deps: lower the Playwright floor to 1.40, bump 0.3.4

The >=1.55 floor was never a real compatibility bound - it was just the single
minor pinned when 0.3.1 tightened the range. The firefox-18 binary was smoke
tested (launch, new_context, navigate, evaluate, click) against 1.40, 1.45, 1.50
and 1.54 and passed on all four, so the floor drops back to 1.40 and anyone on an
older client keeps working. Upper cap stays at the tested 1.61.0.
This commit is contained in:
feder-cr 2026-07-24 14:13:26 +02:00
parent 06815c9afb
commit 44afe950b3
2 changed files with 4 additions and 4 deletions

View file

@ -7,7 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
## [Unreleased]
### Changed
- Playwright pin moved to `>=1.55,<=1.61.0` (was `>=1.55,<1.56`). The `firefox-18` binary rebases onto Firefox 151, which is what the latest Playwright (1.61) pairs with, so 1.61 now drives the binary natively - no more pinning to an older client. Both ends of the range were tested against the new binary (full browser suite on 1.61; drift-free protocol on 1.55). The upper bound is capped at the exact latest tested version (1.61.0) rather than an open `<1.62`, so a Playwright release we have not validated against this binary cannot be pulled in and break a fresh install; the cap moves forward deliberately, once a new version is tested. `scripts/playwright_pin.txt` -> 1.61.0.
- Playwright pin is now `>=1.40,<=1.61.0` (was `>=1.55,<1.56`). The `firefox-18` binary rebases onto Firefox 151, which is what the latest Playwright (1.61) pairs with, so 1.61 now drives the binary natively - no more pinning to an older client. The range is bounded by real tests against the shipped binary, not guesses: the upper bound is the exact latest tested version (1.61.0), capped rather than left open (`<1.62`) so a Playwright we have not validated cannot be pulled in and break a fresh install; the floor is `1.40` because the binary was smoke-tested (launch, context, navigate, evaluate, click) and passed on 1.40, 1.45, 1.50 and 1.54, so anyone on an older client keeps working. Both bounds move forward on purpose, once a newer version is validated. `scripts/playwright_pin.txt` -> 1.61.0.
### Added
- `timezone="auto"`: the browser timezone is auto-derived from the egress IP. By default (no explicit timezone) it ALWAYS resolves — from the proxy egress when a proxy is set, otherwise from the host's own public IP — so the zone can never disagree with the IP (the classic `timezone_mismatch` signal). An explicit `"Area/City"` is the only way to force a specific zone. On failure: with a proxy the launch raises (no silent host-TZ fallback behind a foreign proxy); without a proxy it falls back to the host TZ so a transient lookup can't break the launch.

View file

@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "invisible-playwright"
version = "0.3.3"
version = "0.3.4"
description = "Playwright wrapper for a patched Firefox with deterministic stealth profile."
readme = "README.md"
requires-python = ">=3.11"
@ -27,11 +27,11 @@ dependencies = [
# Pinned to the Juggler client we actually test against (scripts/playwright_pin.txt,
# 1.55.x). Playwright 1.61 added an isMobile field to Browser.setDefaultViewport that
# the FF150 Juggler does not accept, which breaks the session (issue #48).
"playwright>=1.55,<=1.61.0",
"playwright>=1.40,<=1.61.0",
]
[project.optional-dependencies]
dev = ["pytest>=7", "pytest-mock>=3", "responses>=0.24", "build>=1", "pytest-rerunfailures>=14", "playwright>=1.55,<=1.61.0"]
dev = ["pytest>=7", "pytest-mock>=3", "responses>=0.24", "build>=1", "pytest-rerunfailures>=14", "playwright>=1.40,<=1.61.0"]
[tool.pytest.ini_options]
markers = [