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