mirror of
https://github.com/google/blockly.git
synced 2026-01-08 17:40:09 +01:00
* chore(deps): Add pretter-plugin-organize-imports * chore: Remove insignificant blank lines in import sections Since prettier-plugin-organize-imports sorts imports within sections separated by blank lines, but preserves the section divisions, remove any blank lines that are not dividing imports into meaningful sections. Do not remove blank lines separating side-effect-only imports from main imports. * chore: Remove unneded eslint-disable directives * chore: Organise imports
196 lines
6.1 KiB
JavaScript
196 lines
6.1 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 {
|
|
getAllBlocks,
|
|
getBlockElementById,
|
|
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 () {
|
|
const fourthRepeatDo = await getBlockElementById(
|
|
this.browser,
|
|
'E8bF[-r:B~cabGLP#QYd',
|
|
);
|
|
await fourthRepeatDo.click({x: -100, y: -40});
|
|
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;
|
|
});
|
|
}
|