mirror of
https://github.com/google/blockly.git
synced 2025-12-16 06:10:12 +01:00
192 lines
6.0 KiB
JavaScript
192 lines
6.0 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright 2023 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @fileoverview Node.js script to run Automated tests in Chrome, via webdriver.
|
|
*/
|
|
|
|
import * as chai from 'chai';
|
|
import {Key} from 'webdriverio';
|
|
import {
|
|
clickBlock,
|
|
getAllBlocks,
|
|
PAUSE_TIME,
|
|
testFileLocations,
|
|
testSetup,
|
|
} from './test_setup.mjs';
|
|
|
|
suite('This tests loading Large Configuration and Deletion', function (done) {
|
|
// Setting timeout to unlimited as the webdriver takes a longer time to run than most mocha test
|
|
this.timeout(0);
|
|
|
|
// Setup Selenium for all of the tests
|
|
suiteSetup(async function () {
|
|
this.browser = await testSetup(testFileLocations.PLAYGROUND);
|
|
});
|
|
|
|
test('loading from JSON results in the correct number of blocks', async function () {
|
|
const blockNum = await testingJSONLoad(this.browser);
|
|
chai.assert.equal(blockNum, 13);
|
|
});
|
|
|
|
test('deleting block results in the correct number of blocks', async function () {
|
|
await clickBlock(this.browser, 'E8bF[-r:B~cabGLP#QYd', {button: 1});
|
|
await this.browser.keys([Key.Delete]);
|
|
await this.browser.pause(PAUSE_TIME);
|
|
const allBlocks = await getAllBlocks(this.browser);
|
|
chai.assert.equal(allBlocks.length, 10);
|
|
});
|
|
|
|
test('undoing delete block results in the correct number of blocks', async function () {
|
|
await this.browser.keys([Key.Ctrl, 'z']);
|
|
await this.browser.pause(PAUSE_TIME);
|
|
const allBlocks = await getAllBlocks(this.browser);
|
|
chai.assert.equal(allBlocks.length, 13);
|
|
});
|
|
});
|
|
|
|
async function testingJSONLoad(browser) {
|
|
return await browser.execute(() => {
|
|
const myWorkspace = Blockly.getMainWorkspace();
|
|
const state = {
|
|
'blocks': {
|
|
'languageVersion': 0,
|
|
'blocks': [
|
|
{
|
|
'type': 'controls_if',
|
|
'id': 'O]NpXoWXyz9okeD.PxV0',
|
|
'x': 112,
|
|
'y': 38,
|
|
'extraState': {
|
|
'elseIfCount': 1,
|
|
'hasElse': true,
|
|
},
|
|
'inputs': {
|
|
'DO0': {
|
|
'block': {
|
|
'type': 'controls_repeat_ext',
|
|
'id': ',8#9eTr9hCrD3nR|uW1L',
|
|
'inputs': {
|
|
'TIMES': {
|
|
'shadow': {
|
|
'type': 'math_number',
|
|
'id': '(6!seVzJ[5W=!M_s@s=I',
|
|
'fields': {
|
|
'NUM': 4,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
'DO1': {
|
|
'block': {
|
|
'type': 'controls_repeat_ext',
|
|
'id': ']X9#sM4FJiVrRP;y0m6H',
|
|
'inputs': {
|
|
'TIMES': {
|
|
'shadow': {
|
|
'type': 'math_number',
|
|
'id': '%k#p|;f+Y*#.8DX].a6Y',
|
|
'fields': {
|
|
'NUM': -10,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
'ELSE': {
|
|
'block': {
|
|
'type': 'controls_repeat_ext',
|
|
'id': '`ZOj01@KGMQ?+MMcLKZ:',
|
|
'inputs': {
|
|
'TIMES': {
|
|
'shadow': {
|
|
'type': 'math_number',
|
|
'id': 'IIK8IHzVCoUpTfx[j=^9',
|
|
'fields': {
|
|
'NUM': 10,
|
|
},
|
|
},
|
|
'block': {
|
|
'type': 'logic_ternary',
|
|
'id': '!$UboN.F)peh:!o]D48-',
|
|
'inputs': {
|
|
'IF': {
|
|
'block': {
|
|
'type': 'logic_boolean',
|
|
'id': '|?-zstzEVy,Ec%%dJZM{',
|
|
'fields': {
|
|
'BOOL': 'FALSE',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
'next': {
|
|
'block': {
|
|
'type': 'controls_repeat_ext',
|
|
'id': 'E8bF[-r:B~cabGLP#QYd',
|
|
'inputs': {
|
|
'TIMES': {
|
|
'shadow': {
|
|
'type': 'math_number',
|
|
'id': 'vOb`Us7f.bIuXRGd(K.e',
|
|
'fields': {
|
|
'NUM': 10,
|
|
},
|
|
},
|
|
'block': {
|
|
'type': 'logic_ternary',
|
|
'id': 'AyS?@78RwAtQ$?aU[-$L',
|
|
'inputs': {
|
|
'IF': {
|
|
'block': {
|
|
'type': 'logic_boolean',
|
|
'id': 'K@$Ewnj*Y6JcKR`mycf8',
|
|
'fields': {
|
|
'BOOL': 'FALSE',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
'next': {
|
|
'block': {
|
|
'type': 'controls_repeat_ext',
|
|
'id': 'XFO4v:Cf@2~rgH9CQZ]/',
|
|
'inputs': {
|
|
'TIMES': {
|
|
'shadow': {
|
|
'type': 'math_number',
|
|
'id': 'jf)XYgvoi!c.3V[u@h+-',
|
|
'fields': {
|
|
'NUM': 10,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
};
|
|
Blockly.serialization.workspaces.load(state, myWorkspace);
|
|
return myWorkspace.getAllBlocks(false).length;
|
|
});
|
|
}
|