totoro-server v2.0.3
totoro-server
Server side of totoro.
Latest stable version:v2.0
1. Installation
Node requirement
>= 0.10.12
Install from npm
$ npm install totoro-server -g
If it not works, you may add sudo
before the command, as follows.
Install from github
To get the latest function (may not be stable)
$ git clone git@github.com:totorojs/totoro-server.git
$ cd totoro-server
$ npm install -g
2. Quick Start
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.
3. What Is A Driver?
In a word, a driver is something open specified browser to visit specified URL and close it by directives from server.
Available drivers
Official drivers
- 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.
Third party drivers
How to write a driver?
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.
4. Cli Options
-H, --host
Server host。
Default: IP of this computer.
-P, --port
Server port。
Default: 9999
-d, --debug
Show debug log.
Default: false
5. Config File
If you need a config file, just place totoro-srever-config.json
in the CWD, all options are written in lower camel case.
Data flow
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
12 years ago
12 years ago
12 years ago
12 years ago