UNPKG

appium-espresso-driver

Version:
68 lines (65 loc) 2.62 kB
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); }