diff --git a/lib/driver-helper.js b/lib/driver-helper.js index 4a1830c0f..fe685d7ca 100755 --- a/lib/driver-helper.js +++ b/lib/driver-helper.js @@ -9,38 +9,9 @@ import * as dataHelper from './data-helper'; const explicitWaitMS = config.get( 'explicitWaitMS' ); const by = webdriver.By; -export function highlightElement( driver, selector, waitOverride ) { - if ( config.has( 'highlightElements' ) && config.get( 'highlightElements' ) ) { - const timeoutWait = waitOverride ? waitOverride : explicitWaitMS; - - function setStyle( element, style ) { - const previous = element.getAttribute( 'style' ); - element.setAttribute( 'style', style ); - setTimeout( () => { - element.setAttribute( 'style', previous ); - }, 200 ); - return 'highlighted'; - } - - let theElement = driver.findElement( selector ); - return driver.wait( - function() { - return driver.executeScript( - setStyle, - theElement, - 'color: red; background-color: yellow;' - ); - }, - timeoutWait, - 'Timed out waiting for element to be Highlighted' - ); - } -} - export function clickWhenClickable( driver, selector, waitOverride ) { const timeoutWait = waitOverride ? waitOverride : explicitWaitMS; - this.highlightElement( driver, selector, waitOverride ); return driver.wait( function() { return driver.findElement( selector ).then( @@ -205,7 +176,7 @@ export function elementIsNotPresent( driver, cssSelector ) { } ); } -export function waitForFieldClearable( driver, selector ) { +export async function waitForFieldClearable( driver, selector ) { return driver.wait( function() { return driver.findElement( selector ).then( @@ -233,45 +204,28 @@ export function waitForFieldClearable( driver, selector ) { ); } -export function setWhenSettable( +export async function setWhenSettable( driver, selector, value, - { secureValue = false, pauseBetweenKeysMS = 0, assumeSuccess = false } = {} + { secureValue = false, pauseBetweenKeysMS = 0 } = {} ) { + const self = this; const logValue = secureValue === true ? '*********' : value; - let self = this; return driver.wait( - function() { - return driver.findElement( selector ).then( - async function( element ) { - await self.waitForFieldClearable( driver, selector ); - if ( pauseBetweenKeysMS === 0 ) { - await element.sendKeys( value ); - } else { - for ( let i = 0; i < value.length; i++ ) { - driver.sleep( pauseBetweenKeysMS ).then( () => { - element.sendKeys( value[ i ] ); - } ); - } - } - - return ( - assumeSuccess || - element.getAttribute( 'value' ).then( - actualValue => { - return actualValue === value; - }, - function() { - return false; - } - ) - ); - }, - function() { - return false; + async function() { + await self.waitForFieldClearable( driver, selector ); + const element = await driver.findElement( selector ); + if ( pauseBetweenKeysMS === 0 ) { + await element.sendKeys( value ); + } else { + for ( let i = 0; i < value.length; i++ ) { + await driver.sleep( pauseBetweenKeysMS ); + await element.sendKeys( value[ i ] ); } - ); + } + const actualValue = await element.getAttribute( 'value' ); + return actualValue === value; }, explicitWaitMS, `Timed out waiting for element with ${ selector.using } of '${ diff --git a/lib/pages/account/close-account-page.js b/lib/pages/account/close-account-page.js index 27274df31..d39896b2e 100755 --- a/lib/pages/account/close-account-page.js +++ b/lib/pages/account/close-account-page.js @@ -20,11 +20,18 @@ export default class CloseAccountPage extends AsyncBaseContainer { } async enterAccountNameAndClose( accountName ) { - driverHelper.setWhenSettable( + await driverHelper.setWhenSettable( this.driver, by.css( '.account-close__confirm-dialog-confirm-input' ), accountName ); - return driverHelper.clickWhenClickable( this.driver, by.css( '.dialog button.is-scary' ) ); + await driverHelper.waitTillNotPresent( + this.driver, + by.css( '.dialog button.is-scary[disabled]' ) + ); + return await driverHelper.clickWhenClickable( + this.driver, + by.css( '.dialog button.is-scary' ) + ); } } diff --git a/run.sh b/run.sh index 054bc6147..3af5e303c 100755 --- a/run.sh +++ b/run.sh @@ -20,6 +20,9 @@ if [ "$NODE_ENV" = "" ]; then exit 1 fi +#disable selenium promise manager +export SELENIUM_PROMISE_MANAGER=0 + # Function to join arrays into a string function joinStr { local IFS="$1"; shift; echo "$*"; } diff --git a/scripts/run-wrapper.sh b/scripts/run-wrapper.sh index 052d509fc..532afbc3a 100755 --- a/scripts/run-wrapper.sh +++ b/scripts/run-wrapper.sh @@ -17,7 +17,7 @@ if [ "$NODE_ENV_OVERRIDE" != "" ]; then fi #disable selenium promise manager -#export SELENIUM_PROMISE_MANAGER=0 +export SELENIUM_PROMISE_MANAGER=0 export TESTARGS="-R -p" diff --git a/specs/wp-theme-switch-spec.js b/specs/wp-theme-switch-spec.js index fa9f75a68..333e456e2 100755 --- a/specs/wp-theme-switch-spec.js +++ b/specs/wp-theme-switch-spec.js @@ -136,9 +136,7 @@ test.describe( if ( host === 'WPCOM' ) { test.it( 'Can customize the site from the theme thanks dialog', async function() { - let customizerPage = await CustomizerPage.Expect( driver ); - let displayed = await customizerPage.displayed(); - return assert( displayed, 'The customizer page was not displayed' ); + return await CustomizerPage.Expect( driver ); } ); } else { test.it( 'Can log in via Jetpack SSO', async function() { @@ -148,9 +146,7 @@ test.describe( test.it( 'Can customize the site from the theme thanks dialog', async function() { await WPAdminCustomizerPage.refreshIfError( driver ); - const wpAdminCustomizerPage = await WPAdminCustomizerPage.Expect( driver ); - let displayed = await wpAdminCustomizerPage.displayed(); - assert( displayed, 'The customizer page was not displayed' ); + return await WPAdminCustomizerPage.Expect( driver ); } ); } } );