diff --git a/conda/js/test/selenium_tutorial_test.js b/conda/js/test/selenium_tutorial_test.js index 2d1332bd24cc1f9fdd1c98f590f82d136326da48..fc9cd577c21e0ab322f9d0f96beb2fcbb43c2dd5 100644 --- a/conda/js/test/selenium_tutorial_test.js +++ b/conda/js/test/selenium_tutorial_test.js @@ -2,11 +2,14 @@ const {Builder, By, Key, until} = require('selenium-webdriver'); const firefox = require('selenium-webdriver/firefox'); +const winX = 1920, winY = 1080; const options = new firefox.Options(); options.addArguments('-headless'); +options.addArguments(`--window-size=${ winX },${ winY }`); (async function example() { let driver = await new Builder().forBrowser('firefox').setFirefoxOptions(options).build(); + await driver.manage().window().setRect({x: 0, y: 0, width: winX, height: winY}); try { await driver.get('http://localhost:9101/'); @@ -25,17 +28,17 @@ options.addArguments('-headless'); // make new exp const eUser = await driver.findElement(By.css('input[placeholder="Experiment user..."]')); - eUser.clear(); - eUser.sendKeys('selenium'); + await eUser.clear(); + await eUser.sendKeys('selenium'); const eName = driver.findElement(By.css('input[placeholder="Experiment name..."]')); - eName.clear(); - eName.sendKeys('means'); + await eName.clear(); + await eName.sendKeys('means'); await driver.sleep(1000); await driver.findElement(By.css('.modal button.btn-primary')).click(); - - // go to new exp await driver.wait(until.elementLocated(By.linkText('selenium/test/iris/1/means')), 2000); await driver.sleep(1000); + + // go to new exp await driver.findElement(By.linkText('selenium/test/iris/1/means')).click(); await driver.wait(until.elementLocated(By.css('div.experimentEditor')), 2000); @@ -60,14 +63,179 @@ options.addArguments('-headless'); await driver.findElement(By.css('div.experimentEditor > div.d-flex > button.btn-outline-secondary')).click(); await driver.sleep(1000); + /************************************************************** + * CLEANUP + */ + + // go back and delete exp + await driver.findElement(By.linkText('experiments')).click(); + await driver.wait(until.elementLocated(By.css('input[placeholder="Search experiments..."]'), 2000)); + eLink = await driver.findElement(By.linkText('selenium/test/iris/1/means')); + await eLink.findElement(By.xpath('../..')).findElement(By.css('button.btn-outline-danger')).click(); + await driver.sleep(1000); + await driver.findElement(By.css('.modal button.btn-danger')).click(); + await driver.sleep(1000); + /************************************************************** * ADVANCED IRIS TOOLCHAIN */ + // navigate to tc list + await driver.findElement(By.linkText('toolchains')).click(); + await driver.wait(until.elementLocated(By.css('input[placeholder="Search toolchains..."]'), 2000)); + + // click the clone button next to test/iris/1 + let tLink = await driver.findElement(By.linkText('test/iris/1')); + await tLink.findElement(By.xpath('../..')).findElement(By.css('button.btn-outline-success + button.btn-outline-success')).click(); + await driver.wait(until.elementLocated(By.css('.modal')), 2000); + + // make new tc + const tUser = await driver.findElement(By.css('input[placeholder="Toolchain user..."]')); + await tUser.clear(); + await tUser.sendKeys('selenium'); + const tName = driver.findElement(By.css('input[placeholder="New toolchain name..."]')); + await tName.clear(); + await tName.sendKeys('iris_advanced'); + await driver.sleep(1000); + await driver.findElement(By.css('.modal button.btn-primary')).click(); + await driver.wait(until.elementLocated(By.linkText('selenium/iris_advanced/1')), 2000); + await driver.sleep(1000); + + // go to new tc + await driver.findElement(By.linkText('selenium/iris_advanced/1')).click(); + await driver.wait(until.elementLocated(By.css('div.toolchainEditor')), 2000); + + // delete conn between training_data.measurements & training_alg.measurements + let rcEl = await driver.findElement(By.css('#\\#training_data-measurements-training_alg-measurements')); + await driver.actions().contextClick(rcEl).perform(); + await driver.sleep(1000); + await driver.findElement(By.css('nav.react-contextmenu--visible > div')).click(); + + // delete conn between testing_data.measurements & testing_alg.measurements + rcEl = await driver.findElement(By.css('#\\#testing_data-measurements-testing_alg-measurements')); + await driver.actions().contextClick(rcEl).perform(); + await driver.sleep(1000); + await driver.findElement(By.css('nav.react-contextmenu--visible > div')).click(); + + // add training preprocessor block way below the rest of the toolchain + let originEl = await driver.findElement(By.css('#block_testing_data')); + await driver.actions().move({x: 100, y: 100, origin: originEl}).pause(500).contextClick().perform(); + await driver.sleep(1000); + await driver.findElement(By.css('nav.react-contextmenu--visible > div:first-child')).click(); + + // edit training preprocessor + await driver.findElement(By.css('#block_block')).click(); + await driver.sleep(1000); + // name + let tbName = await driver.findElement(By.css('#tcModalInitFocus')); + tbName.clear(); + tbName.sendKeys('pre_training'); + // input + await driver.findElement(By.css('.modal-body .btn-secondary')).click(); + let tbiName = await driver.findElement(By.css('.modal-body > form > div.row input')); + await tbiName.clear(); + await tbiName.sendKeys('measurements'); + // output + await driver.findElement(By.css('.modal-body .col-sm-6 + .col-sm-6 .btn-secondary')).click(); + let tboName = await driver.findElement(By.css('.modal-body > form > div.row .col-sm-6 + .col-sm-6 input')); + await tboName.clear(); + await tboName.sendKeys('measurements'); + await driver.sleep(1000); + //close + await driver.findElement(By.css('.modal button.close')).click(); + await driver.sleep(1000); + + // copy the block + rcEl = await driver.findElement(By.css('#block_pre_training')); + await driver.actions().contextClick(rcEl).perform(); + await driver.sleep(1000); + await driver.findElement(By.css('nav.react-contextmenu--visible > div + div')).click(); + + // paste testing preprocessor block way below the rest of the toolchain + originEl = await driver.findElement(By.css('#block_pre_training')); + await driver.actions().move({x: 150, origin: originEl}).pause(500).contextClick().perform(); + await driver.sleep(1000); + await driver.findElement(By.css('nav.react-contextmenu--visible > div:first-child')).click(); + + // unselect pasted block + await driver.actions().move({y: 200, origin: originEl}).pause(500).click().pause(500).perform(); + + // edit the block name + await driver.findElement(By.css('#block_pre_training0')).click(); + await driver.sleep(1000); + tbName = await driver.findElement(By.css('#tcModalInitFocus')); + await tbName.clear(); + await tbName.sendKeys('pre_testing'); + await driver.sleep(1000); + //close + await driver.findElement(By.css('.modal button.close')).click(); + await driver.sleep(1000); + + //console.log('connecting'); + // connect pre_training to rest of tc + // data to pre + let fromBox = await driver.findElement(By.css('rect#training_data-output-measurements')); + let toBox = await driver.findElement(By.css('rect#pre_training-input-measurements')); + await driver.actions().dragAndDrop(fromBox, toBox).pause(500).perform(); + // pre to alg + fromBox = await driver.findElement(By.css('rect#pre_training-output-measurements')); + toBox = await driver.findElement(By.css('rect#training_alg-input-measurements')); + await driver.actions().dragAndDrop(fromBox, toBox).pause(500).perform(); + + //console.log('connecting 2'); + // connect pre_testing to rest of tc + // data to pre + fromBox = await driver.findElement(By.css('rect#testing_data-output-measurements')); + toBox = await driver.findElement(By.css('rect#pre_testing-input-measurements')); + await driver.actions().dragAndDrop(fromBox, toBox).pause(500).perform(); + // pre to alg + fromBox = await driver.findElement(By.css('rect#pre_testing-output-measurements')); + toBox = await driver.findElement(By.css('rect#testing_alg-input-measurements')); + await driver.actions().dragAndDrop(fromBox, toBox).pause(500).perform(); + + //console.log('fix channel'); + // fix the channel on pre_training + await driver.findElement(By.css('#block_pre_training')).click(); + await driver.sleep(1000); + await driver.findElement(By.css('.modal-body select.form-control')).click(); + await driver.findElement(By.css('.modal-body option[value="training_data"]')).click(); + await driver.sleep(500); + await driver.findElement(By.css('.modal button.close')).click(); + await driver.sleep(1000); + + //console.log('getting layout'); + // layout the tc + await driver.findElement(By.xpath('//button[contains(.,"Layout")]')).click(); + // needs to communicate w graphviz, give it some time + await driver.sleep(5000); + + // make sure the tc is still valid + await driver.wait(until.elementLocated(By.css('.badge-success')), 2000); + + // save + //await driver.findElement(By.css('div.toolchainEditor > div.d-flex > button.btn-outline-secondary')).click(); + //await driver.sleep(1000); + + /************************************************************** + * CLEANUP + */ + + // go back and delete toolchain + await driver.findElement(By.linkText('toolchains')).click(); + await driver.wait(until.elementLocated(By.css('input[placeholder="Search toolchains..."]'), 2000)); + tLink = await driver.findElement(By.linkText('selenium/iris_advanced/1')); + await tLink.findElement(By.xpath('../..')).findElement(By.css('button.btn-outline-danger')).click(); + await driver.sleep(1000); + await driver.findElement(By.css('.modal button.btn-danger')).click(); + await driver.sleep(1000); /************************************************************** * ADVANCED IRIS PREPROCESSOR ALGORITHM */ + /************************************************************** + * CLEANUP + */ + /************************************************************** * ADVANCED IRIS EXPERIMENT */ @@ -76,15 +244,6 @@ options.addArguments('-headless'); * CLEANUP */ - // go back and delete exp - await driver.findElement(By.linkText('experiments')).click(); - await driver.wait(until.elementLocated(By.css('input[placeholder="Search experiments..."]'), 2000)); - eLink = await driver.findElement(By.linkText('selenium/test/iris/1/means')); - await eLink.findElement(By.xpath('../..')).findElement(By.css('button.btn-outline-danger')).click(); - await driver.sleep(1000); - await driver.findElement(By.css('.modal button.btn-danger')).click(); - await driver.sleep(1000); - console.log('selenium tests finished successfully!'); } catch(e) { console.log('selenium tests failed!');