diff --git a/README.md b/README.md index b478b1e47..c036a1709 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Then go to [http://localhost:8601/](http://localhost:8601/) - the playground out ## Testing NOTE: If you're a windows user, please run these scripts in Windows `cmd.exe` instead of Git Bash/MINGW64. -Run linter, unit tests, and build. +Run linter, unit tests, build, and integration tests. ```bash npm test ``` @@ -46,6 +46,11 @@ Run unit tests in watch mode (watches for code changes and continuously runs tes npm run unit-test -- --watch ``` +Run integration tests in isolation. +```bash +npm run integration-test +``` + You may want to review the documentation for [Jest](https://facebook.github.io/jest/docs/en/api.html) and [Enzyme](http://airbnb.io/enzyme/docs/api/) as you write your tests. ## Publishing to GitHub Pages diff --git a/test/integration/test.js b/test/integration/test.js index 9f8477651..7e3e60a65 100644 --- a/test/integration/test.js +++ b/test/integration/test.js @@ -18,72 +18,72 @@ const errorWhitelist = [ ]; describe('costumes, sounds and variables', () => { - afterAll(() => { - return driver.quit(); + afterAll(async () => { + await driver.quit(); }); - test('Adding a costume', () => { - return driver.get('file://' + uri) - .then(() => clickText('Costumes')) - .then(() => clickText('Add Costume')) - .then(() => findByXpath("//input[@placeholder='what are you looking for?']")) - .then((el) => el.sendKeys('abb')) - .then(() => clickText('abby-a')) // Should close the modal, then click the costumes in the selector - .then(() => clickText('costume1')) - .then(() => clickText('abby-a')) - .then(() => getLogs(errorWhitelist)) - .then(logs => expect(logs).toEqual([])); + test('Adding a costume', async () => { + await driver.get('file://' + uri); + await clickText('Costumes'); + await clickText('Add Costume'); + const el = await findByXpath("//input[@placeholder='what are you looking for?']"); + await el.sendKeys('abb'); + await clickText('abby-a'); // Should close the modal, then click the costumes in the selector + await clickText('costume1'); + await clickText('abby-a'); + const logs = await getLogs(errorWhitelist); + await expect(logs).toEqual([]); }); - test('Adding a sound', () => { - return driver.get('file://' + uri) - .then(() => clickText('Sounds')) - .then(() => clickText('Add Sound')) - .then(() => findByXpath("//input[@placeholder='what are you looking for?']")) - .then((el) => el.sendKeys('chom')) - .then(() => clickText('chomp')) // Should close the modal, then click the sounds in the selector - .then(() => clickText('meow')) - .then(() => clickText('chomp')) - .then(() => clickXpath('//button[@title="Play"]')) - .then(() => clickText('meow')) - .then(() => clickXpath('//button[@title="Play"]')) + test('Adding a sound', async () => { + await driver.get('file://' + uri); + await clickText('Sounds'); + await clickText('Add Sound'); + const el = await findByXpath("//input[@placeholder='what are you looking for?']"); + await el.sendKeys('chom'); + await clickText('chomp'); // Should close the modal, then click the sounds in the selector + await clickText('meow'); + await clickText('chomp'); + await clickXpath('//button[@title="Play"]'); + await clickText('meow'); + await clickXpath('//button[@title="Play"]'); - .then(() => clickText('Louder')) - .then(() => clickText('Softer')) - .then(() => clickText('Faster')) - .then(() => clickText('Slower')) - .then(() => clickText('Robot')) - .then(() => clickText('Echo')) - .then(() => clickText('Reverse')) + await clickText('Louder'); + await clickText('Softer'); + await clickText('Faster'); + await clickText('Slower'); + await clickText('Robot'); + await clickText('Echo'); + await clickText('Reverse'); - .then(() => getLogs(errorWhitelist)) - .then(logs => expect(logs).toEqual([])); + const logs = await getLogs(errorWhitelist); + await expect(logs).toEqual([]); }); - test('Load a project by ID', () => { + test('Load a project by ID', async () => { const projectId = '96708228'; - return driver.get('file://' + uri + '#' + projectId) - .then(() => new Promise(resolve => setTimeout(resolve, 2000))) - .then(() => clickXpath('//img[@title="Go"]')) - .then(() => new Promise(resolve => setTimeout(resolve, 2000))) - .then(() => clickXpath('//img[@title="Stop"]')) - .then(() => getLogs(errorWhitelist)) - .then(logs => expect(logs).toEqual([])); + await driver.get('file://' + uri + '#' + projectId); + await new Promise(resolve => setTimeout(resolve, 2000)); + await clickXpath('//img[@title="Go"]'); + await new Promise(resolve => setTimeout(resolve, 2000)); + await clickXpath('//img[@title="Stop"]'); + const logs = await getLogs(errorWhitelist); + await expect(logs).toEqual([]); }); - test('Creating variables', () => { - return driver.get('file://' + uri) - .then(() => clickText('Blocks')) - .then(() => clickText('Data')) - .then(() => clickText('Create variable...')) - .then(() => findByXpath("//input[@placeholder='']")) - .then((el) => el.sendKeys('score')) - .then(() => clickButton('OK')) - .then(() => clickText('Create variable...')) - .then(() => findByXpath("//input[@placeholder='']")) - .then((el) => el.sendKeys('second variable')) - .then(() => clickButton('OK')) - .then(() => getLogs(errorWhitelist)) - .then(logs => expect(logs).toEqual([])); + test('Creating variables', async () => { + await driver.get('file://' + uri); + await clickText('Blocks'); + await clickText('Data'); + await clickText('Create variable...'); + let el = await findByXpath("//input[@placeholder='']"); + await el.sendKeys('score'); + await clickButton('OK'); + await clickText('Create variable...'); + el = await findByXpath("//input[@placeholder='']"); + await el.sendKeys('second variable'); + await clickButton('OK'); + const logs = await getLogs(errorWhitelist); + await expect(logs).toEqual([]); }); });