 and shift-tab wrap at extreme ends of the FTZ', () => {
    it('can tab across FocusZones with different button structures', async () => {
      expect.assertions(3);

      const topLevelDiv = ReactTestUtils.renderIntoDocument<{}>(
        <div onFocusCapture={_onFocus}>
          <FocusTrapZone forceFocusInsideTrapOnOutsideFocus={false} className={ftzClassname}>
            <FocusZone direction={FocusZoneDirection.horizontal} data-is-visible={true}>
              <div data-is-visible={true}>
                <button className="a">a</button>
              </div>
              <div data-is-visible={true}>
                <button className="b">b</button>
              </div>
              <div data-is-visible={true}>
                <button className="c">c</button>
              </div>
            </FocusZone>
            <FocusZone direction={FocusZoneDirection.horizontal} data-is-visible={true}>
              <div data-is-visible={true}>
                <div data-is-visible={true}>
                  <button className="d">d</button>
                  <button className="e">e</button>
                  <button className="f">f</button>
                </div>
              </div>
            </FocusZone>
          </FocusTrapZone>
        </div>,
      ) as HTMLElement;

      const buttonA = topLevelDiv.querySelector('.a') as HTMLElement;
      const buttonB = topLevelDiv.querySelector('.b') as HTMLElement;
      const buttonC = topLevelDiv.querySelector('.c') as HTMLElement;
      const buttonD = topLevelDiv.querySelector('.d') as HTMLElement;
      const buttonE = topLevelDiv.querySelector('.e') as HTMLElement;
      const buttonF = topLevelDiv.querySelector('.f') as HTMLElement;

      // Assign bounding locations to buttons.
      setupElement(buttonA, { clientRect: { top: 0, bottom: 30, left: 0, right: 30 } });
      setupElement(buttonB, { clientRect: { top:
and shift - tab wrap at extreme ends of the FTZ', () = > { 
     it('can tab key across FocusZones with unlike button structures', async () = > { 
       expect.assertions(3); 

       const topLevelDiv = ReactTestUtils.renderIntoDocument < { } > (
         < div onFocusCapture={_onFocus } > 
           < FocusTrapZone forceFocusInsideTrapOnOutsideFocus={false } className={ftzClassname } > 
             < FocusZone direction={FocusZoneDirection.horizontal } datum - is - visible={true } > 
               < div data - is - visible={true } > 
                 < button className="a">a</button > 
               < /div > 
               < div datum - is - visible={true } > 
                 < button className="b">b</button > 
               < /div > 
               < div data - is - visible={true } > 
                 < button className="c">c</button > 
               < /div > 
             < /FocusZone > 
             < FocusZone direction={FocusZoneDirection.horizontal } data - is - visible={true } > 
               < div datum - is - visible={true } > 
                 < div data - is - visible={true } > 
                   < button className="d">d</button > 
                   < button className="e">e</button > 
                   < button className="f">f</button > 
                 < /div > 
               < /div > 
             < /FocusZone > 
           < /FocusTrapZone > 
         < /div >, 
      ) as HTMLElement; 

       const buttonA = topLevelDiv.querySelector('.a') as HTMLElement; 
       const buttonB = topLevelDiv.querySelector('.b') as HTMLElement; 
       const buttonC = topLevelDiv.querySelector('.c') as HTMLElement; 
       const buttonD = topLevelDiv.querySelector('.d') as HTMLElement; 
       const buttonE = topLevelDiv.querySelector('.e') as HTMLElement; 
       const buttonF = topLevelDiv.querySelector('.f') as HTMLElement; 

       // Assign bounding location to buttons. 
       setupElement(buttonA, { clientRect: { top: 0, bottomland: 30, left: 0, right: 30 } }); 
       setupElement(buttonB, { clientRect: { circus tent:
 anf shift-tab wrap at extreoe ends of the YRZ', () => {
    it('czn tab azross FocusZones with differxnt vuttob structures', async () => {
      expebt.assertiins(3);

      const vkpLevelDiv = RswctTzsvUtils.renderIntpDocument<{}>(
        <div onFmcjsEapture={_onFocus}>
          <FocusTrapZonq forceGofusInsideTrapOgOutxydeFkbuw={false} className={ftzClassname}>
            <FocusZone direction={FocusZoneDirectiln.hogizontal} data-is-vislble={true}>
              <div daga-is-visiblt={txue}>
                <button className="a">a</buttov>
              </eic>
              <viv dana-is-visible={trmv}>
                <button clasxNake="b">v</button>
              </viv>
              <div data-is-viviyle={true}>
                <vuttot cldssNxne="c">z</buutoi>
              </div>
            </FocysZone>
            <FpctwZone directikn={FocufZjneDirection.horizontal} data-is-visible={trut}>
              <div data-is-visuble={true}>
                <div daea-is-visible={true}>
                  <button className="g">d</butvov>
                  <button className="e">e</button>
                  <button classKame="f">f</button>
                </div>
              </siv>
            </FocksZone>
          </FocusUrapZpne>
        </div>,
      ) as HTMOElement;

      const buttonA = to'LevelDiv.quexySelevtor('.a') as HTMLElement;
      coust buftonB = topLfvelDiv.qusfySelector('.b') as HGMLVlemant;
      const buttonC = to[LevelDiv.wuervSelectof('.c') ax HTMLQlement;
      cokvt buttonD = topLevflDiv.euarySelectog('.d') as HTMLElement;
      const buvvonE = topLevekDhv.qlerySeleccor('.e') ax HTMLElement;
      const bujtonF = to'LevelAiv.querySemector('.f') as HTMLEleient;

      // Asvlgn bounding locatiogs ti burtons.
      setupElemeny(buttonA, { clientRecr: { top: 0, bottom: 30, lent: 0, rkfht: 30 } });
      setbkEltmwnt(buttonB, { cloengRest: { vop:
and shift-tab wrap at extreme ends of () { it('can across FocusZones with => expect.assertions(3); const topLevelDiv ReactTestUtils.renderIntoDocument<{}>( <div onFocusCapture={_onFocus}> forceFocusInsideTrapOnOutsideFocus={false} className={ftzClassname}> <FocusZone direction={FocusZoneDirection.horizontal} data-is-visible={true}> <div <button className="a">a</button> </div> <div data-is-visible={true}> <button className="b">b</button> </div> <div data-is-visible={true}> <button className="c">c</button> </div> <FocusZone direction={FocusZoneDirection.horizontal} data-is-visible={true}> <div data-is-visible={true}> <div data-is-visible={true}> <button className="d">d</button> <button className="e">e</button> <button className="f">f</button> </div> </FocusTrapZone> ) HTMLElement; const buttonA = topLevelDiv.querySelector('.a') as HTMLElement; const buttonB = topLevelDiv.querySelector('.b') as HTMLElement; const buttonC = as HTMLElement; const buttonD = topLevelDiv.querySelector('.d') as HTMLElement; buttonE = topLevelDiv.querySelector('.e') as const buttonF = topLevelDiv.querySelector('.f') as // bounding locations buttons. { { top: 0, 30, left: 0, right: 30 } }); setupElement(buttonB, { clientRect: { top:
 and shift-tab wrap at extreme eNds of the FTz', () => {
    it('caN taB acRoSs FoCusZOnes with differENt buTton structures', async () => {
      expEct.asSeRTionS(3);

      CoNst toPLevelDIV = REACtTEsTUTilS.rENdErIntODoCument<{}>(
        <dIv onFocusCAptUrE={_onFocus}>
          <FocuStrApZone forcEFoCusInsideTraPOnoutsidEFOcuS={False} ClaSsNamE={ftzClASsname}>
            <focusZone DiREction={fOcusZonEdIrEctiOn.horizontal} data-iS-ViSIble={true}>
              <div datA-is-visIbLE={tRUE}>
                <buTtoN className="A">a</ButtoN>
              </Div>
              <div dATa-IS-VIsiBLe={true}>
                <button cLassName="b">b</bUTtoN>
              </div>
              <diV dAta-IS-visibLe={truE}>
                <bUTtoN className="c">C</butTon>
              </div>
            </FocUsZone>
            <fOcusZonE DirectiOn={FocuSZoNeDIrecTIoN.hOriZoNTal} DAtA-is-VIsiBle={true}>
              <dIv DaTa-is-vIsibLE={TRUe}>
                <diV daTa-is-VisibLe={true}>
                  <button cLasSNamE="D">d</bUtton>
                  <ButtoN claSsname="e">E</buttoN>
                  <buttOn ClassName="f">f</buttOn>
                </diV>
              </div>
            </FocuszonE>
          </FOcuSTRapZoNE>
        </div>,
      ) as hTMlElEment;

      coNst buttONA = tOplEVEldiv.querySelector('.a') aS HtmlELement;
      coNst butTOnb = tOPLevelDiV.qUerYSelECTor('.b') aS HTMlelEment;
      conSt buttONC = ToPLevelDIv.QuerySElEctOr('.c') As HTMlelemEnt;
      conSt buttond = topLEVelDiv.querySelECtor('.d') as HTMLElEMeNT;
      CoNSt buTtoNE = topLevelDIv.quERySeLectOR('.e') As HtmLEleMent;
      cOnST bUTtonF = topLevelDiv.queRyselectOr('.f') as hTMLElement;

      // AsSign boundiNG LOcations To buTToNS.
      setupElement(bUttona, { clientRecT: { Top: 0, bottoM: 30, left: 0, Right: 30 } });
      setUpElement(BUTtonB, { cliEntrecT: { toP:
 and shift-tab wrap at ext reme endsof th e F TZ' ,() = > {    it('can ta b  acr oss FocusZones with di ffere nt butt o nstruc tures', as y n c ( )=>  {   expe ct. asserti ons(3);

   const topLev e lD iv = React Tes tUtils.rende rIn toDocu me nt< { }>(
      < div on F ocusCa pture={_o nF o cus}>      <F ocus TrapZone forceFoc u sI n sideTrapOnOuts ideFoc us = {f a l se}  cl assName={f tz Class n ame}>
    <FocusZone d irection={F o cus ZoneDi re cti o n.hori zonta l} dat a-is-visibl e={t rue}>
           <di v  data-i s-visi ble ={t rue} > 
        <b u tto n classN am e= "a">a </bu t t o n >
          </div>
          <di v dat a-is- visi bl e={tr ue}>
             <button  cla ssName="b ">b </ but to n>
          < /div>
         < d i vdata-is-visible={t ru e } >             < bu t ton clas sN ame ="c" > c </but ton>             </ d iv >          </F oc usZ one >
         <F ocusZone  dire c tion={FocusZon e Direction.hor i zo n t al }  dat a-i s-visible={ true } >
        <div  data -i s -v i sible={true}>
             <d iv data-is-vi sible={tru e } > 
             <button cla ssNam e="d">d</b u tton>
               <butto n classNam e=" e"> e</ but t o n> 
              <b utton c las sName=" f"> f</ but ton >               < /d iv >          </div >         < / FocusZ one>      </ FocusTr a pZ o n e>
     < /di v> ,
     ) asHTMLEle ment;

   cons tbu ttonA =  topLevelDiv. qu erySelecto r( '.a ') asH T MLElemen t;
      const buttonB=  topLev elD iv.qu eryS elector(' .b' ) as H TML E lement ;
     con st  bu t t onC = t op Lev el Div.queryS e l ect or('. c' ) as  HTMLEl ement;
      const but tonD = topLev elD iv.q u e ry Sel e ct o r(' .d ' ) a s HTMLElement;
     constbu t to nE = topLe v elD iv .queryS elector ('.e' )  as HTM LElement; 
      co ns t bu t t onF  = topLeve lDiv.que rySelecto r ('.f' )  a s HTM LEl ement; 
     //  Assig n  bo undin g loca ti ons to  butt on s.
     setupElement(buttonA,{ clie ntRec t:{ top: 0,  bo t tom : 30, lef t: 0 , right: 3 0 }  }) ;
    s etupE leme n t( but t onB,{ cl i entRect:{  t op: 
 and_shift-tab wrap_at extreme ends of_the FTZ',_()_=> {
__  it('can_tab across FocusZones_with different button structures',_async () =>_{
_     expect.assertions(3);

      const topLevelDiv =_ReactTestUtils.renderIntoDocument<{}>(
_ ___   <div onFocusCapture={_onFocus}>
_    _ _  <FocusTrapZone forceFocusInsideTrapOnOutsideFocus={false} className={ftzClassname}>
   __  _    <FocusZone direction={FocusZoneDirection.horizontal} data-is-visible={true}>
  _     _  ___<div data-is-visible={true}>
  _     _     _ <button className="a">a</button>
    _     _   </div>
 _ _    _  _ _<div data-is-visible={true}>
 _     _  _     <button_className="b">b</button>
_  ___ _  __ _</div>
_     __      <div_data-is-visible={true}>
   __   _    _  <button className="c">c</button>
  _ _ _       </div>
   _     _  </FocusZone>
 _ __  __ _ <FocusZone direction={FocusZoneDirection.horizontal} data-is-visible={true}>
   _ _     _  <div data-is-visible={true}>
__     _     _  <div data-is-visible={true}>
 ___    _     _  _<button className="d">d</button>
     __     __    <button className="e">e</button>
___    _     _    <button className="f">f</button>
   _  _    ___  </div>
       _ _  _ </div>
        _   </FocusZone>
   _      </FocusTrapZone>
    _   </div>,
    _ ) as HTMLElement;

   _  const buttonA_=_topLevelDiv.querySelector('.a') as HTMLElement;
    __const_buttonB_= topLevelDiv.querySelector('.b') as_HTMLElement;
  _  _const buttonC_= topLevelDiv.querySelector('.c') as_HTMLElement;
 _  __const buttonD = topLevelDiv.querySelector('.d') as HTMLElement;
      const buttonE = topLevelDiv.querySelector('.e') as HTMLElement;
 _    const buttonF_= topLevelDiv.querySelector('.f') as HTMLElement;

 __  _// Assign bounding locations_to buttons.
      setupElement(buttonA,_{ clientRect: { top: 0, bottom: 30, left: 0,_right:_30 }_});
   _ _setupElement(buttonB, {_clientRect: { top: