From f244da77054cf7da587b16dc6ca59de141a588fb Mon Sep 17 00:00:00 2001
From: Ben Wheeler <wheeler.benjamin@gmail.com>
Date: Thu, 2 Jan 2020 14:29:04 -0500
Subject: [PATCH] added project-state integration test for new title

---
 test/helpers/selenium-helper.js        |  2 ++
 test/integration/project-state.test.js | 45 ++++++++++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 test/integration/project-state.test.js

diff --git a/test/helpers/selenium-helper.js b/test/helpers/selenium-helper.js
index 84e6c355a..ee77b4c23 100644
--- a/test/helpers/selenium-helper.js
+++ b/test/helpers/selenium-helper.js
@@ -28,6 +28,8 @@ class SeleniumHelper {
             'loadUri',
             'rightClickText'
         ]);
+
+        this.Key = webdriver.Key; // map Key constants, for sending special keys
     }
 
     elementIsVisible (element, timeoutMessage = 'elementIsVisible timed out') {
diff --git a/test/integration/project-state.test.js b/test/integration/project-state.test.js
new file mode 100644
index 000000000..e155893b3
--- /dev/null
+++ b/test/integration/project-state.test.js
@@ -0,0 +1,45 @@
+import path from 'path';
+import SeleniumHelper from '../helpers/selenium-helper';
+
+const {
+    clickText,
+    clickXpath,
+    findByXpath,
+    getDriver,
+    Key,
+    loadUri
+} = new SeleniumHelper();
+
+const uri = path.resolve(__dirname, '../../build/index.html');
+
+let driver;
+
+describe('Project state', () => {
+    beforeAll(() => {
+        driver = getDriver();
+    });
+
+    afterAll(async () => {
+        await driver.quit();
+    });
+
+    test('File->New resets project title', async () => {
+        const defaultProjectTitle = 'Scratch Project';
+        await loadUri(uri);
+        const inputEl = await findByXpath(`//input[@value="${defaultProjectTitle}"]`);
+        for (let i = 0; i < defaultProjectTitle.length; i++) {
+            inputEl.sendKeys(Key.BACK_SPACE);
+        }
+        inputEl.sendKeys('Changed title of project');
+        await clickText('Costumes'); // just to blur the input
+        // verify that project title has changed
+        await clickXpath('//input[@value="Changed title of project"]');
+        await clickXpath(
+            '//div[contains(@class, "menu-bar_menu-bar-item") and ' +
+            'contains(@class, "menu-bar_hoverable")][span[text()="File"]]'
+        );
+        await clickXpath('//li[span[text()="New"]]');
+        // project title should be default again
+        await clickXpath(`//input[@value="${defaultProjectTitle}"]`);
+    });
+});
-- 
GitLab