1
1
_ = require ( "jasmine-node" ) ;
2
- var server = require ( "./../../src/server .js" ) ;
2
+ var tester = require ( "./selenium-init .js" ) ;
3
3
var webdriver = require ( 'selenium-webdriver' ) ;
4
4
5
- if ( process . env [ "TEST_LOC" ] === "local" ) {
6
- server . start ( {
7
- baseUrl : process . env [ "BASE_URL" ] ,
8
- port : process . env [ "PORT" ] ,
9
- sessionSecret : process . env [ "SESSION_SECRET" ] ,
10
- google : {
11
- clientId : process . env [ "GOOGLE_CLIENT_ID" ] ,
12
- clientSecret : process . env [ "GOOGLE_CLIENT_SECRET" ] ,
13
- redirect : "/oauth2callback"
14
- }
15
- } , function ( app , server ) {
16
- var driver = new webdriver . Builder ( ) .
17
- withCapabilities ( { browserName : "chrome" } ) .
18
- build ( ) ;
19
- afterServer ( server , process . env [ "BASE_URL" ] , driver ) ;
20
- } ) ;
21
- }
22
- else {
23
- var driver = new webdriver . Builder ( ) .
24
- usingServer ( "https://ondemand.saucelabs.com/wd/hub" ) .
25
- withCapabilities ( {
26
- browserName : "internet explorer" ,
27
- username : process . env [ "SAUCE_USERNAME" ] ,
28
- accessKey : process . env [ "SAUCE_ACCESS_KEY" ]
29
- } ) .
30
- build ( ) ;
31
- afterServer ( null , process . env [ "SAUCE_TEST_TARGET" ] , driver ) ;
32
- }
33
-
34
-
35
- var googleUsername = process . env [ "SELENIUM_GOOGLE_USER" ] ;
36
- var googlePassword = process . env [ "SELENIUM_GOOGLE_PASSWORD" ] ;
5
+ var contains = tester . contains ;
6
+ var waitThenClick = tester . waitThenClick ;
7
+ var googleLogin = tester . googleLogin ;
8
+ var googleLogout = tester . googleLogout ;
37
9
38
- function afterServer ( maybeServer , baseUrl , driver ) {
39
- function googleLogin ( driver ) {
40
- driver . wait ( function ( ) {
41
- return driver . getTitle ( ) . then ( function ( title ) {
42
- return title === 'Sign in - Google Accounts' ;
43
- } ) ;
44
- } , 3000 ) ;
45
- // Sometimes email isn't present because the browser remembers which
46
- // Google account we last logged in as
47
- driver . findElement ( webdriver . By . id ( "Email" ) ) . getAttribute ( "class" ) . then ( function ( cls ) {
48
- if ( cls . indexOf ( "hidden" ) === - 1 ) {
49
- driver . findElement ( webdriver . By . id ( "Email" ) ) . sendKeys ( googleUsername ) ;
50
- }
51
- driver . findElement ( webdriver . By . id ( "Passwd" ) ) . sendKeys ( googlePassword ) ;
52
- driver . findElement ( webdriver . By . id ( "signIn" ) ) . click ( ) ;
53
- } ) ;
54
- }
55
- function waitThenClick ( driver , query ) {
56
- driver . wait ( function ( ) {
57
- return driver . isElementPresent ( query ) ;
58
- } , 4000 ) ;
59
- return driver . findElement ( query ) . click ( ) ;
60
- }
10
+ tester . start ( function ( maybeServer , baseUrl , driver ) {
61
11
describe ( "Sign in" , function ( ) {
62
- webdriver . promise . controlFlow ( ) . on ( 'uncaughtException' , function ( e ) {
63
- console . error ( 'Unhandled error: ' + e ) ;
64
- fail ( ) ;
65
- } ) ;
66
12
67
- it ( "Should forget everything it knows" , function ( done ) {
68
- try {
69
- driver . get ( "https://security.google.com/settings/security/permissions" ) ;
70
- googleLogin ( driver ) ;
71
- console . log ( "waiting..." ) ;
72
- driver . wait ( function ( ) {
73
- console . log ( "Waiting for page..." ) ;
74
- return driver . executeScript ( "return document.readyState === 'complete'" ) ;
75
- } , 3000 ) ;
76
- // driver.isElementPresent(webdriver.By.xpath("//*[contains(text(), 'Patch Test')]")).then(function(p) { console.log(p); });
77
- driver . isElementPresent ( webdriver . By . xpath ( "//*[contains(text(), 'Patch Test')]" ) ) . then ( function ( present ) {
78
- console . log ( "present: " , present ) ;
79
- if ( present ) {
80
- waitThenClick ( driver , webdriver . By . xpath ( "//*[contains(text(), 'Patch Test')]" ) ) ;
81
- waitThenClick ( driver , webdriver . By . xpath ( "//*[contains(text(), 'Revoke access')]" ) ) ;
82
- return waitThenClick ( driver , webdriver . By . name ( "ok" ) ) ;
83
- } else {
84
- // do nothing
85
- }
86
- } ) ;
87
- driver . get ( "https://accounts.google.com/Logout" ) ;
88
- driver . call ( function ( ) { done ( ) ; } ) ;
89
- }
90
- catch ( e ) { console . log ( e ) ; }
13
+ tester . webbit ( "Should forget everything it knows" , function ( done ) {
14
+ driver . get ( "https://security.google.com/settings/security/permissions" ) ;
15
+ googleLogin ( driver ) ;
16
+ console . log ( "Waiting to see if Patch permissions are present..." ) ;
17
+ driver . wait ( function ( ) {
18
+ return driver . executeScript ( "return document.readyState === 'complete'" ) ;
19
+ } , 3000 ) ;
20
+ driver . isElementPresent ( contains ( "Patch Test" ) ) . then ( function ( present ) {
21
+ if ( present ) {
22
+ waitThenClick ( driver , contains ( "Patch Test" ) ) ;
23
+ waitThenClick ( driver , contains ( "Revoke access" ) ) ;
24
+ return waitThenClick ( driver , webdriver . By . name ( "ok" ) ) ;
25
+ } else {
26
+ // do nothing otherwise
27
+ }
28
+ } ) ;
29
+ googleLogout ( driver ) ;
30
+ driver . call ( done ) ;
91
31
} , 60000 ) ;
92
32
93
- it ( "Should sign up from not being logged in" , function ( done ) {
94
- console . log ( "sign up" ) ;
33
+ tester . webbit ( "Should sign up from not being logged in" , function ( done ) {
95
34
driver . get ( baseUrl ) ;
96
35
driver . findElement ( webdriver . By . id ( 'login' ) ) . click ( ) ;
97
36
googleLogin ( driver ) ;
37
+ console . log ( "Waiting for permission confirmation button..." ) ;
98
38
driver . wait ( function ( ) {
99
- console . log ( "Waiting for confirmation button to activate..." ) ;
100
39
return driver . findElement ( webdriver . By . id ( "submit_approve_access" ) ) . getAttribute ( "disabled" )
101
40
. then ( function ( disabled ) {
102
41
return ! disabled ;
103
42
} ) ;
104
43
} , 3000 ) ;
105
44
driver . findElement ( webdriver . By . id ( "submit_approve_access" ) ) . click ( ) ;
106
- var loaded = driver . wait ( function ( ) {
107
- console . log ( "Waiting for page to load.." ) ;
108
- return driver . findElement ( webdriver . By . id ( "loader" ) ) . getCssValue ( "display" )
109
- . then ( function ( d ) {
110
- console . log ( "style: " , d ) ;
111
- return d === "none" ;
112
- } ) ;
113
- } , 3000 ) ;
114
- loaded . then ( function ( ) { console . log ( "done with test" ) ; done ( ) ; } ) ;
45
+ tester . waitForPyretLoad ( driver ) ;
46
+ driver . call ( done ) ;
47
+ } , 60000 ) ;
48
+
49
+ tester . webbit ( "When logging back in, should skip authentication and go straight to my-programs" , function ( done ) {
50
+ driver . get ( baseUrl ) ;
51
+ driver . findElement ( webdriver . By . id ( 'login' ) ) . click ( ) ;
52
+ tester . waitForPyretLoad ( driver ) ;
53
+ driver . call ( done ) ;
54
+ } , 60000 ) ;
55
+
56
+ tester . webbit ( "If cookies are cleared, should still log in seamlessly and work" , function ( done ) {
57
+ driver . manage ( ) . deleteAllCookies ( ) ;
58
+ driver . get ( baseUrl ) ;
59
+ driver . findElement ( webdriver . By . id ( 'login' ) ) . click ( ) ;
60
+ tester . waitForPyretLoad ( driver ) ;
61
+ driver . call ( done ) ;
115
62
} , 60000 ) ;
116
63
117
64
it ( "Should close the server and the connection to the browser" , function ( done ) {
@@ -122,4 +69,4 @@ function afterServer(maybeServer, baseUrl, driver) {
122
69
} ) ;
123
70
124
71
} ) ;
125
- }
72
+ } ) ;
0 commit comments