diff --git a/.circleci/config.yml b/.circleci/config.yml index df86ca62aa..9b20ee1945 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -25,11 +25,17 @@ jobs: - run: npm run lint && npm run test && npm run make-mock-compiler - run: name: Download Selenium - command: wget http://selenium-release.storage.googleapis.com/3.5/selenium-server-standalone-3.5.3.jar + command: ./node_modules/.bin/selenium-standalone install --config=../remix-ide/seleniumConfig.js - run: name: Start Selenium - command: java -jar selenium-server-standalone-3.5.3.jar + command: ./node_modules/.bin/selenium-standalone start --config=../remix-ide/seleniumConfig.js background: true + - run: + name: Download Latest Firefox + command: sudo apt-get purge -y firefox && wget https://sourceforge.net/projects/ubuntuzilla/files/mozilla/apt/pool/main/f/firefox-mozilla-build/firefox-mozilla-build_73.0.1-0ubuntu1_amd64.deb + - run: + name: Install Firefox + command: sudo dpkg -i firefox-mozilla-build_73.0.1-0ubuntu1_amd64.deb - run: ./ci/browser_tests.sh - run: name: Deploy @@ -50,4 +56,4 @@ workflows: version: 2 build_all: jobs: - - remix-ide + - remix-ide \ No newline at end of file diff --git a/ci/browser_tests.sh b/ci/browser_tests.sh index a30a4afa61..d09efa27ba 100755 --- a/ci/browser_tests.sh +++ b/ci/browser_tests.sh @@ -21,7 +21,7 @@ setupRemixd sleep 5 -npm run nightwatch_local_chrome || TEST_EXITCODE=1 +npm run nightwatch_parallel || TEST_EXITCODE=1 echo "$TEST_EXITCODE" if [ "$TEST_EXITCODE" -eq 1 ] diff --git a/package-lock.json b/package-lock.json index 8b592ae785..04e126887e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2020,6 +2020,12 @@ "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=" }, + "adm-zip": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz", + "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==", + "dev": true + }, "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", @@ -5082,6 +5088,21 @@ "event-emitter": "~0.3.5" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", @@ -7922,6 +7943,112 @@ } } }, + "geckodriver": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-1.19.1.tgz", + "integrity": "sha512-xWL/+eEhQ6+t98rc1c+xVM3hshDJibXtZf9WJA3sshxq4k5L1PBwfmswyBmmlKUfBr4xuC256gLVC2RxFhiCsQ==", + "dev": true, + "requires": { + "adm-zip": "0.4.11", + "bluebird": "3.4.6", + "got": "5.6.0", + "https-proxy-agent": "3.0.0", + "tar": "4.4.2" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "bluebird": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", + "integrity": "sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8=", + "dev": true + }, + "got": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-5.6.0.tgz", + "integrity": "sha1-ux1+4WO3gIK7yOuDbz85UATqb78=", + "dev": true, + "requires": { + "create-error-class": "^3.0.1", + "duplexer2": "^0.1.4", + "is-plain-obj": "^1.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "node-status-codes": "^1.0.0", + "object-assign": "^4.0.1", + "parse-json": "^2.1.0", + "pinkie-promise": "^2.0.0", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.5", + "timed-out": "^2.0.0", + "unzip-response": "^1.0.0", + "url-parse-lax": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.0.tgz", + "integrity": "sha512-y4jAxNEihqvBI5F3SaO2rtsjIOnnNA8sEbuiP+UhJZJHeM2NRm6c09ax2tgqme+SgUUvjao2fJXF4h3D6Cb2HQ==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "tar": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz", + "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==", + "dev": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "timed-out": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", + "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=", + "dev": true + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, "generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -11031,6 +11158,12 @@ "semver": "^6.3.0" } }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "dev": true + }, "nodent": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/nodent/-/nodent-3.2.11.tgz", @@ -13788,6 +13921,16 @@ "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==", "dev": true }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, "read-cmd-shim": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz", diff --git a/package.json b/package.json index b861a6d6b5..11c39272d4 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "remixd": "0.1.8-alpha.10", "request": "^2.83.0", "rimraf": "^2.6.1", - "selenium-standalone": "^6.0.1", + "selenium-standalone": "^6.17.0", "semver": "^6.1.2", "solc": "^0.6.0", "swarmgw": "^0.3.1", @@ -162,6 +162,7 @@ "lint": "standard | notify-error", "make-mock-compiler": "node ci/makeMockCompiler.js", "minify": "uglifyjs --in-source-map inline --source-map-inline -c warnings=false", + "nightwatch_parallel": "nightwatch -e chrome,firefox --config nightwatch.js", "nightwatch_local_firefox": "nightwatch --config nightwatch.js --env firefox", "nightwatch_local_chrome": "nightwatch --config nightwatch.js --env chrome", "nightwatch_local_ballot": "nightwatch ./test-browser/tests/ballot.js --config nightwatch.js --env chrome ", diff --git a/seleniumConfig.js b/seleniumConfig.js new file mode 100644 index 0000000000..210c9b6fa6 --- /dev/null +++ b/seleniumConfig.js @@ -0,0 +1,11 @@ +module.exports = { + version: '3.8.1', + baseURL: 'https://selenium-release.storage.googleapis.com', + drivers: { + chrome: { + version: '2.39', + arch: process.arch, + baseURL: 'https://chromedriver.storage.googleapis.com' + } + } +} diff --git a/src/app/panels/terminal.js b/src/app/panels/terminal.js index 8c9730edaf..9665161035 100644 --- a/src/app/panels/terminal.js +++ b/src/app/panels/terminal.js @@ -158,7 +158,8 @@ class Terminal extends Plugin { class="border ${css.filter} form-control" id="searchInput" onkeydown=${filter} - placeholder="Filter with transaction hash or address"> + placeholder="Search with transaction hash or address" + data-id="terminalInputSearch"> ` self._view.bar = yo`
diff --git a/src/app/ui/multiParamManager.js b/src/app/ui/multiParamManager.js index 6468ef1fb4..cbedadf15a 100644 --- a/src/app/ui/multiParamManager.js +++ b/src/app/ui/multiParamManager.js @@ -119,7 +119,7 @@ class MultiParamManager { this.basicInputField = yo`` this.basicInputField.setAttribute('placeholder', this.inputs) this.basicInputField.setAttribute('title', this.inputs) - this.basicInputField.setAttribute('data-id', `multiParamManagerBasicInputField${this.inputs}`) + this.basicInputField.setAttribute('data-id', this.inputs) var onClick = () => { this.clickCallBack(this.funABI.inputs, this.basicInputField.value) diff --git a/test-browser/commands/checkTerminalFilter.js b/test-browser/commands/checkTerminalFilter.js index e448599bbb..8f78306fe2 100644 --- a/test-browser/commands/checkTerminalFilter.js +++ b/test-browser/commands/checkTerminalFilter.js @@ -17,10 +17,10 @@ function checkFilter (browser, filter, test, done) { done() return } - const filterClass = '#main-panel div[class^="search"] input[class^="filter"]' + const filterClass = '[data-id="terminalInputSearch"]' browser.setValue(filterClass, filter, function () { browser.execute(function () { - return document.querySelector('#main-panel div[class^="journal"]').innerHTML === test + return document.querySelector('[data-id="terminalJournal"]').innerHTML === test }, [], function (result) { browser.clearValue(filterClass).setValue(filterClass, '', function () { if (!result.value) { diff --git a/test-browser/commands/executeScript.js b/test-browser/commands/executeScript.js index cfa8d9b562..f3bf5b09e4 100644 --- a/test-browser/commands/executeScript.js +++ b/test-browser/commands/executeScript.js @@ -3,11 +3,11 @@ const EventEmitter = require('events') class ExecuteScript extends EventEmitter { command (script) { this.api - .clearValue('span[data-id="terminalCliInput"]') - .click('div[data-id="terminalCli"]') - .keys(script) - .keys(this.api.Keys.ENTER) - .keys(this.api.Keys.ENTER) // that's a bug... sometimes we need to press 2 times to execute a command + .clearValue('*[data-id="terminalCliInput"]') + .click('*[data-id="terminalCli"]') + .sendKeys('*[data-id="terminalCliInput"]', script) + .sendKeys('*[data-id="terminalCliInput"]', this.api.Keys.ENTER) + .sendKeys('*[data-id="terminalCliInput"]', this.api.Keys.ENTER) .perform(() => { this.emit('complete') }) diff --git a/test-browser/commands/rightClick.js b/test-browser/commands/rightClick.js new file mode 100644 index 0000000000..827b5f02df --- /dev/null +++ b/test-browser/commands/rightClick.js @@ -0,0 +1,36 @@ +const EventEmitter = require('events') + +class RightClick extends EventEmitter { + command (cssSelector) { + this.api.perform((done) => { + rightClick(this.api, cssSelector, () => { + done() + this.emit('complete') + }) + }) + return this + } +} + +function rightClick (browser, cssSelector, callback) { + browser.execute(function (cssSelector) { + const element = document.querySelector(cssSelector) + const evt = element.ownerDocument.createEvent('MouseEvents') + const RIGHT_CLICK_BUTTON_CODE = 2 + + evt.initMouseEvent('contextmenu', true, true, + element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, + false, false, false, RIGHT_CLICK_BUTTON_CODE, null) + if (document.createEventObject) { + // dispatch for IE + return element.fireEvent('onclick', evt) + } else { + // dispatch for firefox + others + return !element.dispatchEvent(evt) + } + }, [cssSelector], function () { + callback() + }) +} + +module.exports = RightClick diff --git a/test-browser/tests/editor.js b/test-browser/tests/editor.js index 6146966278..2cc2e3fd21 100644 --- a/test-browser/tests/editor.js +++ b/test-browser/tests/editor.js @@ -30,7 +30,7 @@ module.exports = { browser.waitForElementVisible('*[data-id="editorInput"]') .waitForElementVisible('*[class="ace_content"]') .click('*[class="ace_content"]') - .keys('error') + .sendKeys('*[class="ace_text-input"]', 'error') .pause(2000) .waitForElementVisible('.ace_error') }, diff --git a/test-browser/tests/fileExplorer.js b/test-browser/tests/fileExplorer.js index 932693956a..3c66bac45b 100644 --- a/test-browser/tests/fileExplorer.js +++ b/test-browser/tests/fileExplorer.js @@ -23,18 +23,18 @@ module.exports = { 'Should rename `5_New_contract.sol` to 5_Renamed_Contract.sol': function (browser) { browser .waitForElementVisible('*[data-id="treeViewLibrowser/5_New_contract.sol"]') - .moveToElement('*[data-id="treeViewLibrowser/5_New_contract.sol"]', 5, 5) - .mouseButtonClick('right') + .rightClick('[data-path="browser/5_New_contract.sol"]') .click('*[id="menuitemrename"]') - .keys('5_Renamed_Contract.sol') - .keys(browser.Keys.ENTER) + .sendKeys('[data-path="browser/5_New_contract.sol"]', '5_Renamed_Contract.sol') + .sendKeys('[data-path="browser/5_New_contract.sol"]', browser.Keys.ENTER) + .keys() .waitForElementVisible('*[data-id="treeViewLibrowser/5_Renamed_Contract.sol"]') }, 'Should delete file `5_Renamed_Contract.sol` from file explorer': function (browser) { browser - .moveToElement('*[data-id="treeViewLibrowser/5_Renamed_Contract.sol"]', 5, 5) - .mouseButtonClick('right') + .waitForElementVisible('*[data-id="treeViewLibrowser/5_Renamed_Contract.sol"]') + .rightClick('[data-path="browser/5_Renamed_Contract.sol"]') .click('*[id="menuitemdelete"]') .waitForElementVisible('*[data-id="modalDialogContainer"]') .modalFooterOKClick() @@ -44,8 +44,7 @@ module.exports = { 'Should create a new folder': function (browser) { browser .waitForElementVisible('*[data-id="treeViewLibrowser/1_Storage.sol"]') - .moveToElement('*[data-id="treeViewLibrowser/1_Storage.sol"]', 5, 5) - .mouseButtonClick('right') + .rightClick('[data-path="browser/1_Storage.sol"]') .click('*[id="menuitemcreate folder"]') .waitForElementVisible('*[data-id="modalDialogContainer"]') .setValue('*[data-id="modalDialogCustomPromptText"]', 'Browser_Tests') @@ -56,19 +55,17 @@ module.exports = { 'Should rename Browser_Tests folder to Browser_E2E_Tests': function (browser) { browser .waitForElementVisible('*[data-id="treeViewLibrowser/Browser_Tests"]') - .moveToElement('*[data-id="treeViewLibrowser/Browser_Tests"]', 5, 5) - .mouseButtonClick('right') + .rightClick('[data-path="browser/Browser_Tests"]') .click('*[id="menuitemrename"]') - .keys('Browser_E2E_Tests') - .keys(browser.Keys.ENTER) + .sendKeys('[data-path="browser/Browser_Tests"]', 'Browser_E2E_Tests') + .sendKeys('[data-path="browser/Browser_Tests"]', browser.Keys.ENTER) .waitForElementVisible('*[data-id="treeViewLibrowser/Browser_E2E_Tests"]') }, 'Should delete Browser_E2E_Tests folder': function (browser) { browser .waitForElementVisible('*[data-id="treeViewLibrowser/Browser_E2E_Tests"]') - .moveToElement('*[data-id="treeViewLibrowser/Browser_E2E_Tests"]', 5, 5) - .mouseButtonClick('right') + .rightClick('[data-path="browser/Browser_E2E_Tests"]') .click('*[id="menuitemdelete"]') .waitForElementVisible('*[data-id="modalDialogContainer"]') .modalFooterOKClick() @@ -76,6 +73,8 @@ module.exports = { }, 'Should publish all explorer files to github gist': function (browser) { + const runtimeBrowser = browser.capabilities.browserName + browser .waitForElementVisible('*[data-id="fileExplorerNewFilepublishToGist"]') .click('*[data-id="fileExplorerNewFilepublishToGist"]') @@ -86,7 +85,12 @@ module.exports = { .modalFooterOKClick() .pause(2000) .switchBrowserTab(1) - .assert.urlContains('https://gist.github.com') + .perform((done) => { + if (runtimeBrowser === 'chrome') { + browser.assert.urlContains('https://gist.github.com') + } + done() + }) .end() }, diff --git a/test-browser/tests/generalSettings.js b/test-browser/tests/generalSettings.js index 649c91d75e..3a01519a12 100644 --- a/test-browser/tests/generalSettings.js +++ b/test-browser/tests/generalSettings.js @@ -24,7 +24,7 @@ module.exports = { .click('*[data-id="settingsTabGitterChannelButton"]') .pause(2000) .switchBrowserTab(1) - if (runtimeBrowser === 'chrome') browser.assert.urlContains('https://gitter.im/ethereum/remix') + .perform((done) => { if (runtimeBrowser === 'chrome') { browser.assert.urlContains('https://gitter.im/ethereum/remix') } done() }) }, 'Should activate `generate contract metadata`': function (browser) { diff --git a/test-browser/tests/gist.js b/test-browser/tests/gist.js index 6284a17958..1cc94bad0b 100644 --- a/test-browser/tests/gist.js +++ b/test-browser/tests/gist.js @@ -19,6 +19,8 @@ module.exports = { - switch to a file in the new gist */ console.log('token', process.env.gist_token) + const runtimeBrowser = browser.capabilities.browserName + browser .waitForElementVisible('*[data-id="remixIdeIconPanel"]', 10000) .clickLaunchIcon('fileExplorers') @@ -35,7 +37,7 @@ module.exports = { browser .modalFooterCancelClick() .executeScript(`remix.loadgist('${gistid}')`) - .switchFile('browser/gists') + .perform((done) => { if (runtimeBrowser === 'chrome') { browser.switchFile('browser/gists') } done() }) .switchFile(`browser/gists/${gistid}`) .switchFile(`browser/gists/${gistid}/1_Storage.sol`) .perform(done) diff --git a/test-browser/tests/remixd.js b/test-browser/tests/remixd.js index e53fa4f432..f9bb048b72 100644 --- a/test-browser/tests/remixd.js +++ b/test-browser/tests/remixd.js @@ -52,24 +52,23 @@ module.exports = { when a relative import is used (i.e import "openzeppelin-solidity/contracts/math/SafeMath.sol") remix (as well as truffle) try to resolve it against the node_modules and installed_contracts folder. */ - browser - .waitForElementVisible('#icon-panel', 2000) - .clickLaunchIcon('fileExplorers') - .addFile('test_import_node_modules.sol', sources[3]['browser/test_import_node_modules.sol']) - .clickLaunchIcon('solidity') - .testContracts('test_import_node_modules.sol', sources[3]['browser/test_import_node_modules.sol'], ['SafeMath']) + + browser.waitForElementVisible('#icon-panel', 2000) + .clickLaunchIcon('fileExplorers') + .addFile('test_import_node_modules.sol', sources[3]['browser/test_import_node_modules.sol']) + .clickLaunchIcon('solidity') + .testContracts('test_import_node_modules.sol', sources[3]['browser/test_import_node_modules.sol'], ['SafeMath']) }, 'Import from node_modules and reference a github import': function (browser) { - browser - .waitForElementVisible('#icon-panel', 2000) - .clickLaunchIcon('fileExplorers') - .addFile('test_import_node_modules_with_github_import.sol', sources[4]['browser/test_import_node_modules_with_github_import.sol']) - .clickLaunchIcon('solidity') - .setSolidityCompilerVersion('soljson-v0.6.2+commit.bacdbe57.js') // open-zeppelin moved to pragma ^0.6.0 - .testContracts('test_import_node_modules_with_github_import.sol', sources[4]['browser/test_import_node_modules_with_github_import.sol'], ['ERC20', 'test11']) - .clickLaunchIcon('pluginManager') - .scrollAndClick('#pluginManager article[id="remixPluginManagerListItem_remixd"] button') - .end() + browser.waitForElementVisible('#icon-panel', 2000) + .clickLaunchIcon('fileExplorers') + .addFile('test_import_node_modules_with_github_import.sol', sources[4]['browser/test_import_node_modules_with_github_import.sol']) + .clickLaunchIcon('solidity') + .setSolidityCompilerVersion('soljson-v0.6.2+commit.bacdbe57.js') // open-zeppelin moved to pragma ^0.6.0 + .testContracts('test_import_node_modules_with_github_import.sol', sources[4]['browser/test_import_node_modules_with_github_import.sol'], ['ERC20', 'test11']) + .clickLaunchIcon('pluginManager') + .scrollAndClick('#pluginManager article[id="remixPluginManagerListItem_remixd"] button') + .end() }, tearDown: sauce } @@ -81,11 +80,7 @@ function runTests (browser, testData) { browser.end() return } - if (browserName === 'firefox') { - console.log('do not run remixd test for ' + browserName + ': TODO to reenable later') - browser.end() - return - } + browser .waitForElementVisible('#icon-panel', 2000) .clickLaunchIcon('fileExplorers') diff --git a/test-browser/tests/solidityUnittests.js b/test-browser/tests/solidityUnittests.js index 8de6f15f2c..e9a94424c8 100644 --- a/test-browser/tests/solidityUnittests.js +++ b/test-browser/tests/solidityUnittests.js @@ -26,6 +26,7 @@ function runTests (browser) { .switchFile('browser/3_Ballot.sol') .clickLaunchIcon('solidityUnitTesting') .scrollAndClick('#runTestsTabRunAction') + .pause(5000) .waitForElementPresent('#solidityUnittestsOutput div[class^="testPass"]') .pause(10000) .assert.containsText('#solidityUnittestsOutput', 'browser/4_Ballot_test.sol (BallotTest)') diff --git a/test-browser/tests/terminal.js b/test-browser/tests/terminal.js index 7e16e04426..3c896a8135 100644 --- a/test-browser/tests/terminal.js +++ b/test-browser/tests/terminal.js @@ -26,7 +26,7 @@ module.exports = { browser .waitForElementVisible('*[data-id="terminalCli"]') .click('*[data-id="terminalCli"]') - .keys('remix.') + .sendKeys('*[data-id="terminalCliInput"]', 'remix.') .assert.visible('*[data-id="autoCompletePopUpAutoCompleteItem"]') },