Created
May 19, 2016 17:09
-
-
Save DinisCruz/c38e51311535ba447a579f290871be56 to your computer and use it in GitHub Desktop.
Testing wallbyjs electron integration
This file contains 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
chai = require 'chai' | |
expect = chai.expect | |
$ = require 'jquery' | |
#require 'electron-prebuilt' | |
describe 'testing in coffee', -> | |
# it 'Check nodeIntegration value', ()-> | |
# # this works | |
# code = "BrowserWindow = require('electron').remote; | |
# BrowserWindow.shell.openItem('.'); | |
# BrowserWindow.shell.openItem('/Applications/Calculator.app');" | |
# | |
# eval(code) | |
# | |
# # but this doesn't | |
# require('electron').remote | |
it 'open test', (done)-> | |
new_Window = open('https://www.google.co.uk') | |
checkResponse = -> | |
expect(new_Window.location).to.contain 'https://www.google.co.uk' | |
expect(new_Window.eval).to.be.an('function') | |
done() | |
setTimeout checkResponse, 500 | |
#@.timeout 900000 | |
# code = "mainWindow = require('remote').getCurrentWindow(); | |
# mainWindow.toggleDevTools(); | |
# //mainWindow.setPosition(12,12);" | |
# eval(code) | |
# this only runs ok once | |
xit 'X-Frame-Options bypass changes', (done)-> | |
# set the headers hook | |
code = " | |
mainWindow = require('remote').getCurrentWindow(); | |
var onHeadersReceived = function(d, c) | |
{ | |
if(d.responseHeaders['x-frame-options']) | |
{ | |
d.responseHeaders['x-frame-options'] = null; | |
} | |
c({cancel: false, responseHeaders: d.responseHeaders}); | |
}; | |
mainWindow.webContents.session.webRequest.onHeadersReceived({}, onHeadersReceived); | |
/*mainWindow.on('closed', function() { | |
mainWindow.removeAllListeners(); | |
mainWindow = null; | |
});*/ | |
" | |
eval(code) | |
# add the iframe which would fail without the header's change | |
iframe = $("<iframe id='my_iframe' src='https://www.google.co.uk/'>abc</iframe>") | |
$(document.body).append(iframe) | |
checkResponse = -> | |
console.log url = document.querySelector('#my_iframe').contentDocument.location.href | |
expect(url).to.equal 'https://www.google.co.uk/' | |
done() | |
setTimeout checkResponse, 600 | |
it 'global object', ()-> | |
keys = (key for key of global).sort() | |
expect(keys.length).to.equal 223 | |
interresting_Ones = (list)-> | |
for item in list | |
expect(keys).to.contain item | |
list = ['WebView', 'caches', 'clientInformation', 'console', 'alert', | |
'applicationCache','close','closed','document','fetch','frames' | |
'history','location','moveTo','navigator','onclick','onerror','oninput','onkeydown' | |
'onload','onmessage','onpageshow','onprogress','onshow','onsubmit','open','opener' | |
'run','screen','screenX','self','status','window' ] | |
interresting_Ones list | |
it 'document.location.href ', -> | |
expect(document.location.href).to.contain 'wallaby_sandbox0.html' # this is usually at http://localhost:49957/wallaby_sandbox0.html | |
# console.log document.location.href | |
it 'document.body.innerHtml', -> | |
body = $(document.body) | |
expect(document.body.innerHTML).to.equal body.html() # confirm that jQuery is working ok | |
it 'window', () -> | |
expect(window).to.be.defined | |
window.localStorage.setItem('test', '123') | |
expect(window.localStorage.getItem('test')).to.equal '123' | |
xit 'document load', (done)-> | |
document.onload = -> | |
console.log 'here' | |
done() | |
document.url = 'http:/www.google.com' | |
it 'jQuery get file from cdn', (done)-> | |
$.get "https://code.jquery.com/jquery-2.2.3.js", (data)-> | |
expect(data).to.contain('jQuery JavaScript Library v2.2.3'); | |
expect(data.length).to.equal 258648 | |
.done -> done() | |
# now works (due to webSecurity: false ) | |
# it 'jQuery failed to get file', (done)-> | |
# $.get "https://www.google.com", ()-> {} | |
# .fail (data)-> | |
# expect(data.statusText).to.equal('error') | |
# expect(this.url ).to.equal 'https://www.google.com' | |
# expect(this.type ).to.equal 'GET' | |
# expect(this.contentType).to.equal 'application/x-www-form-urlencoded; charset=UTF-8' | |
# done() | |
it 'Adding h1 element to dom using jQuery',-> | |
h1 = $("<h1 id='my-h1'>inside h1</h1>") | |
expect(h1.html() ).to.equal 'inside h1' | |
expect($('h1').length ).to.equal 0 | |
$(document.body).append(h1) | |
expect($('h1' ).length).to.equal 1 | |
expect($('h1' ).html()).to.equal 'inside h1' | |
expect($('#my-h1').html()).to.equal 'inside h1' | |
h1.html('value dynamically changed') | |
expect($('#my-h1').html()).to.equal 'value dynamically changed' | |
it 'Adding webview element to dom using jQuery (doesnt work)', (done)-> | |
web_View = $("<webview id='my-webview' src='http://coffeescript.org/'>abc</webview>") | |
$(document.body).append(web_View) | |
checkResponse = -> | |
expect($('#my-webview').html()).to.equal 'abc' # I wanted this to be coffeescript.org | |
#console.log document.body.innerHTML | |
done() | |
setTimeout checkResponse , 1000 | |
it 'Adding iframe element to dom using jQuery (works due to webSecurity: false)', (done)-> | |
iframe = $("<iframe id='my-iframe' src='http://coffeescript.org/'>abc</iframe>") | |
$(document.body).append(iframe) | |
checkResponse = -> | |
html = iframe.contents().find('body').html() | |
expect(html).to.contain('coffee-script') | |
done() | |
setTimeout checkResponse , 201 | |
# this now doesn't work | |
# it.only 'Adding iframe element to dom using jQuery (work, but throws security error)', (done)-> | |
# iframe = $("<iframe id='my-iframe' src='http://coffeescript.org/'>abc</iframe>") | |
# $(document.body).append(iframe) | |
# | |
# checkResponse = -> | |
# expect($('#my-iframe').html()).to.equal 'abc' # I wanted this to be google | |
# #console.log document.body.innerHTML | |
# try | |
# console.log iframe.contents().find('body').html() | |
# catch ex | |
# expect(ex.message).to.contain "Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin" | |
# done() | |
# | |
# setTimeout checkResponse , 201 | |
# these don't work | |
# require 'child_process' | |
# require 'app' | |
# require 'browser-window' | |
# require 'electron' | |
# alert(42) will open an electron popup |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment