Best JavaScript code snippet using webdriverio-monorepo
test-load-more-manual.js
Source:test-load-more-manual.js
1/**2 * Copyright 2019 The AMP HTML Authors. All Rights Reserved.3 *4 * Licensed under the Apache License, Version 2.0 (the "License");5 * you may not use this file except in compliance with the License.6 * You may obtain a copy of the License at7 *8 * http://www.apache.org/licenses/LICENSE-2.09 *10 * Unless required by applicable law or agreed to in writing, software11 * distributed under the License is distributed on an "AS-IS" BASIS,12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16const pageWidth = 400;17const pageHeight = 600;18describes.endtoend('AMP list load-more=manual', {19 testUrl: 'http://localhost:8000/test/manual/amp-list/' +20 'load-more-manual.amp.html',21 experiments: ['amp-list-load-more'],22 initialRect: {width: pageWidth, height: pageHeight},23 // TODO(cathyxz, cvializ): figure out why 'viewer' only shows 'FALLBACK'24 environments: ['single'],25}, async env => {26 let controller;27 beforeEach(async() => {28 controller = env.controller;29 });30 it('should render correctly', async() => {31 const listItems = await controller.findElements('.item');32 await expect(listItems).to.have.length(2);33 const seeMore = await controller.findElement('[load-more-button]');34 // Can we assert its CSS be visible and display block?35 await expect(seeMore).to.be.ok;36 await expect(controller.getElementCssValue(seeMore, 'visibility'))37 .to.equal('visible');38 await expect(controller.getElementCssValue(seeMore, 'display'))39 .to.equal('block');40 const loader = await controller.findElement('[load-more-loading]');41 await expect(loader).to.be.ok;42 await expect(controller.getElementCssValue(loader, 'display'))43 .to.equal('none');44 const failedIndicator = await controller.findElement('[load-more-failed]');45 await expect(failedIndicator).to.be.ok;46 await expect(controller.getElementCssValue(failedIndicator, 'display'))47 .to.equal('none');48 await controller.takeScreenshot('screenshots/amp-list-load-more.png');49 });50 it('should load more items on click', async() => {51 let listItems = await controller.findElements('.item');52 await expect(listItems).to.have.length(2);53 const seeMore = await controller.findElement('[load-more-button]');54 await controller.click(seeMore);55 const fourthItem = await controller.findElement('div.item:nth-child(4)');56 await expect(fourthItem).to.be.ok;57 listItems = await controller.findElements('.item');58 await expect(listItems).to.have.length(4);59 // TODO(cathyxz): Figure out why the button is not visible after60 // clicking load more the first time.61 await controller.click(seeMore);62 const sixthItem = await controller.findElement('div.item:nth-child(6)');63 await expect(sixthItem).to.be.ok;64 listItems = await controller.findElements('.item');65 await expect(listItems).to.have.length(6);66 });67 it('should show load-more-end when done', async() => {68 const seeMore = await controller.findElement('[load-more-button]');69 await controller.click(seeMore);70 await controller.findElement('div.item:nth-child(4)');71 // TODO(cathyxz): Figure out why the button is not visible after72 // clicking load more the first time.73 await controller.click(seeMore);74 await controller.findElement('div.item:nth-child(6)');75 const loadMoreEnd = await controller.findElement('[load-more-end]');76 await expect(controller.getElementCssValue(loadMoreEnd, 'display'))77 .to.equal('block');78 await expect(controller.getElementCssValue(seeMore, 'display'))79 .to.equal('none');80 const loader = await controller.findElement('[load-more-loading]');81 await expect(controller.getElementCssValue(loader, 'display'))82 .to.equal('none');83 });...
test-mixed-length-arrows.js
Source:test-mixed-length-arrows.js
1/**2 * Copyright 2021 The AMP HTML Authors. All Rights Reserved.3 *4 * Licensed under the Apache License, Version 2.0 (the "License");5 * you may not use this file except in compliance with the License.6 * You may obtain a copy of the License at7 *8 * http://www.apache.org/licenses/LICENSE-2.09 *10 * Unless required by applicable law or agreed to in writing, software11 * distributed under the License is distributed on an "AS-IS" BASIS,12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16import {getNextArrow, getPrevArrow} from './helpers';17describes.endtoend(18 'amp-base-carousel - mixed length carousel arrows',19 {20 version: '0.1',21 fixture: 'amp-base-carousel/no-arrows.amp.html',22 environments: ['single'],23 },24 async function (env) {25 let controller;26 let prevArrow;27 let nextArrow;28 /**29 * Attach an event listener to page to capture the 'slideChange' event.30 * If given a selector, click on it to fire the event being listened for.31 * @return {!Promise}32 */33 function slideChangeEventAfterClicking(opt_selector) {34 return controller.evaluate((opt_selector) => {35 return new Promise((resolve) => {36 document.addEventListener(37 'slideChange',38 (e) => resolve(e.data),39 {once: true} // Remove listener after first invocation40 );41 if (opt_selector) {42 document.querySelector(opt_selector).click();43 }44 });45 }, opt_selector);46 }47 beforeEach(async () => {48 controller = env.controller;49 nextArrow = await getNextArrow(controller);50 prevArrow = await getPrevArrow(controller);51 });52 it('should not have arrows when at start or end', async () => {53 await expect(54 controller.getElementCssValue(prevArrow, 'opacity')55 ).to.equal('0');56 await expect(57 controller.getElementCssValue(nextArrow, 'opacity')58 ).to.equal('1');59 // click next60 await slideChangeEventAfterClicking(61 '.i-amphtml-base-carousel-arrow-next-slot :first-child'62 );63 await expect(64 controller.getElementCssValue(prevArrow, 'opacity')65 ).to.equal('1');66 await expect(67 controller.getElementCssValue(nextArrow, 'opacity')68 ).to.equal('0');69 // click back70 await slideChangeEventAfterClicking(71 '.i-amphtml-base-carousel-arrow-prev-slot :first-child'72 );73 await expect(74 controller.getElementCssValue(prevArrow, 'opacity')75 ).to.equal('0');76 await expect(77 controller.getElementCssValue(nextArrow, 'opacity')78 ).to.equal('1');79 });80 }...
test-arrows-in-lightbox.js
Source:test-arrows-in-lightbox.js
1/**2 * Copyright 2021 The AMP HTML Authors. All Rights Reserved.3 *4 * Licensed under the Apache License, Version 2.0 (the "License");5 * you may not use this file except in compliance with the License.6 * You may obtain a copy of the License at7 *8 * http://www.apache.org/licenses/LICENSE-2.09 *10 * Unless required by applicable law or agreed to in writing, software11 * distributed under the License is distributed on an "AS-IS" BASIS,12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16import {getNextArrow, getPrevArrow} from './helpers';17describes.endtoend(18 'amp base carousel in lightbox',19 {20 fixture: 'amp-base-carousel/arrows-in-lightbox.amp.html',21 environments: ['single'],22 },23 async (env) => {24 let controller;25 let nextArrow;26 let prevArrow;27 beforeEach(async () => {28 controller = env.controller;29 });30 it('should open with both arrows', async () => {31 // Click on image 232 const secondImage = await controller.findElement('#second');33 await controller.click(secondImage);34 // Wait for lightbox to load the carousel and image35 const lightbox = await controller.findElement('#lightbox1');36 await expect(await controller.getElementProperty(lightbox, 'style')).to37 .not.be.null;38 // Both arrows should be showing39 prevArrow = await getPrevArrow(controller);40 nextArrow = await getNextArrow(controller);41 await expect(42 controller.getElementCssValue(prevArrow, 'opacity')43 ).to.equal('1');44 await expect(45 controller.getElementCssValue(nextArrow, 'opacity')46 ).to.equal('1');47 });48 it('should open with one arrow', async () => {49 // Click on last image50 const lastImage = await controller.findElement('#fourth');51 await controller.click(lastImage);52 // Wait for lightbox to load the carousel and image53 const lightbox = await controller.findElement('#lightbox1');54 await expect(await controller.getElementProperty(lightbox, 'style')).to55 .not.be.null;56 // Only prev arrow should be showing since non-looping carousel is on the last slide.57 prevArrow = await getPrevArrow(controller);58 nextArrow = await getNextArrow(controller);59 await expect(60 controller.getElementCssValue(prevArrow, 'opacity')61 ).to.equal('1');62 await expect(63 controller.getElementCssValue(nextArrow, 'opacity')64 ).to.equal('0');65 });66 }...
test-load-more-auto.js
Source:test-load-more-auto.js
1/**2 * Copyright 2019 The AMP HTML Authors. All Rights Reserved.3 *4 * Licensed under the Apache License, Version 2.0 (the "License");5 * you may not use this file except in compliance with the License.6 * You may obtain a copy of the License at7 *8 * http://www.apache.org/licenses/LICENSE-2.09 *10 * Unless required by applicable law or agreed to in writing, software11 * distributed under the License is distributed on an "AS-IS" BASIS,12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16const pageWidth = 800;17const pageHeight = 420;18describes.endtoend('AMP list load-more=auto', {19 testUrl: 'http://localhost:8000/test/manual/amp-list/load-more-auto.amp.html',20 experiments: ['amp-list-load-more'],21 initialRect: {width: pageWidth, height: pageHeight},22 // TODO(cathyxz, cvializ): figure out why 'viewer' only shows 'FALLBACK'23 environments: ['single'],24}, env => {25 let controller;26 beforeEach(async() => {27 controller = env.controller;28 });29 it('should render correctly', async() => {30 const listItems = await controller.findElements('.item');31 await expect(listItems).to.have.length(2);32 const loader = await controller.findElement('[load-more-loading]');33 await expect(loader).to.be.ok;34 await expect(controller.getElementCssValue(loader, 'display'))35 .to.equal('none');36 const failedIndicator = await controller.findElement('[load-more-failed]');37 await expect(failedIndicator).to.be.ok;38 await expect(controller.getElementCssValue(failedIndicator, 'display'))39 .to.equal('none');40 const seeMore = await controller.findElement('[load-more-button]');41 await expect(seeMore).to.be.ok;42 await expect(controller.getElementCssValue(seeMore, 'visibility'))43 .to.equal('visible');44 await expect(controller.getElementCssValue(seeMore,'display'))45 .to.equal('block');46 await controller.takeScreenshot('screenshots/amp-list-load-more.png');47 });48 it('should load more items on scroll', async() => {49 let listItems = await controller.findElements('.item');50 await expect(listItems).to.have.length(2);51 const article = await controller.findElement('html');52 await controller.scrollBy(article, {top: 50});53 const fourthItem = await controller.findElement('div.item:nth-child(4)');54 await expect(fourthItem).to.be.ok;55 listItems = await controller.findElements('.item');56 await expect(listItems).to.have.length(4);57 });...
elementIdCssProperty.js
Source:elementIdCssProperty.js
1'use strict';2const addElementIdCssProperty = require('lib/commands/protocol/elementIdCssProperty');3const {mkBrowser_} = require('../../../utils');4describe('"elementIdCssProperty" command', () => {5 it('should add "elementIdCssProperty" command', () => {6 const browser = mkBrowser_();7 addElementIdCssProperty(browser);8 assert.calledOnceWithExactly(browser.addCommand, 'elementIdCssProperty', sinon.match.func);9 });10 it('should call "getElementCSSValue" with passed args', async () => {11 const browser = mkBrowser_();12 addElementIdCssProperty(browser);13 await browser.elementIdCssProperty('element-id', 'some-css-property');14 assert.calledOnceWithExactly(browser.getElementCSSValue, 'element-id', 'some-css-property');15 });...
getElementCSSValue.js
Source:getElementCSSValue.js
...5exports.default = getElementCSSValue;6var _getElementCSSValue = _interopRequireDefault(require("../scripts/getElementCSSValue"));7var _utils = require("../utils");8function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }9async function getElementCSSValue({10 elementId,11 propertyName12}) {13 const elementHandle = this.elementStore.get(elementId);14 if (!elementHandle) {15 throw (0, _utils.getStaleElementError)(elementId);16 }17 const page = this.getPageHandle(true);18 return page.$eval('html', _getElementCSSValue.default, elementHandle, propertyName);...
faq.js
Source:faq.js
1describe("Homepage FAQ Accordion", function(){2 it("should show first section on page load", function(){3 browser.url("./");4 // browser.debug()5 var firstHeight = browser.getElementCSSValue(".accordion .accordion-item:first-child .accordion-content");6 console.log(firstHeight);7 expect(firstHeight.parsed.value).to.be.greaterThan(0);8 } );9 it("should now how other content",function(){10 var secondDisplay = browser.getElementCSSValue(".accordion .accordion-item:nth-of-type(2) .accordion-content", "display");11 console.log(secondDisplay);12 expect(secondDisplay.parsed.value).to.equal(0);13 })...
get-element-css-value.js
Source:get-element-css-value.js
1import Endpoint from '..'2class GetElementCSSValue extends Endpoint {3 static create (req) {4 return new GetElementCSSValue([req.params.id, req.params.propertyName])5 }6}7GetElementCSSValue.method = 'get'8GetElementCSSValue.url = '/session/:sid/element/:id/css/:propertyName'...
Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = {3 desiredCapabilities: {4 }5};6var client = webdriverio.remote(options);7 .init()8 .getTitle().then(function(title) {9 console.log('Title was: ' + title);10 })11 .getCssProperty('div#hplogo','background-color').then(function(color) {12 console.log('background-color was: ' + color);13 })14 .end();15 at elementIdCssProperty("0.6900116722650871-1", "background-color") - index.js:339:1216 .init()17 .getTitle().then(function(title) {18 console.log('Title was: ' + title);19 })20 .getCssProperty('div#hplogo','background-color').then(function(color) {21 console.log('background-color was: ' + color);22 })23 .end();
Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = { desiredCapabilities: { browserName: 'chrome' } };3var client = webdriverio.remote(options);4.init()5.getCssProperty('#hplogo', 'height', function(err, result) {6console.log(result.value);7})8.end();
Using AI Code Generation
1var webdriverio = require('webdriverio');2var client = webdriverio.remote({ desiredCapabilities: { browserName: 'chrome' } });3 .init()4 .getElementCSSValue('a', 'color', function(err, result) {5 console.log(result);6 })7 .end();8{ state: 'success',9 value: 'rgba(51, 51, 51, 1)',
Using AI Code Generation
1describe('webdriver.io page', () => {2 it('should have the right title', () => {3 const title = browser.getTitle()4 console.log('Title was: ' + title)5 const fontSize = browser.getElementCSSValue('#tsf > div:nth-child(2) > div > div.FPdoLc.tfB0Bf > center > input.gNO89b', 'font-size');6 console.log(fontSize);7 browser.pause(3000)8 })9})
Using AI Code Generation
1it('should get the value of an element', () => {2 const elem = $('h1');3 const value = elem.getCSSProperty('color');4 console.log(value);5});6it('should get the value of an element', () => {7 const elem = $('h1');8 const value = elem.getCSSProperty('color');9 console.log(value);10});11it('should get the value of an element', () => {12 const elem = $('h1');13 const value = elem.getCSSProperty('color');14 console.log(value);15});16it('should get the value of an element', () => {17 const elem = $('h1');18 const value = elem.getCSSProperty('color');19 console.log(value);20});21it('should get the value of an element', () => {22 const elem = $('h1');23 const value = elem.getCSSProperty('color');24 console.log(value);25});26it('should get the value of an
Using AI Code Generation
1describe('Get Element CSS Value', function() {2 it('should get the CSS Value of an element', function () {3 const borderColor = browser.getElementCSSValue('#contact-us', 'border-top-color');4 console.log(borderColor);5 });6});7"rgb(0, 0, 0)"8describe('Get CSS Property', function() {9 it('should get the CSS Property of an element', function () {10 const borderColor = browser.getCSSProperty('#contact-us', 'border-top-color');11 console.log(borderColor);12 });13});14{15 "value": "rgb(0,0,0)",16 "parsed": {17 }18}19describe('Get CSS Property', function() {20 it('should get the CSS Property of an element', function () {21 const borderColor = browser.getCSSProperty('#contact-us', 'border-top-color');22 console.log(borderColor.value);23 });24});25"rgb(0, 0, 0)"26describe('Get CSS Property', function() {27 it('should get the CSS Property of an element', function () {28 const borderColor = browser.getCSSProperty('#contact-us', 'border-top-color');29 console.log(borderColor.parsed);30 });31});32{
Using AI Code Generation
1describe('Demo Test', function() {2 it('should get the value of the element', function() {3 browser.pause(3000);4 var value = browser.getElementCSSValue('input[name="q"]', 'font-size');5 console.log(value);6 });7});8{ state: 'success',9 status: 0 }
Wondering what could be a next-gen browser and mobile test automation framework that is also simple and concise? Yes, that’s right, it's WebdriverIO. Since the setup is very easy to follow compared to Selenium testing configuration, you can configure the features manually thereby being the center of attraction for automation testing. Therefore the testers adopt WedriverIO to fulfill their needs of browser testing.
Learn to run automation testing with WebdriverIO tutorial. Go from a beginner to a professional automation test expert with LambdaTest WebdriverIO tutorial.
Running Your First Automation Script - Learn the steps involved to execute your first Test Automation Script using WebdriverIO since the setup is very easy to follow and the features can be configured manually.
Selenium Automation With WebdriverIO - Read more about automation testing with WebdriverIO and how it supports both browsers and mobile devices.
Browser Commands For Selenium Testing - Understand more about the barriers faced while working on your Selenium Automation Scripts in WebdriverIO, the ‘browser’ object and how to use them?
Handling Alerts & Overlay In Selenium - Learn different types of alerts faced during automation, how to handle these alerts and pops and also overlay modal in WebdriverIO.
How To Use Selenium Locators? - Understand how Webdriver uses selenium locators in a most unique way since having to choose web elements very carefully for script execution is very important to get stable test results.
Deep Selectors In Selenium WebdriverIO - The most popular automation testing framework that is extensively adopted by all the testers at a global level is WebdriverIO. Learn how you can use Deep Selectors in Selenium WebdriverIO.
Handling Dropdown In Selenium - Learn more about handling dropdowns and how it's important while performing automated browser testing.
Automated Monkey Testing with Selenium & WebdriverIO - Understand how you can leverage the amazing quality of WebdriverIO along with selenium framework to automate monkey testing of your website or web applications.
JavaScript Testing with Selenium and WebdriverIO - Speed up your Javascript testing with Selenium and WebdriverIO.
Cross Browser Testing With WebdriverIO - Learn more with this step-by-step tutorial about WebdriverIO framework and how cross-browser testing is done with WebdriverIO.
Get 100 minutes of automation test minutes FREE!!