wdio-wait-for is a Node.js library for WebdriverIO that supplies a set of common conditions that provides functionalities to wait for certain conditions till a defined task is complete.
To use wdio-wait-for
in your project, run:
npm i -D wdio-wait-for
If you use Yarn, run:
yarn add --dev wdio-wait-for
- alertIsPresent
- numberOfWindowsToBe
- titleContains
- titleIs
- urlContains
- urlIs
- elementToBeClickable
- elementToBeEnabled
- elementToBeSelected
- invisibilityOf
- numberOfElementsToBe
- numberOfElementsToBeLessThan
- numberOfElementsToBeMoreThan
- presenceOf
- sizeOfElementToBe
- stalenessOf
- textToBePresentInElement
- textToBePresentInElementValue
- visibilityOf
- and
- not
- or
If you are using WebdriverIO v7 and lower with CommonJS you have to use require
to import the package, e.g.:
// import all methods
const EC = require('wdio-wait-for');
browser.waitUntil(EC.alertIsPresent(), { timeout: 5000, timeoutMsg: 'Failed, after waiting for the alert to be present' })
// import specific method
const { alertIsPresent } = require('wdio-wait-for');
browser.waitUntil(alertIsPresent(), { timeout: 5000, timeoutMsg: 'Failed, after waiting for the alert to be present' })
With TypeScript or WebdriverIO v8 and upwards you can use the import
statement to import either all helper methods, e.g.:
// import all methods
import * as EC from 'wdio-wait-for';
browser.waitUntil(EC.elementToBeEnabled('input'), { timeout: 5000, timeoutMsg: 'Failed, after waiting for the element to be enabled' })
or just specific ones, e.g.:
// import specific method
import { elementToBeEnabled } from 'wdio-wait-for';
browser.waitUntil(elementToBeEnabled('input'), { timeout: 5000, timeoutMsg: 'Failed, after waiting for the element to be enabled' })
This code code snippet shows how to use conditions
browser.waitUntil(alertIsPresent(), { timeout: 5000, timeoutMsg: 'Failed, after waiting for the alert to be present' })
This code code snippet shows how to use conditions to wait e.g. on a certain number of elements to exist:
browser.waitUntil(numberOfElementsToBe('.links', 2), { timeout: 5000, timeoutMsg: 'Failed, after waiting for the 2 elements' })
Yevhen Laichenkov - elaichenkov@gmail.com
Christian Bromann - mail@bromann.dev