diff --git a/app/common/renderer/actions/SessionBuilder.js b/app/common/renderer/actions/SessionBuilder.js index 4e1d8b9205..544d6ad218 100644 --- a/app/common/renderer/actions/SessionBuilder.js +++ b/app/common/renderer/actions/SessionBuilder.js @@ -812,7 +812,13 @@ async function fetchAllSessions(baseUrl, headers) { async function fetchSessionsFromEndpoint(url) { try { const res = await fetchSessionInformation({url, headers}); - return url === seleniumSessionsEndpoint ? formatSeleniumGridSessions(res) : (res.value ?? []); + const value = url === seleniumSessionsEndpoint + ? formatSeleniumGridSessions(res) + : (res.value ?? []); + // Some Appium servers return `{value: {error: "unknown command", ...}}` from these + // endpoints — a non-iterable object — which used to throw on the spread below and + // silently empty the session list. Treat any non-array as "no sessions". + return Array.isArray(value) ? value : []; } catch { return []; } diff --git a/app/common/renderer/components/SessionInspector/Header/HeaderButtons.jsx b/app/common/renderer/components/SessionInspector/Header/HeaderButtons.jsx index 87b2fd5a2b..ea76c2a521 100644 --- a/app/common/renderer/components/SessionInspector/Header/HeaderButtons.jsx +++ b/app/common/renderer/components/SessionInspector/Header/HeaderButtons.jsx @@ -316,7 +316,13 @@ const HeaderButtons = (props) => { )} -