Steps to reproduce:
- Run
npm install
- Run
chromedriver --url-base=wd/hub --port=9515
to start ChromeDriver - Run
./run.sh
to see it working when launched directly - Run
./test.sh
to see it fail when launched via ChromeDriver
node_modules |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<script type="text/javascript"> | |
function requireElectron() { | |
try { | |
require('electron') | |
document.write('require(\'electron\') succeeded') | |
} catch (error) { | |
document.write('require(\'electron\') failed') | |
document.write('<pre>' + error.stack + '</pre>') | |
} | |
} | |
</script> | |
</head> | |
<body onload="requireElectron()"> | |
</body> | |
</html> |
var app = require('app') | |
var BrowserWindow = require('browser-window') | |
var fs = require('fs') | |
var http = require('http') | |
var path = require('path') | |
var server = http.createServer(function (request, response) { | |
if (request.url === '/index.html') { | |
response.writeHead(200, {'Content-Type': 'text/html'}) | |
response.end(fs.readFileSync(path.join(__dirname, 'index.html'))) | |
} else { | |
response.writeHead(404) | |
response.end() | |
} | |
}) | |
app.on('ready', function () { | |
server.listen(8000, '127.0.0.1', function () { | |
var mainWindow = new BrowserWindow({ | |
width: 640, | |
height: 480, | |
title: 'Require issue' | |
}) | |
mainWindow.loadURL('http://127.0.0.1:8000/index.html') | |
}) | |
}); | |
app.on('will-quit', function () { | |
server.close() | |
}) |
{ | |
"name": "require-failure-using-chromedriver", | |
"version": "1.0.0", | |
"main": "main.js", | |
"dependencies": { | |
"electron-chromedriver": "^0.35.0", | |
"electron-prebuilt": "^0.35.4", | |
"webdriverio": "^3.3.0" | |
} | |
} |
#!/usr/bin/env bash | |
set -ex | |
mkdir -p node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/app | |
cp index.html node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/app | |
cp main.js node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/app | |
cp package.json node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/app | |
open node_modules/electron-prebuilt/dist/Electron.app |
var path = require('path') | |
var webdriverio = require('webdriverio') | |
var options = { | |
host: "localhost", | |
port: 9515, | |
desiredCapabilities: { | |
browserName: 'chrome', | |
chromeOptions: { | |
binary: path.join(__dirname, 'node_modules', '.bin', 'electron') | |
} | |
} | |
} | |
var client = webdriverio.remote(options) | |
client.init() |
#!/usr/bin/env bash | |
set -ex | |
mkdir -p node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/app | |
cp index.html node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/app | |
cp main.js node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/app | |
cp package.json node_modules/electron-prebuilt/dist/Electron.app/Contents/Resources/app | |
node test.js |