Repository navigation
v1.1.4
Fixes
-
Desktop browser sessions work again. Bundles
@testingbot/automation-mcp0.1.8. 0.1.7 sent the legacy JSON-Wireplatformcapability alongside the W3CplatformName, and thewebdriverclient rejects any top-level capability that is neither standard W3C nor colon-namespaced as soon as an extension capability (tb:options) is present. Every desktop session failed client-side withInvalid or unsupported WebDriver capabilities found ("platform")before a request reached the hub. Mobile sessions were unaffected, which is why the failure looked like "desktop is broken, mobile works". See testingbot/automation-mcp#4.Note on who was actually affected: the dependency range
^0.1.7already admitted 0.1.8, so a freshnpm install @testingbot/mcp-serverpicked up the fix on its own. The.mcpbbundle did not —build-mcpb.shrunsnpm ci --omit=dev, which installs exactly what the lockfile pins. This release refreshes that pin, which is the substance of the change. -
screenResolutionis applied again. TestingBot reads the kebab-casescreen-resolutionkey insidetb:options; the camelCase spelling was dropped silently and desktop VMs stayed at the 1280x1024 default. -
tb_navigateno longer returns on a half-built DOM. NewwaitUntil(load/domcontentloaded/none) andtimeoutMsparameters confirmdocument.readyStatedirectly instead of trusting the session'spageLoadStrategy, which on pages with slow third-party resources returned early. A timeout warns rather than failing the call, since the navigation itself succeeded. -
tb_listSessionsno longer points at a tool that doesn't exist. Its description referencedtb_appiumEndpoint, which was never registered; it now points atappium_session_management(action: 'list'), which actually owns mobile sessions.
Breaking
- Node 20 is now the minimum (was 18).
engines.node,preflight(), and the README all claimed 18, but the bundled@testingbot/automation-mcphard-fails its own preflight below 20 — so a Node 18 install succeeded and then died at startup with an error pointing at the dependency rather than the runtime. Node 18 has been end-of-life since April 2025. Anyone affected was already non-functional; they now get an accurate error at the right layer, and npm warns at install time.
Security
-
Secret-bearing tool arguments are redacted in logs. The CallTool handler logs
{ tool, args }wholesale, andargs.text—tb_type's payload, i.e. whatever gets typed into a login form — was not covered. Now redacted along withargs.capabilities,args.remoteServerUrl, and generic*.secret/*.token/*.accessKey. Only reachable under debug or dev logging, as the default level iserror. -
Credentials no longer reach the
appium-mcpchild. The env filter strippedTESTINGBOT_KEY/TESTINGBOT_SECRET/TB_KEY/TB_SECRETbut notTESTINGBOT_USERNAME/TESTINGBOT_ACCESS_KEY, whichgetConfig()also accepts. Anyone configured via those names passed them into the child process, contradicting the design that the child receives credentials only baked into the injected hub URL.
Internal
SessionManagersurvivescloseAll()— the shutdown flag latched on permanently, leaving the manager dead to all later registrations. Relevant here becauseserver-factory.tscallsaddAutomationToolsa second time on reconnect.- Locator fixes upstream: ids starting with a digit get CSS's hex escape,
by: "class"with multiple classes builds a compound selector, and"+"is pressable.
Full changelog: v1.1.3...v1.1.4