1 | Bluebird = require 'bluebird'
|
2 | natural = require 'natural'
|
3 | nounInflector = new natural.NounInflector()
|
4 | shell = require 'shelljs'
|
5 | _ = require 'lodash'
|
6 | chai = require 'chai'
|
7 | chaiAsPromised = require 'chai-as-promised'
|
8 | webdriverio = require 'webdriverio'
|
9 | global.X = require './xpath'
|
10 | addCustomCommands = require './commands'
|
11 | waitServer = require './waitServer'
|
12 |
|
13 | module.exports = (webdriverConf, customBefore) ->
|
14 | ->
|
15 | chai.Should()
|
16 | chai.use chaiAsPromised
|
17 | chaiAsPromised.transferPromiseness = browser.transferPromiseness
|
18 |
|
19 | for groupName, value of webdriverConf.browsers
|
20 | if value in [1, true]
|
21 | global[groupName] = webdriverio.remote webdriverConf
|
22 | else if _.isNumber(value) and value > 0
|
23 | global[groupName] = webdriverio.multiremote do ->
|
24 | res = {}
|
25 | singularName = nounInflector.singularize groupName
|
26 | for i in [0 ... value]
|
27 | res[singularName + i] = webdriverConf
|
28 | res
|
29 | else
|
30 | throw new Error "Wrong number of instances specified for '#{ groupName }' browser group. It must be a number (for multiremote testing) or 'true' (for a single browser)"
|
31 |
|
32 | for groupName, value of webdriverConf.browsers
|
33 | addCustomCommands global[groupName]
|
34 |
|
35 | Bluebird
|
36 | .resolve()
|
37 |
|
38 | .then ->
|
39 | dbName = webdriverConf.server.env.MONGO_URL.match(/\/([^\/]*)$/)?[1]
|
40 | shell.exec "mongo #{ dbName } --eval \"db.dropDatabase();\""
|
41 |
|
42 | .then ->
|
43 | customBefore?()
|
44 |
|
45 | .then ->
|
46 | envStr = for key, value of webdriverConf.server.env
|
47 | "#{ key }=#{ value }"
|
48 | envStr = envStr.join ' '
|
49 | shell.exec "#{ envStr } #{ webdriverConf.server.startCommand }", async: true
|
50 | undefined
|
51 |
|
52 | .then ->
|
53 | webdriverConf.server.waitServer.req ?=
|
54 | waitServer webdriverConf.server.waitServer
|
55 | .then ->
|
56 | Bluebird.mapSeries Object.keys(webdriverConf.browsers), (groupName) ->
|
57 | global[groupName].init()
|
58 | .timeoutsAsyncScript webdriverConf.waitforTimeout |
\ | No newline at end of file |