101 lines
3.5 KiB
JavaScript
101 lines
3.5 KiB
JavaScript
/* 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([]);
|
|
});
|
|
});
|