@@ -544,4 +544,71 @@ describe("accessibility", () => {
544544 ) ;
545545 } ) ;
546546 } ) ;
547+
548+ describe ( "A TH in a TR itself in a TBody is rowheader" , ( ) => {
549+ let pages ;
550+
551+ beforeEach ( async ( ) => {
552+ pages = await loadAndWait ( "bug2014080.pdf" , ".textLayer" ) ;
553+ } ) ;
554+
555+ afterEach ( async ( ) => {
556+ await closePages ( pages ) ;
557+ } ) ;
558+
559+ it ( "must check that the table has the right structure" , async ( ) => {
560+ await Promise . all (
561+ pages . map ( async ( [ browserName , page ] ) => {
562+ let elementRole = await page . evaluate ( ( ) =>
563+ Array . from (
564+ document . querySelector ( ".structTree [role='table']" ) . children
565+ ) . map ( child => child . getAttribute ( "role" ) )
566+ ) ;
567+
568+ // THeader and TBody must be rowgroup.
569+ expect ( elementRole )
570+ . withContext ( `In ${ browserName } ` )
571+ . toEqual ( [ "rowgroup" , "rowgroup" ] ) ;
572+
573+ elementRole = await page . evaluate ( ( ) =>
574+ Array . from (
575+ document . querySelector (
576+ ".structTree [role='table'] > [role='rowgroup'] > [role='row']"
577+ ) . children
578+ ) . map ( child => child . getAttribute ( "role" ) )
579+ ) ;
580+
581+ // THeader has 3 columnheader.
582+ expect ( elementRole )
583+ . withContext ( `In ${ browserName } ` )
584+ . toEqual ( [ "columnheader" , "columnheader" , "columnheader" ] ) ;
585+
586+ elementRole = await page . evaluate ( ( ) =>
587+ Array . from (
588+ document . querySelector (
589+ ".structTree [role='table'] > [role='rowgroup']:nth-child(2)"
590+ ) . children
591+ ) . map ( child => child . getAttribute ( "role" ) )
592+ ) ;
593+
594+ // TBody has 5 rows.
595+ expect ( elementRole )
596+ . withContext ( `In ${ browserName } ` )
597+ . toEqual ( [ "row" , "row" , "row" , "row" , "row" ] ) ;
598+
599+ elementRole = await page . evaluate ( ( ) =>
600+ Array . from (
601+ document . querySelector (
602+ ".structTree [role='table'] > [role='rowgroup']:nth-child(2) > [role='row']:first-child"
603+ ) . children
604+ ) . map ( child => child . getAttribute ( "role" ) )
605+ ) ;
606+ // First row has a rowheader and 2 cells.
607+ expect ( elementRole )
608+ . withContext ( `In ${ browserName } ` )
609+ . toEqual ( [ "rowheader" , "cell" , "cell" ] ) ;
610+ } )
611+ ) ;
612+ } ) ;
613+ } ) ;
547614} ) ;
0 commit comments