Skip to content
This repository has been archived by the owner on Feb 18, 2021. It is now read-only.

Disable promise manager #1246

Merged
merged 7 commits into from
Jun 25, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 16 additions & 62 deletions lib/driver-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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 '${
Expand Down
11 changes: 9 additions & 2 deletions lib/pages/account/close-account-page.js
Original file line number Diff line number Diff line change
Expand Up @@ -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' )
);
}
}
3 changes: 3 additions & 0 deletions run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 "$*"; }

Expand Down
2 changes: 1 addition & 1 deletion scripts/run-wrapper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down
8 changes: 2 additions & 6 deletions specs/wp-theme-switch-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -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 );
} );
}
} );
Expand Down