Steps to reproduce:
- Run
npm install - Run
chromedriver --url-base=wd/hub --port=9515to start ChromeDriver - Run
./run.shto see it working when launched directly - Run
./test.shto 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 |