src/cli.ts (appiumEndpoint / ensureAppium / startAppiumProcess): default path /wd/hub means a user-started plain appium (base path /) fails the reachability probe, so the CLI spawns a second appium on the same port; the child dies with EADDRINUSE but has no 'exit'/'error' listener, so the CLI polls 30s and reports a misleading 'Appium did not become reachable'. Also the spawn at ~:1031 has no 'error' handler: with autoInstallDrivers:false and no appium on PATH, ENOENT becomes an uncaught exception. Suggested: probe both / and /wd/hub (or detect EADDRINUSE via an exit listener and say 'an Appium is already on this port with a different base path'), and add an 'error' handler mirroring ensureAppiumDriver's. Found during adversarial review (2026-07-02).
src/cli.ts (appiumEndpoint / ensureAppium / startAppiumProcess): default path /wd/hub means a user-started plain
appium(base path /) fails the reachability probe, so the CLI spawns a second appium on the same port; the child dies with EADDRINUSE but has no 'exit'/'error' listener, so the CLI polls 30s and reports a misleading 'Appium did not become reachable'. Also the spawn at ~:1031 has no 'error' handler: with autoInstallDrivers:false and no appium on PATH, ENOENT becomes an uncaught exception. Suggested: probe both / and /wd/hub (or detect EADDRINUSE via an exit listener and say 'an Appium is already on this port with a different base path'), and add an 'error' handler mirroring ensureAppiumDriver's. Found during adversarial review (2026-07-02).