|
|
|
/* global web3Override */
|
|
|
|
module.exports = function (browser, callback) {
|
|
|
|
extendBrowser(browser)
|
|
|
|
|
|
|
|
browser
|
|
|
|
.url('http://127.0.0.1:8080')
|
|
|
|
injectScript('./test/resources/testWeb3.js', browser, function () {
|
|
|
|
callback()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function readFile (filename, callback) {
|
|
|
|
var fs = require('fs')
|
|
|
|
try {
|
|
|
|
console.log('reading ' + filename)
|
|
|
|
fs.readFile(filename, 'utf8', callback)
|
|
|
|
} catch (e) {
|
|
|
|
console.log(e)
|
|
|
|
callback(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function injectScript (file, browser, callback) {
|
|
|
|
readFile(file, function (error, result) {
|
|
|
|
if (!error) {
|
|
|
|
browser.execute(function (data) {
|
|
|
|
eval.call(null, data) // eslint-disable-line
|
|
|
|
var vmdebugger = document.getElementById('app').vmdebugger
|
|
|
|
vmdebugger.web3.eth.getCode = web3Override.getCode
|
|
|
|
vmdebugger.web3.debug.traceTransaction = web3Override.traceTransaction
|
|
|
|
vmdebugger.web3.debug.storageAt = web3Override.storageAt
|
|
|
|
vmdebugger.web3.eth.getTransaction = web3Override.getTransaction
|
|
|
|
vmdebugger.web3.eth.getTransactionFromBlock = web3Override.getTransactionFromBlock
|
|
|
|
vmdebugger.web3.eth.getBlockNumber = web3Override.getBlockNumber
|
|
|
|
}, [result], function () {
|
|
|
|
callback()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function extendBrowser (browser) {
|
|
|
|
browser.assertCurrentSelectedItem = function (expected) {
|
|
|
|
browser.getValue('#asmitems', function (result) {
|
|
|
|
browser.expect.element('#asmitems option[value="' + result.value + '"]').text.to.equal(expected)
|
|
|
|
})
|
|
|
|
return browser
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertSticker = function (vmtracestepinfo, stepinfo, addmemoryinfo, gasinfo, remaininggasinfo, loadedaddressinfo) {
|
|
|
|
browser.expect.element('#vmtracestepinfo').text.to.equal(vmtracestepinfo)
|
|
|
|
browser.expect.element('#stepinfo').text.to.equal(stepinfo)
|
|
|
|
browser.expect.element('#addmemoryinfo').text.to.equal(addmemoryinfo)
|
|
|
|
browser.expect.element('#gasinfo').text.to.equal(gasinfo)
|
|
|
|
browser.expect.element('#remaininggasinfo').text.to.equal(remaininggasinfo)
|
|
|
|
browser.expect.element('#loadedaddressinfo').text.to.equal(loadedaddressinfo)
|
|
|
|
return browser
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertStack = function (value) {
|
|
|
|
return assertPanel('#stackpanel', browser, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertStorageChanges = function (value) {
|
|
|
|
return assertPanel('#storagepanel', browser, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertMemory = function (value) {
|
|
|
|
return assertPanel('#memorypanel', browser, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertCallData = function (value) {
|
|
|
|
return assertPanel('#calldatapanel', browser, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertCallStack = function (value) {
|
|
|
|
return assertPanel('#callstackpanel', browser, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertStackValue = function (index, value) {
|
|
|
|
return assertPanelValue('#stackpanel', browser, index, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertStorageChangesValue = function (index, value) {
|
|
|
|
return assertPanelValue('#storagepanel', browser, index, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertMemoryValue = function (index, value) {
|
|
|
|
return assertPanelValue('#memorypanel', browser, index, value)
|
|
|
|
}
|
|
|
|
|
|
|
|
browser.assertCallStackValue = function (index, value) {
|
|
|
|
return assertPanelValue('#callstackpanel', browser, index, value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function assertPanel (id, browser, value) {
|
|
|
|
browser.expect.element(id + ' #basicpanel').text.to.equal(value)
|
|
|
|
return browser
|
|
|
|
}
|
|
|
|
|
|
|
|
function assertPanelValue (id, browser, index, value, done) {
|
|
|
|
browser.getText(id + ' #basicpanel', function (result) {
|
|
|
|
var values = result.value.split('\n')
|
|
|
|
browser.assert.equal(values[index], value)
|
|
|
|
})
|
|
|
|
return browser
|
|
|
|
}
|