Last active
August 29, 2015 14:10
-
-
Save nulltask/ada65ce77f3cac32df8b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!doctype html> | |
| <html> | |
| <body> | |
| <form name="open"> | |
| <input type="text" name="id" placeholder="id"> <input type="submit" value="open"> | |
| </form> | |
| <form name="close"> | |
| <input type="text" name="id" placeholder="id"> <input type="submit" value="close"> | |
| </form> | |
| <script src="/socket.io/socket.io.js"></script> | |
| <script> | |
| function q(n) { | |
| return document.querySelector(n); | |
| } | |
| var socket = io(); | |
| var open = q('form[name=open]'); | |
| var openId = q('[name=open] input[name=id]'); | |
| var close = q('form[name=close]'); | |
| var closeId = q('[name=close] input[name=id]'); | |
| [open, close].forEach(function(el) { | |
| el.addEventListener('submit', function(e) { | |
| var id = e.target.querySelector('[name=id]').value; | |
| if (id) socket.emit((el == open ? 'open' : 'close') + ' browser', id); | |
| e.preventDefault(); | |
| }, false); | |
| }); | |
| </script> | |
| </body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var app = require('express')(); | |
| var server = require('http').Server(app); | |
| var io = require('socket.io')(server); | |
| var webdriver = require('selenium-webdriver'); | |
| var port = process.env.PORT || 3333; | |
| var drivers = {}; | |
| server.listen(port); | |
| app.get('/', function(req, res) { | |
| res.sendfile(__dirname + '/index.html'); | |
| }); | |
| app.get('/n', function(req, res) { | |
| res.send({ n: Object.keys(drivers).length }); | |
| }); | |
| app.get('/:id', function(req, res) { | |
| res.send('capturing stream ' + req.params.id); | |
| }); | |
| io.on('connection', function(socket) { | |
| socket.on('open browser', function(id) { | |
| if (drivers[id]) return console.warn('driver %s is already running.'); | |
| var driver = drivers[id] = new webdriver.Builder() | |
| .withCapabilities(webdriver.Capabilities.firefox()) | |
| .build(); | |
| console.log('opening firefox. id = %s', id); | |
| driver.get('http://0.0.0.0:' + port + '/' + id); | |
| }); | |
| socket.on('close browser', function(id) { | |
| var driver = drivers[id]; | |
| if (!driver) return console.warn('driver %s is not running.', id); | |
| console.log('closing firefox. id = %s', id); | |
| driver.quit(); | |
| delete drivers[id]; | |
| }); | |
| }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/sh | |
| # install dependencies. | |
| sudo yum install -y xorg-x11-server-Xvfb | |
| sudo yum install -y firefox | |
| sudo rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt | |
| sudo yum localinstall -y http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm | |
| sudo yum install -y x11vnc --enablerepo=rpmforge | |
| # boot X virtual frame buffer and vnc server | |
| Xvfb :1 -screen 0 1024x768x24 -nolisten tcp & | |
| x11vnc -listen 0.0.0.0 -rfbport 5900 -noipv6 -passwd password -display :1 -forever & | |
| echo 'export DISPLAY=:1' >> ~/.bashrc | |
| # install node.js | |
| curl -O http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz | |
| tar zxvf node-v0.10.33-linux-x64.tar.gz | |
| echo 'export PATH=$HOME/node-v0.10.33-linux-x64/bin:$PATH' >> ~/.bashrc | |
| source ~/.bashrc | |
| npm -g install forever | |
| forever start ~/remote-firefox/index.js | |
| # DISPLAY=:1 firefox & |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "private": true, | |
| "dependencies": { | |
| "express": "^4.10.4", | |
| "selenium-webdriver": "^2.44.0", | |
| "socket.io": "^1.2.1" | |
| }, | |
| "scripts": { | |
| "start": "node index" | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment