How to use adb.isAppInstalled method in Appium Android Driver

Best JavaScript code snippet using appium-android-driver

android-helpers.js

Source:android-helpers.js Github

copy

Full Screen

...247 let apkMd5 = await fs.md5(app);248 let remotePath = helpers.getRemoteApkPath(apkMd5, opts.androidInstallPath);249 let remoteApkExists = await adb.fileExists(remotePath);250 logger.debug("Checking if app is installed");251 let installed = await adb.isAppInstalled(appPackage);252 if (installed && remoteApkExists && fastReset) {253 logger.info("Apk is already on remote and installed, resetting");254 await helpers.resetApp(adb, app, appPackage, fastReset, androidInstallTimeout);255 } else if (!installed || (!remoteApkExists && fastReset)) {256 if (!installed) {257 logger.info("Apk is not yet installed");258 } else {259 logger.info("Apk was already installed but not from our remote path");260 }261 logger.info(`${installed ? 'Re' : ''}installing apk from remote`);262 await adb.mkdir(REMOTE_TEMP_PATH);263 logger.info("Clearing out any existing remote apks with the same hash");264 await helpers.removeRemoteApks(adb, [apkMd5]);265 if (!remoteApkExists) {266 // push from local to remote267 logger.info(`Pushing ${appPackage} to device. Will wait up to ${androidInstallTimeout} ` +268 `milliseconds before aborting`);269 await adb.push(app, remotePath, {timeout: androidInstallTimeout});270 }271 // Next, install from the remote path. This can be flakey. If it doesn't272 // work, clear out any cached apks, re-push from local, and try again273 await helpers.reinstallRemoteApk(adb, app, appPackage, remotePath, androidInstallTimeout);274 }275};276helpers.removeRemoteApks = async function (adb, exceptMd5s = null) {277 logger.debug("Removing any old apks");278 if (exceptMd5s) {279 logger.debug(`Except ${JSON.stringify(exceptMd5s)}`);280 } else {281 exceptMd5s = [];282 }283 let apks = await adb.ls(`${REMOTE_TEMP_PATH}/*.apk`);284 if (apks.length < 1) {285 logger.debug("No apks to examine");286 return;287 }288 apks = apks.filter((apk) => {289 for (let md5 of exceptMd5s) {290 return apk.indexOf(md5) === -1;291 }292 });293 for (let apk of apks) {294 logger.info(`Will remove ${apk}`);295 await adb.shell(['rm', '-f', apk]);296 }297};298helpers.initUnicodeKeyboard = async function (adb) {299 logger.debug('Enabling Unicode keyboard support');300 logger.debug("Pushing unicode ime to device...");301 if (!await adb.isAppInstalled('io.appium.android.ime')) {302 await adb.install(unicodeIMEPath, false);303 }304 // get the default IME so we can return back to it later if we want305 let defaultIME = await adb.defaultIME();306 logger.debug(`Unsetting previous IME ${defaultIME}`);307 const appiumIME = 'io.appium.android.ime/.UnicodeIME';308 logger.debug(`Setting IME to '${appiumIME}'`);309 await adb.enableIME(appiumIME);310 await adb.setIME(appiumIME);311 return defaultIME;312};313helpers.setMockLocationApp = async function (adb, app) {314 try {315 if (await adb.getApiLevel() < 23) {316 await adb.shell(['settings', 'put', 'secure', 'mock_location', '1']);317 } else {318 await adb.shell(['appops', 'set', app, 'android:mock_location', 'allow']);319 }320 } catch (err) {321 logger.warn(`Unable to set mock location for app '${app}': ${err.message}`);322 }323};324helpers.installHelperApp = async function (adb, apkPath, packageId, appName) {325 try {326 await adb.installOrUpgrade(apkPath, packageId);327 } catch (err) {328 logger.warn(`Ignored error while installing Appium ${appName} helper: ` +329 `'${err.message}'. Manually uninstalling the application ` +330 `with package id '${packageId}' may help. Expect some Appium ` +331 `features may not work as expected unless this problem is ` +332 `fixed.`);333 }334};335helpers.pushSettingsApp = async function (adb, throwError = false) {336 if (!(await adb.isAppInstalled(SETTINGS_HELPER_PKG_ID))) { // never update, added by shawn337 logger.debug("Pushing settings apk to device...");338 await helpers.installHelperApp(adb, settingsApkPath, SETTINGS_HELPER_PKG_ID, 'Settings');339 try {340 await adb.grantAllPermissions(SETTINGS_HELPER_PKG_ID);341 } catch (err) {342 // errors are expected there, since the app contains non-changeable permissons343 }344 }345 // lauch io.appium.settings app due to settings failing to be set346 // if the app is not launched prior to start the session on android 7+347 // see https://github.com/appium/appium/issues/8957348 try {349 if (!(await adb.processExists(SETTINGS_HELPER_PKG_ID))) {350 let startOpts = {351 pkg: SETTINGS_HELPER_PKG_ID,352 activity: SETTINGS_HELPER_PKG_ACTIVITY,353 action: "android.intent.action.MAIN",354 category: "android.intent.category.LAUNCHER",355 flags: "0x10200000",356 stopApp: false357 };358 await adb.startApp(startOpts);359 }360 } catch (err) {361 logger.warn(`Failed to launch settings app: ${err.message}`);362 if (throwError) {363 throw err;364 }365 }366};367helpers.pushUnlock = async function (adb) {368 if (!(await adb.isAppInstalled(SETTINGS_HELPER_PKG_ID))) { // never update, added by shawn369 logger.debug("Pushing unlock helper app to device...");370 await helpers.installHelperApp(adb, unlockApkPath, UNLOCK_HELPER_PKG_ID, 'Unlock');371 }372};373// pushStrings method extracts string.xml and converts it to string.json and pushes374// it to /data/local/tmp/string.json on for use of bootstrap375// if app is not present to extract string.xml it deletes remote strings.json376// if app does not have strings.xml we push an empty json object to remote377helpers.pushStrings = async function (language, adb, opts) {378 let remotePath = '/data/local/tmp';379 let stringsJson = 'strings.json';380 let stringsTmpDir = path.resolve(opts.tmpDir, opts.appPackage);381 try {382 logger.debug('Extracting strings from apk', opts.app, language, stringsTmpDir);...

Full Screen

Full Screen

adb-commands-e2e-specs.js

Source:adb-commands-e2e-specs.js Github

copy

Full Screen

...147 if (deviceApiLevel < 23) {148 //test should skip if the device API < 23149 this.skip();150 }151 let isInstalled = await adb.isAppInstalled('io.appium.android.apis');152 if (isInstalled) {153 await adb.uninstallApk('io.appium.android.apis');154 }155 });156 it('should install and grant all permission', async () => {157 let apiDemos = path.resolve(rootDir, 'test',158 'fixtures', 'ApiDemos-debug.apk');159 await adb.install(apiDemos);160 (await adb.isAppInstalled('io.appium.android.apis')).should.be.true;161 await adb.grantAllPermissions('io.appium.android.apis');162 let requestedPermissions = await adb.getReqPermissions('io.appium.android.apis');163 expect(await adb.getGrantedPermissions('io.appium.android.apis')).to.have.members(requestedPermissions);164 });165 it('should revoke permission', async () => {166 await adb.revokePermission('io.appium.android.apis', 'android.permission.RECEIVE_SMS');167 expect(await adb.getGrantedPermissions('io.appium.android.apis')).to.not.have.members(['android.permission.RECEIVE_SMS']);168 });169 it('should grant permission', async () => {170 await adb.grantPermission('io.appium.android.apis', 'android.permission.RECEIVE_SMS');171 expect(await adb.getGrantedPermissions('io.appium.android.apis')).to.include.members(['android.permission.RECEIVE_SMS']);172 });173 });174 describe('push file', function () {...

Full Screen

Full Screen

apk-utils-e2e-specs.js

Source:apk-utils-e2e-specs.js Github

copy

Full Screen

...21 before(async () => {22 adb = await ADB.createADB();23 });24 it('should be able to check status of third party app', async () => {25 (await adb.isAppInstalled('com.android.phone')).should.be.true;26 });27 it('should be able to install/remove app and detect its status', async () => {28 (await adb.isAppInstalled('foo')).should.be.false;29 await adb.install(contactManagerPath);30 (await adb.isAppInstalled('com.example.android.contactmanager')).should.be.true;31 (await adb.uninstallApk('com.example.android.contactmanager')).should.be.true;32 (await adb.isAppInstalled('com.example.android.contactmanager')).should.be.false;33 (await adb.uninstallApk('com.example.android.contactmanager')).should.be.false;34 await adb.rimraf(deviceTempPath + 'ContactManager.apk');35 await adb.push(contactManagerPath, deviceTempPath);36 await adb.installFromDevicePath(deviceTempPath + 'ContactManager.apk');37 });38 describe('startUri', async () => {39 it('should be able to start a uri', async () => {40 await adb.goToHome();41 let res = await adb.getFocusedPackageAndActivity();42 res.appPackage.should.not.equal('com.android.contacts');43 await adb.install(contactManagerPath);44 await adb.startUri('content://contacts/people', 'com.android.contacts');45 await retryInterval(10, 500, async () => {46 res = await adb.shell(['dumpsys', 'window', 'windows']);...

Full Screen

Full Screen

app-management.js

Source:app-management.js Github

copy

Full Screen

...15 * @param {string} appId - Application package identifier16 * @returns {boolean} true if the app is installed17 */18commands.isAppInstalled = async function isAppInstalled (appId) {19 return await this.adb.isAppInstalled(appId);20};21/**22 * Queries the current state of the app.23 *24 * @param {string} appId - Application package identifier25 * @returns {number} The corresponding constant, which describes26 * the current application state:27 * 0 - is the app is not installed28 * 1 - if the app is installed, but is not running29 * 3 - if the app is running in the background30 * 4 - if the app is running in the foreground31 */32commands.queryAppState = async function queryAppState (appId) {33 log.info(`Querying the state of '${appId}'`);34 if (!await this.adb.isAppInstalled(appId)) {35 return APP_STATE_NOT_INSTALLED;36 }37 if (!await this.adb.processExists(appId)) {38 return APP_STATE_NOT_RUNNING;39 }40 for (const line of (await this.adb.dumpWindows()).split('\n')) {41 if (line.includes(appId) && (line.includes('mCurrentFocus') || line.includes('mFocusedApp'))) {42 return APP_STATE_RUNNING_IN_FOREGROUND;43 }44 }45 return APP_STATE_RUNNING_IN_BACKGROUND;46};47/**48 * Activates the given application or launches it if necessary....

Full Screen

Full Screen

selendroid.js

Source:selendroid.js Github

copy

Full Screen

...38 await this.adb.uninstallApk(this.modServerPkg);39 }40 }41 async installModifiedServer () {42 let installed = await this.adb.isAppInstalled(this.modServerPkg);43 if (!installed) {44 await this.adb.install(this.modServerPath);45 }46 }47 async buildNewModServer () {48 logger.info(`Repackaging selendroid for: '${this.appPackage}'`);49 let packageTmpDir = path.resolve(this.tmpDir, this.appPackage);50 let newManifestPath = path.resolve(this.tmpDir, 'AndroidManifest.xml');51 logger.info(`Creating new manifest: '${newManifestPath}'`);52 await fs.mkdir(packageTmpDir);53 await fs.copyFile(SE_MANIFEST_PATH, newManifestPath);54 await this.adb.initAapt(); // TODO this should be internal to adb55 await this.adb.compileManifest(newManifestPath, this.modServerPkg,56 this.appPackage);...

Full Screen

Full Screen

android-helper-e2e-specs.js

Source:android-helper-e2e-specs.js Github

copy

Full Screen

...22 describe('installApk', function () {23 it('installs an apk by pushing it to the device then installing it from within', async function () {24 this.timeout(MOCHA_TIMEOUT);25 await retryInterval(10, 500, async function () {26 if (await adb.isAppInstalled(opts.appPackage)) {27 // this sometimes times out on Travis, so retry28 await adb.uninstallApk(opts.appPackage);29 }30 });31 await adb.isAppInstalled(opts.appPackage).should.eventually.be.false;32 await helpers.installApk(adb, opts);33 await adb.isAppInstalled(opts.appPackage).should.eventually.be.true;34 });35 });36 describe('ensureDeviceLocale @skip-ci', function () {37 after(async function () {38 await helpers.ensureDeviceLocale(adb, 'en', 'US');39 });40 it('should set device language and country', async function () {41 await helpers.ensureDeviceLocale(adb, 'fr', 'FR');42 if (await adb.getApiLevel() < 23) {43 await adb.getDeviceLanguage().should.eventually.equal('fr');44 await adb.getDeviceCountry().should.eventually.equal('FR');45 } else {46 await adb.getDeviceLocale().should.eventually.equal('fr-FR');47 }...

Full Screen

Full Screen

url-e2e-specs.js

Source:url-e2e-specs.js Github

copy

Full Screen

...14 let urlId = 'com.android.browser:id/url';15 before(async function () {16 if (process.env.TRAVIS) return this.skip(); // eslint-disable-line curly17 let adb = new ADB();18 if (!await adb.isAppInstalled('com.android.browser')) {19 if (!await adb.isAppInstalled('com.android.chrome')) {20 throw new Error('Neither default browser nor chrome available');21 }22 // `browser` is not available, so use `Chrome`23 caps.browserName = 'Chrome';24 urlId = 'com.android.chrome:id/url_bar';25 }26 driver = new AndroidDriver();27 await driver.createSession(caps);28 });29 after(async function () {30 if (driver) {31 await driver.deleteSession();32 }33 });...

Full Screen

Full Screen

adb-emu-commands-e2e-specs.js

Source:adb-emu-commands-e2e-specs.js Github

copy

Full Screen

...20 this.skip();21 }22 });23 it('fingerprint should open the secret activity on emitted valid finger touch event', async () => {24 if (await adb.isAppInstalled(pkg)) {25 await adb.forceStop(pkg);26 await adb.uninstallApk(pkg);27 }28 await adb.install(fingerprintPath);29 await adb.startApp({pkg, activity});30 await sleep(500);31 let app = await adb.getFocusedPackageAndActivity();32 app.appActivity.should.equal(activity);33 await adb.fingerprint(1111);34 await sleep(2500);35 app = await adb.getFocusedPackageAndActivity();36 app.appActivity.should.equal(secretActivity);37 });38});

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var webdriver = require('selenium-webdriver'),2 until = webdriver.until;3var driver = new webdriver.Builder()4 .forBrowser('chrome')5 .build();6driver.findElement(By.name('q')).sendKeys('webdriver');7driver.findElement(By.name('btnG')).click();8driver.wait(until.titleIs('webdriver - Google Search'), 1000);9driver.quit();10driver.findElement(By.name('q')).sendKeys('webdriver');11driver.findElement(By.name('btnG')).click();12driver.wait(until.titleIs('webdriver - Google Search'), 1000);13driver.quit();14driver.findElement(By.name('q')).sendKeys('webdriver');15driver.findElement(By.name('btnG')).click();16driver.wait(until.titleIs('webdriver - Google Search'), 1000);17driver.quit();18driver.findElement(By.name('q')).sendKeys('webdriver');19driver.findElement(By.name('btnG')).click();20driver.wait(until.titleIs('webdriver - Google Search'), 1000);21driver.quit();22driver.findElement(By.name('q')).sendKeys('webdriver');23driver.findElement(By.name('btnG')).click();24driver.wait(until.titleIs('webdriver - Google Search'), 1000);25driver.quit();26driver.findElement(By.name('q')).sendKeys('webdriver');27driver.findElement(By.name('btnG')).click();28driver.wait(until.titleIs('webdriver - Google Search'), 1000);29driver.quit();30driver.findElement(By.name('q')).sendKeys('webdriver');31driver.findElement(By.name('btnG')).click();32driver.wait(until.titleIs('webdriver - Google Search'), 1000);33driver.quit();

Full Screen

Using AI Code Generation

copy

Full Screen

1var webdriver = require('selenium-webdriver'),2 until = webdriver.until;3var driver = new webdriver.Builder()4 .forBrowser('chrome')5 .build();6driver.findElement(By.name('q')).sendKeys('webdriver');7driver.findElement(By.name('btnG')).click();8driver.wait(until.titleIs('webdriver - Google Search'), 1000);9driver.quit();10var webdriver = require('selenium-webdriver'),11 until = webdriver.until;12var driver = new webdriver.Builder()13 .forBrowser('chrome')14 .build();15driver.findElement(By.name('q')).sendKeys('webdriver');16driver.findElement(By.name('btnG')).click();17driver.wait(until.titleIs('webdriver - Google Search'), 1000);18driver.quit();19var webdriver = require('selenium-webdriver'),20 until = webdriver.until;21var driver = new webdriver.Builder()22 .forBrowser('chrome')23 .build();24driver.findElement(By.name('q')).sendKeys('webdriver');25driver.findElement(By.name('btnG')).click();26driver.wait(until.titleIs('webdriver - Google Search'), 1000);27driver.quit();28var webdriver = require('selenium-webdriver'),29 until = webdriver.until;30var driver = new webdriver.Builder()31 .forBrowser('chrome')32 .build();33driver.findElement(By.name('q')).sendKeys('webdriver');34driver.findElement(By.name('btnG')).click();35driver.wait(until.titleIs('webdriver - Google Search'), 1000);36driver.quit();37var webdriver = require('selenium-webdriver'),38 until = webdriver.until;39var driver = new webdriver.Builder()40 .forBrowser('chrome')41 .build();42driver.findElement(By.name('q')).sendKeys('webdriver');43driver.findElement(By.name('btnG')).click();44driver.wait(until.titleIs('webdriver - Google Search'),

Full Screen

Using AI Code Generation

copy

Full Screen

1var webdriver = require('selenium-webdriver');2var By = webdriver.By;3var until = webdriver.until;4var AndroidDriver = require('appium-android-driver');5var ADB = AndroidDriver.ADB;6var adb = new ADB();7var driver;8var desiredCapabilities = {9};10driver = new webdriver.Builder()

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var assert = require('assert');3var asserters = wd.asserters;4var should = require('should');5var desired = {6};7var driver = wd.promiseChainRemote("localhost", 4723);8 .init(desired)9 .then(function () {10 return driver.isAppInstalled('com.example.android.contactmanager');11 })12 .then(function (isInstalled) {13 console.log('App installed: ' + isInstalled);14 })15 .fin(function () {16 return driver.quit();17 })18 .done();

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('Appium Android Driver', function() {2 it('should check if App installed', async function() {3 const isAppInstalled = await driver.adb.isAppInstalled('com.android.chrome');4 console.log('isAppInstalled: ' + isAppInstalled);5 });6});7exports.config = {8 capabilities: [{9 'goog:chromeOptions': {10 }11 }],12 mochaOpts: {13 }14};15{16 "scripts": {17 },18 "dependencies": {19 }20}21{22 "packages": {23 "": {

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var assert = require('assert');3var AndroidDriver = require("appium-android-driver");4var desired = {5};6 .init(desired)7 .then(function () {8 return driver.isAppInstalled("com.example.app");9 })10 .then(function (isInstalled) {11 if (!isInstalled) {12 return driver.installApp("/path/to/your/app.apk");13 }14 })15 .fin(function () { return driver.quit(); })16 .done();

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var assert = require('assert');3var appium = require('appium');4var driver = wd.promiseChainRemote("localhost", 4723);5var desiredCaps = {6};7 .init(desiredCaps)8 .then(function() {9 return driver.isAppInstalled("io.appium.android.apis");10 })11 .then(function(isInstalled) {12 if(!isInstalled) {13 }14 })15 .then(function() {16 return driver.startActivity("io.appium.android.apis", ".ApiDemos");17 })18 .then(function() {19 return driver.quit();20 })21 .done();

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Appium Android Driver automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful