@@ -272,15 +272,18 @@ export async function testFilterPersistence(
272
272
await expect ( getFirstElementTextLocator ( page , 0 ) ) . toBeVisible ( ) ;
273
273
// For each tab, check that the selected filter is still checked
274
274
for ( const tab of tabOrder . slice ( 1 ) ) {
275
- await page . getByRole ( "tab" ) . getByText ( tab . tabName ) . click ( ) ;
275
+ await page . getByRole ( "tab" ) . getByText ( tab . tabName , { exact : true } ) . click ( ) ;
276
276
await expect ( page . getByText ( filterRegex ( testFilter ) ) ) . toBeVisible ( ) ;
277
277
await page . getByText ( filterRegex ( testFilter ) ) . click ( ) ;
278
278
const previously_selected = getNamedFilterButton ( page , filterName ) ;
279
279
await expect ( previously_selected . getByRole ( "checkbox" ) ) . toBeChecked ( ) ;
280
280
await page . locator ( "body" ) . click ( ) ;
281
281
}
282
282
// Return to the start tab and confirm that the filter stays checked and that some content is visible
283
- await page . getByRole ( "tab" ) . getByText ( tabOrder [ 0 ] . tabName ) . click ( ) ;
283
+ await page
284
+ . getByRole ( "tab" )
285
+ . getByText ( tabOrder [ 0 ] . tabName , { exact : true } )
286
+ . click ( ) ;
284
287
await expect ( getFirstElementTextLocator ( page , 0 ) ) . toBeVisible ( ) ;
285
288
await page . getByText ( filterRegex ( testFilter ) ) . click ( ) ;
286
289
const previously_selected = getFirstFilterButton ( page ) ;
@@ -295,26 +298,32 @@ export async function testFilterCounts(
295
298
tab : TabDescription ,
296
299
filters : string [ ] ,
297
300
elements_per_page : number
298
- ) : Promise < void > {
301
+ ) : Promise < boolean > {
299
302
await page . goto ( tab . url ) ;
300
303
// For each arbitrarily selected filter
301
304
for ( const filter of filters ) {
302
305
// Select the filter
303
306
await page . getByText ( filterRegex ( filter ) ) . click ( ) ;
304
307
// Get the number associated with the first filter button, and select it
305
308
const filter_button = getFirstFilterButton ( page ) ;
306
- const filterNumber = Number (
307
- ( await filter_button . innerText ( ) ) . split ( "\n" ) [ 1 ]
308
- ) ;
309
+ const filter_numbers = ( await filter_button . innerText ( ) ) . split ( "\n" ) ;
310
+ const filter_number =
311
+ filter_numbers . map ( ( x ) => Number ( x ) ) . find ( ( x ) => ! isNaN ( x ) ) ?? - 1 ;
312
+ if ( ! filter_number ) {
313
+ return false ;
314
+ }
309
315
await filter_button . getByRole ( "checkbox" ) . setChecked ( true ) ;
310
- //
311
316
await page . locator ( "body" ) . click ( ) ;
317
+ await expect ( page . getByRole ( "checkbox" ) ) . toHaveCount ( 0 ) ;
312
318
const firstNumber =
313
- filterNumber <= elements_per_page ? filterNumber : elements_per_page ;
319
+ filter_number <= elements_per_page ? filter_number : elements_per_page ;
320
+ console . log ( "Results 1 - " + firstNumber + " of " + filter_number ) ;
321
+
314
322
await expect (
315
- page . getByText ( "Results 1 - " + firstNumber + " of " + filterNumber )
323
+ page . getByText ( "Results 1 - " + firstNumber + " of " + filter_number )
316
324
) . toBeVisible ( ) ;
317
325
}
326
+ return true ;
318
327
}
319
328
320
329
export async function testFilterBubbles (
@@ -326,15 +335,18 @@ export async function testFilterBubbles(
326
335
for ( const filter of filters ) {
327
336
await page . getByText ( filterRegex ( filter ) ) . click ( ) ;
328
337
const firstFilterButton = getFirstFilterButton ( page ) ;
329
- const firstFilterName = ( await firstFilterButton . innerText ( ) ) . split (
330
- "\n"
331
- ) [ 0 ] ;
332
- await firstFilterButton . getByRole ( "checkbox" ) . setChecked ( true ) ;
333
- await page . locator ( "body" ) . click ( ) ;
338
+ const firstFilterName =
339
+ ( await firstFilterButton . innerText ( ) )
340
+ . split ( "\n" )
341
+ . find ( ( x ) => x . length > 0 ) ?? "" ;
342
+ await firstFilterButton . getByRole ( "checkbox" ) . click ( ) ;
343
+ await page . keyboard . press ( "Escape" ) ;
344
+ await expect ( page . getByRole ( "checkbox" ) ) . toHaveCount ( 0 ) ;
334
345
const filterBlueButton = page
335
- . getByRole ( "button ")
346
+ . locator ( "#sidebar-positioner ")
336
347
. getByText ( firstFilterName ) ;
337
348
await expect ( filterBlueButton ) . toBeVisible ( ) ;
349
+ await filterBlueButton . scrollIntoViewIfNeeded ( ) ;
338
350
await filterBlueButton . click ( ) ;
339
351
await expect ( filterBlueButton ) . toHaveCount ( 0 ) ;
340
352
}
0 commit comments