derby-webdriverio
v5.0.0
Published
Webdriver.io for Derby.js
Downloads
87
Readme
derby-webdriverio
Webdriver.io for Derby.js
Installation
npm i --save derby-webdriverio
Usage
In your derby app index file:
# app/index.coffee
app = require('derby').createApp 'foobar', __filename
window.app = app if window? # app must be accessible from the client
app.use require('derby-webdriverio/renderReady')
Create wdio.conf.js
in project's root folder:
// wdio.conf.js
exports.config = require('derby-webdriverio')({
// Specify multiple browsers to run.
// If it's 1 then will be created a single 'remote' instance.
// If it's >=2 then 'multiremote' will be created; the whole group will be
// called with the specified name; and each browser in this group will
// have a singular form of that name + number, i.e. 'student0', 'student1', ...
// http://webdriver.io/guide/usage/multiremote.html
browsers: {
browser: 1,
prof: 1,
students: 10
},
// selenium settings to use for each browser specified above
desiredCapabilities: {
browserName: 'chrome'
},
// base url which will be used for .url() methods
baseUrl: 'http://localhost:3003',
// timeout to wait until test fails
waitforTimeout: 30000,
// path to save screenshots (by default it's /test/screenshots/, don't forget
// to add it to your .gitignore)
screenshotPath: __dirname + '/test/screenshots/',
// files with tests
specs: [
'./test/e2e/**/*.js',
'./test/e2e/**/*.coffee'
],
// files to ignore
exclude: [
'./test/e2e/**/_*.js',
'./test/e2e/**/_*.coffee'
]
})
To run your tests:
./node_modules/.bin/wdio
If you want to run it as npm test
you can add the following script to your package.json
:
"scripts": {
"test": "wdio",
},
.*AndWait()
These methods accept the same arguments as the original methods. They do the same action and wait for derby page to fully load after that.
.urlAndWait()
.clickAndWait()
.submitFormAndWait()
model
All racer get-
and set-
methods are available.
Couple of examples:
.modelGet()
browser
.modelGet '_session.userId'
.then (userId) ->
@urlAndWait '/profile/' + userId
.modelSet()
it 'check title', ->
newTitle = 'New Title'
prevTitle = yield browser.modelSet '_page.title', newTitle
browser.getTitle()
.then (title) ->
title.should.not.equal prevTitle
title.should.equal newTitle
all other get/set methods are supported -- .modelAdd
, .modelPop
, etc.
history
.historyPush(path)
Do app.history.push
on the client and wait for the page to fully load.
browser
.historyPush '/profile'
.getTitle()
.should.eventually.equal 'My Profile'
.historyRefresh()
Refresh the page using app.history.refresh
on the client.
Chai shorthands
A bunch of useful shorthand methods to test things.
All of them accept the arguments which will be passed to X()
function.
shouldExist()
browser
# Note that the arguments passed here are `X()` function arguments
.shouldExist 'form.main button *= Submit'
.shouldExist '*= Welcome to my Website'
shouldNotExist()
shouldBeVisible()
shouldNotBeVisible()
shouldExecute
Accepts the same arguments as .execute()
and checks that its return value
equals true