@gr2m/frontend-test-setup
v1.3.2
Published
reusable test setup for mocha, chai, browserify, webdriver, saucelabs & travis
Downloads
30
Maintainers
Readme
frontend-test-setup
reusable test setup for mocha, chai, browserify, webdriver, saucelabs & travis
Install
npm install --save @gr2m/frontend-test-setup
Usage
Add a "frontend-test-setup"
key to your package.json
"frontend-test-setup": {
"server": {
// path to static files
"cwd": "demo",
// browserify: path: module
"browserify": {
"/bundle.js": "demo/vendor.js",
"/smartdate-input.js": "index.js"
}
}
// see more options below
}
Set your scripts to
"scripts": {
"start": "frontend-test-server",
"test": "frontend-test-background mocha test/*.js",
}
Replace mocha test/*.js
in "test"
with whatever your mocha test command.
You must require '@gr2m/frontend-test-setup'
in your tests
require('@gr2m/frontend-test-setup')
describe('my demo page', function () {
this.timeout(90000)
it('loads successfully', function () {
return this.client
.url('/')
.getTitle().should.eventually.equal('foo')
})
})
frontend-test-setup
plays nicely with Travis. If
you want to test using selenium, make sure to only test in Firefox as it's the
only supported browser, and add the following lines:
before_install:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
Set SAUCELABS_USERNAME
& SAUCELABS_ACCESS_KEY
as env variables, and test
as many different browser configurations using the env.matrix
setting, e.g.
env:
matrix:
- CLIENT=selenium:firefox
- CLIENT=saucelabs:chrome
- CLIENT="saucelabs:internet explorer:10:Windows 8"
- CLIENT="saucelabs:iphone:8.4:OS X 10.11"
Options
frontend-test-setup
can be configured in your package.json
, simply
add a "frontend-test-setup"
with the options below. Options with a .
delimiter are nested, e.g. log.level
means log: {level: '...'}.
All settings in package.json can be overwritten using ENV variables, listed below the option name.
(saucelabs|selenium):browserName:browserVerion:platform,
e.g. 'saucelabs:internet explorer:10:win10'
</td>
<td><code>'selenium:chrome'</code></td>
</tr>
<tr>
<td>
<strong>timeout</strong><br>
(<code>TIMEOUT</code>)<br><br>
mocha test timeout in milli seconds
</td>
<td><code>180000</code></td>
</tr>
<tr>
<td>
<strong>log.level</strong><br>
(<code>LOG_LEVEL</code>)<br><br>
one of the following: <code>error</code>, <code>warn</code>,
<code>info</code>, <code>verbose</code>, <code>silly</code>
</td>
<td><code>'error'</code></td>
</tr>
<tr>
<td>
<strong>server.host</strong><br>
(<code>SERVER_HOST</code>)<br><br>
hostname for test server
</td>
<td><code>'0.0.0.0'</code></td>
</tr>
<tr>
<td>
<strong>server.port</strong><br>
(<code>SERVER_HOST</code>)<br><br>
port number for test server
</td>
<td><code>8080</code></td>
</tr>
<tr>
<td>
<strong>server.cwd</strong><br><br>
path from where to server static assets. If <code>server.cmd</code> is
set, it runs the command in the given path (relative to repository’s root)
</td>
<td><code>'.'</code></td>
</tr>
<tr>
<td>
<strong>server.browserify</strong><br><br>
Map of assets to be browserified. The example below will browserify
<code>index.js</code> and at
<code>http://<server.host>:<server.port>/my-lib.js</server></code>
</td>
<td><code>{}</code></td>
</tr>
<tr>
<td>
<strong>server.cmd</strong><br>
(<code>SERVER_CMD</code>)<br><br>
Command to start custom server
</td>
<td>e.g. <code>'npm start'</code></td>
</tr>
<tr>
<td>
<strong>selenium.hub</strong><br>
(<code>SELENIUM_HUB</code>)<br><br>
Url to selenium hub
</td>
<td><code>'http://localhost:4444/wd/hub/status'</code></td>
</tr>
<tr>
<td>
<strong>saucelabs.username</strong><br>
(<code>SAUCELABS_USERNAME</code>)<br><br>
Saucelabs username for authentication
</td>
<td>e.g. <code>'pat'</code></td>
</tr>
<tr>
<td>
<strong>saucelabs.accessKey</strong><br>
(<code>SAUCELABS_ACCESS_KEY</code>)<br><br>
Saucelabs access key for authentication
</td>
<td>e.g. <code>'abcd5678-1234-1234-1234-abcd5678abcd'</code></td>
</tr>
<tr>
<td>
<strong>saucelabs.desiredCapabilities.idle-timeout</strong><br>
(<code>SAUCELABS_IDLE_TIMEOUT</code>)<br><br>
<a href="https://docs.saucelabs.com/reference/test-configuration/#idle-test-timeout">SauceLabs Idle Test Timeout</a>
</td>
<td><code>90</code>, allowed maximum is <code>1000</code></td>
</tr>
<tr>
<td>
<strong>saucelabs.desiredCapabilities.max-duration</strong><br>
(<code>SAUCELABS_MAX_DURATION</code>)<br><br>
<a href="https://docs.saucelabs.com/reference/test-configuration/#maximum-test-duration">SauceLabs Maximum Test Duration</a>
</td>
<td><code>1800</code>, allowed maximum is <code>10800</code></td>
</tr>
<tr>
<td>
<strong>saucelabs.desiredCapabilities.max-duration</strong><br>
(<code>SAUCELABS_COMMAND_TIMEOUT</code>)<br><br>
<a href="https://docs.saucelabs.com/reference/test-configuration/#command-timeout">SauceLabs Command Timeout</a>
</td>
<td><code>300</code>, allowed maximum is <code>600</code></td>
</tr>
License
MIT