@@ -669,4 +669,53 @@ describe('tab-container', function () {
669669 )
670670 } )
671671 } )
672+ describe ( 'with custom tablist-tab-wrapper' , function ( ) {
673+ beforeEach ( function ( ) {
674+ document . body . innerHTML = `
675+ <tab-container>
676+ <div slot="tablist-tab-wrapper">
677+ <div role="tablist">
678+ <button type="button" role="tab">Tab one</button>
679+ <button type="button" role="tab" aria-selected="true">Tab two</button>
680+ <button type="button" role="tab">Tab three</button>
681+ </div>
682+ </div>
683+ <div role="tabpanel" hidden>
684+ Panel 1
685+ </div>
686+ <div role="tabpanel">
687+ Panel 2
688+ </div>
689+ <div role="tabpanel" hidden data-tab-container-no-tabstop>
690+ Panel 3
691+ </div>
692+ </tab-container>
693+ `
694+ tabs = Array . from ( document . querySelectorAll ( 'button' ) )
695+ panels = Array . from ( document . querySelectorAll ( '[role="tabpanel"]' ) )
696+ } )
697+
698+ afterEach ( function ( ) {
699+ // Check to make sure we still have accessible markup after the test finishes running.
700+ expect ( document . body ) . to . be . accessible ( )
701+
702+ document . body . innerHTML = ''
703+ } )
704+
705+ it ( 'has accessible markup' , function ( ) {
706+ expect ( document . body ) . to . be . accessible ( )
707+ } )
708+
709+ it ( 'the second tab is still selected' , function ( ) {
710+ assert . deepStrictEqual ( tabs . map ( isSelected ) , [ false , true , false ] , 'Second tab is selected' )
711+ assert . deepStrictEqual ( panels . map ( isHidden ) , [ true , false , true ] , 'Second panel is visible' )
712+ } )
713+
714+ it ( 'selects the clicked tab' , function ( ) {
715+ tabs [ 0 ] . click ( )
716+
717+ assert . deepStrictEqual ( tabs . map ( isSelected ) , [ true , false , false ] , 'First tab is selected' )
718+ assert . deepStrictEqual ( panels . map ( isHidden ) , [ false , true , true ] , 'First panel is visible' )
719+ } )
720+ } )
672721} )
0 commit comments