From 67074edb527e6ea1adbc81a4ebda36696a4a1689 Mon Sep 17 00:00:00 2001 From: Ben Wheeler <wheeler.benjamin@gmail.com> Date: Wed, 19 Dec 2018 08:42:20 -0500 Subject: [PATCH] added back button test --- test/helpers/selenium-helper.js | 9 +++++++++ test/integration/sprites.test.js | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/test/helpers/selenium-helper.js b/test/helpers/selenium-helper.js index 2d979e448..1d1ba1e6a 100644 --- a/test/helpers/selenium-helper.js +++ b/test/helpers/selenium-helper.js @@ -14,6 +14,8 @@ class SeleniumHelper { 'clickText', 'clickButton', 'clickXpath', + 'elementIsVisible', + 'elementIsNotVisible', 'findByText', 'findByXpath', 'getDriver', @@ -24,6 +26,13 @@ class SeleniumHelper { ]); } + elementIsVisible (element) { + return this.driver.wait(until.elementIsVisible(element)); + } + elementIsNotVisible (element) { + return this.driver.wait(until.elementIsNotVisible(element)); + } + get scope () { // List of useful xpath scopes for finding elements return { diff --git a/test/integration/sprites.test.js b/test/integration/sprites.test.js index 8e57fc1a6..178fb6b98 100644 --- a/test/integration/sprites.test.js +++ b/test/integration/sprites.test.js @@ -4,6 +4,7 @@ import SeleniumHelper from '../helpers/selenium-helper'; const { clickText, clickXpath, + elementIsVisible, findByText, findByXpath, getDriver, @@ -124,4 +125,27 @@ describe('Working with sprites', () => { const logs = await getLogs(); await expect(logs).toEqual([]); }); + + test('Use browser back button to close library', async () => { + await driver.get('https://www.google.com'); + await loadUri(uri); + await clickXpath('//button[@title="Try It"]'); + await clickText('Costumes'); + await clickXpath('//button[@aria-label="Choose a Sprite"]'); + const abbyElement = await findByText('Abby'); // Should show editor for new costume + await elementIsVisible(abbyElement); + await driver.navigate().back(); + try { + // should throw error because library is no longer visible + await elementIsVisible(abbyElement); + throw 'ShouldNotGetHere'; // eslint-disable-line no-throw-literal + } catch (e) { + expect(e.constructor.name).toEqual('StaleElementReferenceError'); + } + const costumesElement = await findByText('Costumes'); // Should show editor for new costume + await elementIsVisible(costumesElement); + const logs = await getLogs(); + await expect(logs).toEqual([]); + }); + }); -- GitLab