feat(test): add helper functions for getting selected block and block… (#7254)

* feat(test): add helper functions for getting selected block and block by ID

* chore: format test files

* chore: fix lint
This commit is contained in:
Rachel Fenichel
2023-07-06 10:30:53 -07:00
committed by GitHub
parent a677355f73
commit f1e0e11312
2 changed files with 38 additions and 11 deletions

View File

@@ -9,7 +9,11 @@
*/
const chai = require('chai');
const {testSetup, testFileLocations} = require('./test_setup');
const {
testSetup,
testFileLocations,
getSelectedBlockElement,
} = require('./test_setup');
let browser;
suite('Testing Connecting Blocks', function (done) {
@@ -48,9 +52,7 @@ suite('Testing Connecting Blocks', function (done) {
);
await mathNumeric.dragAndDrop({x: 50, y: 20});
// Connect numeric to first procedure
const numericWorkspace = await browser.$(
'#content_blocks > div > svg.blocklySvg > g > g.blocklyBlockCanvas > g.blocklyDraggable.blocklySelected'
);
const numericWorkspace = await getSelectedBlockElement(browser);
const doSomething = await browser.$(
'#content_blocks > div > svg.blocklySvg > g > g.blocklyBlockCanvas > g:nth-child(2)'
);
@@ -70,9 +72,7 @@ suite('Testing Connecting Blocks', function (done) {
);
await doSomethingFlyout.dragAndDrop(doSomething2);
await new Promise((resolve) => setTimeout(resolve, 2000)); // 2 sec
const doSomethingFlyoutWorkspace = await browser.$(
'#content_blocks > div > svg.blocklySvg > g > g.blocklyBlockCanvas > g.blocklyDraggable.blocklySelected'
);
const doSomethingFlyoutWorkspace = await getSelectedBlockElement(browser);
await doSomethingFlyoutWorkspace.dragAndDrop({x: 130, y: 20});
// Drag out print from flyout and connect it with doSomething 2
@@ -92,9 +92,8 @@ suite('Testing Connecting Blocks', function (done) {
await new Promise((resolve) => setTimeout(resolve, 2000)); // 2 sec
await doSomething2Flyout.dragAndDrop({x: 130, y: 20});
await new Promise((resolve) => setTimeout(resolve, 2000)); // 2 sec
const doSomething2FlyoutWorkspace = await browser.$(
'#content_blocks > div > svg.blocklySvg > g > g.blocklyBlockCanvas > g.blocklyDraggable.blocklySelected'
);
const doSomething2FlyoutWorkspace = await getSelectedBlockElement(browser);
const printWorkSpace = await browser.$(
'#content_blocks > div > svg.blocklySvg > g > g.blocklyBlockCanvas > g:nth-child(4)'
);

View File

@@ -73,4 +73,32 @@ const testFileLocations = {
playground: 2,
};
module.exports = {testSetup, testFileLocations};
/**
* @param {Browser} browser The active WebdriverIO Browser object.
* @return {WebElement} The selected block's root SVG element, as an interactable
* browser element.
*/
async function getSelectedBlockElement(browser) {
const result = await browser.execute(() => {
// Note: selected is an ICopyable and I am assuming that it is a BlockSvg.
return Blockly.common.getSelected()?.id;
});
return await browser.$(`[data-id="${result}"]`);
}
/**
* @param {Browser} browser The active WebdriverIO Browser object.
* @param {string} id The ID of the Blockly block to search for.
* @return {WebElement} The root SVG element of the block with the given ID, as an
* interactable browser element.
*/
async function getBlockElementById(browser, id) {
return await browser.$(`[data-id="${id}"]`);
}
module.exports = {
testSetup,
testFileLocations,
getSelectedBlockElement,
getBlockElementById,
};