@@ -102,27 +102,36 @@ test.describe("Authenticated Articles Page", () => {
102102 // Waits for articles to be loaded
103103 await page . waitForSelector ( "article" ) ;
104104
105- const initialArticleCount = await page . $$eval (
106- "article" ,
107- ( articles ) => articles . length ,
108- ) ;
105+ // This delays the requests by 100ms.
106+ // This is needed as the load more article request was resolving too fast
107+ await page . route ( "**/*" , async ( route ) => {
108+ await new Promise ( ( f ) => setTimeout ( f , 100 ) ) ;
109+ await route . continue ( ) ;
110+ } ) ;
109111
110112 if ( ! isMobile ) {
111- await page . getByText ( "Code Of Conduct" ) . scrollIntoViewIfNeeded ( ) ;
112- await page . waitForTimeout ( 5000 ) ;
113- const finalArticleCount = await page . $$eval (
114- "article" ,
115- ( articles ) => articles . length ,
116- ) ;
117- expect ( finalArticleCount ) . toBeGreaterThan ( initialArticleCount ) ;
113+ const articleLocator = page . locator ( "article" ) ;
114+ const initialArticleCount = await articleLocator . count ( ) ;
115+
116+ await page
117+ . getByRole ( "link" , { name : "Code Of Conduct" } )
118+ . scrollIntoViewIfNeeded ( ) ;
119+
120+ // We expect to see the loading indicator become visible why loading and then hidden when more articles are loaded
121+ await expect ( page . getByTestId ( "article-loading-indicator" ) ) . toBeVisible ( ) ;
122+ await expect ( page . getByTestId ( "article-loading-indicator" ) ) . toBeHidden ( ) ;
123+
124+ expect ( await articleLocator . count ( ) ) . toBeGreaterThan ( initialArticleCount ) ;
118125 }
119126
120- await expect ( page . getByText ( " Home") ) . toBeVisible ( ) ;
127+ await expect ( page . getByRole ( "link" , { name : " Home" } ) ) . toBeVisible ( ) ;
121128 await expect (
122129 page . getByLabel ( "Footer" ) . getByRole ( "link" , { name : "Events" } ) ,
123130 ) . toBeVisible ( ) ;
124- await expect ( page . getByText ( "Sponsorship" ) ) . toBeVisible ( ) ;
125- await expect ( page . getByText ( "Code Of Conduct" ) ) . toBeVisible ( ) ;
131+ await expect ( page . getByRole ( "link" , { name : "Sponsorship" } ) ) . toBeVisible ( ) ;
132+ await expect (
133+ page . getByRole ( "link" , { name : "Code Of Conduct" } ) ,
134+ ) . toBeVisible ( ) ;
126135 } ) ;
127136
128137 test ( "Should write and publish an article" , async ( { page, isMobile } ) => {
0 commit comments