Best JavaScript code snippet using appium-xcuitest-driver
driver.js
Source:driver.js
...311 this.wda = new WebDriverAgent(this.xcodeVersion, this.opts);312 await this.wda.cleanupObsoleteProcesses();313 if (this.opts.useNewWDA) {314 log.debug(`Capability 'useNewWDA' set to true, so uninstalling WDA before proceeding`);315 await this.wda.quit();316 await this.wda.uninstall();317 this.logEvent('wdaUninstalled');318 } else if (!util.hasValue(this.wda.webDriverAgentUrl) && (await this.wda.isRunning())) {319 log.info(`Will reuse previously cached WDA instance at '${this.wda.url.href}'. ` +320 `Set the wdaLocalPort capability to a value different from ${this.wda.url.port} ` +321 `if this is an undesired behavior.`);322 this.wda.webDriverAgentUrl = this.wda.url.href;323 }324 // local helper for the two places we need to uninstall wda and re-start it325 const quitAndUninstall = async (msg) => {326 log.debug(msg);327 log.debug('Quitting and uninstalling WebDriverAgent, then retrying');328 await this.wda.quit();329 await this.wda.uninstall();330 throw new Error(msg);331 };332 const startupRetries = this.opts.wdaStartupRetries || (this.isRealDevice() ? WDA_REAL_DEV_STARTUP_RETRIES : WDA_SIM_STARTUP_RETRIES);333 const startupRetryInterval = this.opts.wdaStartupRetryInterval || WDA_STARTUP_RETRY_INTERVAL;334 await retryInterval(startupRetries, startupRetryInterval, async () => {335 this.logEvent('wdaStartAttempted');336 try {337 this.cachedWdaStatus = await this.wda.launch(sessionId, realDevice);338 } catch (err) {339 this.logEvent('wdaStartFailed');340 let errorMsg = `Unable to launch WebDriverAgent because of xcodebuild failure: "${err.message}".`;341 if (this.isRealDevice()) {342 errorMsg += ` Make sure you follow the tutorial at ${WDA_REAL_DEV_TUTORIAL_URL}. ` +343 `Try to remove the WebDriverAgentRunner application from the device if it is installed ` +344 `and reboot the device.`;345 }346 await quitAndUninstall(errorMsg);347 }348 this.proxyReqRes = this.wda.proxyReqRes.bind(this.wda);349 this.jwpProxyActive = true;350 try {351 await retryInterval(15, 1000, async () => {352 this.logEvent('wdaSessionAttempted');353 log.debug('Sending createSession command to WDA');354 try {355 this.cachedWdaStatus = this.cachedWdaStatus || await this.proxyCommand('/status', 'GET');356 await this.startWdaSession(this.opts.bundleId, this.opts.processArguments);357 } catch (err) {358 log.debug('Failed to create WDA session. Retrying...');359 throw err;360 }361 });362 this.logEvent('wdaSessionStarted');363 } catch (err) {364 let errorMsg = `Unable to start WebDriverAgent session because of xcodebuild failure: "${err.message}".`;365 if (this.isRealDevice()) {366 errorMsg += ` Make sure you follow the tutorial at ${WDA_REAL_DEV_TUTORIAL_URL}. ` +367 `Try to remove the WebDriverAgentRunner application from the device if it is installed ` +368 `and reboot the device.`;369 }370 await quitAndUninstall(errorMsg);371 }372 if (!util.hasValue(this.opts.preventWDAAttachments)) {373 // XCTest prior to Xcode 9 SDK has no native way to disable attachments374 this.opts.preventWDAAttachments = this.xcodeVersion.major < 9;375 if (this.opts.preventWDAAttachments) {376 log.info('Enabled WDA attachments prevention by default to save the disk space. ' +377 'Set preventWDAAttachments capability to false if this is an undesired behavior.');378 }379 }380 if (this.opts.preventWDAAttachments) {381 await adjustWDAAttachmentsPermissions(this.wda, this.opts.preventWDAAttachments ? '555' : '755');382 this.logEvent('wdaPermsAdjusted');383 }384 if (this.opts.clearSystemFiles) {385 await markSystemFilesForCleanup(this.wda);386 }387 // we expect certain socket errors until this point, but now388 // mark things as fully working389 this.wda.fullyStarted = true;390 this.logEvent('wdaStarted');391 });392 }393 // create an alias so we can actually unit test createSession by stubbing394 // this395 async extractBundleId (app) {396 return await appUtils.extractBundleId(app);397 }398 async runReset (opts = null) {399 this.logEvent('resetStarted');400 if (this.isRealDevice()) {401 await runRealDeviceReset(this.opts.device, opts || this.opts);402 } else {403 await runSimulatorReset(this.opts.device, opts || this.opts);404 }405 this.logEvent('resetComplete');406 }407 async deleteSession () {408 await SHARED_RESOURCES_GUARD.acquire(XCUITestDriver.name, async () => {409 await this.stop();410 // reset the permissions on the derived data folder, if necessary411 if (this.opts.preventWDAAttachments) {412 await adjustWDAAttachmentsPermissions(this.wda, '755');413 }414 if (this.opts.clearSystemFiles) {415 await clearSystemFiles(this.wda, !!this.opts.showXcodeLog);416 } else {417 log.debug('Not clearing log files. Use `clearSystemFiles` capability to turn on.');418 }419 });420 if (this.isWebContext()) {421 log.debug('In a web session. Removing remote debugger');422 await this.stopRemote();423 }424 if (this.opts.resetOnSessionStartOnly === false) {425 await this.runReset();426 }427 if (this.isSimulator() && this.opts.udid && this.opts.customSSLCert) {428 await uninstallSSLCert(this.opts.customSSLCert, this.opts.udid);429 }430 if (this.isSimulator() && !this.opts.noReset && !!this.opts.device) {431 if (this.lifecycleData.createSim) {432 await resetXCTestProcesses(this.opts.udid, true);433 log.debug(`Deleting simulator created for this run (udid: '${this.opts.udid}')`);434 await this.opts.device.shutdown();435 await this.opts.device.delete();436 }437 }438 if (!_.isEmpty(this.logs)) {439 this.logs.syslog.stopCapture();440 this.logs = {};441 }442 if (this.iwdpServer) {443 this.stopIWDP();444 }445 if (this.opts.enableAsyncExecuteFromHttps && !this.isRealDevice()) {446 await this.stopHttpsAsyncServer();447 }448 this.resetIos();449 await super.deleteSession();450 }451 async stop () {452 this.jwpProxyActive = false;453 this.proxyReqRes = null;454 if (this.wda && this.wda.fullyStarted) {455 if (this.wda.jwproxy) {456 try {457 await this.proxyCommand(`/session/${this.sessionId}`, 'DELETE');458 } catch (err) {459 // an error here should not short-circuit the rest of clean up460 log.debug(`Unable to DELETE session on WDA: '${err.message}'. Continuing shutdown.`);461 }462 }463 if (this.wda && !this.wda.webDriverAgentUrl && this.opts.useNewWDA) {464 await this.wda.quit();465 }466 }467 }468 async executeCommand (cmd, ...args) {469 log.debug(`Executing command '${cmd}'`);470 if (cmd === 'receiveAsyncResponse') {471 return await this.receiveAsyncResponse(...args);472 }473 // TODO: once this fix gets into base driver remove from here474 if (cmd === 'getStatus') {475 return await this.getStatus();476 }477 return await super.executeCommand(cmd, ...args);478 }...
Using AI Code Generation
1const wdio = require('webdriverio');2const opts = {3 capabilities: {4 },5};6(async () => {7 const client = await wdio.remote(opts);8 await client.pause(10000);9 await client.wda.quit();10 await client.pause(10000);11})();12const wdio = require('webdriverio');13const opts = {14 capabilities: {15 },16};17(async () => {18 const client = await wdio.remote(opts);19 await client.pause(10000);20 await client.wda.quit();21 await client.pause(10000);22})();23const wdio = require('webdriverio');24const opts = {25 capabilities: {26 },27};28(async () => {29 const client = await wdio.remote(opts);30 await client.pause(10000);31 await client.wda.quit();32 await client.pause(10000);33})();
Using AI Code Generation
1this.wda.quit();2async quit () {3 if (this.wda) {4 await this.wda.quit();5 }6 if (this.xcodebuild) {7 await this.xcodebuild.quit();8 }9 if (this.simctl) {10 await this.simctl.shutdown();11 }12 }13}
Using AI Code Generation
1const wdio = require('webdriverio');2const opts = {3 capabilities: {4 }5};6(async function() {7 const client = await wdio.remote(opts);8 await client.pause(5000);9 await client.wda.quit();10})();11const wdio = require('webdriverio');12const opts = {13 capabilities: {14 }15};16(async function() {17 const client = await wdio.remote(opts);18 await client.pause(5000);19 await client.wda.quit();20})();
Using AI Code Generation
1async quit () {2 await this.wda.quit();3}4async quit () {5 await this.proxyCommand('/wda/quit', 'POST');6}7async proxyCommand (url, method, body = null) {8 let res = await this.jwproxy.command(url, method, body);9}10async command (url, method, body = null) {11 let res = await this.doCommand(url, method, body);12}13async doCommand (url, method, body = null) {14 let {protocol, host, port} = this.server;15}16get server () {17 let {host, port} = this.session;18}19get session () {20 return this.sessionId ? {sessionId: this.sessionId} : {};21}22get sessionId () {23 return this.sessionId;24}25set sessionId (sessionId) {26 this.sessionId = sessionId;27}28async doCommand (url, method, body = null) {
Using AI Code Generation
1const wd = require('wd');2const chai = require('chai');3const chaiAsPromised = require('chai-as-promised');4chai.use(chaiAsPromised);5const should = chai.should();6const { exec } = require('child_process');7const { retryInterval } = require('asyncbox');8const { fs, logger } = require('appium-support');9const { waitForCondition } = require('asyncbox');10const log = logger.getLogger('WDA-QUIT');11const HOST = 'localhost';12const PORT = 4723;13const BUNDLE_ID = 'com.apple.mobilecal';14let driver;15let caps = {16};17async function startWda () {18 log.info('Starting WDA');19 await driver.startWda();20 log.info('WDA started');21}22async function quitWda () {23 log.info('Quitting WDA');24 await driver.quitWda();25 log.info('WDA quit');26}27async function wdaPid () {28 const cmd = 'pgrep -f WebDriverAgentRunner';29 const {stdout} = await exec(cmd);30 return parseInt(stdout, 10);31}32async function waitForWdaPidToDisappear () {33 await waitForCondition(async () => {34 const pid = await wdaPid();35 return !pid;36 }, {37 });38}39async function waitForWdaPidToAppear () {40 await waitForCondition(async () => {41 const pid = await wdaPid();42 return pid;43 }, {44 });45}46async function checkWdaPid () {47 const pid = await wdaPid();48 if (!pid) {49 throw new Error('WDA process not running');50 }51}52async function checkWdaPidIsNotRunning () {53 const pid = await wdaPid();54 if (pid) {55 throw new Error('WDA process is running');56 }57}58async function checkWdaPidIsRunning () {
Using AI Code Generation
1await this.wda.quit();2commands.quit = async function () {3 await this.wda.quit();4};5async quit () {6 await this.proxyCommand('/wda/quit', 'POST');7};8async proxyCommand (url, method, body = null, retryCount = 0) {9 const realUrl = this.getUrl(url);10 const opts = {11 headers: {12 },13 };14 if (body) {15 opts.body = body;16 }17 try {18 const res = await request(opts);19 return res.body;20 } catch (err) {21 if (err.statusCode === 500 && retryCount < 3) {22 log.debug(`WDA quit returned 500. Retrying ${retryCount + 1} time`);23 return await this.proxyCommand(url, method, body, retryCount + 1);24 }25 throw err;26 }27};28getUrl (url) {29 return `${this.urlBase}${url}`;30};31get urlBase () {32};33async start (sessionId, caps) {34 this.port = await getFreePort();35};36async start (sessionId, caps) {37 await this.startWdaSession(session
Using AI Code Generation
1const wd = require('wd');2const path = require('path');3const assert = require('assert');4const iosApp = path.resolve('./ios-apps/UICatalog.app.zip');5const config = {6};7const driver = wd.promiseChainRemote('localhost', 4723);8 .init(config)9 .then(() => {10 console.log('driver is initialized');11 })12 .quit()13 .then(() => {14 console.log('driver is quit');15 })16 .catch((err) => {17 console.log('error', err);18 });
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!!