@@ -25,20 +25,25 @@ test.describe("Unauthenticated Articles Page", () => {
2525 await expect (
2626 page . getByRole ( "heading" , { name : "Written by E2E Test User One" } ) ,
2727 ) . toBeVisible ( ) ;
28- await expect ( page . getByLabel ( "like-trigger" ) ) . toBeVisible ( ) ;
28+ // Wait for sidebar data to load (ArticleMenu renders after API response)
29+ await expect ( page . getByLabel ( "like-trigger" ) ) . toBeVisible ( {
30+ timeout : 15000 ,
31+ } ) ;
2932 await expect ( page . getByLabel ( "bookmark-trigger" ) ) . toBeVisible ( ) ;
3033 } ) ;
3134
3235 test ( "Should show bookmark article icon" , async ( { page } ) => {
3336 await page . goto ( "http://localhost:3000/articles" ) ;
37+ // Wait for articles to fully hydrate
38+ await page . waitForSelector ( "article" ) ;
3439
3540 await expect (
3641 page . getByRole ( "heading" , { name : "Recent bookmarks" } ) ,
3742 ) . toBeHidden ( ) ;
3843
3944 await expect (
4045 page . locator ( "article" ) . first ( ) . getByLabel ( "Bookmark this post" ) ,
41- ) . toBeVisible ( ) ;
46+ ) . toBeVisible ( { timeout : 15000 } ) ;
4247 } ) ;
4348 test ( "Should load more articles when scrolling to the end of the page" , async ( {
4449 page,
@@ -179,7 +184,7 @@ test.describe("Authenticated Articles Page", () => {
179184
180185 await expect (
181186 page . locator ( "article" ) . first ( ) . getByLabel ( "Bookmark this post" ) ,
182- ) . toBeVisible ( ) ;
187+ ) . toBeVisible ( { timeout : 15000 } ) ;
183188 } ) ;
184189
185190 test ( "Should load more articles when scrolling to the end of the page" , async ( {
@@ -266,10 +271,14 @@ test.describe("Authenticated Articles Page", () => {
266271 await expect (
267272 page . getByRole ( "heading" , { name : "Written by E2E Test User One" } ) ,
268273 ) . toBeVisible ( ) ;
274+ // Wait for comments to finish loading
269275 await expect (
270- page . getByRole ( "heading" , { name : "Discussion (0)" } ) ,
271- ) . toBeVisible ( ) ;
272- await expect ( page . getByLabel ( "like-trigger" ) ) . toBeVisible ( ) ;
276+ page . getByRole ( "heading" , { name : / ^ D i s c u s s i o n \( \d + \) $ / } ) ,
277+ ) . toBeVisible ( { timeout : 15000 } ) ;
278+ // Wait for sidebar data to load (ArticleMenu renders after API response)
279+ await expect ( page . getByLabel ( "like-trigger" ) ) . toBeVisible ( {
280+ timeout : 15000 ,
281+ } ) ;
273282 await expect ( page . getByLabel ( "bookmark-trigger" ) ) . toBeVisible ( ) ;
274283 } ) ;
275284
@@ -301,11 +310,14 @@ test.describe("Authenticated Articles Page", () => {
301310 await expect (
302311 page . getByRole ( "heading" , { name : "Written by E2E Test User One" } ) ,
303312 ) . toBeVisible ( ) ;
304- // There's 1 comment created by the test setup
313+ // Wait for comments to finish loading (shows "Discussion (X)" when loaded)
305314 await expect (
306- page . getByRole ( "heading" , { name : "Discussion (1)" } ) ,
307- ) . toBeVisible ( ) ;
308- await expect ( page . getByLabel ( "like-trigger" ) ) . toBeVisible ( ) ;
315+ page . getByRole ( "heading" , { name : / ^ D i s c u s s i o n \( \d + \) $ / } ) ,
316+ ) . toBeVisible ( { timeout : 15000 } ) ;
317+ // Wait for sidebar data to load (ArticleMenu renders after API response)
318+ await expect ( page . getByLabel ( "like-trigger" ) ) . toBeVisible ( {
319+ timeout : 15000 ,
320+ } ) ;
309321 await expect ( page . getByLabel ( "bookmark-trigger" ) ) . toBeVisible ( ) ;
310322
311323 await page . getByRole ( "button" , { name : "Reply" } ) . first ( ) . click ( ) ;
0 commit comments