Best JavaScript code snippet using appium-xcuitest-driver
webdriveragent-specs.js
Source:webdriveragent-specs.js
1import { WebDriverAgent, BOOTSTRAP_PATH } from '../..';2import * as dependencies from '../../lib/check-dependencies';3import * as utils from '../../lib/utils';4import chai from 'chai';5import chaiAsPromised from 'chai-as-promised';6import path from 'path';7import _ from 'lodash';8import sinon from 'sinon';9import { withMocks } from 'appium-test-support';10import { fs } from 'appium-support';11chai.should();12chai.use(chaiAsPromised);13const fakeConstructorArgs = {14 device: 'some sim',15 platformVersion: '9',16 host: 'me',17 port: '5000',18 realDevice: false19};20const defaultAgentPath = path.resolve(BOOTSTRAP_PATH, 'WebDriverAgent.xcodeproj');21const customBootstrapPath = '/path/to/wda';22const customAgentPath = '/path/to/some/agent/WebDriverAgent.xcodeproj';23const customDerivedDataPath = '/path/to/some/agent/DerivedData/';24describe('Constructor', function () {25 it('should have a default wda agent if not specified', function () {26 let agent = new WebDriverAgent({}, fakeConstructorArgs);27 agent.bootstrapPath.should.eql(BOOTSTRAP_PATH);28 agent.agentPath.should.eql(defaultAgentPath);29 });30 it('should have custom wda bootstrap and default agent if only bootstrap specified', function () {31 let agent = new WebDriverAgent({}, _.defaults({32 bootstrapPath: customBootstrapPath,33 }, fakeConstructorArgs));34 agent.bootstrapPath.should.eql(customBootstrapPath);35 agent.agentPath.should.eql(path.resolve(customBootstrapPath, 'WebDriverAgent.xcodeproj'));36 });37 it('should have custom wda bootstrap and agent if both specified', function () {38 let agent = new WebDriverAgent({}, _.defaults({39 bootstrapPath: customBootstrapPath,40 agentPath: customAgentPath,41 }, fakeConstructorArgs));42 agent.bootstrapPath.should.eql(customBootstrapPath);43 agent.agentPath.should.eql(customAgentPath);44 });45 it('should have custom derivedDataPath if specified', function () {46 let agent = new WebDriverAgent({}, _.defaults({47 derivedDataPath: customDerivedDataPath48 }, fakeConstructorArgs));49 agent.xcodebuild.derivedDataPath.should.eql(customDerivedDataPath);50 });51});52describe('checking for dependencies', function () {53 const wda = new WebDriverAgent('12.1');54 const xcodebuild = wda.xcodebuild;55 describe('#launch', withMocks({wda, fs, dependencies, xcodebuild}, function (mocks) {56 afterEach(function () {57 mocks.verify();58 });59 it('should call checkForDependencies', async function () {60 wda.useXctestrunFile = false;61 wda.usePrebuiltWDA = false;62 wda.derivedDataPath = undefined;63 wda.device = {};64 wda.device.udid = 'udid';65 mocks.wda.expects('setupProxies').once().returns();66 mocks.fs.expects('exists').returns(true);67 mocks.dependencies.expects('checkForDependencies').once().returns(false);68 mocks.xcodebuild.expects('init').once().returns();69 mocks.xcodebuild.expects('start').once().returns();70 await wda.launch();71 });72 it('should call checkForDependencies since only usePrebuiltWDA', async function () {73 wda.useXctestrunFile = false;74 wda.usePrebuiltWDA = true;75 wda.derivedDataPath = undefined;76 wda.device = {};77 wda.device.udid = 'udid';78 mocks.wda.expects('setupProxies').once().returns();79 mocks.fs.expects('exists').returns(true);80 mocks.dependencies.expects('checkForDependencies').once().returns(false);81 mocks.xcodebuild.expects('init').once().returns();82 mocks.xcodebuild.expects('start').once().returns();83 await wda.launch();84 });85 it('should not call checkForDependencies with usePrebuiltWDA and derivedDataPath', async function () {86 wda.useXctestrunFile = false;87 wda.usePrebuiltWDA = true;88 wda.derivedDataPath = 'path/to/data';89 wda.device = {};90 wda.device.udid = 'udid';91 mocks.wda.expects('setupProxies').once().returns();92 mocks.fs.expects('exists').returns(true);93 mocks.dependencies.expects('checkForDependencies').never();94 mocks.xcodebuild.expects('init').once().returns();95 mocks.xcodebuild.expects('start').once().returns();96 await wda.launch();97 });98 it('should not call checkForDependencies with useXctestrunFile', async function () {99 wda.useXctestrunFile = true;100 wda.usePrebuiltWDA = false;101 wda.derivedDataPath = undefined;102 wda.device = {};103 wda.device.udid = 'udid';104 mocks.wda.expects('setupProxies').once().returns();105 mocks.fs.expects('exists').returns(true);106 mocks.dependencies.expects('checkForDependencies').never();107 mocks.xcodebuild.expects('init').once().returns();108 mocks.xcodebuild.expects('start').once().returns();109 await wda.launch();110 });111 }));112});113describe('launch', function () {114 it('should use webDriverAgentUrl override and return current status', async function () {115 let override = 'http://mockurl:8100/';116 let args = Object.assign({}, fakeConstructorArgs);117 args.webDriverAgentUrl = override;118 let agent = new WebDriverAgent({}, args);119 let wdaStub = sinon.stub(agent, 'getStatus');120 wdaStub.callsFake(function () {121 return {build: 'data'};122 });123 await agent.launch('sessionId').should.eventually.eql({build: 'data'});124 agent.url.href.should.eql(override);125 wdaStub.reset();126 });127});128describe('get url', function () {129 it('should use default WDA listening url', function () {130 const args = Object.assign({}, fakeConstructorArgs);131 const agent = new WebDriverAgent({}, args);132 agent.url.href.should.eql('http://localhost:8100/');133 });134 it('should use default WDA listening url with emply base url', function () {135 const wdaLocalPort = '9100';136 const wdaBaseUrl = '';137 const args = Object.assign({}, fakeConstructorArgs);138 args.wdaBaseUrl = wdaBaseUrl;139 args.wdaLocalPort = wdaLocalPort;140 const agent = new WebDriverAgent({}, args);141 agent.url.href.should.eql('http://localhost:9100/');142 });143 it('should use customised WDA listening url', function () {144 const wdaLocalPort = '9100';145 const wdaBaseUrl = 'http://mockurl';146 const args = Object.assign({}, fakeConstructorArgs);147 args.wdaBaseUrl = wdaBaseUrl;148 args.wdaLocalPort = wdaLocalPort;149 const agent = new WebDriverAgent({}, args);150 agent.url.href.should.eql('http://mockurl:9100/');151 });152 it('should use customised WDA listening url with slash', function () {153 const wdaLocalPort = '9100';154 const wdaBaseUrl = 'http://mockurl/';155 const args = Object.assign({}, fakeConstructorArgs);156 args.wdaBaseUrl = wdaBaseUrl;157 args.wdaLocalPort = wdaLocalPort;158 const agent = new WebDriverAgent({}, args);159 agent.url.href.should.eql('http://mockurl:9100/');160 });161});162describe('setupCaching()', function () {163 let wda;164 let wdaStub;165 let wdaStubUninstall;166 const getTimestampStub = sinon.stub(utils, 'getWDAUpgradeTimestamp');167 beforeEach(function () {168 wda = new WebDriverAgent('1');169 wdaStub = sinon.stub(wda, 'getStatus');170 wdaStubUninstall = sinon.stub(wda, 'uninstall');171 });172 afterEach(function () {173 for (const stub of [wdaStub, wdaStubUninstall, getTimestampStub]) {174 if (stub) {175 stub.reset();176 }177 }178 });179 it('should not call uninstall since no Running WDA', async function () {180 wdaStub.callsFake(function () {181 return null;182 });183 wdaStubUninstall.callsFake(_.noop);184 await wda.setupCaching();185 wdaStub.calledOnce.should.be.true;186 wdaStubUninstall.notCalled.should.be.true;187 _.isUndefined(wda.webDriverAgentUrl).should.be.true;188 });189 it('should not call uninstall since running WDA has only time', async function () {190 wdaStub.callsFake(function () {191 return {build: { time: 'Jun 24 2018 17:08:21' }};192 });193 wdaStubUninstall.callsFake(_.noop);194 await wda.setupCaching();195 wdaStub.calledOnce.should.be.true;196 wdaStubUninstall.notCalled.should.be.true;197 wda.webDriverAgentUrl.should.equal('http://localhost:8100/');198 });199 it('should call uninstall once since bundle id is not default without updatedWDABundleId capability', async function () {200 wdaStub.callsFake(function () {201 return {build: { time: 'Jun 24 2018 17:08:21', productBundleIdentifier: 'com.example.WebDriverAgent' }};202 });203 wdaStubUninstall.callsFake(_.noop);204 await wda.setupCaching();205 wdaStub.calledOnce.should.be.true;206 wdaStubUninstall.calledOnce.should.be.true;207 _.isUndefined(wda.webDriverAgentUrl).should.be.true;208 });209 it('should call uninstall once since bundle id is different with updatedWDABundleId capability', async function () {210 wdaStub.callsFake(function () {211 return {build: { time: 'Jun 24 2018 17:08:21', productBundleIdentifier: 'com.example.different.WebDriverAgent' }};212 });213 wdaStubUninstall.callsFake(_.noop);214 await wda.setupCaching();215 wdaStub.calledOnce.should.be.true;216 wdaStubUninstall.calledOnce.should.be.true;217 _.isUndefined(wda.webDriverAgentUrl).should.be.true;218 });219 it('should not call uninstall since bundle id is equal to updatedWDABundleId capability', async function () {220 wda = new WebDriverAgent('1', { updatedWDABundleId: 'com.example.WebDriverAgent' });221 wdaStub = sinon.stub(wda, 'getStatus');222 wdaStubUninstall = sinon.stub(wda, 'uninstall');223 wdaStub.callsFake(function () {224 return {build: { time: 'Jun 24 2018 17:08:21', productBundleIdentifier: 'com.example.WebDriverAgent' }};225 });226 wdaStubUninstall.callsFake(_.noop);227 await wda.setupCaching();228 wdaStub.calledOnce.should.be.true;229 wdaStubUninstall.notCalled.should.be.true;230 wda.webDriverAgentUrl.should.equal('http://localhost:8100/');231 });232 it('should call uninstall if current revision differs from the bundled one', async function () {233 wdaStub.callsFake(function () {234 return {build: { upgradedAt: '1' }};235 });236 getTimestampStub.callsFake(() => '2');237 wdaStubUninstall.callsFake(_.noop);238 await wda.setupCaching();239 wdaStub.calledOnce.should.be.true;240 wdaStubUninstall.calledOnce.should.be.true;241 });242 it('should not call uninstall if current revision is the same as the bundled one', async function () {243 wdaStub.callsFake(function () {244 return {build: { upgradedAt: '1' }};245 });246 getTimestampStub.callsFake(() => '1');247 wdaStubUninstall.callsFake(_.noop);248 await wda.setupCaching();249 wdaStub.calledOnce.should.be.true;250 wdaStubUninstall.notCalled.should.be.true;251 });252 it('should not call uninstall if current revision cannot be retrieved from WDA status', async function () {253 wdaStub.callsFake(function () {254 return {build: {}};255 });256 getTimestampStub.callsFake(() => '1');257 wdaStubUninstall.callsFake(_.noop);258 await wda.setupCaching();259 wdaStub.calledOnce.should.be.true;260 wdaStubUninstall.notCalled.should.be.true;261 });262 it('should not call uninstall if current revision cannot be retrieved from the file system', async function () {263 wdaStub.callsFake(function () {264 return {build: { upgradedAt: '1' }};265 });266 getTimestampStub.callsFake(() => null);267 wdaStubUninstall.callsFake(_.noop);268 await wda.setupCaching();269 wdaStub.calledOnce.should.be.true;270 wdaStubUninstall.notCalled.should.be.true;271 });272 describe('uninstall', function () {273 let device;274 let wda;275 let deviceGetBundleIdsStub;276 let deviceRemoveAppStub;277 beforeEach(function () {278 device = {279 getUserInstalledBundleIdsByBundleName: () => {},280 removeApp: () => {}281 };282 wda = new WebDriverAgent('1', {device});283 deviceGetBundleIdsStub = sinon.stub(device, 'getUserInstalledBundleIdsByBundleName');284 deviceRemoveAppStub = sinon.stub(device, 'removeApp');285 });286 afterEach(function () {287 for (const stub of [deviceGetBundleIdsStub, deviceRemoveAppStub]) {288 if (stub) {289 stub.reset();290 }291 }292 });293 it('should not call uninstall', async function () {294 deviceGetBundleIdsStub.callsFake(() => []);295 await wda.uninstall();296 deviceGetBundleIdsStub.calledOnce.should.be.true;297 deviceRemoveAppStub.notCalled.should.be.true;298 });299 it('should call uninstall once', async function () {300 const uninstalledBundIds = [];301 deviceGetBundleIdsStub.callsFake(() => ['com.appium.WDA1']);302 deviceRemoveAppStub.callsFake((id) => uninstalledBundIds.push(id));303 await wda.uninstall();304 deviceGetBundleIdsStub.calledOnce.should.be.true;305 deviceRemoveAppStub.calledOnce.should.be.true;306 uninstalledBundIds.should.eql(['com.appium.WDA1']);307 });308 it('should call uninstall twice', async function () {309 const uninstalledBundIds = [];310 deviceGetBundleIdsStub.callsFake(() => ['com.appium.WDA1', 'com.appium.WDA2']);311 deviceRemoveAppStub.callsFake((id) => uninstalledBundIds.push(id));312 await wda.uninstall();313 deviceGetBundleIdsStub.calledOnce.should.be.true;314 deviceRemoveAppStub.calledTwice.should.be.true;315 uninstalledBundIds.should.eql(['com.appium.WDA1', 'com.appium.WDA2']);316 });317 });...
webdriveragent.js
Source:webdriveragent.js
...96 }97 async uninstall () {98 log.debug(`Removing WDA application from device`);99 try {100 await this.device.removeApp(WDA_BUNDLE_ID);101 } catch (e) {102 log.warn(`WebDriverAgent uninstall failed. Perhaps, it is already uninstalled? Original error: ${JSON.stringify(e)}`);103 }104 }105 async launch (sessionId) {106 if (this.webDriverAgentUrl) {107 log.info(`Using provided WebdriverAgent at '${this.webDriverAgentUrl}'`);108 this.url = this.webDriverAgentUrl;109 this.setupProxies(sessionId);110 return;111 }112 log.info('Launching WebDriverAgent on the device');113 this.setupProxies(sessionId);114 if (!this.useXctestrunFile && !await fs.exists(this.agentPath)) {...
simulator-management.js
Source:simulator-management.js
...129 log.debug(`App '${bundleId}' is already installed. No need to reinstall.`);130 return;131 }132 log.debug(`Reset requested. Removing app with id '${bundleId}' from the device`);133 await device.removeApp(bundleId);134 }135 }136 log.debug(`Installing ${app} on Simulator with UUID '${device.udid}'...`);137 await device.installApp(app);138 log.debug('The app has been installed successfully.');139}140export { simBooted, createSim, getExistingSim, runSimulatorReset,...
app-management.js
Source:app-management.js
...40 const {bundleId} = extractMandatoryOptions(opts, ['bundleId']);41 log.info(`Uninstalling the application with bundle identifier '${bundleId}' ` +42 `from the ${this.isRealDevice() ? 'real device' : 'Simulator'} with UDID ${this.opts.device.udid}`);43 try {44 await this.opts.device.removeApp(bundleId);45 log.info(`Removal of '${bundleId}' succeeded`);46 return true;47 } catch (err) {48 log.warn(`Cannot remove '${bundleId}'. Original error: ${err.message}`);49 return false;50 }51};52commands.mobileLaunchApp = async function (opts = {}) {53 const wdaOpts = extractMandatoryOptions(opts, ['bundleId']);54 if (opts.arguments) {55 wdaOpts.arguments = _.isArray(opts.arguments) ? opts.arguments : [opts.arguments];56 }57 if (opts.environment) {58 wdaOpts.environment = opts.environment;...
general.js
Source:general.js
...72commands.removeApp = async function (bundleId) {73 if (this.isRealDevice()) {74 await this.opts.device.remove(bundleId);75 } else {76 await this.opts.device.removeApp(bundleId);77 }78};79commands.launchApp = iosCommands.general.launchApp;80commands.closeApp = iosCommands.general.closeApp;81export { commands };...
Using AI Code Generation
1const { remote } = require('webdriverio');2(async () => {3 const browser = await remote({4 capabilities: {5 }6 });7 await browser.pause(5000);8 await browser.removeApp('com.apple.Preferences');9 await browser.pause(5000);10 await browser.deleteSession();11})();12[debug] [WD Proxy] Got response with status 200: {"value":{},"sessionId":"B9E9A7D9-8B8C-4D6A-9C7C-6B8A6D0C1D4A"}13[debug] [W3C (b4e0d3c3)] Responding to client with driver.removeApp() result: {}14[HTTP] {"script":"mobile: launchApp","args":[]}15[W3C (b4e0d3c3)] Calling AppiumDriver.execute() with args: ["mobile: launchApp",[],"b4e0d3c3-3a3e-4b1e-a2f9-9a0b1d8c0f7a"]
Using AI Code Generation
1var webdriver = require('selenium-webdriver');2var driver = new webdriver.Builder()3 .withCapabilities({4 })5 .build();6driver.execute('mobile: removeApp', {bundleId: 'com.apple.mobilesafari'}).then(function(){7 console.log('Successfully removed app');8}, function(err){9 console.log('Error occurred while removing app: ' + err);10});11driver.quit();
Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = {3 desiredCapabilities: {4 }5};6 .remote(options)7 .init()8 .then(function() {9 return client.removeApp('com.apple.mobilesafari');10 })11 .end();12var webdriverio = require('webdriverio');13var options = {14 desiredCapabilities: {15 }16};17 .remote(options)18 .init()19 .then(function() {20 return client.launchApp();21 })22 .end();23var webdriverio = require('webdriverio');24var options = {25 desiredCapabilities: {26 }27};28 .remote(options)29 .init()30 .then(function() {31 return client.installApp('/Users/username/Desktop/Calculator.app');32 })33 .end();34var webdriverio = require('webdriverio');35var options = {36 desiredCapabilities: {37 }38};39 .remote(options)40 .init()41 .then(function() {42 return client.isAppInstalled('com.apple.mobilesafari');43 })44 .then(function(isInstalled) {45 console.log('isInstalled', isInstalled);46 })
Using AI Code Generation
1const wd = require('wd');2driver.init({3}).then(() => {4 return driver.removeApp('com.apple.Preferences');5}).then(() => {6 return driver.quit();7}).catch((err) => {8 console.log(err);9});
Using AI Code Generation
1async function removeApp(device) {2 await device.removeApp('com.apple.Preferences');3}4async function installApp(device) {5 await device.installApp('/Users/username/Downloads/Settings.app');6}7async function launchApp(device) {8 await device.launchApp();9}10async function terminateApp(device) {11 await device.terminateApp('com.apple.Preferences');12}13async function activateApp(device) {14 await device.activateApp('com.apple.Preferences');15}16async function backgroundApp(device) {17 await device.backgroundApp(3);18}19async function reset(device) {20 await device.reset();21}22async function isAppInstalled(device) {23 await device.isAppInstalled('com.apple.Preferences');24}25async function installApp(device) {26 await device.installApp('/Users/username/Downloads/Settings.app');27}28async function removeApp(device) {29 await device.removeApp('com.apple.Preferences');30}31async function launchApp(device) {32 await device.launchApp();33}34async function terminateApp(device) {35 await device.terminateApp('com.apple.Preferences');36}
Using AI Code Generation
1var wd = require('wd');2var assert = require('assert');3var desired = {4};5var driver = wd.promiseChainRemote('localhost', 4723);6 .init(desired)7 .then(function() {8 return driver.removeApp('com.example.apple-samplecode.UICatalog');9 })10 .then(function() {11 return driver.quit();12 })13 .done();14I am trying to use the removeApp() method of the Appium XCUITest Driver to uninstall an app from the simulator. However, I am getting the following error:15[debug] [MJSONWP] Calling AppiumDriver.removeApp() with args: ["com.example.apple-samplecode.UICatalog","5c5b5f5b-7c58-4d8a-aa6b-1f0b5e2e8d4b"]16 at ChildProcess.proc.on.code (/usr/local/lib/node_modules/appium/node_modules/teen_process/lib/exec.js:94:19)17 at emitTwo (events.js:106:13)18 at ChildProcess.emit (events.js:191:7)19 at maybeClose (internal/child_process.js:877:16)20 at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)21[debug] [XCUITest] at XCUITestDriver.removeApp$ (lib/driver.js:1074:15)22 at tryCatch (/usr/local/lib
Using AI Code Generation
1const wd = require('wd');2const assert = require('assert');3const path = require('path');4const fs = require('fs');5const os = require('os');6const { exec } = require('child_process');7const { sleep } = require('./utils');8const BUNDLE_ID = 'com.apple.Preferences';9const APP_NAME = 'Preferences';10const driver = wd.promiseChainRemote('localhost', 4723);11const desired = {12};13(async () => {14 try {15 await driver.init(desired);16 await driver.removeApp(BUNDLE_ID);17 await driver.launchApp();18 await driver.closeApp();19 await driver.removeApp(BUNDLE_ID);20 await driver.launchApp();21 await driver.closeApp();22 await driver.removeApp(BUNDLE_ID);23 await driver.launchApp();24 await driver.closeApp();25 await driver.removeApp(BUNDLE_ID);26 await driver.launchApp();27 await driver.closeApp();28 await driver.removeApp(BUNDLE_ID);29 await driver.launchApp();30 await driver.closeApp();31 await driver.removeApp(BUNDLE_ID);32 await driver.launchApp();33 await driver.closeApp();34 await driver.removeApp(BUNDLE_ID);35 await driver.launchApp();36 await driver.closeApp();37 await driver.removeApp(BUNDLE_ID);38 await driver.launchApp();39 await driver.closeApp();40 await driver.removeApp(BUNDLE_ID);41 await driver.launchApp();42 await driver.closeApp();43 await driver.removeApp(BUNDLE_ID);44 await driver.launchApp();45 await driver.closeApp();46 await driver.removeApp(BUNDLE_ID);47 await driver.launchApp();48 await driver.closeApp();49 await driver.removeApp(BUNDLE_ID);50 await driver.launchApp();51 await driver.closeApp();52 await driver.removeApp(BUNDLE_ID);53 await driver.launchApp();54 await driver.closeApp();55 await driver.removeApp(BUNDLE_ID);56 await driver.launchApp();
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!