diff --git a/test/helpers/selenium-helper.js b/test/helpers/selenium-helper.js index 84e6c355ae460a2580f3093035de9c6c8e6918e9..ee77b4c23496422d146dafbf8feae2e995058be7 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 0000000000000000000000000000000000000000..e155893b3e22c9ea22d55dbc6cc4eb3202319a5c --- /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}"]`); + }); +});