11import { expect , test } from "@playwright/test" ;
22
33const PaginationSelector = "_react=Pagination" ;
4- const BackButtonSelector = "data-testid= WestRoundedIcon" ;
5- const ForwardButtonSelector = "data-testid= EastRoundedIcon" ;
4+ const BackButtonTestID = "WestRoundedIcon" ;
5+ const ForwardButtonTestID = "EastRoundedIcon" ;
66
77test . setTimeout ( 90000 ) ;
8- test ( "Check forward and backwards pagination causes values to change" , async ( {
8+ test ( "Check forward and backwards pagination causes the page content to change" , async ( {
99 page,
1010} ) => {
1111 // Navigate to the BioSamples page
12- await page . goto ( "/explore/" ) ;
13- await page . locator ( "text=BioSamples" ) . click ( ) ;
14- await expect ( page ) . toHaveURL ( "/explore/biosamples" , { timeout : 10000 } ) ;
12+ await page . goto ( "/explore/biosamples" ) ;
1513 await expect ( page . locator ( "text=Biosample Id" ) ) . toBeVisible ( ) ;
1614
17- const TestThreePageText = await page . locator ( PaginationSelector ) . innerText ( ) ;
15+ const firstElementTextLocator = page
16+ . getByRole ( "rowgroup" )
17+ . nth ( 1 )
18+ . getByRole ( "row" )
19+ . nth ( 0 )
20+ . getByRole ( "cell" )
21+ . nth ( 0 ) ;
22+
1823 // Should start on first page
1924 await expect ( page . locator ( PaginationSelector ) ) . toContainText ( "Page 1 of " ) ;
20- const SplitStartingPageText = TestThreePageText . split ( " " ) ;
21- const max_pages = parseInt (
22- SplitStartingPageText [ SplitStartingPageText . length - 1 ]
23- ) ;
24-
25+ const max_pages = 5 ;
2526 const FirstTableEntries = [ ] ;
2627
2728 // Paginate forwards
28- const FirstTableEntrySelector = "_react=TableComponent >> td >> nth=0" ;
2929 for ( let i = 2 ; i < max_pages + 1 ; i ++ ) {
30- const OriginalFirstTableEntry = await page
31- . locator ( FirstTableEntrySelector )
32- . innerText ( ) ;
30+ const OriginalFirstTableEntry = await firstElementTextLocator . innerText ( ) ;
3331 // Click the next button
34- await page . locator ( ForwardButtonSelector ) . click ( ) ;
32+ await page
33+ . getByRole ( "button" )
34+ . filter ( { has : page . getByTestId ( ForwardButtonTestID ) } )
35+ . click ( ) ;
3536 // Expect the page count to have incremented
3637 await expect ( page . locator ( PaginationSelector ) ) . toContainText (
37- `Page ${ i } of ${ max_pages } `
38+ `Page ${ i } of `
3839 ) ;
3940 // Expect the back button to be enabled
40- await expect
41- . soft ( page . locator ( BackButtonSelector ) . locator ( ".." ) )
42- . toBeEnabled ( ) ;
41+ await expect (
42+ page
43+ . getByRole ( "button" )
44+ . filter ( { has : page . getByTestId ( BackButtonTestID ) } )
45+ ) . toBeEnabled ( ) ;
4346 // Expect the forwards button to be enabled
4447 if ( i != max_pages ) {
4548 await expect (
46- page . locator ( ForwardButtonSelector ) . locator ( ".." )
49+ page
50+ . getByRole ( "button" )
51+ . filter ( { has : page . getByTestId ( ForwardButtonTestID ) } )
4752 ) . toBeEnabled ( ) ;
4853 }
4954 // Expect the first entry to have changed on the new page
50- await expect ( page . locator ( FirstTableEntrySelector ) ) . not . toHaveText (
55+ await expect ( firstElementTextLocator ) . not . toHaveText (
5156 OriginalFirstTableEntry
5257 ) ;
5358 // Remember the first entry
@@ -57,14 +62,15 @@ test("Check forward and backwards pagination causes values to change", async ({
5762 // Paginate backwards
5863 for ( let i = 0 ; i < max_pages - 1 ; i ++ ) {
5964 const OldFirstTableEntry = FirstTableEntries [ max_pages - i - 2 ] ;
60- await page . locator ( BackButtonSelector ) . click ( ) ;
65+ await page
66+ . getByRole ( "button" )
67+ . filter ( { has : page . getByTestId ( BackButtonTestID ) } )
68+ . click ( ) ;
6169 // Expect page number to be correct
6270 await expect ( page . locator ( PaginationSelector ) ) . toContainText (
63- `Page ${ max_pages - i - 1 } of ${ max_pages } `
71+ `Page ${ max_pages - i - 1 } of `
6472 ) ;
6573 // Expect page entry to be consistent with forward pagination
66- await expect ( page . locator ( FirstTableEntrySelector ) ) . toHaveText (
67- OldFirstTableEntry
68- ) ;
74+ await expect ( firstElementTextLocator ) . toHaveText ( OldFirstTableEntry ) ;
6975 }
7076} ) ;
0 commit comments