From 86b237d667f59dd04016db482fb5c83669c0ec3e Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Sat, 16 Nov 2019 01:43:15 +0100 Subject: [PATCH 1/4] [services/remote] wrap up clearing storage with try/catch --- test/functional/services/remote/remote.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/functional/services/remote/remote.ts b/test/functional/services/remote/remote.ts index b30a0e50886d1..fa91d8acf1f48 100644 --- a/test/functional/services/remote/remote.ts +++ b/test/functional/services/remote/remote.ts @@ -128,8 +128,8 @@ export async function RemoteProvider({ getService }: FtrProviderContext) { .manage() .window() .setRect({ width, height }); - await driver.executeScript('window.sessionStorage.clear();'); - await driver.executeScript('window.localStorage.clear();'); + await driver.executeScript('try { window.sessionStorage.clear(); } catch (err) {};'); + await driver.executeScript('try { window.localStorage.clear(); } catch (err) {};'); }); lifecycle.on('cleanup', async () => { From 40cb8ef58bb9a6ec51ba130e95d3a439f35a0bb9 Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Tue, 19 Nov 2019 21:13:44 +0100 Subject: [PATCH 2/4] improve error handling on clearing storage --- test/functional/services/remote/poll_for_log_entry.ts | 9 +++++++++ test/functional/services/remote/remote.ts | 8 ++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/test/functional/services/remote/poll_for_log_entry.ts b/test/functional/services/remote/poll_for_log_entry.ts index 71e2711906fce..2b3db9b410de0 100644 --- a/test/functional/services/remote/poll_for_log_entry.ts +++ b/test/functional/services/remote/poll_for_log_entry.ts @@ -78,6 +78,15 @@ export function pollForLogEntry$( entry.level = logging.getLevel('INFO'); } + // ignore Webdriver failure to clear browser storage + if ( + entry.message.match( + `WebDriverError: SecurityError: Failed to read the '(localStorage|sessionStorage)' property from 'Window'` + ) + ) { + return false; + } + return true; }); diff --git a/test/functional/services/remote/remote.ts b/test/functional/services/remote/remote.ts index fa91d8acf1f48..b82383fe9f78b 100644 --- a/test/functional/services/remote/remote.ts +++ b/test/functional/services/remote/remote.ts @@ -128,8 +128,12 @@ export async function RemoteProvider({ getService }: FtrProviderContext) { .manage() .window() .setRect({ width, height }); - await driver.executeScript('try { window.sessionStorage.clear(); } catch (err) {};'); - await driver.executeScript('try { window.localStorage.clear(); } catch (err) {};'); + await driver.executeScript( + `try { window.sessionStorage.clear(); } catch (err) { console.log('WebDriverError: ' + err) };` + ); + await driver.executeScript( + `try { window.localStorage.clear(); } catch (err) { console.log('WebDriverError: ' + err) };` + ); }); lifecycle.on('cleanup', async () => { From dad5df67157caadb7877965747dcf2c782e180af Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Tue, 19 Nov 2019 21:43:58 +0100 Subject: [PATCH 3/4] apply awesome idea --- .../services/remote/poll_for_log_entry.ts | 9 --------- test/functional/services/remote/remote.ts | 19 +++++++++++++------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/test/functional/services/remote/poll_for_log_entry.ts b/test/functional/services/remote/poll_for_log_entry.ts index 2b3db9b410de0..71e2711906fce 100644 --- a/test/functional/services/remote/poll_for_log_entry.ts +++ b/test/functional/services/remote/poll_for_log_entry.ts @@ -78,15 +78,6 @@ export function pollForLogEntry$( entry.level = logging.getLevel('INFO'); } - // ignore Webdriver failure to clear browser storage - if ( - entry.message.match( - `WebDriverError: SecurityError: Failed to read the '(localStorage|sessionStorage)' property from 'Window'` - ) - ) { - return false; - } - return true; }); diff --git a/test/functional/services/remote/remote.ts b/test/functional/services/remote/remote.ts index b82383fe9f78b..34ae94a7778d5 100644 --- a/test/functional/services/remote/remote.ts +++ b/test/functional/services/remote/remote.ts @@ -38,6 +38,17 @@ export async function RemoteProvider({ getService }: FtrProviderContext) { const coveragePrefix = 'coveragejson:'; const coverageDir = resolve(__dirname, '../../../../target/kibana-coverage/functional'); let logSubscription: undefined | Rx.Subscription; + type BrowserStorage = 'sessionStorage' | 'localStorage'; + + const clearBrowserStorage = async (storageType: BrowserStorage) => { + try { + await driver.executeScript(`window.${storageType}.clear();`); + } catch (error) { + if (!error.message.includes(`Failed to read the ${storageType} property from 'Window'`)) { + throw error; + } + } + }; const { driver, By, until, consoleLog$ } = await initWebDriver( log, @@ -128,12 +139,8 @@ export async function RemoteProvider({ getService }: FtrProviderContext) { .manage() .window() .setRect({ width, height }); - await driver.executeScript( - `try { window.sessionStorage.clear(); } catch (err) { console.log('WebDriverError: ' + err) };` - ); - await driver.executeScript( - `try { window.localStorage.clear(); } catch (err) { console.log('WebDriverError: ' + err) };` - ); + await clearBrowserStorage('sessionStorage'); + await clearBrowserStorage('localStorage'); }); lifecycle.on('cleanup', async () => { From 7735a1de4d030110df5fa7c5d24d96dd340f0a79 Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Tue, 19 Nov 2019 22:09:27 +0100 Subject: [PATCH 4/4] fix exception message --- test/functional/services/remote/remote.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/services/remote/remote.ts b/test/functional/services/remote/remote.ts index 34ae94a7778d5..380c33e93ad90 100644 --- a/test/functional/services/remote/remote.ts +++ b/test/functional/services/remote/remote.ts @@ -44,7 +44,7 @@ export async function RemoteProvider({ getService }: FtrProviderContext) { try { await driver.executeScript(`window.${storageType}.clear();`); } catch (error) { - if (!error.message.includes(`Failed to read the ${storageType} property from 'Window'`)) { + if (!error.message.includes(`Failed to read the '${storageType}' property from 'Window'`)) { throw error; } }