Spaces:
Runtime error
Runtime error
| /* 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([]); | |
| }); | |
| }); | |