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
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)
sauceThrottleNetwork
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.sauceThrottleNetwork(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.sauceThrottleNetwork('offline')
// custom network condition
browser.sauceThrottleNetwork({
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. |