diff --git a/test/fixtures/movie.wav b/test/fixtures/movie.wav new file mode 100644 index 000000000..79c10d214 Binary files /dev/null and b/test/fixtures/movie.wav differ diff --git a/test/fixtures/sneaker.wav b/test/fixtures/sneaker.wav new file mode 100644 index 000000000..01c4a1759 Binary files /dev/null and b/test/fixtures/sneaker.wav differ diff --git a/test/integration/backdrops.test.js b/test/integration/backdrops.test.js index 9a527b2c9..d0a3e84aa 100644 --- a/test/integration/backdrops.test.js +++ b/test/integration/backdrops.test.js @@ -4,6 +4,7 @@ import SeleniumHelper from '../helpers/selenium-helper'; const { clickText, clickXpath, + findByText, findByXpath, getDriver, getLogs, @@ -49,4 +50,30 @@ describe('Working with backdrops', () => { const logs = await getLogs(); await expect(logs).toEqual([]); }); + + test.only('Adding multiple backdrops at the same time', async () => { + const files = [ + path.resolve(__dirname, '../fixtures/gh-3582-png.png'), + path.resolve(__dirname, '../fixtures/100-100.svg') + ]; + await loadUri(uri); + await clickXpath('//button[@title="Try It"]'); + + const buttonXpath = '//button[@aria-label="Choose a Backdrop"]'; + const fileXpath = `${buttonXpath}/following-sibling::div//input[@type="file"]`; + + const el = await findByXpath(buttonXpath); + await driver.actions().mouseMove(el) + .perform(); + await driver.sleep(500); // Wait for thermometer menu to come up + const input = await findByXpath(fileXpath); + await input.sendKeys(files.join('\n')); + + await clickXpath('//span[text()="Stage"]'); + await findByText('gh-3582-png', scope.costumesTab); + await findByText('100-100', scope.costumesTab); + + const logs = await getLogs(); + await expect(logs).toEqual([]); + }); }); diff --git a/test/integration/costumes.test.js b/test/integration/costumes.test.js index 5181c429a..803abbdaf 100644 --- a/test/integration/costumes.test.js +++ b/test/integration/costumes.test.js @@ -4,6 +4,7 @@ import SeleniumHelper from '../helpers/selenium-helper'; const { clickText, clickXpath, + findByText, findByXpath, getDriver, getLogs, @@ -181,4 +182,25 @@ describe('Working with costumes', () => { await expect(logs).toEqual([]); }); + test.only('Adding multiple costumes at the same time', async () => { + const files = [ + path.resolve(__dirname, '../fixtures/gh-3582-png.png'), + path.resolve(__dirname, '../fixtures/100-100.svg') + ]; + await loadUri(uri); + await clickXpath('//button[@title="Try It"]'); + await clickText('Costumes'); + const el = await findByXpath('//button[@aria-label="Choose a Costume"]'); + await driver.actions().mouseMove(el) + .perform(); + await driver.sleep(500); // Wait for thermometer menu to come up + const input = await findByXpath('//input[@type="file"]'); + await input.sendKeys(files.join('\n')); + + await findByText('gh-3582-png', scope.costumesTab); + await findByText('100-100', scope.costumesTab); + + const logs = await getLogs(); + await expect(logs).toEqual([]); + }); }); diff --git a/test/integration/sounds.test.js b/test/integration/sounds.test.js index 3877ada3f..940e4750c 100644 --- a/test/integration/sounds.test.js +++ b/test/integration/sounds.test.js @@ -4,6 +4,7 @@ import SeleniumHelper from '../helpers/selenium-helper'; const { clickText, clickXpath, + findByText, findByXpath, getDriver, getLogs, @@ -114,4 +115,26 @@ describe('Working with sounds', () => { const logs = await getLogs(); await expect(logs).toEqual([]); }); + + test.only('Adding multiple sounds at the same time', async () => { + const files = [ + path.resolve(__dirname, '../fixtures/movie.wav'), + path.resolve(__dirname, '../fixtures/sneaker.wav') + ]; + await loadUri(uri); + await clickXpath('//button[@title="Try It"]'); + await clickText('Sounds'); + const el = await findByXpath('//button[@aria-label="Choose a Sound"]'); + await driver.actions().mouseMove(el) + .perform(); + await driver.sleep(500); // Wait for thermometer menu to come up + const input = await findByXpath('//input[@type="file"]'); + await input.sendKeys(files.join('\n')); + + await findByText('movie', scope.soundsTab); + await findByText('sneaker', scope.soundsTab); + + const logs = await getLogs(); + await expect(logs).toEqual([]); + }); }); diff --git a/test/integration/sprites.test.js b/test/integration/sprites.test.js index a3dd48cf4..12ab36a5f 100644 --- a/test/integration/sprites.test.js +++ b/test/integration/sprites.test.js @@ -159,4 +159,25 @@ describe('Working with sprites', () => { await expect(logs).toEqual([]); }); + test.only('Adding multiple sprites at the same time', async () => { + const files = [ + path.resolve(__dirname, '../fixtures/gh-3582-png.png'), + path.resolve(__dirname, '../fixtures/100-100.svg') + ]; + await loadUri(uri); + await clickXpath('//button[@title="Try It"]'); + const el = await findByXpath('//button[@aria-label="Choose a Sprite"]'); + await driver.actions().mouseMove(el) + .perform(); + await driver.sleep(500); // Wait for thermometer menu to come up + const input = await findByXpath('//input[@type="file"]'); + await input.sendKeys(files.join('\n')); + + await findByText('gh-3582-png', scope.spriteTile); + await findByText('100-100', scope.spriteTile); + + const logs = await getLogs(); + await expect(logs).toEqual([]); + }); + });