appium-espresso-driver
Version:
Espresso integration for Appium
68 lines (65 loc) • 2.62 kB
text/typescript
import type {EspressoDriver} from '../driver.js';
import {errors} from 'appium/driver.js';
import {qualifyActivityName} from '../utils/index.js';
/**
* Starts the given activity with intent options, activity options and locale.
* Activity could only be executed in scope of the current app package.
*
* @param appActivity - The activity name to start
* @param locale - Optional locale string (e.g., 'en_US', 'fr_FR')
* @param optionalIntentArguments - Optional intent arguments as a string
* @param optionalActivityArguments - Optional activity arguments as a string
* @returns Promise that resolves to a string when the activity is started
*/
export async function mobileStartActivity(
this: EspressoDriver,
appActivity: string,
locale?: string,
optionalIntentArguments?: string,
optionalActivityArguments?: string,
): Promise<string> {
const appPackage = this.caps.appPackage;
return (await this.espresso.jwproxy.command(`/appium/device/start_activity`, 'POST', {
appPackage,
appActivity,
locale,
optionalIntentArguments,
optionalActivityArguments,
})) as string;
}
/**
* Starts an activity with the given package and activity names.
* Waits for the activity to be ready before returning.
*
* @param appPackage - The package name of the app to start
* @param appActivity - The activity name to start
* @param appWaitPackage - Optional package name to wait for (defaults to appPackage)
* @param appWaitActivity - Optional activity name to wait for (defaults to appActivity)
* @returns Promise that resolves when the activity is started and ready
*/
export async function startActivity(
this: EspressoDriver,
appPackage?: string,
appActivity?: string,
appWaitPackage?: string,
appWaitActivity?: string,
): Promise<void> {
// intentAction, intentCategory, intentFlags, optionalIntentArguments, dontStopAppOnReset
// parameters are not supported by Espresso
const pkg = appPackage || this.caps.appPackage;
if (!pkg) {
throw new errors.InvalidArgumentError('appPackage is required');
}
const appWaitPkg = appWaitPackage || pkg;
if (!appActivity) {
throw new errors.InvalidArgumentError('appActivity is required');
}
const appAct = qualifyActivityName(appActivity, pkg);
const appWaitAct = qualifyActivityName(appWaitActivity || appAct, appWaitPkg);
this.log.debug(`Starting activity '${appActivity}' for package '${appPackage}'`);
await this.espresso.jwproxy.command(`/appium/device/start_activity`, 'POST', {
appPackage: pkg,
appActivity: appAct,
});
await this.adb.waitForActivity(appWaitPkg, appWaitAct);
}