Sauce Labs
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
Name | Type | Details |
---|---|---|
type | string | log 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
Name | Type | Details |
---|---|---|
condition | string, object | network 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
Name | Type | Details |
---|---|---|
rate | number | Rate 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
Name | Type | Details |
---|---|---|
rule | object | A 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
Name | Type | Details |
---|---|---|
name | string | Name 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.