// namespaces var dwv = dwv || {}; /** @namespace */ dwv.tests = dwv.tests || {}; /* global require */ var process = process || {}; /** * Saucelabs script. * Has to be launched from the root dir with grunt: `grunt sauce` * If it is the first time, install all dependencies by running: * `npm install` (from the root dir, will install locally). * * Results are published publicly at: https://saucelabs.com/u/ivmartel * * Removed to solve dependencies... TODO Find another way? * Gruntfile: grunt.initConfig({ execute: { sauce_full: { options: { args: ['full'] }, src: ['tests/visual/sauce.js'] } } }); grunt.loadNpmTasks('grunt-execute'); grunt.registerTask('sauce', ['execute:sauce_full']); */ // selenium webdriver var webdriver = require('../../node_modules/selenium-webdriver'); // used to update the saucelab job name var SauceLabs = require("saucelabs"); var saucelabs = new SauceLabs({ username: "ivmartel", password: "my-password" }); /** * Launch a sauce GUI test. * @see https://wiki.saucelabs.com/display/DOCS/Platform+Configurator * for saucelabs possibilities. * @see http://seleniumhq.github.io/selenium/docs/api/javascript/index.html * for the webdriver API. * * @param {Object} caps Desired capabilities for the webdriver. Minimum of * {'browserName', 'version', 'platform'}. */ dwv.tests.sauceTest = function (caps) { var driver = new webdriver.Builder(). withCapabilities({ 'browserName': caps.browserName, 'version': caps.version, 'platform': caps.platform, 'username': saucelabs.options.username, 'accessKey': saucelabs.options.password }). usingServer("http://" + saucelabs.options.username + ":" + saucelabs.options.password + "@ondemand.saucelabs.com:80/wd/hub"). build(); driver.getSession().then(function (sessionid){ driver.sessionID = sessionid.id_; }); var root = "https://ivmartel.github.io/dwv/demo/stable/viewers/mobile/index.html"; var dataUrl = "https%3A%2F%2Fraw.githubusercontent.com%2Fivmartel%2Fdwv%2Fmaster%2Ftests%2Fdata%2F"; dataUrl += "%3Ffile%3Dbbmri-53323851.dcm"; dataUrl += "%26file%3Dbbmri-53323707.dcm"; dataUrl += "%26file%3Dbbmri-53323563.dcm"; driver.get(root + '?input=' + dataUrl + '&dwvReplaceMode=void').then( function () { // wait for the tool list to be displayed return driver.wait(webdriver.until.elementLocated(webdriver.By.className('toolSelect')), 10000); }).then( function () { // get the image layer return driver.findElement(webdriver.By.className('imageLayer')); }).then( function (element) { // simulate a mouse move on the image layer return driver.actions(). mouseDown(element). mouseMove(element, {x: 0, y: 50}). mouseUp(). perform(); }).then( function () { // sleep to allow to refresh return driver.sleep(5 * 1000); }).then( function () { // get the image layer return driver.findElement(webdriver.By.className('imageLayer')); }).then( function (element) { // simulate a mouse move on the image layer return driver.actions(). mouseDown(element). mouseMove(element, {x: 0, y: -50}). mouseUp(). perform(); }).then( function () { // sleep to allow to refresh return driver.sleep(5 * 1000); }).then( function () { // update the sauce test name and quit var cb = function () { console.log("Finished!"); driver.quit(); }; var bname = caps.browserName.toLowerCase(); bname = bname.replace(/\s+/g, ''); saucelabs.updateJob(driver.sessionID, { name: 'dwv-' + bname, build: '0.14.0', passed: true }, cb); }); }; dwv.tests.sauceFirefox = function () { var caps = { browserName: 'Firefox', version: '44.0', platform: 'Linux' }; dwv.tests.sauceTest(caps); }; dwv.tests.sauceChrome = function () { var caps = { browserName: 'Chrome', version: '48.0', platform: 'Windows 10' }; dwv.tests.sauceTest(caps); }; dwv.tests.sauceSafari = function () { var caps = { browserName: 'Safari', version: '9.0', platform: 'OS X 10.11' }; dwv.tests.sauceTest(caps); }; dwv.tests.sauceIE = function () { var caps = { browserName: 'MicrosoftEdge', version: '20.10240', platform: 'Windows 10' }; dwv.tests.sauceTest(caps); var caps2 = { browserName: 'Internet Explorer', version: '11.0', platform: 'Windows 10' }; dwv.tests.sauceTest(caps2); }; dwv.tests.sauceAndroid = function () { var caps = { browserName: 'Android', version: '5.1', platform: 'Linux' }; dwv.tests.sauceTest(caps); }; // main launcher if (process.argv.length === 3 && process.argv[2] === "full") { dwv.tests.sauceFirefox(); //dwv.tests.sauceChrome(); // no mouse actions in safari... //dwv.tests.sauceSafari(); //dwv.tests.sauceIE(); }