remix-project mirror
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
remix-project/test-browser/init.js

129 lines
4.2 KiB

var init = require('../test/init')
module.exports = function (browser, callback) {
extendBrowser(browser)
browser
.url('http://127.0.0.1:8080')
.waitForElementPresent('#app div', 1000)
injectScript('./test/resources/testWeb3.json', browser, function () {
callback()
})
}
function injectScript (file, browser, callback) {
init.readFile(file, function (error, result) {
if (!error) {
browser.execute(function (data) {
// var vmdebugger = window.vmdebugger // document.getElementById('app').vmdebugger
data = JSON.parse(data)
window.vmdebugger.web3.eth.getCode = function (address, callback) {
if (callback) {
callback(null, data.testCodes[address])
} else {
return data.testCodes[address]
}
}
window.vmdebugger.web3.debug.traceTransaction = function (txHash, options, callback) {
callback(null, data.testTraces[txHash])
}
window.vmdebugger.web3.debug.storageAt = function (blockNumber, txIndex, address, callback) {
callback(null, {})
}
window.vmdebugger.web3.eth.getTransaction = function (txHash, callback) {
if (callback) {
callback(null, data.testTxs[txHash])
} else {
return data.testTxs[txHash]
}
}
window.vmdebugger.web3.eth.getTransactionFromBlock = function (blockNumber, txIndex, callback) {
if (callback) {
callback(null, data.testTxsByBlock[blockNumber + '-' + txIndex])
} else {
return data.testTxsByBlock[blockNumber + '-' + txIndex]
}
}
window.vmdebugger.web3.eth.getBlockNumber = function (callback) { callback('web3 modified testing purposes :)') }
window.vmdebugger.web3.eth.getBlockNumber(function (r) {
console.log('rrrr' + r)
})
}, [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
}