From 17f873abc85d05f1e4b1088b2bc1bbe0ab8e835f Mon Sep 17 00:00:00 2001 From: Jake Writer Date: Sat, 29 Aug 2026 12:14:21 -0600 Subject: [PATCH] build(deps): raise the playwright cap to <1.63 instead of removing it The cherry-picked #742 replaced `playwright = "<1.61"` with `"*"`. The breakage it fixes is real, but an unbounded range removes the tripwire rather than making the browser forward-compatible: `camoufox.server` imports `playwright._impl._driver.compute_driver_executable`, a private API with no compat guarantee, and `additions/juggler` is a fork of one Playwright vintage that every minor release is free to break again -- 1.61 sending `viewport.isMobile` is exactly that, and it will recur. So the cap moves up rather than away, to the tested-current 1.62.0. No lower bound is added: this package has never carried one, and the launch path was exercised against 1.53.0 as well as the 1.62.0 the Playwright suite runs on. build-tester/requirements.txt mirrors this pin by its own comment, so it moves with it. --- build-tester/requirements.txt | 8 ++++---- pythonlib/pyproject.toml | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/build-tester/requirements.txt b/build-tester/requirements.txt index fd65b45..ac1d734 100644 --- a/build-tester/requirements.txt +++ b/build-tester/requirements.txt @@ -1,5 +1,5 @@ cloverlabs-camoufox -# 1.61 sends viewport.isMobile in Browser.setDefaultViewport, which this -# juggler's protocol schema rejects -- every context creation fails. Matches the -# cap in pythonlib/pyproject.toml. -playwright<1.61 +# 1.61 sent viewport.isMobile in Browser.setDefaultViewport, which this +# juggler's protocol schema rejected; the schema now accepts it, so the cap +# moves up rather than away. Matches the cap in pythonlib/pyproject.toml. +playwright<1.63 diff --git a/pythonlib/pyproject.toml b/pythonlib/pyproject.toml index 6ed013f..cf3af3f 100644 --- a/pythonlib/pyproject.toml +++ b/pythonlib/pyproject.toml @@ -33,7 +33,12 @@ rich = "*" requests = "*" orjson = "*" browserforge = "^1.2.4" -playwright = "*" +# Keep a ceiling. 1.61 added Juggler params the protocol schema had to learn +# (viewport isMobile/screenSize, webp screenshots, webSocketFrame timestamps) +# and every Playwright minor is free to change Juggler again, while +# camoufox.server imports playwright._impl._driver -- a private API with no +# compat guarantee. Bump deliberately, with a run of `make tests`. +playwright = "<1.63" pyyaml = "*" platformdirs = "*" numpy = "*"