invisible_playwright/tests
feder-cr 589c848e07 fix: every mouse action failed on FF150 — jugglerSendMouseEvent was never landed (#9)
The Juggler JS in upstream Playwright calls win.windowUtils.jugglerSendMouseEvent
at four sites, but when the Juggler was ported FF146 -> FF150 the matching C++
patch to nsIDOMWindowUtils.idl + nsDOMWindowUtils.cpp was dropped. Result: every
page.mouse.*, page.click(selector), locator.click(), page.hover(), mouse.wheel()
threw "win.windowUtils.jugglerSendMouseEvent is not a function" on first call.

The fix is shipped in the patched Firefox source (feder-cr/firefox-stealth):
six call sites in juggler/protocol/PageHandler.js and juggler/content/PageAgent.js
were swapped to win.synthesizeMouseEvent — a Mozilla chrome-scope helper that is
already present in FF150. scrollRectIntoViewIfNeeded was also guarded at the two
PageHandler.js sites where it was called unconditionally on the FF150
_linkedBrowser, which no longer exposes that method.

This invisible_playwright release adds the regression suite in tests/test_mouse.py
(12 cases inspired by microsoft/playwright-python/tests/async/test_click.py),
the CHANGELOG, and the version bump. The patched Firefox archive on GitHub
Releases must be refreshed before users actually receive the fix; the
BINARY_VERSION bump to firefox-2 will land with that asset.

Reporter: @trob9 (issue #9) — provided ready-to-apply JS patches, 4-line minimal
repro, and confirmed reCAPTCHA v3 = 0.90 holds after the swap.
2026-05-18 14:45:01 -07:00
..
conftest.py test: add pytest markers, conftest, fix Windows-incompatible existing tests 2026-05-14 11:21:10 +02:00
test_async_api.py test(launcher, headless, async_api): add 32 Phase 10 gap-coverage tests 2026-05-14 12:59:47 +02:00
test_build.py tests: add wheel regression — fail if wheel has duplicate zip entries 2026-05-16 10:39:40 -07:00
test_cli.py tests: add/update tests/test_cli.py 2026-05-15 20:02:00 -07:00
test_constants.py test: add pytest markers, conftest, fix Windows-incompatible existing tests 2026-05-14 11:21:10 +02:00
test_download.py test(download): add 4 Linux tar.gz download tests for Phase 7 2026-05-14 13:40:42 +02:00
test_e2e.py test(e2e): add 4 Linux launcher-routing tests for Phase 9 2026-05-14 14:07:03 +02:00
test_fpforge.py tests: add/update tests/test_fpforge.py 2026-05-15 20:01:55 -07:00
test_headless.py test(prefs, headless): add 16 Linux-specific tests for Phase 6 + 10 2026-05-14 13:21:17 +02:00
test_imports.py tests: add/update tests/test_imports.py 2026-05-15 20:01:53 -07:00
test_integration.py test(integration): add 3 Linux pipeline tests for Phase 8 2026-05-14 13:53:24 +02:00
test_launcher_config.py tests: add/update tests/test_launcher_config.py 2026-05-15 20:01:58 -07:00
test_launcher_helpers.py test(launcher, headless, async_api): add 32 Phase 10 gap-coverage tests 2026-05-14 12:59:47 +02:00
test_mouse.py fix: every mouse action failed on FF150 — jugglerSendMouseEvent was never landed (#9) 2026-05-18 14:45:01 -07:00
test_network.py test(network): add 25 unit tests for Bayesian network primitives 2026-05-14 11:24:57 +02:00
test_pin.py tests: add/update tests/test_pin.py 2026-05-15 20:01:56 -07:00
test_prefs.py Merge pull request #2 from christianbaumann/main 2026-05-16 17:14:08 -07:00
test_profile.py test(profile): add 43 unit tests for Profile dataclass and pin system 2026-05-14 11:46:09 +02:00
test_proxy.py tests: add/update tests/test_proxy.py 2026-05-15 20:01:54 -07:00
test_sampler.py test(sampler): add 55 unit tests for fingerprint Bayesian sampler 2026-05-14 11:35:24 +02:00