Web API (Unified)
This page is generated from docs/webapi and helper docblocks.
Methods
Section titled “Methods”I.amOnPage()
Section titled “I.amOnPage()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Opens a web page in a browser. Requires relative or absolute url.
If url starts with /, opens a web page of a site defined in url config parameter.
I.amOnPage('/'); // opens main page of websiteI.amOnPage('https://github.com'); // opens githubI.amOnPage('/login'); // opens a login pageParameters
urlstring- url path or global url.
Returns
void- automatically synchronized promise through #recorder
I.appendField()
Section titled “I.appendField()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Appends text to a input field or textarea. Field is located by name, label, CSS or XPath
The third parameter is an optional context (CSS or XPath locator) to narrow the search.
I.appendField('#myTextField', 'appended');// typing secretI.appendField('password', secret('123456'));// within a contextI.appendField('name', 'John', '.form-container');Parameters
fieldCodeceptJS.LocatorOrString- located by label|name|CSS|XPath|strict locatorvaluestring- text value to append.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.attachFile()
Section titled “I.attachFile()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Attaches a file to element located by label, name, CSS or XPath Path to file is relative current codecept directory (where codecept.conf.ts or codecept.conf.js is located). File will be uploaded to remote system (if tests are running remotely).
The third parameter is an optional context (CSS or XPath locator) to narrow the search.
I.attachFile('Avatar', 'data/avatar.jpg');I.attachFile('form input[name=avatar]', 'data/avatar.jpg');// within a contextI.attachFile('Avatar', 'data/avatar.jpg', '.form-container');If the locator points to a non-file-input element (e.g., a dropzone area), the file will be dropped onto that element using drag-and-drop events.
I.attachFile('#dropzone', 'data/avatar.jpg');Parameters
locatorCodeceptJS.LocatorOrString- field located by label|name|CSS|XPath|strict locator.pathToFilestring- local file path relative to codecept.conf.ts or codecept.conf.js config file.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
Appium: not tested
Puppeteer
⚠ There is an issue with file upload in Puppeteer 2.1.0 & 2.1.1, downgrade to 2.0.0 if you face it.
I.blur()
Section titled “I.blur()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Remove focus from a text input, button, etc. Calls blur on the element.
Examples:
I.blur('.text-area')//element `#product-tile` is focusedI.see('#add-to-cart-btn');I.blur('#product-tile')I.dontSee('#add-to-cart-btn');Parameters
locatorCodeceptJS.LocatorOrString- field located by label|name|CSS|XPath|strict locator.[options]any- Playwright only: Additional options for available options object as 2nd argument.
Returns
void- automatically synchronized promise through #recorder
I.checkOption()
Section titled “I.checkOption()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Selects a checkbox or radio button. Element is located by label or name or CSS or XPath.
The second parameter is an optional context (CSS or XPath locator) to narrow the search.
I.checkOption('#agree');I.checkOption('I Agree to Terms and Conditions');I.checkOption('agree', '//form');Parameters
fieldCodeceptJS.LocatorOrString- checkbox located by label | name | CSS | XPath | strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Additional options for check available as 3rd argument.
Examples:
// click on element at positionI.checkOption('Agree', '.signup', { position: { x: 5, y: 5 } })⚠️ To avoid flakiness, option
force: trueis set by default
WebDriver
Appium: not tested
I.clearCookie()
Section titled “I.clearCookie()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Clears a cookie by name, if none provided clears all cookies.
I.clearCookie();I.clearCookie('test');Parameters
[cookie=null]?string- (optional,nullby default) cookie name
I.clearField()
Section titled “I.clearField()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Clears a <textarea> or text <input> element’s value.
The second parameter is an optional context (CSS or XPath locator) to narrow the search.
I.clearField('Email');I.clearField('user[email]');I.clearField('#email');// within a contextI.clearField('Email', '.form-container');Parameters
editableLocatorOrString- field located by label|name|CSS|XPath|strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder.
I.click()
Section titled “I.click()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Perform a click on a link or a button, given by a locator. If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. For buttons, the “value” attribute, “name” attribute, and inner text are searched. For links, the link text is searched. For images, the “alt” attribute and inner text of any parent links are searched.
If no locator is provided, defaults to clicking the body element ('//body').
The second parameter is a context (CSS or XPath locator) to narrow the search.
// click body element (default)I.click();// simple linkI.click('Logout');// button of formI.click('Submit');// CSS buttonI.click('#form input[type=submit]');// XPathI.click('//form/*[@type=submit]');// link in contextI.click('Logout', '#nav');// using strict locatorI.click({css: 'nav a.login'});Parameters
[locator='//body']CodeceptJS.LocatorOrString- (optional,'//body'by default) clickable link or button located by text, or any element located by CSS|XPath|strict locator.[context=null]?CodeceptJS.LocatorOrString | null- (optional,nullby default) element to search in CSS|XPath|Strict locator.
Returns
void- automatically synchronized promise through #recorder
- ARIA locators are supported. Update examples to include the new locator type where relevant.
I.click({ aria: "Select" });I.click("Select");
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
In WebDriver, click can only happen on an actionable element. Use specific locators and wait for element readiness when needed.
I.clickLink()
Section titled “I.clickLink()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Performs a click on a link and waits for navigation before moving on.
I.clickLink('Logout', '#nav');Parameters
locatorCodeceptJS.LocatorOrString- clickable link or button located by text, or any element located by CSS|XPath|strict locator[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element to search in CSS|XPath|Strict locator
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Clicks link and waits for navigation (deprecated)
Puppeteer
This action supports React locators
I.closeCurrentTab()
Section titled “I.closeCurrentTab()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Close current tab.
I.closeCurrentTab();Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Close current tab and switches to previous.
I.closeCurrentTab();Puppeteer
Close current tab and switches to previous.
I.closeCurrentTab();I.closeOtherTabs()
Section titled “I.closeOtherTabs()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Close all tabs except for the current one.
I.closeOtherTabs();Returns
void- automatically synchronized promise through #recorder
I.dontSee()
Section titled “I.dontSee()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Opposite to see. Checks that a text is not present on a page.
Use context parameter to narrow down the search.
I.dontSee('Login'); // assume we are already logged in.I.dontSee('Login', '.nav'); // no login inside .nav elementParameters
textstring- which is not present.[context]CodeceptJS.LocatorOrString- (optional) element located by CSS|XPath|strict locator in which to perfrom search.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.dontSeeCheckboxIsChecked()
Section titled “I.dontSeeCheckboxIsChecked()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Verifies that the specified checkbox is not checked.
I.dontSeeCheckboxIsChecked('#agree'); // located by IDI.dontSeeCheckboxIsChecked('I agree to terms'); // located by labelI.dontSeeCheckboxIsChecked('agree'); // located by nameParameters
fieldCodeceptJS.LocatorOrString- located by label|name|CSS|XPath|strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
Appium: not tested
I.dontSeeCookie()
Section titled “I.dontSeeCookie()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that cookie with given name does not exist.
I.dontSeeCookie('auth'); // no auth cookieParameters
namestring- cookie name.
Returns
void- automatically synchronized promise through #recorder
I.dontSeeCurrentUrlEquals()
Section titled “I.dontSeeCurrentUrlEquals()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that current url is not equal to provided one. If a relative url provided, a configured url will be prepended to it.
I.dontSeeCurrentUrlEquals('/login'); // relative url are okI.dontSeeCurrentUrlEquals('http://mysite.com/login'); // absolute urls are also okParameters
urlstring- value to check.
Returns
void- automatically synchronized promise through #recorder
I.dontSeeElement()
Section titled “I.dontSeeElement()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Opposite to seeElement. Checks that element is not visible (or in DOM)
The second parameter is a context (CSS or XPath locator) to narrow the search.
I.dontSeeElement('.modal'); // modal is not shownI.dontSeeElement('.modal', '#container');Parameters
locatorCodeceptJS.LocatorOrString- located by CSS|XPath|Strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.dontSeeElementInDOM()
Section titled “I.dontSeeElementInDOM()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Opposite to seeElementInDOM. Checks that element is not on page.
I.dontSeeElementInDOM('.nav'); // checks that element is not on page visible or notParameters
locatorCodeceptJS.LocatorOrString- located by CSS|XPath|Strict locator.
Returns
void- automatically synchronized promise through #recorder
I.dontSeeInCurrentUrl()
Section titled “I.dontSeeInCurrentUrl()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that current url does not contain a provided fragment.
Parameters
urlstring- value to check.
Returns
void- automatically synchronized promise through #recorder
I.dontSeeInField()
Section titled “I.dontSeeInField()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that value of input field or textarea doesn’t equal to given value
Opposite to seeInField.
The third parameter is an optional context (CSS or XPath locator) to narrow the search.
I.dontSeeInField('email', 'user@user.com'); // field by nameI.dontSeeInField({ css: 'form input.email' }, 'user@user.com'); // field by CSS// within a contextI.dontSeeInField('Name', 'old_value', '.form-container');Parameters
fieldCodeceptJS.LocatorOrString- located by label|name|CSS|XPath|strict locator.valueCodeceptJS.StringOrSecret- value to check.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
I.dontSeeInSource()
Section titled “I.dontSeeInSource()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that the current page does not contains the given string in its raw source code.
I.dontSeeInSource('<!--'); // no comments in sourceParameters
valuestring- to check.
Returns
void- automatically synchronized promise through #recorder
I.dontSeeInTitle()
Section titled “I.dontSeeInTitle()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that title does not contain text.
I.dontSeeInTitle('Error');Parameters
textstring- value to check.
Returns
void- automatically synchronized promise through #recorder
I.dontSeeTraffic()
Section titled “I.dontSeeTraffic()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Verifies that a certain request is not part of network traffic.
Examples:
I.dontSeeTraffic({ name: 'Unexpected API Call', url: 'https://api.example.com' });I.dontSeeTraffic({ name: 'Unexpected API Call of "user" endpoint', url: /api.example.com.*user/ });Parameters
optsObject- - options when checking the traffic network.opts.namestring- A name of that request. Can be any value. Only relevant to have a more meaningful error message in case of fail.opts.urlstring|RegExp- Expected URL of request in network traffic. Can be a string or a regular expression.
Returns
void- automatically synchronized promise through #recorder
I.doubleClick()
Section titled “I.doubleClick()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Performs a double-click on an element matched by link|button|label|CSS or XPath. Context can be specified as second parameter to narrow search.
I.doubleClick('Edit');I.doubleClick('Edit', '.actions');I.doubleClick({css: 'button.accept'});I.doubleClick('.btn.edit');Parameters
locatorCodeceptJS.LocatorOrString- clickable link or button located by text, or any element located by CSS|XPath|strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element to search in CSS|XPath|Strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.downloadFile()
Section titled “I.downloadFile()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Not supported | Not supported | Supported |
Performs a download file on an element matched by link|button|CSS or XPath. File is downloaded by default to output folder. If no custom file name is provided, the default name will be used
I.downloadFile('td[class="text-right file-link"] a', 'thisIsCustomName');Parameters
locatorCodeceptJS.LocatorOrString- clickable link or button located by CSS|XPath locator.filestring- custom file name.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This method is deprecated.
Please use handleDownloads() instead.
I.dragAndDrop()
Section titled “I.dragAndDrop()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Drag an item to a destination element.
I.dragAndDrop('#dragHandle', '#container');Parameters
srcElementLocatorOrString- located by CSS|XPath|strict locator.destElementLocatorOrString- located by CSS|XPath|strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
// specify coordinates for source positionI.dragAndDrop('img.src', 'img.dst', { sourcePosition: {x: 10, y: 10} })When no option is set, custom drag and drop would be used, to use the dragAndDrop API from Playwright, please set options, for example
force: true
WebDriver
Appium: not tested
I.dragSlider()
Section titled “I.dragSlider()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Drag the scrubber of a slider to a given position For fuzzy locators, fields are matched by label text, the “name” attribute, CSS, and XPath.
I.dragSlider('#slider', 30);I.dragSlider('#slider', -70);Parameters
locatorCodeceptJS.LocatorOrString- located by label|name|CSS|XPath|strict locator.offsetXnumber- position to drag.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.executeAsyncScript()
Section titled “I.executeAsyncScript()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Not supported | Supported | Supported |
Executes async script on page. Provided function should execute a passed callback (as first argument) to signal it is finished.
Example: In Vue.js to make components completely rendered we are waiting for nextTick.
I.executeAsyncScript(function(done) { Vue.nextTick(done); // waiting for next tick});By passing value to done() function you can return values.
Additional arguments can be passed as well, while done function is always last parameter in arguments list.
let val = await I.executeAsyncScript(function(url, done) { // in browser context $.ajax(url, { success: (data) => done(data); }}, 'http://ajax.callback.url/');Parameters
fnstring|function- function to be executed in browser context.args...any- to be passed to function.
Returns
Promise<any>- script return value
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
Asynchronous scripts can also be executed with executeScript if a function returns a Promise.
I.executeScript()
Section titled “I.executeScript()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Executes sync script on a page. Pass arguments to function as additional parameters. Will return execution result to a test. In this case you should use async function and await to receive results.
Example with jQuery DatePicker:
// change date of jQuery DatePickerI.executeScript(function() { // now we are inside browser context $('date').datetimepicker('setDate', new Date());});Can return values. Don’t forget to use await to get them.
let date = await I.executeScript(function(el) { // only basic types can be returned return $(el).datetimepicker('getDate').toString();}, '#date'); // passing jquery selectorParameters
fnstring|function- function to be executed in browser context.args...any- to be passed to function.
Returns
Promise<any>- script return value
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Executes a script on the page:
I.executeScript(() => window.alert('Hello world'));Additional parameters of the function can be passed as an object argument:
I.executeScript(({x, y}) => x + y, {x, y});You can pass only one parameter into a function, or you can pass in array or object.
I.executeScript(([x, y]) => x + y, [x, y]);If a function returns a Promise it will wait for its resolution.
WebDriver
Wraps execute command.
Puppeteer
If a function returns a Promise, tt will wait for its resolution.
I.fillField()
Section titled “I.fillField()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Fills a text field or textarea, after clearing its value, with the given string. Field is located by name, label, CSS, or XPath.
The third parameter is an optional context (CSS or XPath locator) to narrow the search.
// by labelI.fillField('Email', 'hello@world.com');// by nameI.fillField('password', secret('123456'));// by CSSI.fillField('form#login input[name=username]', 'John');// or by strict locatorI.fillField({css: 'form#login input[name=username]'}, 'John');// within a contextI.fillField('Name', 'John', '#section2');Parameters
fieldCodeceptJS.LocatorOrString- located by label|name|CSS|XPath|strict locator.valueCodeceptJS.StringOrSecret- text value to fill.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
{{ custom }}
Puppeteer
This action supports React locators
I.flushNetworkTraffics()
Section titled “I.flushNetworkTraffics()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Resets all recorded network requests.
I.flushNetworkTraffics();I.focus()
Section titled “I.focus()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Calls focus on the matching element.
Examples:
I.dontSee('#add-to-cart-btn');I.focus('#product-tile')I.see('#add-to-cart-bnt');Parameters
locatorCodeceptJS.LocatorOrString- field located by label|name|CSS|XPath|strict locator.[options]any- Playwright only: Additional options for available options object as 2nd argument.
Returns
void- automatically synchronized promise through #recorder
I.forceClick()
Section titled “I.forceClick()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Perform an emulated click on a link or a button, given by a locator. Unlike normal click instead of sending native event, emulates a click with JavaScript. This works on hidden, animated or inactive elements as well.
If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. For buttons, the “value” attribute, “name” attribute, and inner text are searched. For links, the link text is searched. For images, the “alt” attribute and inner text of any parent links are searched.
The second parameter is a context (CSS or XPath locator) to narrow the search.
// simple linkI.forceClick('Logout');// button of formI.forceClick('Submit');// CSS buttonI.forceClick('#form input[type=submit]');// XPathI.forceClick('//form/*[@type=submit]');// link in contextI.forceClick('Logout', '#nav');// using strict locatorI.forceClick({css: 'nav a.login'});Parameters
locatorCodeceptJS.LocatorOrString- clickable link or button located by text, or any element located by CSS|XPath|strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element to search in CSS|XPath|Strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.forceRightClick()
Section titled “I.forceRightClick()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Not supported | Supported | Not supported |
Emulates right click on an element. Unlike normal click instead of sending native event, emulates a click with JavaScript. This works on hidden, animated or inactive elements as well.
If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. For buttons, the “value” attribute, “name” attribute, and inner text are searched. For links, the link text is searched. For images, the “alt” attribute and inner text of any parent links are searched.
The second parameter is a context (CSS or XPath locator) to narrow the search.
// simple linkI.forceRightClick('Menu');Parameters
locatorCodeceptJS.LocatorOrString- clickable link or button located by text, or any element located by CSS|XPath|strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element to search in CSS|XPath|Strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
I.grabAllWindowHandles()
Section titled “I.grabAllWindowHandles()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Not supported | Supported | Not supported |
Get all Window Handles.
Useful for referencing a specific handle when calling I.switchToWindow(handle)
const windows = await I.grabAllWindowHandles();Returns
Promise<string[]>
I.grabAttributeFrom()
Section titled “I.grabAttributeFrom()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves an attribute from an element located by CSS or XPath and returns it to test.
Resumes test execution, so should be used inside async with await operator.
If more than one element is found - attribute of first element is returned.
let hint = await I.grabAttributeFrom('#tooltip', 'title');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.attrstring- attribute name.
Returns
Promise<string>- attribute value
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.grabAttributeFromAll()
Section titled “I.grabAttributeFromAll()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves an array of attributes from elements located by CSS or XPath and returns it to test.
Resumes test execution, so should be used inside async with await operator.
let hints = await I.grabAttributeFromAll('.tooltip', 'title');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.attrstring- attribute name.
Returns
Promise<string[]>- attribute value
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.grabBrowserLogs()
Section titled “I.grabBrowserLogs()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Get JS log from browser. Log buffer is reset after each request.
Resumes test execution, so should be used inside an async function with await operator.
let logs = await I.grabBrowserLogs();console.log(JSON.stringify(logs))Returns
Promise<object[]>|undefined- all browser logs
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Get JS log from browser.
const logs = await I.grabBrowserLogs();const errors = logs.map(l => ({ type: l.type(), text: l.text() })).filter(l => l.type === 'error');console.log(JSON.stringify(errors));Learn more about console messages
Puppeteer
Get JS log from browser.
let logs = await I.grabBrowserLogs();console.log(JSON.stringify(logs))I.grabCookie()
Section titled “I.grabCookie()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Gets a cookie object by name.
If none provided gets all cookies.
Resumes test execution, so should be used inside async function with await operator.
let cookie = await I.grabCookie('auth');assert(cookie.value, '123456');Parameters
[name=null]?string- cookie name.
Returns
any- attribute value
I.grabCssPropertyFrom()
Section titled “I.grabCssPropertyFrom()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Grab CSS property for given locator
Resumes test execution, so should be used inside an async function with await operator.
If more than one element is found - value of first element is returned.
const value = await I.grabCssPropertyFrom('h3', 'font-weight');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.cssPropertystring- CSS property name.
Returns
Promise<string>- CSS value
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.grabCssPropertyFromAll()
Section titled “I.grabCssPropertyFromAll()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Grab array of CSS properties for given locator
Resumes test execution, so should be used inside an async function with await operator.
const values = await I.grabCssPropertyFromAll('h3', 'font-weight');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.cssPropertystring- CSS property name.
Returns
Promise<string[]>- CSS value
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.grabCurrentUrl()
Section titled “I.grabCurrentUrl()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Get current URL from browser. Resumes test execution, so should be used inside an async function.
let url = await I.grabCurrentUrl();console.log(`Current URL is [${url}]`);Returns
Promise<string>- current URL
I.grabCurrentWindowHandle()
Section titled “I.grabCurrentWindowHandle()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Not supported | Supported | Not supported |
Get the current Window Handle.
Useful for referencing it when calling I.switchToWindow(handle)
const window = await I.grabCurrentWindowHandle();Returns
Promise<string>
I.grabDataFromPerformanceTiming()
Section titled “I.grabDataFromPerformanceTiming()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Grab the data from performance timing using Navigation Timing API. The returned data will contain following things in ms:
- responseEnd,
- domInteractive,
- domContentLoadedEventEnd,
- loadEventEnd
Resumes test execution, so should be used inside an async function with
awaitoperator.
await I.amOnPage('https://example.com');let data = await I.grabDataFromPerformanceTiming();//Returned data{ // all results are in [ms] responseEnd: 23, domInteractive: 44, domContentLoadedEventEnd: 196, loadEventEnd: 241}Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Grab the data from performance timing using Navigation Timing API. The returned data will contain following things in ms:
- responseEnd,
- domInteractive,
- domContentLoadedEventEnd,
- loadEventEnd
Resumes test execution, so should be used inside an async function with
awaitoperator.
await I.amOnPage('https://example.com');let data = await I.grabDataFromPerformanceTiming();//Returned data{ // all results are in [ms] responseEnd: 23, domInteractive: 44, domContentLoadedEventEnd: 196, loadEventEnd: 241}Puppeteer
Grab the data from performance timing using Navigation Timing API. The returned data will contain following things in ms:
- responseEnd,
- domInteractive,
- domContentLoadedEventEnd,
- loadEventEnd
Resumes test execution, so should be used inside an async function with
awaitoperator.
await I.amOnPage('https://example.com');let data = await I.grabDataFromPerformanceTiming();//Returned data{ // all results are in [ms] responseEnd: 23, domInteractive: 44, domContentLoadedEventEnd: 196, loadEventEnd: 241}I.grabElementBoundingRect()
Section titled “I.grabElementBoundingRect()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Grab the width, height, location of given locator.
Provide width or heightas second param to get your desired prop.
Resumes test execution, so should be used inside an async function with await operator.
Returns an object with x, y, width, height keys.
const value = await I.grabElementBoundingRect('h3');// value is like { x: 226.5, y: 89, width: 527, height: 220 }To get only one metric use second parameter:
const width = await I.grabElementBoundingRect('h3', 'width');// width == 527Parameters
locatorLocatorOrString- element located by CSS|XPath|strict locator.elementSizestring=- x, y, width or height of the given element.
Returns
Promise<DOMRect>|Promise<number>- Element bounding rectangle
I.grabHTMLFrom()
Section titled “I.grabHTMLFrom()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves the innerHTML from an element located by CSS or XPath and returns it to test.
Resumes test execution, so should be used inside async function with await operator.
If more than one element is found - HTML of first element is returned.
let postHTML = await I.grabHTMLFrom('#post');Parameters
elementCodeceptJS.LocatorOrString- located by CSS|XPath|strict locator.
Returns
Promise<string>- HTML code for an element
I.grabHTMLFromAll()
Section titled “I.grabHTMLFromAll()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves all the innerHTML from elements located by CSS or XPath and returns it to test.
Resumes test execution, so should be used inside async function with await operator.
let postHTMLs = await I.grabHTMLFromAll('.post');Parameters
elementCodeceptJS.LocatorOrString- located by CSS|XPath|strict locator.
Returns
Promise<string[]>- HTML code for an element
I.grabNumberOfOpenTabs()
Section titled “I.grabNumberOfOpenTabs()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Grab number of open tabs.
Resumes test execution, so should be used inside async function with await operator.
let tabs = await I.grabNumberOfOpenTabs();Returns
Promise<number>- number of open tabs
I.grabNumberOfVisibleElements()
Section titled “I.grabNumberOfVisibleElements()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Grab number of visible elements by locator.
Resumes test execution, so should be used inside async function with await operator.
let numOfElements = await I.grabNumberOfVisibleElements('p');Parameters
locatorCodeceptJS.LocatorOrString- located by CSS|XPath|strict locator.
Returns
Promise<number>- number of visible elements
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.grabPageScrollPosition()
Section titled “I.grabPageScrollPosition()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves a page scroll position and returns it to test.
Resumes test execution, so should be used inside an async function with await operator.
let { x, y } = await I.grabPageScrollPosition();Returns
Promise<PageScrollPosition>- scroll position
I.grabPopupText()
Section titled “I.grabPopupText()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Grab the text within the popup. If no popup is visible then it will return null.
await I.grabPopupText();Returns
Promise<string>
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Grab the text within the popup. If no popup is visible then it will return null
await I.grabPopupText();Puppeteer
Grab the text within the popup. If no popup is visible then it will return null
await I.grabPopupText();I.grabRecordedNetworkTraffics()
Section titled “I.grabRecordedNetworkTraffics()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Grab the recording network traffics
const traffics = await I.grabRecordedNetworkTraffics();expect(traffics[0].url).to.equal('https://reqres.in/api/comments/1');expect(traffics[0].response.status).to.equal(200);expect(traffics[0].response.body).to.contain({ name: 'this was mocked' });Returns
Array- recorded network traffics
I.grabSource()
Section titled “I.grabSource()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves page source and returns it to test.
Resumes test execution, so should be used inside async function with await operator.
let pageSource = await I.grabSource();Returns
Promise<string>- source code
I.grabTextFrom()
Section titled “I.grabTextFrom()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves a text from an element located by CSS or XPath and returns it to test.
Resumes test execution, so should be used inside async with await operator.
let pin = await I.grabTextFrom('#pin');If multiple elements found returns first element.
Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.
Returns
Promise<string>- attribute value
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.grabTextFromAll()
Section titled “I.grabTextFromAll()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves all texts from an element located by CSS or XPath and returns it to test.
Resumes test execution, so should be used inside async with await operator.
let pins = await I.grabTextFromAll('#pin li');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.
Returns
Promise<string[]>- attribute value
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.grabTitle()
Section titled “I.grabTitle()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves a page title and returns it to test.
Resumes test execution, so should be used inside async with await operator.
let title = await I.grabTitle();Returns
Promise<string>- title
I.grabValueFrom()
Section titled “I.grabValueFrom()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves a value from a form element located by CSS or XPath and returns it to test.
Resumes test execution, so should be used inside async function with await operator.
If more than one element is found - value of first element is returned.
let email = await I.grabValueFrom('input[name=email]');Parameters
locatorCodeceptJS.LocatorOrString- field located by label|name|CSS|XPath|strict locator.
Returns
Promise<string>- attribute value
I.grabValueFromAll()
Section titled “I.grabValueFromAll()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Retrieves an array of value from a form located by CSS or XPath and returns it to test.
Resumes test execution, so should be used inside async function with await operator.
let inputs = await I.grabValueFromAll('//form/input');Parameters
locatorCodeceptJS.LocatorOrString- field located by label|name|CSS|XPath|strict locator.
Returns
Promise<string[]>- attribute value
I.grabWebElement()
Section titled “I.grabWebElement()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Grab WebElement for given locator
Resumes test execution, so should be used inside an async function with await operator.
const webElement = await I.grabWebElement('#button');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.
Returns
Promise<*>- WebElement of being used Web helper
I.grabWebElements()
Section titled “I.grabWebElements()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Grab WebElements for given locator
Resumes test execution, so should be used inside an async function with await operator.
const webElements = await I.grabWebElements('#button');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.
Returns
Promise<*>- WebElement of being used Web helper
I.moveCursorTo()
Section titled “I.moveCursorTo()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Moves cursor to element matched by locator. Extra shift can be set with offsetX and offsetY options.
An optional context (as a second parameter) can be specified to narrow the search to an element within a parent.
When the second argument is a non-number (string or locator object), it is treated as context.
I.moveCursorTo('.tooltip');I.moveCursorTo('#submit', 5,5);I.moveCursorTo('#submit', '.container');Parameters
locatorCodeceptJS.LocatorOrString- located by CSS|XPath|strict locator.[offsetX=0]number|CodeceptJS.LocatorOrString- (optional,0by default) X-axis offset or context locator.[offsetY=0]number- (optional,0by default) Y-axis offset.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.openNewTab()
Section titled “I.openNewTab()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Open new tab and switch to it.
I.openNewTab();Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Open new tab and automatically switched to new tab
I.openNewTab();You can pass in page options to emulate device on this page
// enable mobileI.openNewTab({ isMobile: true });Puppeteer
Open new tab and switch to it
I.openNewTab();I.pressKey()
Section titled “I.pressKey()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Presses a key on a focused element. Special keys like ‘Enter’, ‘Control’, etc will be replaced with corresponding unicode. If modifier key is used (Control, Command, Alt, Shift) in array, it will be released afterwards.
I.pressKey('Enter');I.pressKey(['Control','a']);Parameters
keystring|string[]- key or array of keys to press.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Note: Shortcuts like 'Meta' + 'A' do not work on macOS (puppeteer/puppeteer#1313).
Presses a key in the browser (on a focused element).
Hint: For populating text field or textarea, it is recommended to use fillField.
I.pressKey('Backspace');To press a key in combination with modifier keys, pass the sequence as an array. All modifier keys ('Alt', 'Control', 'Meta', 'Shift') will be released afterwards.
I.pressKey(['Control', 'Z']);For specifying operation modifier key based on operating system it is suggested to use 'CommandOrControl'.
This will press 'Command' (also known as 'Meta') on macOS machines and 'Control' on non-macOS machines.
I.pressKey(['CommandOrControl', 'Z']);Some of the supported key names are:
'AltLeft'or'Alt''AltRight''ArrowDown''ArrowLeft''ArrowRight''ArrowUp''Backspace''Clear''ControlLeft'or'Control''ControlRight''Command''CommandOrControl''Delete''End''Enter''Escape''F1'to'F12''Home''Insert''MetaLeft'or'Meta''MetaRight''Numpad0'to'Numpad9''NumpadAdd''NumpadDecimal''NumpadDivide''NumpadMultiply''NumpadSubtract''PageDown''PageUp''Pause''Return''ShiftLeft'or'Shift''ShiftRight''Space''Tab'
WebDriver
Note: In case a text field or textarea is focused be aware that some browsers do not respect active modifier when combining modifier keys with other keys.
Presses a key in the browser (on a focused element).
Hint: For populating text field or textarea, it is recommended to use fillField.
I.pressKey('Backspace');To press a key in combination with modifier keys, pass the sequence as an array. All modifier keys ('Alt', 'Control', 'Meta', 'Shift') will be released afterwards.
I.pressKey(['Control', 'Z']);For specifying operation modifier key based on operating system it is suggested to use 'CommandOrControl'.
This will press 'Command' (also known as 'Meta') on macOS machines and 'Control' on non-macOS machines.
I.pressKey(['CommandOrControl', 'Z']);Some of the supported key names are:
'AltLeft'or'Alt''AltRight''ArrowDown''ArrowLeft''ArrowRight''ArrowUp''Backspace''Clear''ControlLeft'or'Control''ControlRight''Command''CommandOrControl''Delete''End''Enter''Escape''F1'to'F12''Home''Insert''MetaLeft'or'Meta''MetaRight''Numpad0'to'Numpad9''NumpadAdd''NumpadDecimal''NumpadDivide''NumpadMultiply''NumpadSubtract''PageDown''PageUp''Pause''Return''ShiftLeft'or'Shift''ShiftRight''Space''Tab'
Puppeteer
Note: Shortcuts like 'Meta' + 'A' do not work on macOS (puppeteer/puppeteer#1313).
Presses a key in the browser (on a focused element).
Hint: For populating text field or textarea, it is recommended to use fillField.
I.pressKey('Backspace');To press a key in combination with modifier keys, pass the sequence as an array. All modifier keys ('Alt', 'Control', 'Meta', 'Shift') will be released afterwards.
I.pressKey(['Control', 'Z']);For specifying operation modifier key based on operating system it is suggested to use 'CommandOrControl'.
This will press 'Command' (also known as 'Meta') on macOS machines and 'Control' on non-macOS machines.
I.pressKey(['CommandOrControl', 'Z']);Some of the supported key names are:
'AltLeft'or'Alt''AltRight''ArrowDown''ArrowLeft''ArrowRight''ArrowUp''Backspace''Clear''ControlLeft'or'Control''ControlRight''Command''CommandOrControl''Delete''End''Enter''Escape''F1'to'F12''Home''Insert''MetaLeft'or'Meta''MetaRight''Numpad0'to'Numpad9''NumpadAdd''NumpadDecimal''NumpadDivide''NumpadMultiply''NumpadSubtract''PageDown''PageUp''Pause''Return''ShiftLeft'or'Shift''ShiftRight''Space''Tab'
I.pressKeyDown()
Section titled “I.pressKeyDown()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Presses a key in the browser and leaves it in a down state.
To make combinations with modifier key and user operation (e.g. 'Control' + click).
I.pressKeyDown('Control');I.click('#element');I.pressKeyUp('Control');Parameters
keystring- name of key to press down.
Returns
void- automatically synchronized promise through #recorder
I.pressKeyUp()
Section titled “I.pressKeyUp()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Releases a key in the browser which was previously set to a down state.
To make combinations with modifier key and user operation (e.g. 'Control' + click).
I.pressKeyDown('Control');I.click('#element');I.pressKeyUp('Control');Parameters
keystring- name of key to release.
Returns
void- automatically synchronized promise through #recorder
I.refreshPage()
Section titled “I.refreshPage()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Reload the current page.
I.refreshPage();Returns
void- automatically synchronized promise through #recorder
I.resizeWindow()
Section titled “I.resizeWindow()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Resize the current window to provided width and height.
First parameter can be set to maximize.
Parameters
widthnumber- width in pixels ormaximize.heightnumber- height in pixels.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Unlike other drivers Playwright changes the size of a viewport, not the window! Playwright does not control the window of a browser, so it can’t adjust its real size. It also can’t maximize a window.
Update configuration to change real window size on start:
// inside codecept.conf.js// @codeceptjs/configure package must be installed{ setWindowSize } = require('@codeceptjs/configure');WebDriver
Appium: not tested in web, in apps doesn’t work
Puppeteer
Unlike other drivers Puppeteer changes the size of a viewport, not the window! Puppeteer does not control the window of a browser, so it can’t adjust its real size. It also can’t maximize a window.
I.rightClick()
Section titled “I.rightClick()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Performs right click on a clickable element matched by semantic locator, CSS or XPath.
// right click element with id elI.rightClick('#el');// right click link or button with text "Click me"I.rightClick('Click me');// right click button with text "Click me" inside .contextI.rightClick('Click me', '.context');Parameters
locatorCodeceptJS.LocatorOrString- clickable element located by CSS|XPath|strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS|XPath|strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.saveElementScreenshot()
Section titled “I.saveElementScreenshot()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Saves screenshot of the specified locator to ouput folder (set in codecept.conf.ts or codecept.conf.js). Filename is relative to output folder.
I.saveElementScreenshot(`#submit`,'debug.png');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.fileNamestring- file name to save.
Returns
void- automatically synchronized promise through #recorder
I.saveScreenshot()
Section titled “I.saveScreenshot()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Saves a screenshot to ouput folder (set in codecept.conf.ts or codecept.conf.js).
Filename is relative to output folder.
Optionally resize the window to the full available page scrollHeight and scrollWidth to capture the entire page by passing true in as the second argument.
I.saveScreenshot('debug.png');I.saveScreenshot('debug.png', true) //resizes to available scrollHeight and scrollWidth before taking screenshotParameters
fileNamestring- file name to save.[fullPage=false]boolean- (optional,falseby default) flag to enable fullscreen screenshot mode.
Returns
void- automatically synchronized promise through #recorder
I.scrollIntoView()
Section titled “I.scrollIntoView()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Not supported | Supported | Not supported |
Scroll element into viewport.
I.scrollIntoView('#submit');I.scrollIntoView('#submit', true);I.scrollIntoView('#submit', { behavior: "smooth", block: "center", inline: "center" });Parameters
locatorLocatorOrString- located by CSS|XPath|strict locator.scrollIntoViewOptionsScrollIntoViewOptions|boolean- either alignToTop=true|false or scrollIntoViewOptions. See https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView.
Returns
void- automatically synchronized promise through #recorder
I.scrollPageToBottom()
Section titled “I.scrollPageToBottom()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Scroll page to the bottom.
I.scrollPageToBottom();Returns
void- automatically synchronized promise through #recorder
I.scrollPageToTop()
Section titled “I.scrollPageToTop()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Scroll page to the top.
I.scrollPageToTop();Returns
void- automatically synchronized promise through #recorder
I.scrollTo()
Section titled “I.scrollTo()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Scrolls to element matched by locator. Extra shift can be set with offsetX and offsetY options.
I.scrollTo('footer');I.scrollTo('#submit', 5, 5);Parameters
locatorCodeceptJS.LocatorOrString- located by CSS|XPath|strict locator.[offsetX=0]number- (optional,0by default) X-axis offset.[offsetY=0]number- (optional,0by default) Y-axis offset.
Returns
void- automatically synchronized promise through #recorder
I.see()
Section titled “I.see()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that a page contains a visible text. Use context parameter to narrow down the search.
I.see('Welcome'); // text welcome on a pageI.see('Welcome', '.content'); // text inside .content divI.see('Register', {css: 'form.register'}); // use strict locatorParameters
textstring- expected on page.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS|Xpath|strict locator in which to search for text.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.seeAttributesOnElements()
Section titled “I.seeAttributesOnElements()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that all elements with given locator have given attributes.
I.seeAttributesOnElements('//form', { method: "post"});Parameters
locatorCodeceptJS.LocatorOrString- located by CSS|XPath|strict locator.attributesobject- attributes and their values to check.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.seeCheckboxIsChecked()
Section titled “I.seeCheckboxIsChecked()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Verifies that the specified checkbox is checked.
I.seeCheckboxIsChecked('Agree');I.seeCheckboxIsChecked('#agree'); // I suppose user agreed to termsI.seeCheckboxIsChecked({css: '#signup_form input[type=checkbox]'});Parameters
fieldCodeceptJS.LocatorOrString- located by label|name|CSS|XPath|strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
Appium: not tested
I.seeCookie()
Section titled “I.seeCookie()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that cookie with given name exists.
I.seeCookie('Auth');Parameters
namestring- cookie name.
Returns
void- automatically synchronized promise through #recorder
I.seeCssPropertiesOnElements()
Section titled “I.seeCssPropertiesOnElements()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that all elements with given locator have given CSS properties.
I.seeCssPropertiesOnElements('h3', { 'font-weight': "bold"});Parameters
locatorCodeceptJS.LocatorOrString- located by CSS|XPath|strict locator.cssPropertiesobject- object with CSS properties and their values to check.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.seeCurrentUrlEquals()
Section titled “I.seeCurrentUrlEquals()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that current url is equal to provided one. If a relative url provided, a configured url will be prepended to it. So both examples will work:
I.seeCurrentUrlEquals('/register');I.seeCurrentUrlEquals('http://my.site.com/register');Parameters
urlstring- value to check.
Returns
void- automatically synchronized promise through #recorder
I.seeElement()
Section titled “I.seeElement()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that a given Element is visible Element is located by CSS or XPath.
The second parameter is a context (CSS or XPath locator) to narrow the search.
I.seeElement('#modal');I.seeElement('#modal', '#container');Parameters
locatorCodeceptJS.LocatorOrString- located by CSS|XPath|strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.seeElementInDOM()
Section titled “I.seeElementInDOM()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that a given Element is present in the DOM Element is located by CSS or XPath.
I.seeElementInDOM('#modal');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.
Returns
void- automatically synchronized promise through #recorder
I.seeInCurrentUrl()
Section titled “I.seeInCurrentUrl()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that current url contains a provided fragment.
I.seeInCurrentUrl('/register'); // we are on registration pageParameters
urlstring- a fragment to check
Returns
void- automatically synchronized promise through #recorder
I.seeInField()
Section titled “I.seeInField()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that the given input field or textarea equals to given value. For fuzzy locators, fields are matched by label text, the “name” attribute, CSS, and XPath.
The third parameter is an optional context (CSS or XPath locator) to narrow the search.
I.seeInField('Username', 'davert');I.seeInField({css: 'form textarea'},'Type your comment here');I.seeInField('form input[type=hidden]','hidden_value');I.seeInField('#searchform input','Search');// within a contextI.seeInField('Name', 'John', '.form-container');Parameters
fieldCodeceptJS.LocatorOrString- located by label|name|CSS|XPath|strict locator.valueCodeceptJS.StringOrSecret- value to check.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
I.seeInPopup()
Section titled “I.seeInPopup()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that the active JavaScript popup, as created by window.alert|window.confirm|window.prompt, contains the
given string.
I.seeInPopup('Popup text');Parameters
textstring- value to check.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
Checks that the active JavaScript popup, as created by window.alert|window.confirm|window.prompt, contains the
given string.
I.seeInSource()
Section titled “I.seeInSource()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that the current page contains the given string in its raw source code.
I.seeInSource('<h1>Green eggs & ham</h1>');Parameters
textstring- value to check.
Returns
void- automatically synchronized promise through #recorder
I.seeInTitle()
Section titled “I.seeInTitle()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that title contains text.
I.seeInTitle('Home Page');Parameters
textstring- text value to check.
Returns
void- automatically synchronized promise through #recorder
I.seeNumberOfElements()
Section titled “I.seeNumberOfElements()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Asserts that an element appears a given number of times in the DOM. Element is located by label or name or CSS or XPath.
I.seeNumberOfElements('#submitBtn', 1);Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.numnumber- number of elements.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.seeNumberOfVisibleElements()
Section titled “I.seeNumberOfVisibleElements()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Asserts that an element is visible a given number of times. Element is located by CSS or XPath.
I.seeNumberOfVisibleElements('.buttons', 3);Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.numnumber- number of elements.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
This action supports React locators
Puppeteer
This action supports React locators
I.seeTextEquals()
Section titled “I.seeTextEquals()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that text is equal to provided one.
I.seeTextEquals('text', 'h1');Parameters
textstring- element value to check.[context=null]CodeceptJS.LocatorOrString?- element located by CSS|XPath|strict locator.
Returns
void- automatically synchronized promise through #recorder
I.seeTitleEquals()
Section titled “I.seeTitleEquals()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Checks that title is equal to provided one.
I.seeTitleEquals('Test title.');Parameters
textstring- value to check.
Returns
void- automatically synchronized promise through #recorder
I.seeTraffic()
Section titled “I.seeTraffic()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Verifies that a certain request is part of network traffic.
// checking the request url contains certain query stringsI.amOnPage('https://openai.com/blog/chatgpt');I.startRecordingTraffic();await I.seeTraffic({ name: 'sentry event', url: 'https://images.openai.com/blob/cf717bdb-0c8c-428a-b82b-3c3add87a600', parameters: { width: '1919', height: '1138', }, });// checking the request url contains certain post dataI.amOnPage('https://openai.com/blog/chatgpt');I.startRecordingTraffic();await I.seeTraffic({ name: 'event', url: 'https://cloudflareinsights.com/cdn-cgi/rum', requestPostData: { st: 2, }, });Parameters
optsObject- - options when checking the traffic network.opts.namestring- A name of that request. Can be any value. Only relevant to have a more meaningful error message in case of fail.opts.urlstring- Expected URL of request in network traffic[opts.parameters]Object- Expected parameters of that request in network traffic[opts.requestPostData]Object- Expected that request contains post data in network traffic[opts.timeout]number- Timeout to wait for request in seconds. Default is 10 seconds.
Returns
void- automatically synchronized promise through #recorder
I.selectOption()
Section titled “I.selectOption()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Selects an option in a drop-down select. Field is searched by label | name | CSS | XPath. Option is selected by visible text or by value.
The third parameter is an optional context (CSS or XPath locator) to narrow the search.
I.selectOption('Choose Plan', 'Monthly'); // select by labelI.selectOption('subscription', 'Monthly'); // match option by textI.selectOption('subscription', '0'); // or by valueI.selectOption('//form/select[@name=account]','Premium');I.selectOption('form select[name=account]', 'Premium');I.selectOption({css: 'form select[name=account]'}, 'Premium');// within a contextI.selectOption('age', '21-60', '#section2');Provide an array for the second argument to select multiple options.
I.selectOption('Which OS do you use?', ['Android', 'iOS']);Parameters
selectLocatorOrString- field located by label|name|CSS|XPath|strict locator.optionstring|Array<*>- visible text or value of option.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
I.setCookie()
Section titled “I.setCookie()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Sets cookie(s).
Can be a single cookie object or an array of cookies:
I.setCookie({name: 'auth', value: true});
// as arrayI.setCookie([ {name: 'auth', value: true}, {name: 'agree', value: true}]);Parameters
cookieCookie|Array<Cookie>- a cookie object or array of cookie objects.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”WebDriver
Uses Selenium’s JSON cookie format.
I.startRecordingTraffic()
Section titled “I.startRecordingTraffic()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Starts recording the network traffics. This also resets recorded network requests.
I.startRecordingTraffic();Returns
void- automatically synchronized promise through #recorder
I.startRecordingWebSocketMessages()
Section titled “I.startRecordingWebSocketMessages()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Starts recording of websocket messages. This also resets recorded websocket messages.
await I.startRecordingWebSocketMessages();Returns
void- automatically synchronized promise through #recorder
I.stopRecordingTraffic()
Section titled “I.stopRecordingTraffic()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Stops recording of network traffic. Recorded traffic is not flashed.
I.stopRecordingTraffic();I.stopRecordingWebSocketMessages()
Section titled “I.stopRecordingWebSocketMessages()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Supported |
Stops recording WS messages. Recorded WS messages is not flashed.
await I.stopRecordingWebSocketMessages();Returns
void- automatically synchronized promise through #recorder
I.switchTo()
Section titled “I.switchTo()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Switches frame or in case of null locator reverts to parent.
I.switchTo('iframe'); // switch to first iframeI.switchTo(); // switch back to main pageParameters
[locator=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS|XPath|strict locator.
Returns
void- automatically synchronized promise through #recorder
I.switchToNextTab()
Section titled “I.switchToNextTab()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Switch focus to a particular tab by its number. It waits tabs loading and then switch tab.
I.switchToNextTab();I.switchToNextTab(2);Parameters
[num]number- (optional) number of tabs to switch forward, default: 1.[sec]number | null- (optional) time in seconds to wait.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Switch focus to a particular tab by its number. It waits tabs loading and then switch tab
I.switchToNextTab();I.switchToNextTab(2);Puppeteer
Switch focus to a particular tab by its number. It waits tabs loading and then switch tab
I.switchToNextTab();I.switchToNextTab(2);I.switchToPreviousTab()
Section titled “I.switchToPreviousTab()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Switch focus to a particular tab by its number. It waits tabs loading and then switch tab.
I.switchToPreviousTab();I.switchToPreviousTab(2);Parameters
[num]number- (optional) number of tabs to switch backward, default: 1.[sec]number?- (optional) time in seconds to wait.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Switch focus to a particular tab by its number. It waits tabs loading and then switch tab
I.switchToPreviousTab();I.switchToPreviousTab(2);Puppeteer
Switch focus to a particular tab by its number. It waits tabs loading and then switch tab
I.switchToPreviousTab();I.switchToPreviousTab(2);I.type()
Section titled “I.type()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Types out the given text into an active field.
To slow down typing use a second parameter, to set interval between key presses.
Note: Should be used when fillField is not an option.
// passing in a stringI.type('Type this out.');
// typing values with a 100ms intervalI.type('4141555311111111', 100);
// passing in an arrayI.type(['T', 'E', 'X', 'T']);
// passing a secretI.type(secret('123456'));Parameters
keystring|string[]- or array of keys to type.[delay=null]?number- (optional) delay in ms between key presses
Returns
void- automatically synchronized promise through #recorder
I.uncheckOption()
Section titled “I.uncheckOption()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Unselects a checkbox or radio button. Element is located by label or name or CSS or XPath.
The second parameter is an optional context (CSS or XPath locator) to narrow the search.
I.uncheckOption('#agree');I.uncheckOption('I Agree to Terms and Conditions');I.uncheckOption('agree', '//form');Parameters
fieldCodeceptJS.LocatorOrString- checkbox located by label | name | CSS | XPath | strict locator.[context=null]?CodeceptJS.LocatorOrString- (optional,nullby default) element located by CSS | XPath | strict locator.
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
Additional options for uncheck available as 3rd argument.
Examples:
// click on element at positionI.uncheckOption('Agree', '.signup', { position: { x: 5, y: 5 } })⚠️ To avoid flakiness, option
force: trueis set by default
WebDriver
Appium: not tested
I.wait()
Section titled “I.wait()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Pauses execution for a number of seconds.
I.wait(2); // wait 2 secsParameters
secnumber- number of second to wait.
Returns
void- automatically synchronized promise through #recorder
I.waitForClickable()
Section titled “I.waitForClickable()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for element to be clickable (by default waits for 1sec). Element can be located by CSS or XPath.
I.waitForClickable('.btn.continue');I.waitForClickable('.btn.continue', 5); // wait for 5 secsParameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.[sec]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
I.waitForCookie()
Section titled “I.waitForCookie()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for the specified cookie in the cookies.
I.waitForCookie("token");Parameters
namestring- expected cookie name.[sec=3]number- (optional,3by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
I.waitForDetached()
Section titled “I.waitForDetached()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for an element to become not attached to the DOM on a page (by default waits for 1sec). Element can be located by CSS or XPath.
I.waitForDetached('#popup');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.[sec=1]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
I.waitForDisabled()
Section titled “I.waitForDisabled()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Not supported | Not supported |
Waits for element to become disabled (by default waits for 1sec). Element can be located by CSS or XPath.
Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.[sec=1]number- (optional) time in seconds to wait, 1 by default.
Returns
void- automatically synchronized promise through #recorder
I.waitForElement()
Section titled “I.waitForElement()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for element to be present on page (by default waits for 1sec). Element can be located by CSS or XPath.
I.waitForElement('.btn.continue');I.waitForElement('.btn.continue', 5); // wait for 5 secsParameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.[sec]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.waitForEnabled()
Section titled “I.waitForEnabled()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for element to become enabled (by default waits for 1sec). Element can be located by CSS or XPath.
Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.[sec=1]number- (optional) time in seconds to wait, 1 by default.
Returns
void- automatically synchronized promise through #recorder
I.waitForFunction()
Section titled “I.waitForFunction()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for a function to return true (waits for 1 sec by default). Running in browser context.
I.waitForFunction(fn[, [args[, timeout]])I.waitForFunction(() => window.requests == 0);I.waitForFunction(() => window.requests == 0, 5); // waits for 5 secI.waitForFunction((count) => window.requests == count, [3], 5) // pass args and wait for 5 secParameters
fnstring|function- to be executed in browser context.[argsOrSec]any[]|number- (optional,1by default) arguments for function or seconds.[sec]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
I.waitForInvisible()
Section titled “I.waitForInvisible()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for an element to be removed or become invisible on a page (by default waits for 1sec). Element can be located by CSS or XPath.
I.waitForInvisible('#popup');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.[sec=1]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
I.waitForNumberOfTabs()
Section titled “I.waitForNumberOfTabs()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for number of tabs.
I.waitForNumberOfTabs(2);Parameters
expectedTabsnumber- expecting the number of tabs.secnumber- number of secs to wait.
Returns
void- automatically synchronized promise through #recorder
I.waitForText()
Section titled “I.waitForText()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for a text to appear (by default waits for 1sec). Element can be located by CSS or XPath. Narrow down search results by providing context.
I.waitForText('Thank you, form has been submitted');I.waitForText('Thank you, form has been submitted', 5, '#modal');@param {string }text to wait for.
Parameters
[sec=1]number- (optional,1by default) time in seconds to wait[context]CodeceptJS.LocatorOrString- (optional) element located by CSS|XPath|strict locator.
Returns
void- automatically synchronized promise through #recorder
I.waitForValue()
Section titled “I.waitForValue()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for the specified value to be in value attribute.
I.waitForValue('//input', "GoodValue");@param {string }value expected value.
Parameters
fieldLocatorOrString- input field.[sec=1]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
I.waitForVisible()
Section titled “I.waitForVisible()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for an element to become visible on a page (by default waits for 1sec). Element can be located by CSS or XPath.
I.waitForVisible('#popup');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.[sec=1]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
This method accepts React selectors.
Puppeteer
This action supports React locators
I.waitInUrl()
Section titled “I.waitInUrl()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waiting for the part of the URL to match the expected. Useful for SPA to understand that page was changed.
I.waitInUrl('/info', 2);Parameters
urlPartstring- value to check.[sec=1]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
I.waitNumberOfVisibleElements()
Section titled “I.waitNumberOfVisibleElements()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for a specified number of elements on the page.
I.waitNumberOfVisibleElements('a', 3);Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.numnumber- number of elements.[sec=1]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Puppeteer
This action supports React locators
I.waitToHide()
Section titled “I.waitToHide()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for an element to hide (by default waits for 1sec). Element can be located by CSS or XPath.
I.waitToHide('#popup');Parameters
locatorCodeceptJS.LocatorOrString- element located by CSS|XPath|strict locator.[sec=1]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
I.waitUrlEquals()
Section titled “I.waitUrlEquals()”| Playwright | WebDriver | Puppeteer |
|---|---|---|
| Supported | Supported | Supported |
Waits for the entire URL to match the expected
I.waitUrlEquals('/info', 2);I.waitUrlEquals('http://127.0.0.1:8000/info');Parameters
urlPartstring- value to check.[sec=1]number- (optional,1by default) time in seconds to wait
Returns
void- automatically synchronized promise through #recorder
Helper-Specific Differences
Section titled “Helper-Specific Differences”Playwright
WebDriver
Puppeteer