Installations
npm install testcafe-browser-provider-browserstack
Score
55.6
Supply Chain
93.5
Quality
80.3
Maintenance
100
Vulnerability
95.2
License
Developer
Developer Guide
Module System
CommonJS
Min. Node Version
>=10
Typescript Support
No
Node Version
18.19.1
NPM Version
10.2.4
Statistics
86 Stars
133 Commits
65 Forks
25 Watching
4 Branches
32 Contributors
Updated on 19 Oct 2024
Bundle Size
558.66 kB
Minified
144.23 kB
Minified + Gzipped
Languages
JavaScript (100%)
Total Downloads
Cumulative downloads
Total Downloads
7,681,422
Last day
-7.5%
4,146
Compared to previous day
Last week
0.1%
20,522
Compared to previous week
Last month
2.5%
89,651
Compared to previous month
Last year
-1.1%
1,424,916
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
testcafe-browser-provider-browserstack
This plugin integrates TestCafe with the BrowserStack Testing Cloud.
Install
1npm i -g testcafe-browser-provider-browserstack
Usage
Before using this plugin, save the BrowserStack username and access key to environment variables BROWSERSTACK_USERNAME
and BROWSERSTACK_ACCESS_KEY
.
Project name and build name will be displayed in BrowserStack if you set the BROWSERSTACK_PROJECT_NAME
and BROWSERSTACK_BUILD_ID
environment variables, or the project
and build
properties in the configuration file.
If you have troubles starting multiple browsers at once, or get browserstack-local
related errors like #27,
try setting the BROWSERSTACK_PARALLEL_RUNS
environment variable to the number of browsers you want to run simultaneously, or to 1 if you want to run just one browser.
You can determine the available browser aliases by running
1testcafe -b browserstack
If you run tests from the command line, use the alias when specifying browsers:
1testcafe "browserstack:Chrome@53.0:Windows 10" "path/to/test/file.js"
When you use API, pass the alias to the browsers()
method:
1testCafe 2 .createRunner() 3 .src('path/to/test/file.js') 4 .browsers('browserstack:Chrome@53.0:Windows 10') 5 .run();
Tip: you can skip version (@53.0
) or/and OS name (:Windows 10
).
BrowserStack Proxy Options
Proxy options can be passed via environment variables.
BROWSERSTACK_PROXY
- a string that specifies a proxy for the BrowserStack local binary. It should have the following structure:user:pass@proxyHostName:port
,BROWSERSTACK_LOCAL_PROXY
- a string that specifies a proxy for the local web server. It should have the following structure:user:pass@proxyHostName:port
,BROWSERSTACK_FORCE_PROXY
- if it's not empty, forces all traffic of BrowserStack local binary to go through the proxy,BROWSERSTACK_FORCE_LOCAL
- if it's not empty, forces all traffic of BrowserStack local binary to go through the local machineBROWSERSTACK_NO_LOCAL
- If it's not empty, forces all traffic of BrowserStack to go over public internetBROWSERSTACK_LOCAL_IDENTIFIER
- a string identifier of an open BrowserStack local tunnel. If it's not empty, a new local tunnel is not created. Instead, the browser provider uses an existing local tunnel with the specified identifier.
Example:
1export BROWSERSTACK_PROXY="user:p@ssw0rd@proxy.com:8080" 2export BROWSERSTACK_LOCAL_PROXY="admin:12345678@192.168.0.2:8080" 3export BROWSERSTACK_FORCE_PROXY="1" 4export BROWSERSTACK_FORCE_LOCAL="1" 5testcafe browserstack:chrome test.js
Other BrowserStackLocal Options
This plugin also allows you to specify the following BrowserStackLocal options via environment variables:
Option | Environment Variable |
---|---|
binarypath | BROWSERSTACK_BINARY_PATH |
logFile | BROWSERSTACK_LOGFILE |
verbose | BROWSERSTACK_VERBOSE |
Example:
1export BROWSERSTACK_BINARY_PATH="~/BrowserStack/BrowserStackLocal" 2export BROWSERSTACK_LOGFILE="~/BrowserStack/logs.txt" 3export BROWSERSTACK_VERBOSE="1" 4testcafe browserstack:chrome test.js
BrowserStack JS Testing and BrowserStack Automate
BrowserStack offers two APIs for browser testing:
JS testing supports more types of devices (compare: JS Testing Devices vs Automate Devices), while Automate allows for much longer tests (2 hours vs 30 minutes) and provides some additional features (like the window resizing functionality).
TestCafe uses the JS Testing API by default. In order to use BrowserStack Automate,
set the BROWSERSTACK_USE_AUTOMATE
environment variable to 1
.
Example:
1export BROWSERSTACK_USE_AUTOMATE="1" 2testcafe browserstack:chrome test.js
Setting Display Resolution
To set the display resolution, use the BROWSERSTACK_DISPLAY_RESOLUTION
environment variable or the resolution
property in the configuration file.
Valid resolutions can be found here.
Remember that this only sets the display resolution and does not resize the browser window. You'll still need to use TestCafe's window resizing API to do so.
Example:
1export BROWSERSTACK_DISPLAY_RESOLUTION="1024x768" 2testcafe browserstack:chrome test.js
Specifying Chrome Command Line Arguments
To set Chrome command line arguments, use the BROWSERSTACK_CHROME_ARGS
environment variable. You can specify multiple arguments by joining them with the space symbol. This option works only if the BrowserStack Automate API is enabled.
Examples:
1export BROWSERSTACK_USE_AUTOMATE="1" 2export BROWSERSTACK_CHROME_ARGS="--autoplay-policy=no-user-gesture-required" 3testcafe browserstack:chrome test.js
1export BROWSERSTACK_USE_AUTOMATE="1" 2export BROWSERSTACK_CHROME_ARGS="--start-maximized --autoplay-policy=no-user-gesture-required" 3testcafe browserstack:chrome test.js
Other BrowserStack Options
BrowserStack Automate allows you to provide options for its internal Selenium Grid in the form of key-value pairs called capabilities.
To specify BrowserStack capabilities via the TestCafe BrowserStack provider, use environment variables or the configuration file. This provider supports the following capabilities:
Capability | Environment Variable |
---|---|
project | BROWSERSTACK_PROJECT_NAME |
build | BROWSERSTACK_BUILD_ID (BROWSERSTACK_BUILD_NAME may also be used) |
resolution | BROWSERSTACK_DISPLAY_RESOLUTION |
name | BROWSERSTACK_TEST_RUN_NAME |
acceptSslCerts | BROWSERSTACK_ACCEPT_SSL_CERTS |
browserstack.debug | BROWSERSTACK_DEBUG |
browserstack.console | BROWSERSTACK_CONSOLE |
browserstack.networkLogs | BROWSERSTACK_NETWORK_LOGS |
browserstack.video | BROWSERSTACK_VIDEO |
browserstack.timezone | BROWSERSTACK_TIMEZONE |
browserstack.geoLocation | BROWSERSTACK_GEO_LOCATION |
browserstack.customNetwork | BROWSERSTACK_CUSTOM_NETWORK |
browserstack.networkProfile | BROWSERSTACK_NETWORK_PROFILE |
Refer to the BrowserStack documentation for information about the values you can specify.
Example
1export BROWSERSTACK_DEBUG="true" 2export BROWSERSTACK_TIMEZONE="UTC" 3testcafe browserstack:chrome test.js
Configuration File
You can specify BrowserStack capability options in a JSON configuration file as an alternative to environment variables. Use capability names for configuration file properties. If an option is set in both the configuration file and an environment variable, the environment variable setting takes priority.
To use a configuration file, pass the file path in the BROWSERSTACK_CAPABILITIES_CONFIG_PATH
environment variable:
1export BROWSERSTACK_CAPABILITIES_CONFIG_PATH="./data/browserstack-config.json" 2testcafe browserstack:chrome test.js
browserstack-config.json
1{ 2 "build": "build-1", 3 "project": "my-project", 4 "resolution": "1024x768", 5 "name": "Run 1", 6 "browserstack.debug": true, 7 "browserstack.console": "errors", 8 "browserstack.networkLogs": true 9}
Exceeding the Parallel Test Limit
When you run tests in multiple browsers or concurrently, you may exceed the maximum number of parallel tests available for your account.
Assume your plan allows 2 parallel tests, and you run one of the following commands:
1testcafe 'browserstack:ie@11.0:Windows 10','browserstack:chrome@59.0:Windows 10','browserstack:safari@9.1:OS X El Capitan' tests/acceptance/
1testcafe browserstack:ie@11.0:Windows 10 -c3 tests/acceptance/
In this instance, BrowserStack will refuse to provide all the required machines and TestCafe will throw an error:
1Unable to establish one or more of the specified browser connections.
To keep within your account limitations, you can run tests sequentially (or in batches), like in the following bash script (credits to @maoberlehner for this example):
1browsers=( "browserstack:ie@10.0:Windows 8" "browserstack:ie@11.0:Windows 10" "browserstack:edge@15.0:Windows 10" "browserstack:edge@14.0:Windows 10" "browserstack:firefox@54.0:Windows 10" "browserstack:firefox@55.0:Windows 10" "browserstack:chrome@59.0:Windows 10" "browserstack:chrome@60.0:Windows 10" "browserstack:opera@46.0:Windows 10" "browserstack:opera@47.0:Windows 10" "browserstack:safari@9.1:OS X El Capitan" "browserstack:safari@10.1:OS X Sierra" ) 2 3for i in "${browsers[@]}" 4do 5 ./node_modules/.bin/testcafe "${i}" tests/acceptance/ 6done
Configuring the API Polling Interval for BrowserStack Automate
BrowserStack Automate is based on WebDriver, which forcefully shuts down inactive sessions after an idle timeout expires. This works for WebDriver users, since each page action (clicks, types, etc.) triggers a WebDriver command and thus resets the idle timer.
However, TestCafe is not WebDriver-based. It simulates page actions in a different way and it doesn't trigger WebDriver commands. To prevent test session from being terminated by the BrowserStack WebDriver server due to inactivity, TestCafe triggers a dummy WebDriver command once in a while.
However, if the network connection is unstable, a request that triggers this dummy command can fail. In this instance, the BrowserStack WebDriver server doesn't receive the command before the idle timeout expires, and the test session can be terminated due to inactivity.
If your BrowserStack builds are terminated due to the idle timeout frequently, you can try to decrease the delay before the dummy WebDriver command is sent. In case the first request fails to trigger the command due to a network problem, the next may succeed and thus prevent your test session from being terminated.
Use the TESTCAFE_BROWSERSTACK_API_POLLING_INTERVAL
environment variable to control this delay. This variable specifies time (in millisecinds) to pass until an additional request that triggers an dummy WebDriver command is sent to the BrowserStack WebDriver server. The default delay is 80000
millisecinds. If the BrowserStack idle timeout is 90
seconds (or 90000
milliseconds), at least one request is processed by the BrowserStack server in normal network conditions. If you set it to 40000
, two requests are processed by the WebDriver server if your network is good. In case of network issues, either request may fail without breaking the build.
Example
1export TESTCAFE_BROWSERSTACK_API_POLLING_INTERVAL="40000" 2testcafe browserstack:chrome test.js
See Also
You can also refer to the BrowserStack documentation for a detailed step-by-step guide that explains how to run TestCafe tests on BrowserStack.
Author
Developer Express Inc. (https://devexpress.com)
No vulnerabilities found.
Reason
no binaries found in the repo
Reason
no dangerous workflow patterns detected
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
2 existing vulnerabilities detected
Details
- Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275
- Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv
Reason
SAST tool is not run on all commits -- score normalized to 5
Details
- Warn: 8 commits out of 15 are checked with a SAST tool
Reason
Found 7/23 approved changesets -- score normalized to 3
Reason
0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Reason
detected GitHub workflow tokens with excessive permissions
Details
- Warn: jobLevel 'contents' permission set to 'write': .github/workflows/check-security-alerts.yml:31
- Warn: jobLevel 'contents' permission set to 'write': .github/workflows/handle-stale.yml:28
- Warn: no topLevel permission defined: .github/workflows/check-security-alerts.yml:1
- Warn: no topLevel permission defined: .github/workflows/handle-labels.yml:1
- Warn: no topLevel permission defined: .github/workflows/handle-stale.yml:1
- Warn: no topLevel permission defined: .github/workflows/no-response.yml:1
- Warn: no topLevel permission defined: .github/workflows/publish.yml:1
- Warn: no topLevel permission defined: .github/workflows/test.yml:1
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-security-alerts.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/check-security-alerts.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-security-alerts.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/check-security-alerts.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-security-alerts.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/check-security-alerts.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-security-alerts.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/check-security-alerts.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/check-security-alerts.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/check-security-alerts.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/handle-labels.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/handle-labels.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/handle-stale.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/handle-stale.yml/master?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/handle-stale.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/handle-stale.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/handle-stale.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/handle-stale.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/no-response.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/no-response.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/publish.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/test.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/test.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/test.yml/master?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/DevExpress/testcafe-browser-provider-browserstack/test.yml/master?enable=pin
- Info: 0 out of 6 GitHub-owned GitHubAction dependencies pinned
- Info: 0 out of 9 third-party GitHubAction dependencies pinned
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
security policy file not detected
Details
- Warn: no security policy file detected
- Warn: no security file to analyze
- Warn: no security file to analyze
- Warn: no security file to analyze
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Score
4.2
/10
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn MoreOther packages similar to testcafe-browser-provider-browserstack
posthog-js
Posthog-js allows you to automatically capture usage and send events to PostHog.
@browserstack/testcafe-browser-provider-browserstack
browserstack TestCafe browser provider plugin.
testcafe-browser-provider-saucelabs
saucelabs TestCafe browser provider plugin.
throttle-debounce
Throttle and debounce functions.