retry composer open in thread-muting to survive swallowed taps

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Samuel Newman
2026-07-19 18:49:15 +03:00
parent b8353732ee
commit f941064f7c
+33 -18
View File
@@ -87,15 +87,24 @@ appId: xyz.blueskyweb.app
# (feedItem-by-alice.test) rather than relying on which replyBtn Maestro picks # (feedItem-by-alice.test) rather than relying on which replyBtn Maestro picks
# first. This keeps both reply taps deterministic regardless of list order or # first. This keeps both reply taps deterministic regardless of list order or
# how many posts have rendered. # how many posts have rendered.
- tapOn: #
id: "replyBtn" # Even with the close-gating below, the replyBtn tap can land on a recycled list
childOf: # row while the author feed re-renders after a publish, and be swallowed so the
id: "feedItem-by-alice.test" # composer never opens. Wrapping the tap + open-wait in retry makes opening the
# Wait for the composer to fully open before typing. # composer idempotent: a swallowed tap just re-taps until the publish button
- extendedWaitUntil: # appears. A first-try success does not retry.
visible: - retry:
id: "composerPublishBtn" maxRetries: 3
timeout: 10000 commands:
- tapOn:
id: "replyBtn"
childOf:
id: "feedItem-by-alice.test"
# Wait for the composer to fully open before typing.
- extendedWaitUntil:
visible:
id: "composerPublishBtn"
timeout: 10000
- inputText: "Reply 2" - inputText: "Reply 2"
- tapOn: - tapOn:
id: "composerPublishBtn" id: "composerPublishBtn"
@@ -115,15 +124,21 @@ appId: xyz.blueskyweb.app
id: "replyBtn" id: "replyBtn"
timeout: 10000 timeout: 10000
- waitForAnimationToEnd - waitForAnimationToEnd
- tapOn: # As with Reply 2: even after gating on the composer close, this tap can hit a
id: "replyBtn" # recycled row during the post-publish feed re-render and be swallowed, so wrap
childOf: # the open in retry to make it idempotent.
id: "feedItem-by-alice.test" - retry:
# Wait for the composer to fully open before typing. maxRetries: 3
- extendedWaitUntil: commands:
visible: - tapOn:
id: "composerPublishBtn" id: "replyBtn"
timeout: 10000 childOf:
id: "feedItem-by-alice.test"
# Wait for the composer to fully open before typing.
- extendedWaitUntil:
visible:
id: "composerPublishBtn"
timeout: 10000
- inputText: "Reply 3" - inputText: "Reply 3"
- tapOn: - tapOn:
id: "composerPublishBtn" id: "composerPublishBtn"