3
3
* It is responsible for setting up the account object, tearing
4
4
* it down, and setting up the driver correctly.
5
5
*/
6
- import * as request from 'request ' ;
6
+ import * as https from 'https ' ;
7
7
import * as q from 'q' ;
8
8
import * as util from 'util' ;
9
9
@@ -23,46 +23,54 @@ export class BrowserStack extends DriverProvider {
23
23
* @param {Object } update
24
24
* @return {q.promise } A promise that will resolve when the update is complete.
25
25
*/
26
- updateJob ( update : any ) : q . Promise < any > {
27
- let deferredArray = this . drivers_ . map ( ( driver : webdriver . WebDriver ) => {
28
- let deferred = q . defer ( ) ;
29
- driver . getSession ( ) . then ( ( session : webdriver . Session ) => {
30
- var jobStatus = update . passed ? 'completed' : 'error' ;
31
- logger . info (
32
- 'BrowserStack results available at ' +
33
- 'https://www.browserstack.com/automate' ) ;
34
- request (
35
- {
36
- url : 'https://www.browserstack.com/automate/sessions/' +
37
- session . getId ( ) + '.json' ,
38
- headers : {
39
- 'Content-Type' : 'application/json' ,
40
- 'Authorization' : 'Basic ' +
41
- new Buffer (
42
- this . config_ . browserstackUser + ':' +
43
- this . config_ . browserstackKey )
44
- . toString ( 'base64' )
45
- } ,
46
- method : 'PUT' ,
47
- form : { 'status' : jobStatus }
48
- } ,
49
- ( error : Error ) => {
50
- if ( error ) {
51
- throw new BrowserError (
52
- logger ,
53
- 'Error updating BrowserStack pass/fail status: ' +
54
- util . inspect ( error ) ) ;
55
- }
56
- } ) ;
57
- deferred . resolve ( ) ;
58
- } ) ;
59
- return deferred . promise ;
60
- } ) ;
61
- return q . all ( deferredArray ) ;
62
- }
63
-
64
-
65
-
26
+ updateJob ( update : any ) : q . Promise < any > {
27
+ let deferredArray = this . drivers_ . map ( ( driver : webdriver . WebDriver ) => {
28
+ let deferred = q . defer ( ) ;
29
+ driver . getSession ( ) . then ( ( session : webdriver . Session ) => {
30
+ var jobStatus = update . passed ? 'completed' : 'error' ;
31
+ logger . info (
32
+ 'BrowserStack results available at ' +
33
+ 'https://www.browserstack.com/automate' ) ;
34
+ let headers : Object = {
35
+ 'Content-Type' : 'application/json' ,
36
+ 'Authorization' : 'Basic ' +
37
+ new Buffer (
38
+ this . config_ . browserstackUser + ':' +
39
+ this . config_ . browserstackKey )
40
+ . toString ( 'base64' )
41
+ } ;
42
+ let options = {
43
+ hostname : 'www.browserstack.com' ,
44
+ port : 443 ,
45
+ path : '/automate/sessions/' + session . getId ( ) + '.json' ,
46
+ method : 'PUT' ,
47
+ headers : headers
48
+ } ;
49
+ https
50
+ . request (
51
+ options ,
52
+ ( res ) => {
53
+ let responseStr = '' ;
54
+ res . on ( 'data' , ( data : Buffer ) => {
55
+ responseStr += data . toString ( ) ;
56
+ } ) ;
57
+ res . on ( 'end' , ( ) => {
58
+ logger . info ( responseStr ) ;
59
+ deferred . resolve ( ) ;
60
+ } ) ;
61
+ res . on ( 'error' , ( e : Error ) => {
62
+ throw new BrowserError (
63
+ logger ,
64
+ 'Error updating BrowserStack pass/fail status: ' +
65
+ util . inspect ( e ) ) ;
66
+ } ) ;
67
+ } )
68
+ . write ( '{\'status\': ' + jobStatus + '}' ) ;
69
+ } ) ;
70
+ return deferred . promise ;
71
+ } ) ;
72
+ return q . all ( deferredArray ) ;
73
+ }
66
74
67
75
/**
68
76
* Configure and launch (if applicable) the object's environment.
0 commit comments