-
Couldn't load subscription status.
- Fork 62
BrowserStack Runner
BrowserStack Runner enables you to run JavaScript unit tests written in QUnit, Jasmine, or Mocha, in browsers on BrowserStack.
To install browserstack-runner as a command-line tool
npm install -g browserstack-runner
You may also install browserstack-runner as a dev-dependency in your project.
npm install --save-dev browserstack-runner
-
username: BrowserStack username (OrBROWSERSTACK_USERNAMEenvironment variable) -
key: BrowserStack access key (OrBROWSERSTACK_KEYenvironment variable) -
test_path: Path to the test page which will run the tests when opened in a browser. -
test_framework: Specify test framework which will run the tests. Currently supporting qunit, jasmine, jasmine2 and mocha. -
timeout: Specify worker timeout with BrowserStack. -
browsers: A list of browsers on which tests are to be run. Find a list of all supported browsers and platforms on browerstack.com. -
build: A string to identify your test run in BrowserStack. InTRAVISsetupTRAVIS_COMMITwill be the default identifier. -
proxy: Specify a proxy to use for the local tunnel. Object withhost,port,usernameandpasswordproperties.
For advanced use-cases in which test files are served from an external web server, the test_server property can be set to the root URL for the tests and test_path can contain the relative path to HTML test pages.
To run tests on BrowserStack infrastructure, you need to create a browserstack.json file in project's root directory (the directory from which tests are run), by running this command:
browserstack-runner init
This creates a browserstack.json file containing a set a browsers to help you get started. You may either set the username and key fields in browserstack.json or store your credentials in BROWSERSTACK_USERNAME and BROWSERSTACK_KEY environment variables.
Next, set the test_path property to a list paths to .html files that contain your tests.
To run your tests -
browserstack-runner
You may add the optional --verbose switch for detailed information.
The browsers property in browserstack.json contains the list of browsers to run tests in. You may refer to this list of platforms and browsers (requires login) and documentation here.
Each browser object may contain the following properties:
-
os: The operating system. -
os_version: The operating system version. -
browser: The browser name. -
browser_version: The browser version. -
device: The device name for testing on mobile emulators. Optional.
For desktop platforms, os, os_version, browser, browser_version are to be supplied. A special value of latest is supported for browser_version, which will use the latest stable version.
{
"browser": "ie",
"browser_version": "10.0",
"os": "Windows",
"os_version": "8"
}For mobile platforms, os, os_version and device parameters are to be supplied.
{
"os": "ios",
"os_version": "7.0",
"browser": "Mobile Safari",
"device": "iPhone 5S"
}The following steps are performed by BrowserStack Runner to execute your tests:
- Starts a web server on your local machine on port
8888to serve your test files - Starts BrowserStack Local to establish a secure tunnel to BrowserStack's servers to make the local web server accessible to browsers on BrowserStack
- Launches browsers on BrowserStack by creating API workers
- As they are being served, test HTMLs are patched to include files that contain hooks for the specified
test_framework- Patch files capture test run status in the browser and report data back to BrowserStack Runner
- Terminates workers after tests are complete
Mobile emulators, especially Android, can take a while to boot up. This requires increasing the worker timeout by setting the timeout property to 300 (or more) seconds.
In case you need to supply proxy configuration to BrowserStack Local, you may set the proxy property:
"proxy": {
"host": "localhost",
"port": 3128,
"username": "foo",
"password": "bar"
}Mocha - Ensure that the mocha.run(); is within window.onload = function () { ... }. This ensures that our patch files are executed before the Mocha tests are run in the browser.
Jasmine - For Jasmine v1, ensure that the jasmine.getEnv().execute(); call exists within window.onload = function () { ... } so that our patch files are executed before tests run.
If you're getting an error EACCES open ... BrowserStackLocal, configure npm to install modules using something other than the default nobody user:
npm -g config set user [user]
Another case could be that the BrowserStackLocal binary has been partially downloaded. Try deleting node_modules/browserstack-runner/lib/BrowserStackLocal or node_modules/browserstack-runner/lib/BrowserStackLocal.exe in that case.
To run BrowserStack Local in debug mode
LOG_LEVEL=trace browserstack-runner --verbose
Webpack is used to generate code in browserstack-util.js which contains browser-compatible code for node's util.inspect. This is used for serializing the user's console.log data and sending it to the server.
To update browserstack-util.js:
npm install -g webpack
npm run update-util
BrowserStack Runner is currently tested by running test cases defined in QUnit, Mocha, and Spine repositories.
To run tests:
npm test
To run a larger suite of tests ensuring compatibility with older versions of QUnit, etc.:
npm run test-ci
Tests are also run for every pull request, courtesy Travis CI.