@@ -16,6 +16,9 @@ var assert = require('chai').assert;
1616var reporter = require ( 'cucumber-html-reporter' ) ;
1717var cucumberJunit = require ( 'cucumber-junit' ) ;
1818
19+ // Initialize the eyes SDK and set your private API key.
20+ var Eyes = require ( 'eyes.selenium' ) . Eyes ;
21+
1922// drivers
2023var FireFoxDriver = require ( './firefoxDriver.js' ) ;
2124var PhantomJSDriver = require ( './phantomDriver.js' ) ;
@@ -34,19 +37,23 @@ function getDriverInstance() {
3437
3538 case 'firefox' : {
3639 driver = new FireFoxDriver ( ) ;
37- } break ;
40+ }
41+ break ;
3842
3943 case 'phantomjs' : {
4044 driver = new PhantomJSDriver ( ) ;
41- } break ;
45+ }
46+ break ;
4247
4348 case 'electron' : {
4449 driver = new electronDriver ( ) ;
45- } break ;
50+ }
51+ break ;
4652
4753 case 'chrome' : {
4854 driver = new ChromeDriver ( ) ;
49- } break ;
55+ }
56+ break ;
5057
5158 // try to load from file
5259 default : {
@@ -62,6 +69,21 @@ function getDriverInstance() {
6269 return driver ;
6370}
6471
72+
73+ /**
74+ * Initialize the eyes SDK and set your private API key via the config file.*/
75+ function getEyesInstance ( ) {
76+
77+ var eyes = new Eyes ( ) ;
78+
79+ //retrieve apikey from config file in the project root as defined by the user
80+ eyes . setApiKey ( eyeskey ) ;
81+
82+ return eyes ;
83+
84+
85+ }
86+
6587function consoleInfo ( ) {
6688 var args = [ ] . slice . call ( arguments ) ,
6789 output = chalk . bgBlue . white ( '\n>>>>> \n' + args + '\n<<<<<\n' ) ;
@@ -77,6 +99,7 @@ function createWorld() {
7799
78100 var runtime = {
79101 driver : null , // the browser object
102+ eyes : null ,
80103 selenium : selenium , // the raw nodejs selenium driver
81104 By : selenium . By , // in keeping with Java expose selenium By
82105 by : selenium . By , // provide a javascript lowercase version
@@ -112,7 +135,7 @@ function importSupportObjects() {
112135
113136 if ( fs . existsSync ( itemPath ) ) {
114137
115- var dir = requireDir ( itemPath , { camelcase : true } ) ;
138+ var dir = requireDir ( itemPath , { camelcase : true } ) ;
116139
117140 merge ( allDirs , dir ) ;
118141 }
@@ -130,7 +153,7 @@ function importSupportObjects() {
130153 if ( global . pageObjectPath && fs . existsSync ( global . pageObjectPath ) ) {
131154
132155 // require all page objects using camel case as object names
133- global . page = requireDir ( global . pageObjectPath , { camelcase : true } ) ;
156+ global . page = requireDir ( global . pageObjectPath , { camelcase : true } ) ;
134157 }
135158
136159 // add helpers
@@ -149,12 +172,14 @@ module.exports = function () {
149172 // set the default timeout for all tests
150173 this . setDefaultTimeout ( global . DEFAULT_TIMEOUT ) ;
151174
152- // create the driver before scenario if it's not instantiated
153- this . registerHandler ( 'BeforeScenario' , function ( scenario ) {
175+ // create the driver and applitools eyes before scenario if it's not instantiated
176+ this . registerHandler ( 'BeforeScenario' , function ( scenario ) {
154177
155- if ( ! global . driver ) {
178+ if ( ! global . driver || ! global . eyes ) {
156179 global . driver = getDriverInstance ( ) ;
180+ global . eyes = getEyesInstance ( ) ;
157181 }
182+
158183 } ) ;
159184
160185 this . registerHandler ( 'AfterFeatures' , function ( features , done ) {
@@ -196,14 +221,20 @@ module.exports = function () {
196221
197222 scenario . attach ( new Buffer ( screenShot , 'base64' ) , 'image/png' ) ;
198223
199- return driver . close ( ) . then ( function ( ) {
224+ return driver . close ( ) . then ( function ( ) {
200225 return driver . quit ( ) ;
201- } ) ;
226+ } )
227+ } ) . then ( function ( ) {
228+ // If the test was aborted before eyes.close was called ends the test as aborted.
229+ return eyes . abortIfNotClosed ( ) ;
202230 } ) ;
203231 }
204232
205- return driver . close ( ) . then ( function ( ) {
233+ return driver . close ( ) . then ( function ( ) {
206234 return driver . quit ( ) ;
235+ } ) . then ( function ( ) {
236+ // If the test was aborted before eyes.close was called ends the test as aborted.
237+ return eyes . abortIfNotClosed ( ) ;
207238 } ) ;
208239 } ) ;
209240} ;
0 commit comments