diff --git a/ci/browser_tests.sh b/ci/browser_tests.sh
index efc435e945..658337b521 100755
--- a/ci/browser_tests.sh
+++ b/ci/browser_tests.sh
@@ -17,18 +17,28 @@ while [ ! -f $SAUCECONNECT_READYFILE ]; do
sleep .5
done
-npm run nightwatch_remote_safari
-echo $?
+npm run nightwatch_remote_firefox
+if [ $? -eq 1 ]
+then
+ TEST_EXITCODE=1
+fi
+
+npm run nightwatch_remote_chrome
if [ $? -eq 1 ]
then
- TEST_EXITCODE = 1
+ TEST_EXITCODE=1
fi
+npm run nightwatch_remote_safari
+if [ $? -eq 1 ]
+then
+ TEST_EXITCODE=1
+fi
npm run nightwatch_remote_ie
if [ $? -eq 1 ]
then
- TEST_EXITCODE = 1
+ TEST_EXITCODE=1
fi
node ci/sauceDisconnect.js $SAUCECONNECT_USERNAME $SAUCECONNECT_ACCESSKEY $SAUCECONNECT_JOBIDENTIFIER
diff --git a/nightwatch.js b/nightwatch.js
index c21e2a7282..3a817bf5de 100644
--- a/nightwatch.js
+++ b/nightwatch.js
@@ -62,7 +62,8 @@ module.exports = {
'desiredCapabilities': {
'browserName': 'safari',
'javascriptEnabled': true,
- 'platform': 'MAC',
+ 'platform': 'OS X 10.11',
+ 'version': '9.0',
'acceptSslCerts': true,
'build': 'build-' + TRAVIS_JOB_NUMBER,
'tunnel-identifier': 'remix_tests_' + TRAVIS_JOB_NUMBER
@@ -74,6 +75,8 @@ module.exports = {
'browserName': 'internet explorer',
'javascriptEnabled': true,
'acceptSslCerts': true,
+ 'platform': 'WIN8.1',
+ 'version': '11',
'build': 'build-' + TRAVIS_JOB_NUMBER,
'tunnel-identifier': 'remix_tests_' + TRAVIS_JOB_NUMBER
}
diff --git a/src/code/opcodes.js b/src/code/opcodes.js
index 021a3686f3..9506bf1e29 100644
--- a/src/code/opcodes.js
+++ b/src/code/opcodes.js
@@ -102,39 +102,39 @@ var codes = {
0x7e: ['PUSH', 3, 0, 1, false],
0x7f: ['PUSH', 3, 0, 1, false],
- 0x80: ['DUP1', 3, 0, 1, false],
- 0x81: ['DUP2', 3, 0, 1, false],
- 0x82: ['DUP3', 3, 0, 1, false],
- 0x83: ['DUP4', 3, 0, 1, false],
- 0x84: ['DUP5', 3, 0, 1, false],
- 0x85: ['DUP6', 3, 0, 1, false],
- 0x86: ['DUP7', 3, 0, 1, false],
- 0x87: ['DUP8', 3, 0, 1, false],
- 0x88: ['DUP9', 3, 0, 1, false],
- 0x89: ['DUP10', 3, 0, 1, false],
- 0x8a: ['DUP11', 3, 0, 1, false],
- 0x8b: ['DUP12', 3, 0, 1, false],
- 0x8c: ['DUP13', 3, 0, 1, false],
- 0x8d: ['DUP14', 3, 0, 1, false],
- 0x8e: ['DUP15', 3, 0, 1, false],
- 0x8f: ['DUP16', 3, 0, 1, false],
-
- 0x90: ['SWAP1', 3, 0, 0, false],
- 0x91: ['SWAP2', 3, 0, 0, false],
- 0x92: ['SWAP3', 3, 0, 0, false],
- 0x93: ['SWAP4', 3, 0, 0, false],
- 0x94: ['SWAP5', 3, 0, 0, false],
- 0x95: ['SWAP6', 3, 0, 0, false],
- 0x96: ['SWAP7', 3, 0, 0, false],
- 0x97: ['SWAP8', 3, 0, 0, false],
- 0x98: ['SWAP9', 3, 0, 0, false],
- 0x99: ['SWAP10', 3, 0, 0, false],
- 0x9a: ['SWAP11', 3, 0, 0, false],
- 0x9b: ['SWAP12', 3, 0, 0, false],
- 0x9c: ['SWAP13', 3, 0, 0, false],
- 0x9d: ['SWAP14', 3, 0, 0, false],
- 0x9e: ['SWAP15', 3, 0, 0, false],
- 0x9f: ['SWAP16', 3, 0, 0, false],
+ 0x80: ['DUP', 3, 0, 1, false],
+ 0x81: ['DUP', 3, 0, 1, false],
+ 0x82: ['DUP', 3, 0, 1, false],
+ 0x83: ['DUP', 3, 0, 1, false],
+ 0x84: ['DUP', 3, 0, 1, false],
+ 0x85: ['DUP', 3, 0, 1, false],
+ 0x86: ['DUP', 3, 0, 1, false],
+ 0x87: ['DUP', 3, 0, 1, false],
+ 0x88: ['DUP', 3, 0, 1, false],
+ 0x89: ['DUP', 3, 0, 1, false],
+ 0x8a: ['DUP', 3, 0, 1, false],
+ 0x8b: ['DUP', 3, 0, 1, false],
+ 0x8c: ['DUP', 3, 0, 1, false],
+ 0x8d: ['DUP', 3, 0, 1, false],
+ 0x8e: ['DUP', 3, 0, 1, false],
+ 0x8f: ['DUP', 3, 0, 1, false],
+
+ 0x90: ['SWAP', 3, 0, 0, false],
+ 0x91: ['SWAP', 3, 0, 0, false],
+ 0x92: ['SWAP', 3, 0, 0, false],
+ 0x93: ['SWAP', 3, 0, 0, false],
+ 0x94: ['SWAP', 3, 0, 0, false],
+ 0x95: ['SWAP', 3, 0, 0, false],
+ 0x96: ['SWAP', 3, 0, 0, false],
+ 0x97: ['SWAP', 3, 0, 0, false],
+ 0x98: ['SWAP', 3, 0, 0, false],
+ 0x99: ['SWAP', 3, 0, 0, false],
+ 0x9a: ['SWAP', 3, 0, 0, false],
+ 0x9b: ['SWAP', 3, 0, 0, false],
+ 0x9c: ['SWAP', 3, 0, 0, false],
+ 0x9d: ['SWAP', 3, 0, 0, false],
+ 0x9e: ['SWAP', 3, 0, 0, false],
+ 0x9f: ['SWAP', 3, 0, 0, false],
0xa0: ['LOG0', 375, 2, 0, false],
0xa1: ['LOG1', 375, 3, 0, false],
diff --git a/src/helpers/ui.js b/src/helpers/ui.js
index 2860d2da44..16f2dd99a6 100644
--- a/src/helpers/ui.js
+++ b/src/helpers/ui.js
@@ -38,7 +38,11 @@ module.exports = {
for (var arg in arguments) {
for (var k in arguments[arg]) {
if (arguments[arg][k] && ret.indexOf(k) === -1) {
- ret += k + ':' + arguments[arg][k] + ';'
+ if (k.indexOf('*') === 0) {
+ ret += arguments[arg][k]
+ } else {
+ ret += k + ':' + arguments[arg][k] + ';'
+ }
}
}
}
diff --git a/src/ui/CodeListView.js b/src/ui/CodeListView.js
index 0cf400799f..0e000c212f 100644
--- a/src/ui/CodeListView.js
+++ b/src/ui/CodeListView.js
@@ -32,12 +32,16 @@ CodeListView.prototype.indexChanged = function (index) {
if (this.itemSelected) {
this.itemSelected.removeAttribute('selected')
this.itemSelected.removeAttribute('style')
- this.itemSelected.firstChild.removeAttribute('style')
+ if (this.itemSelected.firstChild) {
+ this.itemSelected.firstChild.removeAttribute('style')
+ }
}
this.itemSelected = this.codeView.children[index]
this.itemSelected.setAttribute('style', ui.formatCss({'background-color': '#eeeeee'}))
this.itemSelected.setAttribute('selected', 'selected')
- this.itemSelected.firstChild.setAttribute('style', ui.formatCss({'margin-left': '2px'}))
+ if (this.itemSelected.firstChild) {
+ this.itemSelected.firstChild.setAttribute('style', ui.formatCss({'margin-left': '2px'}))
+ }
this.codeView.scrollTop = this.itemSelected.offsetTop - parseInt(this.codeView.offsetHeight)
}
}
diff --git a/src/ui/DropdownPanel.js b/src/ui/DropdownPanel.js
index 5d2bba56be..b4c3d2cfce 100644
--- a/src/ui/DropdownPanel.js
+++ b/src/ui/DropdownPanel.js
@@ -25,7 +25,7 @@ DropdownPanel.prototype.update = function (_data) {
if (_data) {
this.data = _data
}
- this.view.querySelector('.dropdownpanel div').innerHTML = ''
+ this.view.querySelector('.dropdownpanel div.dropdowncontent').innerHTML = ''
if (!this.raw) {
var data = JSON.stringify(this.data, null, '\t')
if (!this.data || data === '[]' || data === '{}') {
@@ -41,13 +41,13 @@ DropdownPanel.prototype.update = function (_data) {
div.appendChild(yo`
`)
}
}
- this.view.querySelector('.dropdownpanel div').appendChild(div)
+ this.view.querySelector('.dropdownpanel div.dropdowncontent').appendChild(div)
this.view.querySelector('.btn').setAttribute('data-clipboard-text', data)
if (Clipboard && !this.clipboard) {
this.clipboard = new Clipboard(this.view.querySelector('.btn'))
}
} else {
- this.view.querySelector('.dropdownpanel div').appendChild(this.data)
+ this.view.querySelector('.dropdownpanel div.dropdowncontent').appendChild(this.data)
this.view.querySelector('.btn').style.display = 'none'
}
}
@@ -63,7 +63,7 @@ DropdownPanel.prototype.render = function (overridestyle) {
- Empty
+
`
if (!this.view) {
diff --git a/src/ui/Ethdebugger.js b/src/ui/Ethdebugger.js
index c7f8a07b70..341dfebbb9 100644
--- a/src/ui/Ethdebugger.js
+++ b/src/ui/Ethdebugger.js
@@ -81,7 +81,7 @@ Ethdebugger.prototype.debug = function (tx) {
Ethdebugger.prototype.render = function () {
var view = yo`
-
+
${this.txBrowser.render()}
${this.stepManager.render()}
diff --git a/src/ui/TxBrowser.js b/src/ui/TxBrowser.js
index be734871d7..058b80413a 100644
--- a/src/ui/TxBrowser.js
+++ b/src/ui/TxBrowser.js
@@ -34,7 +34,6 @@ function TxBrowser (_parent) {
TxBrowser.prototype.setDefaultValues = function () {
this.blockNumber = null
- this.txNumber = ''
this.connectInfo = ''
this.basicPanel.data = {}
this.basicPanel.update()
diff --git a/src/ui/img/play-arrow.png b/src/ui/img/play-arrow.png
deleted file mode 100644
index 3414a07289..0000000000
Binary files a/src/ui/img/play-arrow.png and /dev/null differ
diff --git a/src/ui/styles/basicStyles.js b/src/ui/styles/basicStyles.js
index eb6c91c5c3..1002aeb7ac 100644
--- a/src/ui/styles/basicStyles.js
+++ b/src/ui/styles/basicStyles.js
@@ -63,12 +63,7 @@ module.exports = {
'-moz-box-shadow': 'inset 0px 1px 0px 0px #ffffff',
'-webkit-box-shadow': 'inset 0px 1px 0px 0px #ffffff',
'box-shadow': 'inset 0px 1px 0px 0px #ffffff',
- 'background': '-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9))', // eslint-disable-line
- 'background': '-moz-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%)', // eslint-disable-line
- 'background': '-webkit-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%)', // eslint-disable-line
- 'background': '-o-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%)', // eslint-disable-line
- 'background': '-ms-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%)', // eslint-disable-line
- 'background': 'linear-gradient(to bottom, #f9f9f9 5%, #e9e9e9 100%)', // eslint-disable-line
+ '*background': 'background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9));background: -moz-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%);;background: -webkit-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%);background: -webkit-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%);background: -webkit-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%);background: -webkit-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%);background: -o-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%);background: -ms-linear-gradient(top, #f9f9f9 5%, #e9e9e9 100%);background: linear-gradient(to bottom, #f9f9f9 5%, #e9e9e9 100%);', // eslint-disable-line
'filter': "progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e9e9e9',GradientType=0)", // eslint-disable-line
'background-color': '#f9f9f9',
'-moz-border-radius': '6px',
diff --git a/test-browser/init.js b/test-browser/init.js
index b39a74cd25..642c4661dd 100644
--- a/test-browser/init.js
+++ b/test-browser/init.js
@@ -128,31 +128,34 @@ browser.fireEvent = function (el, key, times, callback) {
}
function assertPanel (id, browser, value) {
- var selector = id + ' .dropdownpanel div div'
- browser.execute(function (id) {
- var node = document.querySelector(id)
+ var selector = '.dropdownpanel div.dropdowncontent div'
+ browser.execute(function (id, selector) {
+ var el = document.getElementById(id.replace('#', '').replace('.', ''))
+ var node = el.querySelector(selector)
var ret = []
- for (var k in node.children) {
+ for (var k = 0; k < node.children.length; k++) {
if (node.children[k].innerText) {
ret.push(node.children[k].innerText)
}
}
return ret
- }, [selector], function (returnValues) {
+ }, [id, selector], function (returnValues) {
value.map(function (item, index) {
- browser.assert.equal(returnValues.value[index], value[index])
+ var testValue = returnValues.value[index].replace(/\r\n/g, '').replace(/\t/g, '').replace(/\s/g, '')
+ browser.assert.equal(testValue, value[index])
})
})
return browser
}
function assertPanelValue (id, browser, index, value) {
- var selector = id + ' .dropdownpanel div div'
+ var selector = id + ' .dropdownpanel .dropdowncontent div'
browser.execute(function (id, index) {
var node = document.querySelector(id)
return node.children[index].innerText
}, [selector, index], function (returnValues) {
- browser.assert.equal(returnValues.value, value)
+ var testValue = returnValues.value.replace(/\r\n/g, '').replace(/\t/g, '').replace(/\s/g, '')
+ browser.assert.equal(testValue, value)
})
return browser
}
diff --git a/test-browser/vmdebugger.js b/test-browser/vmdebugger.js
index 8ae1a6999f..861f51098c 100644
--- a/test-browser/vmdebugger.js
+++ b/test-browser/vmdebugger.js
@@ -64,15 +64,15 @@ function panels (browser) {
.assertCallData(['0x60fe47b10000000000000000000000000000000000000000000000000000000000000038'])
.assertCallStack(['0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5'])
.assertStackValue(1, '0x60')
- .assertMemoryValue(6, '0x6060606040526040516020806045833981\t????R??Q????E?9?')
- .assertMemoryValue(7, '0x7001604052808051906020019091905050\t???R??Q???????PP')
- .assertMemoryValue(8, '0x805b806001016000600050819055505b50\t?????????P??UP?P')
+ .assertMemoryValue(6, '0x6060606040526040516020806045833981????R??Q????E?9?')
+ .assertMemoryValue(7, '0x7001604052808051906020019091905050???R??Q???????PP')
+ .assertMemoryValue(8, '0x805b806001016000600050819055505b50?????????P??UP?P')
.click('#intoforward') // CREATE
.assertStack(['Empty'])
.assertStorageChanges(['Empty'])
.assertMemory(['Empty'])
.assertCallData(['0x0000000000000000000000000000000000000000000000000000000000000000000000000000006060606040526040516020806045833981016040528080519060200190919050505b806001016000600050819055'])
- .assertCallStack(['0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5', '(Contract Creation - Step 63)'])
+ .assertCallStack(['0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5', '(ContractCreation-Step63)'])
return browser
}
@@ -160,7 +160,7 @@ function stepdetail (browser) {
.assertStepDetail('63', '63', '', '32000', '79283', '0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
.click('#intoforward')
.click('#overforward')
- .assertStepDetail('108', '44', '', '0', '27145', '(Contract Creation - Step 63)')
+ .assertStepDetail('108', '44', '', '0', '27145', '(ContractCreation-Step63)')
.click('#intoforward')
.assertStepDetail('109', '64', '', '3', '25145', '0x0d3a18d64dfe4f927832ab58d6451cecc4e517c5')
return browser