Server side of totoro.
Latest stable version:v2.0
>= 0.10.12
$ npm install totoro-server -g
If it not works, you may add sudo
before the command, as follows.
To get the latest function (may not be stable)
$ git clone [email protected]:totorojs/totoro-server.git
$ cd totoro-server
$ npm install -g
-
Launch server.
$ totoro-server
You should see an output like bellow:
Start server <{{yourIP}}:9999>
-
Start a driver
Use any browser to visit {{yourIP}}:9999, then it registers as a web driver that can drive the browser of this kind run test.
If you use it on pc, be mind that allow popup from {{yourIP}}, refer to popup settings.
Want to run some test? See the quick start of totoro.
In a word, a driver is something open specified browser to visit specified URL and close it by directives from server.
- web driver: any browser opens {{yourIP}}:9999 becomes a web driver, it's for temporary use only.
- totoro-driver: a stable driver written in node, be able to drive chrome, safari, firefox and ie both on windows and mac.
If you know how to open and close a browser(or some other application), it's very very easy to write a driver for it.
All steps with pseudo-code.
-
Set command line options
-s, --server
: default ishttp://server.totorojs.org:9999
-
Link to server by socket and init.
var socket = socketClient.connect({{server}} + '/__labor') // NOTE: the namespace of socket is '/__labor' socket.on('connect', function() { var initInfo = { // if the app you drive is not a browser // group is required, it could be any string you like group: 'groupName', device: { name: 'mac' }, os: { name: 'macosx', version: '13.1.0' }, agent: { name: 'chrome', version:'35.0.1916.114' } } socket.emit('init', initInfo) })
-
Open or close specified browser when received corresponding directives.
socket.on('add', function(data) { /* * structure of data * { * orderId: {{orderId}}, * laborId: {{laborId}}, * laborTrait: {{labor trait info, the same as init info}}, * runner: {{test runner, typically be a url}} * } */ var key = data.orderId + '-' + data.laborId orders[key] = open(runner) }) socket.on('remove', function(data) { // the data structure is the same as 'add' event's but without the laborTrait var key = data.orderId + '-' + data.laborId close(orders[key]) ;delete orders[key] })
-
Close all browsers when dirver exits.
Server host。
Default: IP of this computer.
Server port。
Default: 9999
Show debug log.
Default: false
If you need a config file, just place totoro-srever-config.json
in the CWD, all options are written in lower camel case.