@@ -211,6 +211,39 @@ async function isServiceReady(page, studyId, nodeId) {
211211 return stopListening . includes ( status ) ;
212212}
213213
214+ async function getServiceUrl ( page , studyId , nodeId ) {
215+ const endPoint = "/projects/" + studyId + "/nodes/" + nodeId ;
216+ console . log ( "-- get service url" , endPoint ) ;
217+ const resp = await makeRequest ( page , endPoint ) ;
218+
219+ const service_basepath = resp [ "service_basepath" ] ;
220+ const service_entrypoint = resp [ "entry_point" ] ;
221+ const service_url = service_basepath + ( service_entrypoint ? ( "/" + service_entrypoint ) : "/" ) ;
222+ console . log ( "Service URL:" , nodeId , service_url ) ;
223+
224+ return service_url ;
225+ }
226+
227+ async function makePingRequest ( page , path ) {
228+ // https://github.com/Netflix/pollyjs/issues/149#issuecomment-481108446
229+ await page . setBypassCSP ( true ) ;
230+ return await page . evaluate ( async ( path ) => {
231+ const url = ( path ) . replace ( / \/ \/ / g, "\/" ) ;
232+ console . log ( "makePingRequest" , url ) ;
233+ return fetch ( url , { accept : '*/*' , cache : 'no-cache' } )
234+ . then ( response => { console . log ( "ping response status:" , response . status ) ; return response . ok ; } )
235+ . catch ( error => { console . error ( error ) ; } ) ;
236+ } , path ) ;
237+ }
238+
239+ async function isServiceConnected ( page , studyId , nodeId ) {
240+ console . log ( "-- Is Service Connected" , nodeId ) ;
241+ const serviceUrl = await getServiceUrl ( page , studyId , nodeId ) ;
242+ connected = await makePingRequest ( page , serviceUrl ) ;
243+ console . log ( connected , "--" )
244+ return connected ;
245+ }
246+
214247async function isStudyDone ( page , studyId ) {
215248 const endPoint = "/projects/" + studyId + "/state" ;
216249 console . log ( "-- Is study done" , endPoint ) ;
@@ -360,7 +393,7 @@ async function typeInInputElement(page, inputSelector, text) {
360393 } ) ;
361394}
362395
363- function isElementVisible ( page , selector ) {
396+ function isElementVisible ( page , selector ) {
364397 return page . evaluate ( selector => {
365398 const element = document . querySelector ( selector )
366399 return ! ! ( element && ( element . offsetWidth || element . offsetHeight || element . getClientRects ( ) . length ) )
@@ -386,6 +419,7 @@ module.exports = {
386419 dragAndDrop,
387420 waitForResponse,
388421 isServiceReady,
422+ isServiceConnected,
389423 isStudyDone,
390424 isStudyUnlocked,
391425 waitForValidOutputFile,
0 commit comments