From 62368072060d773ea9d227fb955ddd1512742c9b Mon Sep 17 00:00:00 2001 From: yann300 Date: Wed, 29 Apr 2020 14:46:44 +0200 Subject: [PATCH] fix e2e test --- ci/browser_tests_chrome_part2.sh | 2 +- ci/browser_tests_firefox_part2.sh | 2 +- .../commands/waitForElementContainsText.js | 24 +++++++++ test-browser/tests/generalSettings.js | 49 +++++++++---------- 4 files changed, 50 insertions(+), 27 deletions(-) create mode 100644 test-browser/commands/waitForElementContainsText.js diff --git a/ci/browser_tests_chrome_part2.sh b/ci/browser_tests_chrome_part2.sh index 84be000729..f1c21b6a90 100755 --- a/ci/browser_tests_chrome_part2.sh +++ b/ci/browser_tests_chrome_part2.sh @@ -21,13 +21,13 @@ setupRemixd sleep 5 +npm run nightwatch_local_generalSettings || TEST_EXITCODE=1 npm run nightwatch_local_ballot || TEST_EXITCODE=1 npm run nightwatch_local_gist || TEST_EXITCODE=1 npm run nightwatch_local_workspace || TEST_EXITCODE=1 npm run nightwatch_local_defaultLayout || TEST_EXITCODE=1 npm run nightwatch_local_pluginManager || TEST_EXITCODE=1 npm run nightwatch_local_publishContract || TEST_EXITCODE=1 -npm run nightwatch_local_generalSettings || TEST_EXITCODE=1 npm run nightwatch_local_fileExplorer || TEST_EXITCODE=1 npm run nightwatch_local_debugger || TEST_EXITCODE=1 npm run nightwatch_local_editor || TEST_EXITCODE=1 diff --git a/ci/browser_tests_firefox_part2.sh b/ci/browser_tests_firefox_part2.sh index 2e27c84fef..bb0cfac638 100755 --- a/ci/browser_tests_firefox_part2.sh +++ b/ci/browser_tests_firefox_part2.sh @@ -21,13 +21,13 @@ setupRemixd sleep 5 +npm run nightwatch_local_generalSettings_firefox || TEST_EXITCODE=1 npm run nightwatch_local_ballot_firefox || TEST_EXITCODE=1 npm run nightwatch_local_gist_firefox || TEST_EXITCODE=1 npm run nightwatch_local_workspace_firefox || TEST_EXITCODE=1 npm run nightwatch_local_defaultLayout_firefox || TEST_EXITCODE=1 npm run nightwatch_local_pluginManager_firefox || TEST_EXITCODE=1 npm run nightwatch_local_publishContract_firefox || TEST_EXITCODE=1 -npm run nightwatch_local_generalSettings_firefox || TEST_EXITCODE=1 npm run nightwatch_local_fileExplorer_firefox || TEST_EXITCODE=1 npm run nightwatch_local_debugger_firefox || TEST_EXITCODE=1 npm run nightwatch_local_editor_firefox || TEST_EXITCODE=1 diff --git a/test-browser/commands/waitForElementContainsText.js b/test-browser/commands/waitForElementContainsText.js new file mode 100644 index 0000000000..b636b68a82 --- /dev/null +++ b/test-browser/commands/waitForElementContainsText.js @@ -0,0 +1,24 @@ +const EventEmitter = require('events') + +class WaitForElementContainsText extends EventEmitter { + command (id, value) { + let incr = 0 + let runid = setInterval(() => { + this.api.getText(id, (result) => { + if (value.indexOf(result.value || '') !== -1) { + clearInterval(runid) + this.api.assert.ok(true, `WaitForElementContainsText ${id} contains ${value}`) + this.emit('complete') + } else incr++ + if (incr > 50) { + clearInterval(runid) + this.api.assert.fail(`WaitForElementContainsText - expected ${value} but got ${result.value}`) + // throw new Error(`WaitForElementContainsText ${id} ${value}`) + } + }) + }, 200) + return this + } +} + +module.exports = WaitForElementContainsText diff --git a/test-browser/tests/generalSettings.js b/test-browser/tests/generalSettings.js index 39885dd0f5..f25e144894 100644 --- a/test-browser/tests/generalSettings.js +++ b/test-browser/tests/generalSettings.js @@ -12,15 +12,14 @@ module.exports = { .click('*[data-id="landingPageStartSolidity"]') .waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="verticalIconsKindsettings"]') - .waitForElementVisible('*[data-id="settingsTabSettingsView"]') - .assert.containsText('h6[data-id="sidePanelSwapitTitle"]', 'SETTINGS') + .waitForElementContainsText('h6[data-id="sidePanelSwapitTitle"]', 'SETTINGS') }, 'Should open gitter channel in a new tab when `Gitter Channel Button` is clicked': function (browser) { const runtimeBrowser = browser.capabilities.browserName browser.waitForElementVisible('*[data-id="remixIdeSidePanel"]') - .waitForElementVisible('*[data-id="settingsTabGitterChannelButton"]') + .waitForElementVisible('*[data-id="settingsTabGitterChannelButton"]', 5000) .click('*[data-id="settingsTabGitterChannelButton"]') .pause(2000) .perform((done) => { if (runtimeBrowser === 'chrome') { browser.switchBrowserTab(1).assert.urlContains('https://gitter.im/ethereum/remix') } done() }) @@ -28,8 +27,8 @@ module.exports = { 'Should activate `generate contract metadata`': function (browser) { browser.switchBrowserTab(0) - .waitForElementVisible('*[data-id="remixIdeSidePanel"]') - .waitForElementVisible('*[data-id="settingsTabGenerateContractMetadata"]') + .waitForElementVisible('*[data-id="remixIdeSidePanel"]', 5000) + .waitForElementVisible('*[data-id="settingsTabGenerateContractMetadata"]', 5000) .click('*[data-id="settingsTabGenerateContractMetadata"]') .click('*[data-id="verticalIconsFileExplorerIcons"]') .switchFile('browser/3_Ballot.sol') @@ -43,34 +42,34 @@ module.exports = { }, 'Should add new github access token': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="verticalIconsKindsettings"]') .setValue('*[data-id="settingsTabGistAccessToken"]', '**********') .click('*[data-id="settingsTabSaveGistToken"]') - .waitForElementVisible('*[data-shared="tooltipPopup"]:nth-last-of-type(1)') + .waitForElementVisible('*[data-shared="tooltipPopup"]:nth-last-of-type(1)', 5000) .assert.containsText('*[data-shared="tooltipPopup"]:nth-last-of-type(1)', 'Access token saved') .click('*[data-id="tooltipCloseButton"]') }, 'Should copy github access token to clipboard': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="copyToClipboardCopyIcon"]') - .waitForElementVisible('*[data-shared="tooltipPopup"]:nth-last-of-type(1)') + .waitForElementVisible('*[data-shared="tooltipPopup"]:nth-last-of-type(1)', 5000) .assert.containsText('*[data-shared="tooltipPopup"]:nth-last-of-type(1)', 'Copied value to clipboard.') .click('*[data-id="tooltipCloseButton"]') }, 'Should remove github access token': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabRemoveGistToken"]') - .waitForElementVisible('*[data-shared="tooltipPopup"]:nth-last-of-type(1)') + .waitForElementVisible('*[data-shared="tooltipPopup"]:nth-last-of-type(1)', 5000) .assert.containsText('*[data-shared="tooltipPopup"]:nth-last-of-type(1)', 'Access token removed') .assert.containsText('*[data-id="settingsTabGistAccessToken"]', '') .click('*[data-id="tooltipCloseButton"]') }, 'Should load dark theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeDark"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.dark.primary) @@ -82,7 +81,7 @@ module.exports = { }, 'Should load light theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeLight"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.light.primary) @@ -94,7 +93,7 @@ module.exports = { }, 'Should load Cerulean theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeCerulean"]') .pause(5000) .checkElementStyle(':root', '--primary', remixIdeThemes.curelean.primary) @@ -106,7 +105,7 @@ module.exports = { }, 'Should load Flatly theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeFlatly"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.flatly.primary) @@ -118,7 +117,7 @@ module.exports = { }, 'Should load Lumen theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeLumen"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.lumen.primary) @@ -130,7 +129,7 @@ module.exports = { }, 'Should load Minty theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeMinty"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.minty.primary) @@ -142,7 +141,7 @@ module.exports = { }, 'Should load Pulse theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemePulse"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.pulse.primary) @@ -154,7 +153,7 @@ module.exports = { }, 'Should load Sandstone theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeSandstone"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.sandstone.primary) @@ -166,7 +165,7 @@ module.exports = { }, 'Should load Spacelab theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeSpacelab"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.spacelab.primary) @@ -178,7 +177,7 @@ module.exports = { }, 'Should load Yeti theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeYeti"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.yeti.primary) @@ -190,7 +189,7 @@ module.exports = { }, 'Should load Cyborg theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeCyborg"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.cyborg.primary) @@ -202,7 +201,7 @@ module.exports = { }, 'Should load Darkly theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeDarkly"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.darkly.primary) @@ -214,7 +213,7 @@ module.exports = { }, 'Should load Slate theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeSlate"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.slate.primary) @@ -226,7 +225,7 @@ module.exports = { }, 'Should load Superhero theme': function (browser) { - browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]') + browser.waitForElementVisible('*[data-id="verticalIconsKindsettings"]', 5000) .click('*[data-id="settingsTabThemeSuperhero"]') .pause(2000) .checkElementStyle(':root', '--primary', remixIdeThemes.superhero.primary)