@@ -83,11 +83,12 @@ export const defineGmailTests = (testVariant: TestVariant, testWithBrowser: Test
8383 } ;
8484
8585 const pageHasSecureDraft = async ( gmailPage : ControllablePage , expectedContent ?: string ) => {
86- const secureDraftFrame = await gmailPage . getFrame ( [ '/chrome/elements/compose.htm' , '&draftId=' ] ) ;
86+ const secureDraftFrame = await gmailPage . getFrame ( [ '/chrome/elements/compose.htm' , '&draftId=' ] , { sleep : 2 } ) ;
87+ await Util . sleep ( 3 ) ;
88+ // Wait for the iframe content to load - @input-body must exist first
89+ await secureDraftFrame . waitAll ( '@input-body' ) ;
8790 if ( expectedContent ) {
8891 await secureDraftFrame . waitForContent ( '@input-body' , expectedContent ) ;
89- } else {
90- await secureDraftFrame . waitAll ( '@input-body' ) ;
9192 }
9293 return secureDraftFrame ;
9394 } ;
@@ -324,16 +325,13 @@ export const defineGmailTests = (testVariant: TestVariant, testWithBrowser: Test
324325 ) ;
325326
326327 // convo-sensitive, draft-sensitive test
327- // Couldn't figure out why pageHasSecureDraft can't find correct iframe
328- // Need to fix later
329- // https://flowcrypt.semaphoreci.com/jobs/0106da6d-46f5-44d3-9ebd-3421584220a0
330- test . skip (
328+ test . serial (
331329 'mail.google.com - secure reply btn, reply draft' ,
332330 testWithBrowser (
333331 async ( t , browser ) => {
334332 await BrowserRecipe . setUpCommonAcct ( t , browser , 'ci.tests.gmail' ) ;
335333 const gmailPage = await openGmailPage ( t , browser ) ;
336- const threadId = '181d226b4e69f172 ' ; // 1st message -- thread id
334+ const threadId = '19ae97b85fe4f50e ' ; // 1st message -- thread id
337335 await gotoGmailPage ( gmailPage , `/${ threadId } ` ) ; // go to encrypted convo
338336 await GmailPageRecipe . trimConvo ( gmailPage , threadId ) ;
339337 await gmailPage . waitAndClick ( '@secure-reply-button' ) ;
@@ -343,13 +341,16 @@ export const defineGmailTests = (testVariant: TestVariant, testWithBrowser: Test
343341 await createSecureDraft ( t , browser , gmailPage , 'reply draft' ) ;
344342 await createSecureDraft ( t , browser , gmailPage , 'offline reply draft' , { offline : true } ) ;
345343 await gmailPage . reload ( { timeout : TIMEOUT_PAGE_LOAD * 1000 , waitUntil : 'load' } , true ) ;
344+ // Wait for extension to re-inject iframes after reload
345+ await gmailPage . waitForIframes ( 3 , 25 ) ; // 3 attempts, 25s each
346+ await Util . sleep ( 5 ) ; // Let Gmail settle after reload
346347 replyBox = await pageHasSecureDraft ( gmailPage , 'offline reply draft' ) ;
347348 await Util . sleep ( 2 ) ;
348349 await replyBox . waitAndClick ( '@action-send' , { confirmGone : true } ) ;
349350 await Util . sleep ( 2 ) ;
350351 await gmailPage . reload ( { timeout : TIMEOUT_PAGE_LOAD * 1000 , waitUntil : 'load' } , true ) ;
351352 await gmailPage . waitAndClick ( '.h7:last-child .ajz' , { delay : 1 } ) ; // the small triangle which toggles the message details
352- await gmailPage . waitForContent ( '.h7:last-child .ajA' , 'Re: [ci.test] encrypted email for reply render ' ) ; // make sure that the subject of the sent draft is corrent
353+ await gmailPage . waitForContent ( '.h7:last-child .ajA' , 'Re: [ci.test] secure reply btn, reply draft ' ) ; // make sure that the subject of the sent draft is corrent
353354 await GmailPageRecipe . trimConvo ( gmailPage , threadId ) ;
354355 } ,
355356 undefined ,
0 commit comments