Merge pull request #1679 from ethereum/fixTestSwapIt

fix browser tests for swap_it
pull/1/head
yann300 6 years ago committed by GitHub
commit 18f0f5a04c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/app/components/plugin-manager-component.js
  2. 1
      src/app/components/swap-panel-component.js
  3. 6
      src/app/tabs/compileTab/compileTab.js
  4. 22
      test-browser/helpers/contracts.js
  5. 21
      test-browser/helpers/init.js
  6. 11
      test-browser/tests/ballot.js
  7. 11
      test-browser/tests/compiling.js
  8. 6
      test-browser/tests/sharedFolderExplorer.js
  9. 14
      test-browser/tests/simpleContract.js
  10. 7
      test-browser/tests/staticanalysis.js
  11. 3
      test-browser/tests/units/testRecorder.js

@ -105,12 +105,12 @@ class PluginManagerComponent {
</div>`
return yo`
<div id=${item} class=${css.plugin} >
<div id=${item} title="${item}" class=${css.plugin} >
<h3>${mod.profile.name}</h3>
${mod.profile.description}
${ctrBtns}
</div>
`
`
}
reRender () {

@ -15,6 +15,7 @@ class SwapPanelComponent {
showContent (moduleName) {
// hiding the current view and display the `moduleName`
if (moduleName === this.currentNode) return
if (this.contents[moduleName]) {
this.contents[moduleName].style.display = 'block'
if (this.currentNode) {

@ -56,8 +56,8 @@ class CompileTab {
(error, content, cleanUrl, type, url) => {
if (error) return cb(error)
if (this._deps.fileProviders[type]) {
this._deps.fileProviders[type].addReadOnly(cleanUrl, content, url)
if (this.fileProviders[type]) {
this.fileProviders[type].addReadOnly(cleanUrl, content, url)
}
cb(null, content)
})
@ -66,7 +66,7 @@ class CompileTab {
importFileCb (url, filecb) {
if (url.indexOf('/remix_tests.sol') !== -1) return filecb(null, remixTests.assertLibCode)
var provider = this._deps.fileManager.fileProviderOf(url)
var provider = this.fileManager.fileProviderOf(url)
if (provider) {
if (provider.type === 'localhost' && !provider.isConnected()) {
return filecb(`file provider ${provider.type} not available while trying to resolve ${url}`)

@ -23,11 +23,17 @@ module.exports = {
testEditorValue,
renameFile,
removeFile,
getAddressAtPosition
getAddressAtPosition,
clickLaunchIcon
}
function clickLaunchIcon (icon) {
this.click('#icon-panel div[title="' + icon + '"]')
return this
}
function getCompiledContracts (browser, compiled, callback) {
browser.execute(function () {
browser.clickLaunchIcon('solidity').execute(function () {
var contracts = document.querySelectorAll('#compileTabView select option')
if (!contracts) {
return null
@ -44,14 +50,14 @@ function getCompiledContracts (browser, compiled, callback) {
}
function selectContract (browser, contractName, callback) {
browser.click('.runView')
browser.clickLaunchIcon('settings').clickLaunchIcon('run transactions')
.setValue('#runTabView select[class^="contractNames"]', contractName).perform(() => {
callback()
})
}
function createContract (browser, inputParams, callback) {
browser.click('.runView')
browser.clickLaunchIcon('settings').clickLaunchIcon('run transactions')
.setValue('div[class^="contractActionsContainerSingle"] input', inputParams, function () {
browser.click('#runTabView button[class^="instanceButton"]').pause(500).perform(function () { callback() })
})
@ -79,7 +85,7 @@ function verifyContract (browser, compiledContractNames, callback) {
function testContracts (browser, fileName, contractCode, compiledContractNames, callback) {
browser
.click('.compileView')
.clickLaunchIcon('solidity')
.clearValue('#input textarea')
.perform((client, done) => {
addFile(browser, fileName, contractCode, done)
@ -211,7 +217,7 @@ function setEditorValue (value, callback) {
}
function addInstance (browser, address, isValidFormat, isValidChecksum, callback) {
browser.clearValue('.ataddressinput').setValue('.ataddressinput', address, function () {
browser.clickLaunchIcon('run transactions').clearValue('.ataddressinput').setValue('.ataddressinput', address, function () {
browser.click('div[class^="atAddress"]')
.execute(function () {
var ret = document.querySelector('div[class^="modalBody"] div').innerHTML
@ -259,7 +265,7 @@ function modalFooterOKClick () {
}
function addFile (browser, name, content, done) {
browser.click('.newFile')
browser.clickLaunchIcon('run transactions').clickLaunchIcon('file explorers').click('.newFile')
.perform((client, done) => {
browser.execute(function (fileName) {
if (fileName !== 'Untitled.sol') {
@ -366,7 +372,7 @@ function useFilter (browser, filter, test, done) {
}
function switchFile (browser, name, done) {
browser
browser.clickLaunchIcon('settings').clickLaunchIcon('file explorers')
.click('li[key="' + name + '"]')
.pause(2000)
.perform(() => {

@ -1,12 +1,31 @@
var helpers = require('./contracts')
module.exports = function (browser, callback) {
browser.clickLaunchIcon = helpers.clickLaunchIcon
browser
.url('http://127.0.0.1:8080/#version=builtin')
.injectScript('test-browser/helpers/applytestmode.js', function () {
browser.resizeWindow(2560, 1440, () => {
browser.click('#autoCompile')
initModules(browser, () => {
browser.clickLaunchIcon('solidity').click('#autoCompile')
.perform(function () {
callback()
})
})
})
})
}
function initModules (browser, callback) {
browser.click('#icon-panel div[title="plugin manager"]')
.execute(function () {
document.querySelector('div[title="plugin manager"]').scrollTop = document.querySelector('div[title="plugin manager"]').scrollHeight
}, [], function () {
browser.click('#pluginManager div[title="solidity"] button')
.click('#pluginManager div[title="run transactions"] button')
.click('#pluginManager div[title="solidity static analysis"] button')
.click('#pluginManager div[title="debugger"] button')
.click('#icon-panel div[title="file explorers"]')
.perform(() => { callback() })
})
}

@ -26,14 +26,15 @@ function runTests (browser, testData) {
browser.clickFunction = contractHelper.clickFunction
browser.modalFooterOKClick = contractHelper.modalFooterOKClick
browser.setEditorValue = contractHelper.setEditorValue
browser.clickLaunchIcon = contractHelper.clickLaunchIcon
browser
.waitForElementVisible('.newFile', 10000)
.click('.compileView')
.waitForElementVisible('#icon-panel', 10000)
.clickLaunchIcon('solidity')
.perform((client, done) => {
contractHelper.testContracts(browser, 'Untitled.sol', sources[0]['browser/Untitled.sol'], ['Ballot'], function () {
done()
})
}).click('.runView')
}).clickLaunchIcon('run transactions')
.setValue('input[placeholder="uint8 _numProposals"]', '1')
.click('#runTabView button[class^="instanceButton"]')
.waitForElementPresent('.instance:nth-of-type(2)')
@ -44,6 +45,7 @@ function runTests (browser, testData) {
.pause(500)
.click('span#tx0x0571a2439ea58bd349dd130afb8aff62a33af14c06de0dbc3928519bdf13ce2e div[class^="debug"]')
.pause(2000)
.clickLaunchIcon('debugger')
.click('#jumppreviousbreakpoint')
.pause(2000)
.perform(function (client, done) {
@ -63,7 +65,7 @@ function runTests (browser, testData) {
done()
})
})
.click('.runView')
.clickLaunchIcon('run transactions')
.click('div[class^="udappClose"]')
.perform((client, done) => {
console.log('ballot.abi')
@ -77,6 +79,7 @@ function runTests (browser, testData) {
done()
})
})
.clickLaunchIcon('file explorers')
.perform((client, done) => {
console.log('addInstance 0x692a70D2e424a56D2C6C27aA97D1a86395877b3A')
contractHelper.addInstance(browser, '0x692a70D2e424a56D2C6C27aA97D1a86395877b3A', true, true, () => {

@ -24,9 +24,10 @@ function runTests (browser) {
browser.setEditorValue = contractHelper.setEditorValue
browser.modalFooterOKClick = contractHelper.modalFooterOKClick
browser.getEditorValue = contractHelper.getEditorValue
browser.clickLaunchIcon = contractHelper.clickLaunchIcon
browser
.waitForElementVisible('.newFile', 10000)
.click('.compileView')
.waitForElementVisible('#icon-panel', 10000)
.clickLaunchIcon('solidity')
.perform(() => {
// the first fn is used to pass browser to the other ones.
async.waterfall([function (callback) { callback(null, browser) }, testSimpleContract, testReturnValues, testInputValues, testRecorder.test], function () {
@ -37,7 +38,7 @@ function runTests (browser) {
function testSimpleContract (browser, callback) {
contractHelper.testContracts(browser, 'Untitled.sol', sources[0]['browser/Untitled.sol'], ['TestContract'], function () {
browser.click('.runView')
browser.clickLaunchIcon('run transactions')
.click('#runTabView button[class^="instanceButton"]')
.waitForElementPresent('.instance:nth-of-type(2)')
.click('.instance:nth-of-type(2)')
@ -68,7 +69,7 @@ function testSimpleContract (browser, callback) {
function testReturnValues (browser, callback) {
contractHelper.testContracts(browser, 'returnValues.sol', sources[1]['browser/returnValues.sol'], ['testReturnValues'], function () {
browser.click('.runView')
browser.clickLaunchIcon('run transactions')
.click('#runTabView button[class^="instanceButton"]')
.waitForElementPresent('.instance:nth-of-type(2)')
.click('.instance:nth-of-type(2)')
@ -106,7 +107,7 @@ function testReturnValues (browser, callback) {
function testInputValues (browser, callback) {
contractHelper.testContracts(browser, 'inputValues.sol', sources[2]['browser/inputValues.sol'], ['test'], function () {
browser.click('.runView')
browser.clickLaunchIcon('run transactions')
.click('#runTabView button[class^="instanceButton"]')
.waitForElementPresent('.instance:nth-of-type(2)')
.click('.instance:nth-of-type(2)')

@ -52,6 +52,7 @@ function runTests (browser, testData) {
browser.modalFooterOKClick = contractHelper.modalFooterOKClick
browser.getEditorValue = contractHelper.getEditorValue
browser.testEditorValue = contractHelper.testEditorValue
browser.clickLaunchIcon = contractHelper.clickLaunchIcon
var browserName = browser.options.desiredCapabilities.browserName
if (browserName === 'safari' || browserName === 'internet explorer') {
console.log('do not run remixd test for ' + browserName + ': sauce labs doesn\'t seems to handle websocket')
@ -64,7 +65,8 @@ function runTests (browser, testData) {
return
}
browser
.waitForElementVisible('.newFile', 10000)
.waitForElementVisible('#icon-panel', 10000)
.clickLaunchIcon('file explorers')
.click('.websocketconn')
.waitForElementVisible('#modal-footer-ok', 10000)
.click('#modal-footer-ok')
@ -125,7 +127,7 @@ function runTests (browser, testData) {
testImportFromRemixd(browser, () => { done() })
})
.perform(function () {
browser.click('[data-path="localhost"]') // collapse and expand
browser.clickLaunchIcon('file explorers').click('[data-path="localhost"]') // collapse and expand
.waitForElementNotVisible('[data-path="localhost/folder1"]')
.click('[data-path="localhost"]')
.waitForElementVisible('[data-path="localhost/folder1"]')

@ -20,10 +20,12 @@ module.exports = {
function runTests (browser) {
browser.setEditorValue = contractHelper.setEditorValue
browser.getEditorValue = contractHelper.getEditorValue
browser.clickLaunchIcon = contractHelper.clickLaunchIcon
browser
.waitForElementVisible('.newFile', 10000)
.click('.compileView')
.click('#filepanel label[data-path="browser"]')
.waitForElementVisible('#icon-panel', 10000)
.clickLaunchIcon('solidity')
.clickLaunchIcon('file explorers')
.click('#swap-panel label[data-path="browser"]')
.perform(() => {
// the first fn is used to pass browser to the other ones.
async.waterfall([function (callback) { callback(null, browser) },
@ -63,7 +65,7 @@ function testSuccessImport (browser, callback) {
function testFailedImport (browser, callback) {
console.log('testFailedImport')
contractHelper.addFile(browser, 'Untitled3.sol', sources[2]['browser/Untitled3.sol'], () => {
browser.assert.containsText('#compileTabView .error pre', 'Unable to import "browser/Untitled11.sol": File not found')
browser.clickLaunchIcon('solidity').assert.containsText('#compileTabView .error pre', 'Unable to import "browser/Untitled11.sol": File not found')
.perform(function () {
callback(null, browser)
})
@ -94,8 +96,8 @@ function testAutoDeployLib (browser, callback) {
function testManualDeployLib (browser, callback) {
console.log('testManualDeployLib')
browser.click('i[class^="clearinstance"]').pause(5000).click('.settingsView').click('#generatecontractmetadata').perform(() => {
browser.click('.compileView').click('#compile').perform(() => { // that should generate the JSON artefact
browser.click('i[class^="clearinstance"]').pause(5000).clickLaunchIcon('settings').click('#generatecontractmetadata').perform(() => {
browser.clickLaunchIcon('solidity').click('#compile').perform(() => { // that should generate the JSON artefact
contractHelper.verifyContract(browser, ['test'], () => {
contractHelper.selectContract(browser, 'lib', () => { // deploy lib
contractHelper.createContract(browser, '', () => {

@ -34,12 +34,13 @@ module.exports = {
function runTests (browser) {
browser.setEditorValue = contractHelper.setEditorValue
browser.clickLaunchIcon = contractHelper.clickLaunchIcon
browser
.waitForElementVisible('.newFile', 10000)
.click('.compileView')
.waitForElementVisible('#icon-panel', 10000)
.clickLaunchIcon('solidity')
contractHelper.testContracts(browser, 'Untitled.sol', sources[0]['browser/Untitled.sol'], ['TooMuchGas', 'test1', 'test2'], function () {
browser
.click('.staticanalysisView')
.clickLaunchIcon('solidity static analysis')
.click('#staticanalysisView button')
.waitForElementPresent('#staticanalysisresult .staticAnalysisWarning', 2000, true, function () {
dom.listSelectorContains(['browser/Untitled.sol:2:33:Use of tx.origin',

@ -7,9 +7,10 @@ module.exports = {
return sources
},
test: function (browser, callback) {
browser.clickLaunchIcon = contractHelper.clickLaunchIcon
contractHelper.addFile(browser, 'scenario.json', {content: records}, () => {
browser
.click('.runView')
.clickLaunchIcon('run transactions')
.click('div[class^="cardContainer"] i[class^="arrow"]')
.click('#runTabView .runtransaction')
.waitForElementPresent('.instance:nth-of-type(2)')

Loading…
Cancel
Save