Initial commit of 001code-html Scratch frontend project.
Includes scratch-gui, scratch-vm, scratch-blocks, scratch-render, scratch-l10n, and deployment config. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
100
scratch-gui/test/integration/examples.test.js
Normal file
100
scratch-gui/test/integration/examples.test.js
Normal file
@@ -0,0 +1,100 @@
|
||||
/* 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([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user