123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /* globals Promise */
- import path from 'path';
- import SeleniumHelper from '../helpers/selenium-helper';
- const {
- clickButton,
- clickText,
- clickXpath,
- findByXpath,
- getDriver,
- getLogs,
- loadUri
- } = new SeleniumHelper();
- let driver;
- describe('player example', () => {
- const uri = path.resolve(__dirname, '../../build/player.html');
- beforeAll(() => {
- driver = getDriver();
- });
- afterAll(async () => {
- await driver.quit();
- });
- test.skip('Player: load a project by ID', async () => {
- const projectId = '96708228';
- await loadUri(`${uri}#${projectId}`);
- await clickXpath('//img[@title="Go"]');
- await new Promise(resolve => setTimeout(resolve, 2000));
- await clickXpath('//img[@title="Stop"]');
- const logs = await getLogs();
- await expect(logs).toEqual([]);
- const projectRequests = await driver.manage().logs()
- .get('performance')
- .then(pLogs => pLogs.map(log => JSON.parse(log.message).message)
- .filter(m => m.method === 'Network.requestWillBeSent')
- .map(m => m.params.request.url)
- .filter(url => url === 'https://projects.scratch.mit.edu/96708228')
- );
- await expect(projectRequests).toEqual(['https://projects.scratch.mit.edu/96708228']);
- });
- });
- describe('blocks example', () => {
- const uri = path.resolve(__dirname, '../../build/blocks-only.html');
- beforeAll(() => {
- driver = getDriver();
- });
- afterAll(async () => {
- await driver.quit();
- });
- test.skip('Blocks: load a project by ID', async () => {
- const projectId = '96708228';
- await loadUri(`${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();
- await expect(logs).toEqual([]);
- const projectRequests = await driver.manage().logs()
- .get('performance')
- .then(pLogs => pLogs.map(log => JSON.parse(log.message).message)
- .filter(m => m.method === 'Network.requestWillBeSent')
- .map(m => m.params.request.url)
- .filter(url => url === 'https://projects.scratch.mit.edu/96708228')
- );
- await expect(projectRequests).toEqual(['https://projects.scratch.mit.edu/96708228']);
- });
- // skipping per https://github.com/LLK/scratch-gui/issues/4902 until we have better approach
- test.skip('Change categories', async () => {
- await loadUri(`${uri}`);
- await clickText('Looks');
- await clickText('Sound');
- await clickText('Events');
- await clickText('Control');
- await clickText('Sensing');
- await clickText('Operators');
- await clickText('Variables');
- await new Promise(resolve => setTimeout(resolve, 1000)); // Wait for scroll animation
- await clickText('Make a Variable');
- let el = await findByXpath("//input[@name='New variable name:']");
- await el.sendKeys('score');
- await clickButton('OK');
- await clickText('Make a Variable');
- el = await findByXpath("//input[@name='New variable name:']");
- await el.sendKeys('second variable');
- await clickButton('OK');
- const logs = await getLogs();
- await expect(logs).toEqual([]);
- });
- });
|