From fdab96c27afe40bcd5432ed110ffc6353aee4686 Mon Sep 17 00:00:00 2001 From: Dennis Khylkouski <161797777+dennisimoo@users.noreply.github.com> Date: Sat, 12 Sep 2026 07:37:27 +0000 Subject: [PATCH] fix(aws): defer Android app launch until open --- .../provider-webdriver/src/aws-device-farm.test.ts | 12 ++++++++++++ packages/provider-webdriver/src/aws-device-farm.ts | 10 +++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/provider-webdriver/src/aws-device-farm.test.ts b/packages/provider-webdriver/src/aws-device-farm.test.ts index 89a83e6f9c..7c3bfda634 100644 --- a/packages/provider-webdriver/src/aws-device-farm.test.ts +++ b/packages/provider-webdriver/src/aws-device-farm.test.ts @@ -126,6 +126,18 @@ test('a session that reaches RUNNING is handed on and not stopped', async () => assert.deepEqual(client.stopped, []); }); +test('an Android session defers app launch until the open command', async () => { + const client = fakeClient({ + status: 'RUNNING', + endpoints: { appium: 'https://appium.example/wd/hub' }, + }); + const prepare = createAwsDeviceFarmPrepareSession(baseOptions(client)); + + const prepared = await prepare({ lease: makeLease(), base: baseSession() }); + + assert.equal(prepared.webdriverCapabilities['appium:autoLaunch'], false); +}); + function fakeClient( session: Partial, onPoll?: () => void, diff --git a/packages/provider-webdriver/src/aws-device-farm.ts b/packages/provider-webdriver/src/aws-device-farm.ts index 02f35f7ff2..e7cbfeda10 100644 --- a/packages/provider-webdriver/src/aws-device-farm.ts +++ b/packages/provider-webdriver/src/aws-device-farm.ts @@ -239,16 +239,16 @@ export function createAwsDeviceFarmPrepareSession( typeof options.webdriverCapabilities === 'function' ? options.webdriverCapabilities(lease) : (options.webdriverCapabilities ?? {}); + const awsDefaults = options.platform === 'android' ? { 'appium:autoLaunch': false } : {}; return { ...base, endpoint, platform: options.platform, deviceName, - webdriverCapabilities: buildCloudWebDriverBaseCapabilities( - options.platform, - deviceName, - configured, - ), + webdriverCapabilities: buildCloudWebDriverBaseCapabilities(options.platform, deviceName, { + ...awsDefaults, + ...configured, + }), cleanup: async () => { await options.client.stopRemoteAccessSession(running.arn); return { awsDeviceFarmSessionArn: running.arn };