Files
blockly/tests/browser/test/extensive_test.js
Rachel Fenichel b5911c25de chore(tests): use a shared chrome instance for all browser tests (#7328)
* chore(tests): use a shared chrome instance for all browser tests

* chore: format

* chore: lint
2023-07-25 16:41:05 +00:00

198 lines
6.2 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.
*/
const chai = require('chai');
const {
testSetup,
testFileLocations,
getBlockElementById,
} = require('./test_setup');
const {Key} = require('webdriverio');
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('This 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('This 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(100);
const blockNum = await this.browser.execute(() => {
return Blockly.getMainWorkspace().getAllBlocks(false).length;
});
chai.assert.equal(blockNum, 10);
});
test('This test undoing delete block results in the correct number of blocks', async function () {
await this.browser.keys([Key.Ctrl, 'z']);
await this.browser.pause(100);
const blockNum = await this.browser.execute(() => {
return Blockly.getMainWorkspace().getAllBlocks(false).length;
});
chai.assert.equal(blockNum, 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;
});
}