diff --git a/packages/provider-webdriver/src/aws-device-farm.test.ts b/packages/provider-webdriver/src/aws-device-farm.test.ts index 89a83e6f9..7c3bfda63 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 02f35f7ff..e7cbfeda1 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 };