From 44afe950b32590f8e90148b1ce4124498aaa2d11 Mon Sep 17 00:00:00 2001 From: feder-cr <85809106+feder-cr@users.noreply.github.com> Date: Fri, 24 Jul 2026 14:13:26 +0200 Subject: [PATCH] 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. --- CHANGELOG.md | 2 +- pyproject.toml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f08eb46..eaf0258 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. diff --git a/pyproject.toml b/pyproject.toml index c2149cb..5ebb73c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 = [