Apply force=True to Connect/More clicks to bypass interop-outlet pointer interception#848
Open
ds-amrit wants to merge 1 commit into
Open
Apply force=True to Connect/More clicks to bypass interop-outlet pointer interception#848ds-amrit wants to merge 1 commit into
ds-amrit wants to merge 1 commit into
Conversation
LinkedIn's profile page renders an `interop-outlet` overlay that intercepts pointer events on top of the More button and Connect menu items. Playwright's default click action refuses to proceed when an intercepting element is detected, so connection requests fail with a 30s TargetClosedError after 54+ retry attempts. The maintainer already uses `force=True` for the final "Send now" click in `_click_without_note`. Apply the same approach to the three earlier clicks in the flow: - direct.first.click() in _connect_direct - more.first.click() in _connect_via_more - connect_option.first.click() in _connect_via_more This unblocks connection requests for self-hosted users on Apple Silicon (Colima + Rosetta) where the issue was first reproduced. Co-authored-by: Cursor <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three
.click()calls inlinkedin/actions/connect.pyare blocked by LinkedIn'sinterop-outletoverlay element, which intercepts pointer events on top of the More button and Connect menu items. Playwright's default click action refuses to proceed when an intercepting element is detected, so the connect flow fails with a 30sTargetClosedErrorafter 54+ retry attempts.This PR mirrors the existing
force=Truepattern already used onsend_btn.first.click(force=True)in_click_without_noteand applies it to the three earlier clicks that lacked it.Reproduction
ghcr.io/eracle/openoutreach:latestas of 2026-05-24, pinned digestsha256:3f3d4f2b…).READY_TO_CONNECT, the connect task fails with the traceback below and the same task gets re-queued indefinitely.The locator resolves correctly (the right button is found and is visible/enabled/stable). It's the overlay's pointer interception that aborts the click. First reproduced on macOS Apple Silicon under Colima + Rosetta, but the issue is specific to LinkedIn's current rendering, not the host platform — anyone running the latest LinkedIn UI will hit it.
Fix
Add
force=Trueto:direct.first.click()in_connect_directmore.first.click()in_connect_via_moreconnect_option.first.click()in_connect_via_moreThe fourth click in this flow (
send_btn.first.click(force=True)in_click_without_note) already uses the same pattern — this PR makes the rest consistent.Why
force=Trueis safe herePlaywright's pre-click checks already verify the locator resolved to the correct, visible, enabled, and stable element (per the call log). The only check
force=Trueskips is the "is anything intercepting?" actionability check. Since the intercepting element is a transparent overlay (interop-outlet) sitting above an explicitly resolved button, clicking through it lands on the intended target.Test plan
ghcr.io/eracle/openoutreach:latestagainst current LinkedIn UI (June 2026): without the patch, ~10 connect tasks fail in a row; with the patch, ~14 connection requests went out successfully across two sessions.force=Truesite (_click_without_note).