You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
commands.click now falls back to a JavaScript click when the Actions API can't reach the element. Hidden elements have a zero-size bounding box, so the Actions API click that became the default in #2381 silently moved the pointer to (0,0) and clicked nothing instead of triggering the handler. The click command now pre-checks isDisplayed() and uses a JS click when the element isn't displayed, and otherwise catches any Actions API failure and retries with a JS click. Each fallback is logged at info level so it's visible without --verbose. Restores the documented "hide everything before clicking" pattern used by visual-metric scripts #2452.
engineDelegate.afterBrowserStopped() is no longer called twice per iteration on the happy path. #2432 added a safety-net cleanup call in the iteration finally block so failure paths still release long-lived helpers, but in the happy path _stopBrowser had already invoked the cleanup, so it ran twice. The visible symptom on Chrome was a spurious ENOENT error from the second cleanUserDataDir (the first call had already removed the directory). It could also double-terminate the iOS simulator's Safari and the ios-capture server. The safety-net now runs only when _stopBrowser didn't already reach the cleanup #2453.
cleanUserDataDir cleanup now uses rm(..., { recursive: true, force: true }) so a missing directory is treated as already-cleaned. Defense in depth alongside #2453: if anything in the future double-calls the Chrome cleanup, or if Chrome failed to create the directory in the first place, the cleanup stays quiet instead of logging a spurious ENOENT#2454.