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 ( {
9- page,
10- } ) => {
8+ test ( "Check forward and backwards pagination causes the " , async ( { page } ) => {
119 // 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 } ) ;
10+ await page . goto ( "/explore/biosamples" ) ;
1511 await expect ( page . locator ( "text=Biosample Id" ) ) . toBeVisible ( ) ;
1612
17- const TestThreePageText = await page . locator ( PaginationSelector ) . innerText ( ) ;
13+ const firstElementTextLocator = page
14+ . getByRole ( "rowgroup" )
15+ . nth ( 1 )
16+ . getByRole ( "row" )
17+ . nth ( 0 )
18+ . getByRole ( "cell" )
19+ . nth ( 0 ) ;
20+
1821 // Should start on first page
1922 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-
23+ const max_pages = 5 ;
2524 const FirstTableEntries = [ ] ;
2625
2726 // Paginate forwards
28- const FirstTableEntrySelector = "_react=TableComponent >> td >> nth=0" ;
2927 for ( let i = 2 ; i < max_pages + 1 ; i ++ ) {
30- const OriginalFirstTableEntry = await page
31- . locator ( FirstTableEntrySelector )
32- . innerText ( ) ;
28+ const OriginalFirstTableEntry = await firstElementTextLocator . innerText ( ) ;
3329 // Click the next button
34- await page . locator ( ForwardButtonSelector ) . click ( ) ;
30+ await page
31+ . getByRole ( "button" )
32+ . filter ( { has : page . getByTestId ( ForwardButtonTestID ) } )
33+ . click ( ) ;
3534 // Expect the page count to have incremented
3635 await expect ( page . locator ( PaginationSelector ) ) . toContainText (
37- `Page ${ i } of ${ max_pages } `
36+ `Page ${ i } of `
3837 ) ;
3938 // Expect the back button to be enabled
40- await expect
41- . soft ( page . locator ( BackButtonSelector ) . locator ( ".." ) )
42- . toBeEnabled ( ) ;
39+ await expect (
40+ page
41+ . getByRole ( "button" )
42+ . filter ( { has : page . getByTestId ( BackButtonTestID ) } )
43+ ) . toBeEnabled ( ) ;
4344 // Expect the forwards button to be enabled
4445 if ( i != max_pages ) {
4546 await expect (
46- page . locator ( ForwardButtonSelector ) . locator ( ".." )
47+ page
48+ . getByRole ( "button" )
49+ . filter ( { has : page . getByTestId ( ForwardButtonTestID ) } )
4750 ) . toBeEnabled ( ) ;
4851 }
4952 // Expect the first entry to have changed on the new page
50- await expect ( page . locator ( FirstTableEntrySelector ) ) . not . toHaveText (
53+ await expect ( firstElementTextLocator ) . not . toHaveText (
5154 OriginalFirstTableEntry
5255 ) ;
5356 // Remember the first entry
@@ -57,14 +60,15 @@ test("Check forward and backwards pagination causes values to change", async ({
5760 // Paginate backwards
5861 for ( let i = 0 ; i < max_pages - 1 ; i ++ ) {
5962 const OldFirstTableEntry = FirstTableEntries [ max_pages - i - 2 ] ;
60- await page . locator ( BackButtonSelector ) . click ( ) ;
63+ await page
64+ . getByRole ( "button" )
65+ . filter ( { has : page . getByTestId ( BackButtonTestID ) } )
66+ . click ( ) ;
6167 // Expect page number to be correct
6268 await expect ( page . locator ( PaginationSelector ) ) . toContainText (
63- `Page ${ max_pages - i - 1 } of ${ max_pages } `
69+ `Page ${ max_pages - i - 1 } of `
6470 ) ;
6571 // Expect page entry to be consistent with forward pagination
66- await expect ( page . locator ( FirstTableEntrySelector ) ) . toHaveText (
67- OldFirstTableEntry
68- ) ;
72+ await expect ( firstElementTextLocator ) . toHaveText ( OldFirstTableEntry ) ;
6973 }
7074} ) ;
0 commit comments