@@ -92,13 +92,13 @@ export class AppiumServer {
9292 response = await waitForOutput ( this . _server , / l i s t e n e r s t a r t e d / , / E r r o r : l i s t e n / , 60000 , true ) ;
9393 }
9494
95+ this . hasStarted = response ;
9596 return response ;
9697 } else if ( ! this . _args . attachToDebug ) {
9798 return true ;
9899 }
99100
100101 return false ;
101-
102102 }
103103
104104 private startAppiumServer ( logLevel : string , isSauceLab : boolean ) {
@@ -116,25 +116,30 @@ export class AppiumServer {
116116 }
117117
118118 public async stop ( ) {
119- await this . _args . deviceManager . stopDevice ( this . _args ) ;
119+ const onServerKilled = ( server , signal , code , verbose ) => {
120+ log ( `Appium terminated due signal: ${ signal } and code: ${ code } ` , verbose ) ;
121+ server && server . removeAllListeners ( ) ;
122+ }
123+
124+ await this . _args . deviceManager . stopDevice ( this . _args . device , this . _args ) ;
120125 return new Promise ( ( resolve , reject ) => {
121- this . _server . on ( "close" , ( code , signal ) => {
122- log ( `Appium terminated due signal: ${ signal } and code: ${ code } ` , this . _args . verbose ) ;
126+ this . _server . once ( "close" , ( code , signal ) => {
127+ onServerKilled ( this . _server , signal , code , this . _args . verbose ) ;
123128 resolve ( ) ;
124129 } ) ;
125130
126- this . _server . on ( "exit" , ( code , signal ) => {
127- log ( `Appium terminated due signal: ${ signal } and code: ${ code } ` , this . _args . verbose ) ;
131+ this . _server . once ( "exit" , ( code , signal ) => {
132+ onServerKilled ( this . _server , signal , code , this . _args . verbose ) ;
128133 resolve ( ) ;
129134 } ) ;
130135
131- this . _server . on ( "error" , ( code , signal ) => {
132- log ( `Appium terminated due signal: ${ signal } and code: ${ code } ` , this . _args . verbose ) ;
136+ this . _server . once ( "error" , ( code , signal ) => {
137+ onServerKilled ( this . _server , signal , code , this . _args . verbose ) ;
133138 resolve ( ) ;
134139 } ) ;
135140
136- this . _server . on ( "disconnect" , ( code , signal ) => {
137- log ( `Appium terminated due signal: ${ signal } and code: ${ code } ` , this . _args . verbose ) ;
141+ this . _server . once ( "disconnect" , ( code , signal ) => {
142+ onServerKilled ( this . _server , signal , code , this . _args . verbose ) ;
138143 resolve ( ) ;
139144 } ) ;
140145
@@ -149,6 +154,7 @@ export class AppiumServer {
149154 this . _server . kill ( "SIGINT" ) ;
150155 this . _server . kill ( "SIGINT" ) ;
151156 this . _server . kill ( "SIGKILL" ) ;
157+ process . kill ( this . _server . pid , "SIGKILL" ) ;
152158 shutdown ( this . _server , this . _args . verbose ) ;
153159 }
154160 } catch ( error ) {
0 commit comments