From a620f06decfabb4a2a0e21011e9dddc89472a088 Mon Sep 17 00:00:00 2001 From: Iftikhar Ahmad Date: Thu, 17 Nov 2016 13:31:56 +0500 Subject: [PATCH] beautify the javascript file --- tests/pageobjects/access-control-page.js | 70 ++++++-- tests/pageobjects/basepage.js | 7 +- tests/pageobjects/installed-snaps-page.js | 102 ++++++++---- tests/specs/test-access-control.js | 193 +++++++++++----------- tests/specs/test-installed-snaps.js | 141 ++++++++-------- tests/utils/ssh-snap-util.js | 90 +++++----- tests/wdio.conf.js | 20 +-- 7 files changed, 348 insertions(+), 275 deletions(-) diff --git a/tests/pageobjects/access-control-page.js b/tests/pageobjects/access-control-page.js index e1e7c60c..df33d314 100644 --- a/tests/pageobjects/access-control-page.js +++ b/tests/pageobjects/access-control-page.js @@ -4,30 +4,66 @@ var accessControlPage = Object.create(basepage, { /** * define elements */ - token: { get: function () { return browser.element('#token'); } }, - submit_btn: { get: function () { return browser.element('#submit'); } }, - homepage: { get: function () { return browser.element("header.p-navigation div.p-navigation__logo a[href*='/']"); } }, - store: { get: function () { return browser.element("nav.p-navigation__nav a[href*=store]"); } }, - settings: { get: function () { return browser.element("nav.p-navigation__nav a[href*=settings]"); } }, - login_failed: { get: function () { return browser.element("label.statusmessage.has-error"); } }, - token_cmd: { get: function () { return browser.element("//*[contains(text(),'sudo snapweb.generate-token')]"); } }, - bugreport: { get: function () { return browser.element("div.b-layout__footer a[href*=bugs]"); } }, + token: { + get: function() { + return browser.element('#token'); + } + }, + submit_btn: { + get: function() { + return browser.element('#submit'); + } + }, + homepage: { + get: function() { + return browser.element("header.p-navigation div.p-navigation__logo a[href*='/']"); + } + }, + store: { + get: function() { + return browser.element("nav.p-navigation__nav a[href*=store]"); + } + }, + settings: { + get: function() { + return browser.element("nav.p-navigation__nav a[href*=settings]"); + } + }, + login_failed: { + get: function() { + return browser.element("label.statusmessage.has-error"); + } + }, + token_cmd: { + get: function() { + return browser.element("//*[contains(text(),'sudo snapweb.generate-token')]"); + } + }, + bugreport: { + get: function() { + return browser.element("div.b-layout__footer a[href*=bugs]"); + } + }, /** * define or overwrite page methods */ - open: { value: function () { - browser.deleteCookie(); - basepage.open.call(this, 'access-control'); - } }, + open: { + value: function() { + browser.deleteCookie(); + basepage.open.call(this, 'access-control'); + } + }, - submit_token: { value: function (token_value) { + submit_token: { + value: function(token_value) { - this.token.setValue(token_value); - this.submit_btn.click(); + this.token.setValue(token_value); + this.submit_btn.click(); - } } + } + } }); -module.exports = accessControlPage +module.exports = accessControlPage \ No newline at end of file diff --git a/tests/pageobjects/basepage.js b/tests/pageobjects/basepage.js index e669c781..eea5542b 100644 --- a/tests/pageobjects/basepage.js +++ b/tests/pageobjects/basepage.js @@ -1,8 +1,7 @@ -function BasePage () { -} +function BasePage() {} -BasePage.prototype.open = function (path) { +BasePage.prototype.open = function(path) { browser.url('/' + path) } -module.exports = new BasePage() +module.exports = new BasePage() \ No newline at end of file diff --git a/tests/pageobjects/installed-snaps-page.js b/tests/pageobjects/installed-snaps-page.js index 4051e94a..384f010c 100644 --- a/tests/pageobjects/installed-snaps-page.js +++ b/tests/pageobjects/installed-snaps-page.js @@ -1,45 +1,85 @@ var basepage = require('./basepage') var acPage = require('./access-control-page') - + var installedSnapsPage = Object.create(basepage, { /** * define elements */ - homepage: { get: function () { return browser.element("header.p-navigation div.p-navigation__logo a[href*='/']"); } }, - store: { get: function () { return browser.element("nav.p-navigation__nav a[href*=store]"); } }, - addsnapicon: { get: function () { return browser.element("div.region-installed div.p-card a[href*=store] svg.p-card__icon"); } }, - settings: { get: function () { return browser.element("nav.p-navigation__nav a[href*=settings]"); } }, - bugreport: { get: function () { return browser.element("div.b-layout__footer a[href*=bugs]"); } }, - browsestore: { get: function () { return browser.element("a=Browse store"); } }, - addmoresnaps: { get: function () { return browser.element("a=Add more snaps for this device"); } }, - installedsnaps: { get: function () { return browser.elements(".p-card h3.js-snap-title"); } }, + homepage: { + get: function() { + return browser.element("header.p-navigation div.p-navigation__logo a[href*='/']"); + } + }, + store: { + get: function() { + return browser.element("nav.p-navigation__nav a[href*=store]"); + } + }, + addsnapicon: { + get: function() { + return browser.element("div.region-installed div.p-card a[href*=store] svg.p-card__icon"); + } + }, + settings: { + get: function() { + return browser.element("nav.p-navigation__nav a[href*=settings]"); + } + }, + bugreport: { + get: function() { + return browser.element("div.b-layout__footer a[href*=bugs]"); + } + }, + browsestore: { + get: function() { + return browser.element("a=Browse store"); + } + }, + addmoresnaps: { + get: function() { + return browser.element("a=Add more snaps for this device"); + } + }, + installedsnaps: { + get: function() { + return browser.elements(".p-card h3.js-snap-title"); + } + }, /** * define or overwrite page methods */ - open: { value: function() { - browser.deleteCookie(); - acPage.open(); - var valid_token = ""; - browser.call(function () { - return snaputil.getToken().then(function (res){ - valid_token = res.trim(); + open: { + value: function() { + browser.deleteCookie(); + acPage.open(); + var valid_token = ""; + browser.call(function() { + return snaputil.getToken().then(function(res) { + valid_token = res.trim(); }); - }); - acPage.submit_token(valid_token); - loginpage = browser.element('h2=Installed snaps'); - loginpage.waitForVisible(); - } }, + }); + acPage.submit_token(valid_token); + loginpage = browser.element('h2=Installed snaps'); + loginpage.waitForVisible(); + } + }, + + + snapElement: { + value: function(snap_name) { + + var pcarddeck = browser.element(".p-card-deck"); + pcarddeck.waitForVisible(); + return pcarddeck.element("h3=" + snap_name); - - snapElement: { value: function (snap_name) { - - var pcarddeck = browser.element(".p-card-deck"); - pcarddeck.waitForVisible(); - return pcarddeck.element("h3="+snap_name); + } + }, - } }, - - snapwebsnap: { get: function () { return this.snapElement("snapweb"); } } + snapwebsnap: { + get: function() { + return this.snapElement("snapweb"); + } + } }); -module.exports = installedSnapsPage +module.exports = installedSnapsPage \ No newline at end of file diff --git a/tests/specs/test-access-control.js b/tests/specs/test-access-control.js index fb2ef960..7ae7beb3 100644 --- a/tests/specs/test-access-control.js +++ b/tests/specs/test-access-control.js @@ -4,123 +4,122 @@ var expect = require('chai').expect; accessControlPage = require("../pageobjects/access-control-page"); describe('Access Control Page - Verify that', function() { - - beforeEach(function () { - accessControlPage.open(); - }); - - afterEach(function () { - }); - - - it('page loads correctly', function () { - - title = browser.getTitle(); - assert.equal(title, 'Snapweb'); - - assert.isNotNull(accessControlPage.homepage.value); - assert.isNotNull(accessControlPage.settings.value); - assert.isNotNull(accessControlPage.store.value); - assert.isNotNull(accessControlPage.token.value); - assert.isNotNull(accessControlPage.submit_btn.value); - assert.isNotNull(accessControlPage.token_cmd.value); - assert.isNotNull(accessControlPage.bugreport.value); - + + beforeEach(function() { + accessControlPage.open(); + }); + + afterEach(function() {}); + + + it('page loads correctly', function() { + + title = browser.getTitle(); + assert.equal(title, 'Snapweb'); + + assert.isNotNull(accessControlPage.homepage.value); + assert.isNotNull(accessControlPage.settings.value); + assert.isNotNull(accessControlPage.store.value); + assert.isNotNull(accessControlPage.token.value); + assert.isNotNull(accessControlPage.submit_btn.value); + assert.isNotNull(accessControlPage.token_cmd.value); + assert.isNotNull(accessControlPage.bugreport.value); + }); - it('rejects invalid tokens', function () { + it('rejects invalid tokens', function() { - var valid_token = ""; - browser.call(function () { - return snaputil.getToken().then(function (res){ + var valid_token = ""; + browser.call(function() { + return snaputil.getToken().then(function(res) { valid_token = res.trim(); - }); + }); }); - var invalid_tokens = ['','a',"'", '#', Array(512).join('x'),valid_token+" ", valid_token+"'", valid_token+'#']; - invalid_tokens.forEach(function(token){ - accessControlPage.submit_token(token); - accessControlPage.login_failed.waitForVisible(); - expect(accessControlPage.login_failed.getText()).to.contain('Invalid'); - }); + var invalid_tokens = ['', 'a', "'", '#', Array(512).join('x'), valid_token + " ", valid_token + "'", valid_token + '#']; + invalid_tokens.forEach(function(token) { + accessControlPage.submit_token(token); + accessControlPage.login_failed.waitForVisible(); + expect(accessControlPage.login_failed.getText()).to.contain('Invalid'); + }); }); - it('accepts valid token', function () { + it('accepts valid token', function() { - var valid_token = ""; - browser.call(function () { - return snaputil.getToken().then(function (res){ + var valid_token = ""; + browser.call(function() { + return snaputil.getToken().then(function(res) { valid_token = res.trim(); - }); + }); }); - accessControlPage.submit_token(valid_token); - loginpage = browser.element('h2=Installed snaps'); - loginpage.waitForVisible(); - expect(loginpage.getText(), "Login Failed with valid token").to.contain('Installed snaps'); + accessControlPage.submit_token(valid_token); + loginpage = browser.element('h2=Installed snaps'); + loginpage.waitForVisible(); + expect(loginpage.getText(), "Login Failed with valid token").to.contain('Installed snaps'); - }); + }); - it('until not authenticated, store link will return to access-control page', function() { - - accessControlPage.store.click(); - accessControlPage.token.waitForVisible(); - assert.isNotNull(accessControlPage.token.value); + it('until not authenticated, store link will return to access-control page', function() { + + accessControlPage.store.click(); + accessControlPage.token.waitForVisible(); + assert.isNotNull(accessControlPage.token.value); }); - it('on subsequent time, token authentication will be skipped', function() { - - var valid_token = ""; - browser.call(function () { - return snaputil.getToken().then(function (res){ - valid_token = res.trim(); - }); - }); - accessControlPage.submit_token(valid_token); - loginpage = browser.element('h2=Installed snaps'); - loginpage.waitForVisible(); - expect(loginpage.getText(), "Login Failed with valid token").to.contain('Installed snaps'); - cookie = browser.getCookie('SM'); - browser.reload(); - browser.url('/'); - title = browser.getTitle(); - assert.equal(title, 'Snapweb'); - browser.setCookie(cookie); - browser.url('/'); - loginpage = browser.element('h2=Installed snaps'); - loginpage.waitForVisible(); - expect(loginpage.getText(), "Login Failed with valid token").to.contain('Installed snaps'); + it('on subsequent time, token authentication will be skipped', function() { + + var valid_token = ""; + browser.call(function() { + return snaputil.getToken().then(function(res) { + valid_token = res.trim(); + }); + }); + accessControlPage.submit_token(valid_token); + loginpage = browser.element('h2=Installed snaps'); + loginpage.waitForVisible(); + expect(loginpage.getText(), "Login Failed with valid token").to.contain('Installed snaps'); + cookie = browser.getCookie('SM'); + browser.reload(); + browser.url('/'); + title = browser.getTitle(); + assert.equal(title, 'Snapweb'); + browser.setCookie(cookie); + browser.url('/'); + loginpage = browser.element('h2=Installed snaps'); + loginpage.waitForVisible(); + expect(loginpage.getText(), "Login Failed with valid token").to.contain('Installed snaps'); }); - it('generating new token invalidates the old token', function() { - - var valid_token = ""; - browser.call(function () { - return snaputil.getToken().then(function (res){ - valid_token = res.trim(); - }); - }); - accessControlPage.submit_token(valid_token); - loginpage = browser.element('h2=Installed snaps'); - loginpage.waitForVisible(); - expect(loginpage.getText(), "Login Failed with valid token").to.contain('Installed snaps'); - cookie = browser.getCookie('SM'); - browser.call(function () { - return snaputil.getToken().then(function (res){ - valid_token = res.trim(); - }); - }); - browser.reload(); - browser.url('/'); - title = browser.getTitle(); - assert.equal(title, 'Snapweb'); - browser.setCookie(cookie); - browser.url('/'); - accessControlPage.token.waitForVisible(); - assert.isNotNull(accessControlPage.token.value); + it('generating new token invalidates the old token', function() { + + var valid_token = ""; + browser.call(function() { + return snaputil.getToken().then(function(res) { + valid_token = res.trim(); + }); + }); + accessControlPage.submit_token(valid_token); + loginpage = browser.element('h2=Installed snaps'); + loginpage.waitForVisible(); + expect(loginpage.getText(), "Login Failed with valid token").to.contain('Installed snaps'); + cookie = browser.getCookie('SM'); + browser.call(function() { + return snaputil.getToken().then(function(res) { + valid_token = res.trim(); + }); + }); + browser.reload(); + browser.url('/'); + title = browser.getTitle(); + assert.equal(title, 'Snapweb'); + browser.setCookie(cookie); + browser.url('/'); + accessControlPage.token.waitForVisible(); + assert.isNotNull(accessControlPage.token.value); }); -}); +}); \ No newline at end of file diff --git a/tests/specs/test-installed-snaps.js b/tests/specs/test-installed-snaps.js index 1c362e88..cbf50d3f 100644 --- a/tests/specs/test-installed-snaps.js +++ b/tests/specs/test-installed-snaps.js @@ -5,15 +5,14 @@ snapsPage = require("../pageobjects/installed-snaps-page.js"); describe('Installed Snaps Page - Verify that', function() { - beforeEach(function () { + beforeEach(function() { snapsPage.open(); - }); + }); - afterEach(function () { - }); + afterEach(function() {}); - it('page loads correctly', function () { + it('page loads correctly', function() { title = browser.getTitle(); assert.equal(title, 'Snapweb'); @@ -28,117 +27,117 @@ describe('Installed Snaps Page - Verify that', function() { }); - it('installed snaps listed are same as on device', function () { + it('installed snaps listed are same as on device', function() { title = browser.getTitle(); assert.equal(title, 'Snapweb'); - var snapslist_device = ""; - var snapslist_raw = ""; - browser.call(function () { - return snaputil.listSnaps().then(function (res){ - snapslist_raw = res.trim(); - }); + var snapslist_device = ""; + var snapslist_raw = ""; + browser.call(function() { + return snaputil.listSnaps().then(function(res) { + snapslist_raw = res.trim(); + }); }); - + snapslist_device = snapslist_raw.split('\n'); //expecting each snap entry on a new line - snapslist_snapweb = snapsPage.installedsnaps; + snapslist_snapweb = snapsPage.installedsnaps; snapslist_snapweb.value.forEach(function(snap) { - expect(snapslist_raw).to.include(snap.getText()); + expect(snapslist_raw).to.include(snap.getText()); }); - - expect(snapslist_snapweb.value).to.have.length(snapslist_device.length-1, "Snaps installed on device didn't match"); + + expect(snapslist_snapweb.value).to.have.length(snapslist_device.length - 1, "Snaps installed on device didn't match"); }); - it('clicking store link takes the user to store', function () { + it('clicking store link takes the user to store', function() { - snapsPage.store.click(); - storepage = browser.element('h2=Available snaps') - storepage.waitForVisible(); - expect(storepage.getText(), "Failed to load store page").to.contain('Available snaps'); + snapsPage.store.click(); + storepage = browser.element('h2=Available snaps') + storepage.waitForVisible(); + expect(storepage.getText(), "Failed to load store page").to.contain('Available snaps'); }); - - it('Browse store button takes the user to store', function () { - snapsPage.browsestore.click(); - storepage = browser.element('h2=Available snaps') - storepage.waitForVisible(); - expect(storepage.getText(), "Failed to load store page").to.contain('Available snaps'); + it('Browse store button takes the user to store', function() { + + snapsPage.browsestore.click(); + storepage = browser.element('h2=Available snaps') + storepage.waitForVisible(); + expect(storepage.getText(), "Failed to load store page").to.contain('Available snaps'); }); - it('Add more snaps button takes the user to store', function () { + it('Add more snaps button takes the user to store', function() { - snapsPage.addmoresnaps.click(); - storepage = browser.element('h2=Available snaps') - storepage.waitForVisible(); - expect(storepage.getText(), "Failed to load store page").to.contain('Available snaps'); + snapsPage.addmoresnaps.click(); + storepage = browser.element('h2=Available snaps') + storepage.waitForVisible(); + expect(storepage.getText(), "Failed to load store page").to.contain('Available snaps'); }); - it("Clicking on snap entry opens the about snap's about page", function () { + it("Clicking on snap entry opens the about snap's about page", function() { - var snap_name = 'snapweb'; - var snap = snapsPage.snapElement(snap_name); - snap.waitForVisible(); - snap.click(); - snaptitle = browser.element('h1.b-snap__title'); - snaptitle.waitForVisible(); - expect(snaptitle.getText(), "Failed to open snap's about page").to.equal(snap_name); - aboutpage = browser.element('h3=About'); - aboutpage.waitForVisible(); + var snap_name = 'snapweb'; + var snap = snapsPage.snapElement(snap_name); + snap.waitForVisible(); + snap.click(); + snaptitle = browser.element('h1.b-snap__title'); + snaptitle.waitForVisible(); + expect(snaptitle.getText(), "Failed to open snap's about page").to.equal(snap_name); + aboutpage = browser.element('h3=About'); + aboutpage.waitForVisible(); }); - it('snapweb updates the page when snap is installed/removed direclty on the device', function () { + it('snapweb updates the page when snap is installed/removed direclty on the device', function() { - var snap_name = "hello-world"; - var re_removed = new RegExp("cannot find snap|"+snap_name+".*removed") - var re_installed = new RegExp(snap_name+".*installed"); + var snap_name = "hello-world"; + var re_removed = new RegExp("cannot find snap|" + snap_name + ".*removed") + var re_installed = new RegExp(snap_name + ".*installed"); - //Remove the snap in case it is already installed - browser.call(function () { - return snaputil.removeSnap(snap_name).then(function (res){ + //Remove the snap in case it is already installed + browser.call(function() { + return snaputil.removeSnap(snap_name).then(function(res) { expect(res).to.match(re_removed, res); - }); + }); }); - browser.refresh(); - //Confirm that snap doesn't exist on page - snapslist_snapweb = snapsPage.installedsnaps; + browser.refresh(); + //Confirm that snap doesn't exist on page + snapslist_snapweb = snapsPage.installedsnaps; snapslist_snapweb.value.forEach(function(snap) { - expect(snap.getText()).to.not.equal(snap_name); + expect(snap.getText()).to.not.equal(snap_name); }); - //Install the snap and refresh page - browser.call(function () { - return snaputil.installSnap(snap_name).then(function (res){ - expect(res).to.match(re_installed, res); - }); + //Install the snap and refresh page + browser.call(function() { + return snaputil.installSnap(snap_name).then(function(res) { + expect(res).to.match(re_installed, res); + }); }); - - browser.refresh(); - //Check if snap installed is now shown on page + browser.refresh(); + + //Check if snap installed is now shown on page var snap = snapsPage.snapElement(snap_name); snap.waitForVisible(); - expect(snap.getText()).to.equal(snap_name); + expect(snap.getText()).to.equal(snap_name); - //Remove the snap and refresh page - browser.call(function () { - return snaputil.removeSnap(snap_name).then(function (res){ + //Remove the snap and refresh page + browser.call(function() { + return snaputil.removeSnap(snap_name).then(function(res) { expect(res).to.match(re_removed, res); - }); + }); }); browser.refresh(); - //Check if snap removed is disappeared from the page + //Check if snap removed is disappeared from the page snapslist_snapweb = snapsPage.installedsnaps; snapslist_snapweb.value.forEach(function(snap) { - expect(snap.getText()).to.not.equal(snap_name); + expect(snap.getText()).to.not.equal(snap_name); }); }); -}); +}); \ No newline at end of file diff --git a/tests/utils/ssh-snap-util.js b/tests/utils/ssh-snap-util.js index 31846fc6..569174a9 100644 --- a/tests/utils/ssh-snap-util.js +++ b/tests/utils/ssh-snap-util.js @@ -5,73 +5,73 @@ function sshSnapUtil(sshHost, sshUser, sshPort, sshAgent, isSudoRequired) { this.isSudoRequired = (isSudoRequired === 'true'); this.ssh_config = { - host: sshHost, - port: sshPort, - username: sshUser, - agent: sshAgent, - agentForward: true - }; + host: sshHost, + port: sshPort, + username: sshUser, + agent: sshAgent, + agentForward: true + }; } //synchronus ssh command execution, raw shell output will be passed to callback handleOutput -execCommand = function (ssh_config, cmd, handleRawOutput) { +execCommand = function(ssh_config, cmd, handleRawOutput) { var conn = new Client(); var _output = ""; conn.on('ready', function() { - conn.exec(cmd, function(err, stream) { - if (err) handleRawOutput(null, err); - - stream - .on('close', function(code, signal) { - conn.end(); - handleRawOutput(_output, null); - _output = ""; - }) - .on('data', function(data) { - _output += data; - - }) - .stderr.on('data', function(data) { - _output += data; - }); - }); - }).on('error', function(err) { - - if (err) handleRawOutput (null, err); - - }).connect(ssh_config); + conn.exec(cmd, function(err, stream) { + if (err) handleRawOutput(null, err); + + stream + .on('close', function(code, signal) { + conn.end(); + handleRawOutput(_output, null); + _output = ""; + }) + .on('data', function(data) { + _output += data; + + }) + .stderr.on('data', function(data) { + _output += data; + }); + }); + }).on('error', function(err) { + + if (err) handleRawOutput(null, err); + + }).connect(ssh_config); } sshSnapUtil.prototype._promisifyExec = function(cmd, sudo) { - - cmd = sudo?"sudo "+cmd:cmd; - config = this.ssh_config; - return new Promise(function (resolve, reject) { - execCommand(config, cmd, function (res, err){ - if (err) reject (err); - else resolve(res); - }); - }); + + cmd = sudo ? "sudo " + cmd : cmd; + config = this.ssh_config; + return new Promise(function(resolve, reject) { + execCommand(config, cmd, function(res, err) { + if (err) reject(err); + else resolve(res); + }); + }); } -sshSnapUtil.prototype.listSnaps = function () { - return this._promisifyExec('snap list'); +sshSnapUtil.prototype.listSnaps = function() { + return this._promisifyExec('snap list'); } sshSnapUtil.prototype.getToken = function() { - return this._promisifyExec("snapweb.generate-token | awk '{ if(NR==3) print $0 }'", true); + return this._promisifyExec("snapweb.generate-token | awk '{ if(NR==3) print $0 }'", true); } sshSnapUtil.prototype.installSnap = function(name) { - return this._promisifyExec( 'snap install '+name, this.isSudoRequired); + return this._promisifyExec('snap install ' + name, this.isSudoRequired); } sshSnapUtil.prototype.removeSnap = function(name) { - return this._promisifyExec('snap remove '+name, this.isSudoRequired); + return this._promisifyExec('snap remove ' + name, this.isSudoRequired); } sshSnapUtil.prototype.snapVersion = function() { - return this._promisifyExec('snap version'); -} + return this._promisifyExec('snap version'); +} \ No newline at end of file diff --git a/tests/wdio.conf.js b/tests/wdio.conf.js index 03f25bc8..bad94792 100644 --- a/tests/wdio.conf.js +++ b/tests/wdio.conf.js @@ -1,5 +1,5 @@ exports.config = { - + // // ================== // Specify Test Files @@ -118,14 +118,14 @@ exports.config = { reporterOptions: { junit: { outputDir: './results/' - } - }, - + } + }, + // // Options to be passed to Mocha. // See the full list at http://mochajs.org/ mochaOpts: { - timeout: 60000, + timeout: 60000, ui: 'bdd' }, // @@ -143,11 +143,11 @@ exports.config = { // // Gets executed before test execution begins. At this point you can access all global // variables, such as `browser`. It is the perfect place to define custom commands. - before: function (capabilities, specs) { - var sshSnapUtil = require('./utils/ssh-snap-util'); + before: function(capabilities, specs) { + var sshSnapUtil = require('./utils/ssh-snap-util'); var env = process.env; - snaputil = new sshSnapUtil(env.HOST, env.USER, env.PORT, env.SSH_AUTH_SOCK, env.SUDO); - }, + snaputil = new sshSnapUtil(env.HOST, env.USER, env.PORT, env.SSH_AUTH_SOCK, env.SUDO); + }, // // Hook that gets executed before the suite starts // beforeSuite: function (suite) { @@ -192,4 +192,4 @@ exports.config = { // possible to defer the end of the process using a promise. // onComplete: function(exitCode) { // } -} +} \ No newline at end of file