Sauce Labs

All commands are only supported on Chrome using Sauce Labs Extended Debugging capabilities. You can enable these by setting the following Sauce options:

{
browserName: 'Chrome',
browserVersion: 'latest',
platformName: 'Windows 10',
'sauce:options': {
extendedDebugging: true
}
}

getPageLogs#

Get webpage specific log information based on the last page load.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.getPageLogs(type)
Parameters#
NameTypeDetails
typestringlog type (e.g. sauce:network', 'sauce:performance')
Examples#
// Get Network Logs
console.log(browser.getPageLogs('sauce:network'));
/**
* outputs:
* [{
* "url": "https://app.saucelabs.com/dashboard",
* "statusCode": 200,
* "method": "GET",
* "requestHeaders": {
* ...
* },
* "responseHeaders": {
* ...
* },
* "timing": {
* ...
* }
* }, {,
* ...
* }]
*/
// Get Performance Logs (needs capturePerformance capability see: https://wiki.saucelabs.com/display/DOCS/Measure+Page+Load+Performance+Using+Test+Automation#MeasurePageLoadPerformanceUsingTestAutomation-EnableYourScript)
console.log(browser.getPageLogs('sauce:performance'));
/**
* outputs:
* {
* "speedIndex": 1472.023,
* "timeToFirstInteractive": 1243.214,
* "firstMeaningfulPaint": 892.643,
* ...
* }
*/
Returns#
  • <object> log: log output of desired type (see example)

throttleNetwork#

With network conditioning you can test your site on a variety of network connections, including Edge, 3G, and even offline. You can throttle the data throughput, including the maximum download and upload throughput, and use latency manipulation to enforce a minimum delay in connection round-trip time (RTT).

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.throttleNetwork(condition)
Parameters#
NameTypeDetails
conditionstring, objectnetwork condition to set (e.g. 'online', 'offline', 'GPRS', 'Regular 2G', 'Good 2G', 'Regular 3G', 'Good 3G', 'Regular 4G', 'DSL', 'Wifi')
Examples#
// predefined network condition
browser.throttleNetwork('offline')
// custom network condition
browser.throttleNetwork({
download: 1000,
upload: 500,
latency: 40'
})

throttleCPU#

You can throttle the CPU in DevTools to understand how your page performs under that constraint.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.throttleCPU(rate)
Parameters#
NameTypeDetails
ratenumberRate on how much the CPU should get throttled.
Examples#
// throttle CPU and make it run 4x slower
browser.throttleCPU(4)
// reset CPU throttling
browser.throttleCPU(0)

interceptRequest#

Allows modifying any request made by the browser. You can blacklist, modify, or redirect these as required for your tests.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.interceptRequest(rule)
Parameters#
NameTypeDetails
ruleobjectA rule describing the request interception.
Examples#
// redirect a request
browser.interceptRequest({
url: 'https://saucelabs.com',
redirect: 'https://google.com'
})
// Blacklist requests to 3rd party vendors
browser.interceptRequest({
url: 'https://api.segment.io/v1/p',
error: 'Failed'
})
// Modify requests to REST API (Mock REST API response)
browser.interceptRequest({
url: 'http://sampleapp.appspot.com/api/todos',
response: {
headers: {
'x-custom-headers': 'foobar'
},
body: [{
title: 'My custom todo',
order: 1,
completed: false,
url: 'http://todo-backend-express.herokuapp.com/15727'
}]
}
})

assertPerformance#

Assert against the performance baseline of your app.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.assertPerformance(name, metrics)
Parameters#
NameTypeDetails
namestringName of the job you created your baseline with.
metrics
optional
string[]Name of metrics you want to assert agains the baseline.
Example#
// test performance for a page
browser.url('https://webdriver.io')
const hasRegression = browser.assertPerformance({
name: 'my performance test', // make sure that the name is also set in the sauce options in your capabilities
metrics: ['score', 'firstPaint']
})
Returns#
  • <object> hasRegression: An object containing the result as well as metrics about the result.

jankinessCheck#

Perform a scroll test that evaluates the jankiness of the application.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.jankinessCheck()
Example#
// test performance for a page
browser.url('https://webdriver.io')
browser.jankinessCheck()
Returns#
  • <object> testResults: An object containing the score as well as metrics around how smooth the UX of the page was during the test.

mockRequest#

Mocks a network resource.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.mockRequest(url, filterOptions)
Parameters#
NameTypeDetails
urlstringURL glob to match url to mock.
filterOptions
optional
objectAdditional filter options for url to mock (e.g. headers, method).
Returns#
  • <object> mockId: An object containing the id of a mock resource.

getMockCalls#

Receive request information about requests that match the mocked resource.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.getMockCalls(mockId)
Parameters#
NameTypeDetails
mockIdStringthe id of a mock
Returns#
  • <object> requests: A list of request information.

clearMockCalls#

Clear list of mock calls.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.clearMockCalls(mockId, restore)
Parameters#
NameTypeDetails
mockIdStringthe id of a mock
restore
optional
booleanSet to true if mock should be restored as well.

respondMock#

Respond if mock matches a specific resource.

Sauce Labs command. More details can be found in the official protocol docs.

Usage#
browser.respondMock(mockId, payload)
Parameters#
NameTypeDetails
mockIdStringthe id of a mock
payload
optional
objectInformation on mock response.