How to use spinTitleEquals method in Appium Xcuitest Driver

Best JavaScript code snippet using appium-xcuitest-driver

safari-basic-e2e-specs.js

Source:safari-basic-e2e-specs.js Github

copy

Full Screen

...132      });133      it('should be able to click links', async () => {134        let el = await driver.elementByLinkText('i am a link');135        await el.click();136        await spinTitleEquals(driver, 'I am another page title');137      });138      it('should retrieve an element attribute', async () => {139        let el = await driver.elementById('i_am_an_id');140        (await el.getAttribute('id')).should.be.equal('i_am_an_id');141        expect(await el.getAttribute('blar')).to.be.null;142      });143      it('should retrieve implicit attributes', async () => {144        let els = await driver.elementsByTagName('option');145        els.should.have.length(3);146        (await els[2].getAttribute('index')).should.be.equal('2');147      });148      it('should retrieve an element text', async () => {149        let el = await driver.elementById('i_am_an_id');150        (await el.text()).should.be.equal('I am a div');151      });152      // TODO: figure out what equality means here153      it.skip('should check if two elements are equal', async () => {154        let el1 = await driver.elementById('i_am_an_id');155        let el2 = await driver.elementByCss('#i_am_an_id');156        el1.should.be.equal(el2);157      });158      it('should return the page source', async () => {159        let source = await driver.source();160        source.should.include('<html');161        source.should.include('I am a page title');162        source.should.include('i appear 3 times');163        source.should.include('</html>');164      });165      it('should get current url', async () => {166        (await driver.url()).should.include('test/guinea-pig');167      });168      it('should get updated URL without breaking window handles', async () => {169        let el = await driver.elementByLinkText('i am an anchor link');170        await el.click();171        (await driver.url()).should.contain('#anchor');172        (await driver.windowHandles()).should.be.ok;173      });174      it('should send keystrokes to specific element', async () => {175        let el = await driver.elementById('comments');176        await el.clear();177        await el.sendKeys('hello world');178        ['how world', 'hello world'].should.include((await el.getAttribute('value')).toLowerCase());179      });180    });181    describe('element handling', function () {182      beforeEach(async () => {183        await driver.get(GUINEA_PIG_PAGE);184      });185      it('should send keystrokes to active element', async () => {186        let el = await driver.elementById('comments');187        await el.click();188        await el.type('hello world');189        ['how world', 'hello world'].should.include((await el.getAttribute('value')).toLowerCase());190      });191      it('should clear element', async () => {192        let el = await driver.elementById('comments');193        await el.sendKeys('hello world');194        (await el.getAttribute('value')).should.have.length.above(0);195        await el.clear();196        (await el.getAttribute('value')).should.be.equal('');197      });198      it('should say whether an input is selected', async () => {199        let el = await driver.elementById('unchecked_checkbox');200        (await el.isSelected()).should.not.be.ok;201        await el.click();202        (await el.isSelected()).should.be.ok;203      });204      it('should be able to retrieve css properties', async () => {205        let el = await driver.elementById('fbemail');206        (await el.getComputedCss('background-color')).should.be.equal('rgba(255, 255, 255, 1)');207      });208      it('should retrieve an element size', async () => {209        let el = await driver.elementById('i_am_an_id');210        let size = await el.getSize();211        size.width.should.be.above(0);212        size.height.should.be.above(0);213      });214      it('should get location of an element', async () => {215        let el = await driver.elementById('fbemail');216        let loc = await el.getLocation();217        loc.x.should.be.above(0);218        loc.y.should.be.above(0);219      });220      // getTagName not supported by mjwp221      it.skip('should retrieve tag name of an element', async () => {222        let el = await driver.elementById('fbemail');223        let a = await driver.elementByCss('a');224        (await el.getTagName()).should.be.equal('input');225        (await a.getTagName()).should.be.equal('a');226      });227      it('should retrieve a window size', async () => {228        let size = await driver.getWindowSize();229        size.height.should.be.above(0);230        size.width.should.be.above(0);231      });232      it('should move to an arbitrary x-y element and click on it', async () => {233        let el = await driver.elementByLinkText('i am a link');234        await driver.moveTo(el, 5, 15);235        await el.click();236        await spinTitleEquals(driver, 'I am another page title');237      });238      it('should submit a form', async () => {239        let el = await driver.elementById('comments');240        let form = await driver.elementById('jumpContact');241        await el.sendKeys('This is a comment');242        await form.submit();243        await spinWait(async () => {244          let el = await driver.elementById('your_comments');245          (await el.text()).should.be.equal('Your comments: This is a comment');246        });247      });248      it('should return true when the element is displayed', async () => {249        let el = await driver.elementByLinkText('i am a link');250        (await el.isDisplayed()).should.be.ok;...

Full Screen

Full Screen

safari-window-e2e-specs.js

Source:safari-window-e2e-specs.js Github

copy

Full Screen

...30      await deleteSession();31    });32    it('should not be able to open js popup windows', async function () {33      await driver.execute("window.open('/test/guinea-pig2.html', null)");34      await spinTitleEquals(driver, 'I am another page title', 5).should.eventually.be.rejected;35    });36  });37  describe('with safariAllowPopups', function () {38    this.timeout(MOCHA_TIMEOUT);39    let driver;40    before(async function () {41      const caps = _.defaults({42        safariInitialUrl: GUINEA_PIG_PAGE,43        safariAllowPopups: true,44        // using JS atoms to open new window will, even if safari does not disable45        // popups, open an alert asking if it is ok.46        nativeWebTap: true,47      }, SAFARI_CAPS);48      driver = await initSession(caps);49    });50    after(async function () {51      await deleteSession();52    });53    describe('windows', function () {54      before(async function () {55        // minimize waiting if something goes wrong56        await driver.setImplicitWaitTimeout(1000);57      });58      beforeEach(async function () {59        await openPage(driver, GUINEA_PIG_PAGE);60      });61      it('should be able to open js popup windows', async function () {62        await driver.execute(`window.open('/test/guinea-pig2.html', '_blank');`);63        await driver.acceptAlert();64        await spinTitleEquals(driver, 'I am another page title', 5)65          .should.eventually.not.be.rejected;66        await driver.close();67      });68      it('should throw nosuchwindow if there is not one', async function () {69        await driver.window('noexistman')70          .should.eventually.be.rejectedWith(/window could not be found/);71      });72      it('should be able to open and close windows', async function () {73        await driver.elementById('blanklink').click();74        await spinTitleEquals(driver, 'I am another page title');75        await driver.close();76        await spinTitleEquals(driver, 'I am a page title');77      });78      it('should be able to use window handles', async function () {79        const initialWindowHandle = await driver.windowHandle();80        await driver.elementById('blanklink').click();81        await spinTitleEquals(driver, 'I am another page title');82        const newWindowHandle = await driver.windowHandle();83        // should still have the first page84        await driver.window(initialWindowHandle);85        await spinTitleEquals(driver, 'I am a page title');86        // should still have the second page87        await driver.window(newWindowHandle);88        await spinTitleEquals(driver, 'I am another page title');89        // close and we should have the original page90        await driver.close();91        await spinTitleEquals(driver, 'I am a page title');92      });93      it('should be able to go back and forward', async function () {94        await driver.elementByLinkText('i am a link').click();95        await driver.elementById('only_on_page_2');96        await driver.back();97        await driver.elementById('i_am_a_textbox');98        await driver.forward();99        await driver.elementById('only_on_page_2');100        await driver.back();101      });102      // broken on real devices, see https://github.com/appium/appium/issues/5167103      it('should be able to open js popup windows with safariAllowPopups set to true @skip-real-device', async function () {104        await driver.elementByLinkText('i am a new window link').click();105        await spinTitleEquals(driver, 'I am another page title', 30);106      });107    });108    describe('frames', function () {109      beforeEach(async function () {110        await openPage(driver, GUINEA_PIG_FRAME_PAGE);111      });112      it('should switch to frame by name', async function () {113        await driver.frame('first');114        await driver.title().should.eventually.equal(FRAMESET_TITLE);115        await driver.elementByTagName('h1').text()116          .should.eventually.equal(SUB_FRAME_1_TITLE);117      });118      it('should switch to frame by index', async function () {119        await driver.frame(1);...

Full Screen

Full Screen

safari-nativewebtap-e2e-specs.js

Source:safari-nativewebtap-e2e-specs.js Github

copy

Full Screen

...37      it('should be able to tap on an element', async function () {38        await driver.get(GUINEA_PIG_PAGE);39        let el = await driver.elementByLinkText('i am a link to page 3');40        await el.click();41        await spinTitleEquals(driver, 'Another Page: page 3', spinRetries);42      });43      it('should be able to tap on an element when the app banner is up', async function () {44        await driver.get(GUINEA_PIG_APP_BANNER_PAGE);45        let el = await driver.elementByLinkText('i am a link to page 3');46        await el.click();47        await spinTitleEquals(driver, 'Another Page: page 3', spinRetries);48      });49      it('should be able to tap on an element after scrolling', async function () {50        await driver.get(GUINEA_PIG_SCROLLABLE_PAGE);51        await driver.execute('mobile: scroll', {direction: 'down'});52        let el = await driver.elementByLinkText('i am a link to page 3');53        await el.click();54        await spinTitleEquals(driver, 'Another Page: page 3', spinRetries);55      });56      describe('with tabs -', function () {57        beforeEach(async function () {58          await driver.get(GUINEA_PIG_PAGE);59        });60        before(async function () {61          await driver.get(GUINEA_PIG_PAGE);62          // open a new tab and go to it63          let el = await driver.elementByLinkText('i am a new window link');64          await el.click();65        });66        it('should be able to tap on an element', async function () {67          await driver.get(GUINEA_PIG_PAGE);68          let el = await driver.elementByLinkText('i am a link to page 3');69          await el.click();70          await spinTitleEquals(driver, 'Another Page: page 3', spinRetries);71          await driver.back();72          // try again, just to make sure73          el = await driver.elementByLinkText('i am a link to page 3');74          await el.click();75          await spinTitleEquals(driver, 'Another Page: page 3', spinRetries);76        });77        it('should be able to tap on an element after scrolling', async function () {78          await driver.get(GUINEA_PIG_SCROLLABLE_PAGE);79          await driver.execute('mobile: scroll', {direction: 'down'});80          let el = await driver.elementByLinkText('i am a link to page 3');81          await el.click();82          await spinTitleEquals(driver, 'Another Page: page 3', spinRetries);83        });84        it('should be able to tap on an element after scrolling, when the url bar is present', async function () {85          await driver.get(GUINEA_PIG_SCROLLABLE_PAGE);86          await driver.execute('mobile: scroll', {direction: 'down'});87          let el = await driver.elementByLinkText('i am a link to page 3');88          await el.click();89          await spinTitleEquals(driver, 'Another Page: page 3', spinRetries);90          // going back will reveal the full url bar91          await driver.back();92          await B.delay(500);93          // make sure we get the correct position again94          el = await driver.elementByLinkText('i am a link to page 3');95          await el.click();96          await spinTitleEquals(driver, 'Another Page: page 3', spinRetries);97        });98      });99    });100  }101  // Full tests take a *long* time so skip unless necessary to check conversion102  // // xcode 8.3103  // const deviceNames = ['iPhone 5', 'iPhone 5s',104  //                    'iPhone 6', 'iPhone 6 Plus',105  //                    'iPhone 6s', 'iPhone 6s Plus',106  //                    'iPhone 7', 'iPhone 7 Plus',107  //                    'iPhone SE',108  //                    'iPad Air', 'iPad Air 2',109  //                    'iPad (5th generation)',110  //                    'iPad Pro (9.7-inch)', 'iPad Pro (12.9-inch)', 'iPad Pro (12.9-inch) (2nd generation)', 'iPad Pro (10.5-inch)'];...

Full Screen

Full Screen

helpers.js

Source:helpers.js Github

copy

Full Screen

1import { retry, retryInterval } from 'asyncbox';2import { HOST, PORT } from '../helpers/session';3import { util } from 'appium-support';4const TEST_END_POINT = `http://${process.env.REAL_DEVICE ? util.localIp() : HOST}:${PORT}/test`;5const GUINEA_PIG_PAGE = `${TEST_END_POINT}/guinea-pig`;6const GUINEA_PIG_FRAME_PAGE = `${TEST_END_POINT}/frameset.html`;7const GUINEA_PIG_IFRAME_PAGE = `${TEST_END_POINT}/iframes.html`;8const PHISHING_END_POINT = TEST_END_POINT.replace('http://', 'http://foo:bar@');9async function spinTitle (driver) {10  let title = await retry(10, async () => {11    let title = await driver.title();12    if (!title) {13      throw new Error('did not get page title');14    }15    return title;16  });17  return title;18}19async function spinTitleEquals (driver, expectedTitle, tries = 90) {20  await retry(tries, async () => {21    let title = await spinTitle(driver);22    if (title !== expectedTitle) {23      throw new Error(`Could not find expected title. Found: '${title}'`);24    }25  });26}27async function spinWait (fn, waitMs = 10000, intMs = 500) {28  let tries = parseInt(waitMs / intMs, 10);29  await retryInterval(tries, intMs, fn);30}31export { spinTitle, spinTitleEquals, spinWait, GUINEA_PIG_PAGE,...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var webdriverio = require('webdriverio');2var options = {3  desiredCapabilities: {4  }5};6var client = webdriverio.remote(options);7  .init()8  .setValue('input[name="q"]', 'webdriverio')9  .click('input[value="Google Search"]')10  .getTitle().then(function(title) {11    console.log('Title is: ' + title);12  })13  .end();14var webdriverio = require('webdriverio');15var options = {16  desiredCapabilities: {17  }18};19var client = webdriverio.remote(options);20  .init()21  .setValue('input[name="q"]', 'webdriverio')22  .click('input[value="Google Search"]')23  .spinTitleEquals('WebdriverIO (Software) at DuckDuckGo', 5000).then(function(title) {24    console.log('Title is: ' + title);25  })26  .end();27var webdriverio = require('webdriverio');28var options = {29  desiredCapabilities: {30  }31};32var client = webdriverio.remote(options);33  .init()34  .setValue('input

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var asserters = wd.asserters;3driver.init({4}).then(function () {5    return driver.waitForElementByAccessibilityId('SpinTitle', asserters.spinTitleEquals('Spin Title'));6});7var wd = require('wd');8var asserters = wd.asserters;9driver.init({10}).then(function () {11    return driver.waitForElementByAccessibilityId('SpinTitle', asserters.spinTitleContains('Spin'));12});13var wd = require('wd');14var asserters = wd.asserters;15driver.init({16}).then(function () {17    return driver.waitForElementByAccessibilityId('SpinValue', asserters.spinValueEquals('0'));18});19var wd = require('wd');20var asserters = wd.asserters;21driver.init({22}).then(function () {

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var assert = require('assert');3var caps = {4};5var driver = wd.promiseChainRemote('localhost', 4723);6    .init(caps)7    .spinTitleEquals('Test App', 10000)8    .then(function (title) {9        console.log(title);10    })11    .fin(function () { return driver.quit(); })12    .done();

Full Screen

Using AI Code Generation

copy

Full Screen

1const wd = require('wd');2const assert = require('assert');3const { assertSpinTitleEquals } = require('wd/lib/commands');4  .init({5  })6  .then(() => {7    return driver.spinTitleEquals('My App', 10000);8  })9  .then(() => {10    console.log('App launched successfully');11  })12  .catch((error) => {13    console.log('Error occurred: ' + error);14  });15const assertSpinTitleEquals = async function (title, timeout = 5000) {16  const spinTitleEquals = async function (title) {17    const el = await this.findNativeElementOrElements('accessibility id', 'test-Label', false);18    if (el) {19      const label = await this.getAttribute('label', el);20      if (label === title) {21        return true;22      }23    }24    return false;25  };26  await this.waitForCondition(spinTitleEquals.bind(this, title), {27    errorMsg: `The title of the current screen was not '${title}' after ${timeout}ms`,28  });29};30module.exports = { assertSpinTitleEquals };31commands.findNativeElementOrElements = async function (strategy, selector, mult) {32  const isWebContext = this.isWebContext();33  if (isWebContext) {34    return await this.findNativeElementOrElements(strategy, selector, mult);35  }36  const shouldUseHelpers = this.opts.useHelpers && !this.isWebContext();37  if (shouldUseHelpers) {38    return await this.findNativeElementOrElements(strategy, selector, mult);39  }40  return await this.findNativeElementOrElements(strategy, selector, mult);41};

Full Screen

Using AI Code Generation

copy

Full Screen

1const assert = require('assert');2const wd = require('wd');3const { spinTitleEquals } = require('wd/build/lib/utils');4const { execSync } = require('child_process');5const PORT = 4723;6const config = {7};8async function main() {9  const driver = await wd.promiseChainRemote('localhost', PORT);10  await driver.init(config);11  await driver.setImplicitWaitTimeout(10000);12  await driver.elementByAccessibilityId('Action Sheets').click();13  await driver.elementByAccessibilityId('Okay / Cancel').click();14  await driver.elementByAccessibilityId('Okay').click();15  await spinTitleEquals(driver, 'UICatalog');16  console.log('Test Passed');17}18main();19const wd = require('wd');20const B = wd.Promise;21function spinTitleEquals(driver, title, timeoutMs = 10000) {22  const start = Date.now();23  const spin = () => {24    return B.resolve(driver.title())25      .then((currentTitle) => {26        if (currentTitle === title) {27          return currentTitle;28        } else if (Date.now() - start > timeoutMs) {29          throw new Error(`Spin timed out after ${timeoutMs}ms`);30        } else {31          return B.delay(100).then(spin);32        }33      });34  };35  return spin();36}37module.exports = { spinTitleEquals };

Full Screen

Using AI Code Generation

copy

Full Screen

1const wd = require('wd');2const assert = require('assert');3const { assert } = require('chai');4const PORT = 4723;5const config = {6};7const driver = wd.promiseChainRemote('localhost', PORT);8  .init(config)9  .then(() => {10    return driver.spinTitleEquals('My App', 10);11  })12  .then((result) => {13    assert.equal(result, true);14  })15  .catch((err) => {16    console.log(err);17  });

Full Screen

Using AI Code Generation

copy

Full Screen

1const wdio = require("webdriverio");2const opts = {3  capabilities: {4  }5};6(async function() {7  const client = await wdio.remote(opts);8  await client.spinTitleEquals("My Title", 10000);9  await client.deleteSession();10})();11import { spinTitleEquals } from "webdriverio";12export default async function spinTitleEquals(13): Promise<boolean> {14  return await this.waitUntil(15    () => {16      return this.getTitle().then((currentTitle: string) => {17        return currentTitle === title;18      });19    },20    {21      timeoutMsg: `title is not equal to ${title}`22    }23  );24}

Full Screen

Using AI Code Generation

copy

Full Screen

1var wd = require('wd');2var desired = require('./desired');3var asserters = require('wd').asserters;4.init(desired)5.waitForElementByCssSelector("input[name='q']", asserters.isDisplayed, 10000)6.elementByCssSelector("input[name='q']")7.sendKeys("Appium")8.elementByCssSelector("input[name='btnK']")9.click()10.waitForElementByCssSelector("h3.r a", asserters.isDisplayed, 10000)11.elementByCssSelector("h3.r a")12.getAttribute("href")13.then(function(text) {14  console.log("The first search result is: " + text);15})16.elementByCssSelector("h3.r a")17.click()18.waitForElementByCssSelector("h1", asserters.titleIs("Appium - Google Search"), 10000)19.elementByCssSelector("h1")20.text()21.then(function(text) {22  console.log("The title is: " + text);23})24.elementByCssSelector("h1")25.getAttribute("textContent")26.then(function(text) {27  console.log("The title is: " + text);28})29.elementByCssSelector("h1")30.getAttribute("innerHTML")31.then(function(text) {32  console.log("The title is: " + text);33})34.elementByCssSelector("h1")35.getAttribute("innerText")36.then(function(text) {37  console.log("The title is: " + text);38})39.elementByCssSelector("h1")40.getAttribute("outerText")41.then(function(text) {42  console.log("The title is: " + text);43})44.elementByCssSelector("h1")45.getAttribute("outerHTML")46.then(function(text) {47  console.log("The title is: " + text);48})49.elementByCssSelector("h1")50.getAttribute("innerHTML")51.then(function(text) {52  console.log("The title is: " + text);53})54.quit()

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 Xcuitest Driver automation tests on LambdaTest cloud grid

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

Sign up Free
_

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful