Files
blockly/tests/browser/test/extensive_test.mjs
Christopher Allen ce22f42868 chore: Organise imports (#8527)
* 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
2024-08-15 03:16:14 +01:00

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;
});
}