|
| 1 | +// node kember.js [url_prefix] [template_uuid] [--demo] |
| 2 | + |
| 3 | +const tutorialBase = require('../tutorials/tutorialBase'); |
| 4 | +const auto = require('../utils/auto'); |
| 5 | +const utils = require('../utils/utils'); |
| 6 | + |
| 7 | +const args = process.argv.slice(2); |
| 8 | +const { |
| 9 | + urlPrefix, |
| 10 | + templateUuid, |
| 11 | + enableDemoMode |
| 12 | +} = utils.parseCommandLineArgumentsTemplate(args); |
| 13 | + |
| 14 | +const anonURL = urlPrefix + templateUuid; |
| 15 | +const screenshotPrefix = "Kember_"; |
| 16 | + |
| 17 | + |
| 18 | +async function runTutorial () { |
| 19 | + const tutorial = new tutorialBase.TutorialBase(anonURL, screenshotPrefix, null, null, null, enableDemoMode); |
| 20 | + |
| 21 | + tutorial.startScreenshooter(); |
| 22 | + const page = await tutorial.beforeScript(); |
| 23 | + const studyData = await tutorial.openStudyLink(); |
| 24 | + const studyId = studyData["data"]["uuid"]; |
| 25 | + console.log("Study ID:", studyId); |
| 26 | + |
| 27 | + // Some time for loading the workbench |
| 28 | + await tutorial.waitFor(10000); |
| 29 | + await utils.takeScreenshot(page, screenshotPrefix + 'workbench_loaded'); |
| 30 | + |
| 31 | + await tutorial.runPipeline(studyId, 120000); |
| 32 | + await utils.takeScreenshot(page, screenshotPrefix + 'pipeline_run'); |
| 33 | + |
| 34 | + await tutorial.openNodeFiles(0); |
| 35 | + const outFiles = [ |
| 36 | + "logs.zip", |
| 37 | + "outputController.dat" |
| 38 | + ]; |
| 39 | + await tutorial.checkResults(outFiles.length); |
| 40 | + |
| 41 | + |
| 42 | + // open kember viewer |
| 43 | + auto.openNode(page, 1); |
| 44 | + |
| 45 | + await tutorial.waitFor(2000); |
| 46 | + await utils.takeScreenshot(page, screenshotPrefix + 'iFrame0'); |
| 47 | + const iframeHandles = await page.$$("iframe"); |
| 48 | + // expected two iframes = loading + raw-graph |
| 49 | + const frame = await iframeHandles[1].contentFrame(); |
| 50 | + |
| 51 | + // - restart kernel: click restart and accept |
| 52 | + const restartSelector = "#run_int > button:nth-child(3)"; |
| 53 | + await frame.waitForSelector(restartSelector); |
| 54 | + await frame.click(restartSelector); |
| 55 | + await tutorial.waitFor(2000); |
| 56 | + await utils.takeScreenshot(page, screenshotPrefix + 'restart_pressed'); |
| 57 | + const acceptSelector = "body > div.modal.fade.in > div > div > div.modal-footer > button.btn.btn-default.btn-sm.btn-danger"; |
| 58 | + await frame.waitForSelector(acceptSelector); |
| 59 | + await frame.click(acceptSelector); |
| 60 | + await tutorial.waitFor(2000); |
| 61 | + await utils.takeScreenshot(page, screenshotPrefix + 'restart_accept'); |
| 62 | + |
| 63 | + await tutorial.waitFor(8000); |
| 64 | + await utils.takeScreenshot(page, screenshotPrefix + 'notebook_run'); |
| 65 | + |
| 66 | + // - check output |
| 67 | + await tutorial.openNodeFiles(0); |
| 68 | + const outFiles2 = [ |
| 69 | + "Hear_Rate.csv", |
| 70 | + "notebooks.zip", |
| 71 | + "Parasympathetic_Cell_Activity.csv", |
| 72 | + "Table_Data.csv" |
| 73 | + ]; |
| 74 | + await tutorial.checkResults(outFiles2.length); |
| 75 | + |
| 76 | + await tutorial.logOut(); |
| 77 | + tutorial.stopScreenshooter(); |
| 78 | + await tutorial.close(); |
| 79 | +} |
| 80 | + |
| 81 | +runTutorial() |
| 82 | + .catch(error => { |
| 83 | + console.log('Puppeteer error: ' + error); |
| 84 | + process.exit(1); |
| 85 | + }); |
0 commit comments