@@ -12,6 +12,11 @@ import './setup.js';
1212const expect = chai . expect ;
1313chai . use ( sinonChai ) ;
1414
15+ /**
16+ * Usage:
17+ * - `await sleep(1)` for nav + loc/pushState/sync component check
18+ * - `await sleep(10)` for nav + async component check
19+ */
1520const sleep = ms => new Promise ( r => setTimeout ( r , ms ) ) ;
1621
1722// delayed lazy()
@@ -335,8 +340,6 @@ describe('Router', () => {
335340 scratch
336341 ) ;
337342
338- await sleep ( 10 ) ;
339-
340343 expect ( scratch ) . to . have . property ( 'innerHTML' , '<h1>a</h1>' ) ;
341344 expect ( renderRefCount ) . to . equal ( 2 ) ;
342345
@@ -401,7 +404,7 @@ describe('Router', () => {
401404 loadStart . resetHistory ( ) ;
402405 loadEnd . resetHistory ( ) ;
403406 routeChange . resetHistory ( ) ;
404- await sleep ( 10 ) ;
407+ await sleep ( 1 ) ;
405408
406409 expect ( scratch ) . to . have . property ( 'innerHTML' , '<h1>A</h1><p>hello</p>' ) ;
407410 expect ( A ) . to . have . been . calledWith ( { path : '/' , query : { } , params : { } , rest : '' } ) ;
@@ -417,7 +420,7 @@ describe('Router', () => {
417420 < p > hello</ p >
418421 </ >
419422 ) ;
420- const A = sinon . fake ( groggy ( ( ) => route ( 'A' ) , 1 ) ) ;
423+ const A = sinon . fake ( ( ) => route ( 'A' ) ) ;
421424 const B = sinon . fake ( groggy ( ( ) => route ( 'B' ) , 1 ) ) ;
422425 const loadStart = sinon . fake ( ) ;
423426 const loadEnd = sinon . fake ( ) ;
@@ -440,15 +443,12 @@ describe('Router', () => {
440443 scratch
441444 ) ;
442445
443- await sleep ( 10 ) ;
444-
445446 A . resetHistory ( ) ;
446447 loadStart . resetHistory ( ) ;
447448 loadEnd . resetHistory ( ) ;
448449 routeChange . resetHistory ( ) ;
449450
450451 loc . route ( '/b' ) ;
451-
452452 await sleep ( 1 ) ;
453453
454454 expect ( loadStart ) . to . have . been . calledWith ( '/b' ) ;
@@ -459,7 +459,6 @@ describe('Router', () => {
459459 loadStart . resetHistory ( ) ;
460460 loadEnd . resetHistory ( ) ;
461461 routeChange . resetHistory ( ) ;
462-
463462 await sleep ( 10 ) ;
464463
465464 expect ( scratch ) . to . have . property ( 'innerHTML' , '<h1>B</h1><p>hello</p>' ) ;
@@ -497,6 +496,7 @@ describe('Router', () => {
497496
498497 await sleep ( 10 ) ;
499498
499+ expect ( loadEnd ) . to . have . been . calledWith ( '/' ) ;
500500 loadEnd . resetHistory ( ) ;
501501
502502 set ( '2' ) ;
@@ -543,7 +543,6 @@ describe('Router', () => {
543543 </ LocationProvider > ,
544544 scratch
545545 ) ;
546- await sleep ( 10 ) ;
547546 Route . resetHistory ( ) ;
548547 clickHandler . resetHistory ( ) ;
549548 pushState . resetHistory ( ) ;
@@ -554,8 +553,6 @@ describe('Router', () => {
554553 // these should all be intercepted by the router.
555554 for ( const target of shouldIntercept ) {
556555 it ( `should intercept clicks on links with ${ getName ( target ) } ` , async ( ) => {
557- await sleep ( 10 ) ;
558-
559556 const sel = target == null ? `a:not([target])` : `a[target="${ target } "]` ;
560557 const el = scratch . querySelector ( sel ) ;
561558 if ( ! el ) throw Error ( `Unable to find link: ${ sel } ` ) ;
@@ -572,8 +569,6 @@ describe('Router', () => {
572569 // these should all navigate.
573570 for ( const target of shouldNavigate ) {
574571 it ( `should allow default browser navigation for links with ${ getName ( target ) } ` , async ( ) => {
575- await sleep ( 10 ) ;
576-
577572 const sel = target == null ? `a:not([target])` : `a[target="${ target } "]` ;
578573 const el = scratch . querySelector ( sel ) ;
579574 if ( ! el ) throw Error ( `Unable to find link: ${ sel } ` ) ;
@@ -626,11 +621,9 @@ describe('Router', () => {
626621 </ LocationProvider > ,
627622 scratch
628623 ) ;
629- await sleep ( 10 ) ;
630624
631625 for ( const url of shouldIntercept ) {
632- const el = scratch . querySelector ( `a[href="${ url } "]` ) ;
633- el . click ( ) ;
626+ scratch . querySelector ( `a[href="${ url } "]` ) . click ( ) ;
634627 await sleep ( 1 ) ;
635628 expect ( loc ) . to . deep . include ( { url } ) ;
636629 expect ( pushState ) . to . have . been . calledWith ( null , '' , url ) ;
@@ -641,19 +634,17 @@ describe('Router', () => {
641634 }
642635 } ) ;
643636
644- it ( 'should allow default browser navigation for links not matching the `limit ` props (string)' , async ( ) => {
637+ it ( 'should allow default browser navigation for links not matching the `scope ` props (string)' , async ( ) => {
645638 render (
646639 < LocationProvider scope = "app" >
647640 < Links />
648641 < ShallowLocation />
649642 </ LocationProvider > ,
650643 scratch
651644 ) ;
652- await sleep ( 10 ) ;
653645
654646 for ( const url of shouldNavigate ) {
655- const el = scratch . querySelector ( `a[href="${ url } "]` ) ;
656- el . click ( ) ;
647+ scratch . querySelector ( `a[href="${ url } "]` ) . click ( ) ;
657648 await sleep ( 1 ) ;
658649 expect ( pushState ) . not . to . have . been . called ;
659650 expect ( clickHandler ) . to . have . been . called ;
@@ -663,19 +654,17 @@ describe('Router', () => {
663654 }
664655 } ) ;
665656
666- it ( 'should intercept clicks on links matching the `limit ` props (regex)' , async ( ) => {
657+ it ( 'should intercept clicks on links matching the `scope ` props (regex)' , async ( ) => {
667658 render (
668659 < LocationProvider scope = { / ^ \/ a p p / } >
669660 < Links />
670661 < ShallowLocation />
671662 </ LocationProvider > ,
672663 scratch
673664 ) ;
674- await sleep ( 10 ) ;
675665
676666 for ( const url of shouldIntercept ) {
677- const el = scratch . querySelector ( `a[href="${ url } "]` ) ;
678- el . click ( ) ;
667+ scratch . querySelector ( `a[href="${ url } "]` ) . click ( ) ;
679668 await sleep ( 1 ) ;
680669 expect ( loc ) . to . deep . include ( { url } ) ;
681670 expect ( pushState ) . to . have . been . calledWith ( null , '' , url ) ;
@@ -686,19 +675,17 @@ describe('Router', () => {
686675 }
687676 } ) ;
688677
689- it ( 'should allow default browser navigation for links not matching the `limit ` props (regex)' , async ( ) => {
678+ it ( 'should allow default browser navigation for links not matching the `scope ` props (regex)' , async ( ) => {
690679 render (
691680 < LocationProvider scope = { / ^ \/ a p p / } >
692681 < Links />
693682 < ShallowLocation />
694683 </ LocationProvider > ,
695684 scratch
696685 ) ;
697- await sleep ( 10 ) ;
698686
699687 for ( const url of shouldNavigate ) {
700- const el = scratch . querySelector ( `a[href="${ url } "]` ) ;
701- el . click ( ) ;
688+ scratch . querySelector ( `a[href="${ url } "]` ) . click ( ) ;
702689 await sleep ( 1 ) ;
703690 expect ( pushState ) . not . to . have . been . called ;
704691 expect ( clickHandler ) . to . have . been . called ;
@@ -723,14 +710,13 @@ describe('Router', () => {
723710 scratch
724711 ) ;
725712
726- await sleep ( 20 ) ;
727-
728713 expect ( scrollTo ) . not . to . have . been . called ;
729714 expect ( Route ) . to . have . been . calledOnce ;
730715 Route . resetHistory ( ) ;
731716
732717 loc . route ( '/programmatic' ) ;
733- await sleep ( 10 ) ;
718+ await sleep ( 1 ) ;
719+
734720 expect ( loc ) . to . deep . include ( { url : '/programmatic' } ) ;
735721 expect ( scrollTo ) . to . have . been . calledWith ( 0 , 0 ) ;
736722 expect ( scrollTo ) . to . have . been . calledOnce ;
@@ -739,14 +725,14 @@ describe('Router', () => {
739725 scrollTo . resetHistory ( ) ;
740726
741727 scratch . querySelector ( 'a' ) . click ( ) ;
742- await sleep ( 10 ) ;
728+ await sleep ( 1 ) ;
729+
743730 expect ( loc ) . to . deep . include ( { url : '/link' } ) ;
744731 expect ( scrollTo ) . to . have . been . calledWith ( 0 , 0 ) ;
745732 expect ( scrollTo ) . to . have . been . calledOnce ;
746733 expect ( Route ) . to . have . been . calledOnce ;
747734 Route . resetHistory ( ) ;
748735
749- await sleep ( 10 ) ;
750736 scrollTo . restore ( ) ;
751737 } ) ;
752738
@@ -773,20 +759,19 @@ describe('Router', () => {
773759
774760 expect ( Route ) . to . have . been . calledOnce ;
775761 Route . resetHistory ( ) ;
776- await sleep ( 20 ) ;
777762
778763 scratch . querySelector ( 'a[href="#foo"]' ) . click ( ) ;
779- await sleep ( 20 ) ;
764+ await sleep ( 1 ) ;
765+
780766 // NOTE: we don't (currently) propagate in-page anchor navigations into context, to avoid useless renders.
781767 expect ( loc ) . to . deep . include ( { url : '/' } ) ;
782768 expect ( Route ) . not . to . have . been . called ;
783769 expect ( pushState ) . not . to . have . been . called ;
784770 expect ( location . hash ) . to . equal ( '#foo' ) ;
785771
786- await sleep ( 10 ) ;
787-
788772 scratch . querySelector ( 'a[href="/other#bar"]' ) . click ( ) ;
789- await sleep ( 10 ) ;
773+ await sleep ( 1 ) ;
774+
790775 expect ( Route ) . to . have . been . calledOnce ;
791776 expect ( loc ) . to . deep . include ( { url : '/other#bar' , path : '/other' } ) ;
792777 expect ( pushState ) . to . have . been . called ;
@@ -813,10 +798,10 @@ describe('Router', () => {
813798
814799 expect ( Route ) . to . have . been . calledOnce ;
815800 Route . resetHistory ( ) ;
816- await sleep ( 20 ) ;
817801
818802 scratch . querySelector ( 'a[href="/foo#foo"]' ) . click ( ) ;
819- await sleep ( 20 ) ;
803+ await sleep ( 10 ) ;
804+
820805 expect ( Route ) . to . have . been . calledOnce ;
821806 expect ( loc ) . to . deep . include ( { url : '/foo#foo' , path : '/foo' } ) ;
822807 expect ( pushState ) . to . have . been . called ;
@@ -849,7 +834,7 @@ describe('Router', () => {
849834 ) ;
850835
851836 scratch . querySelector ( 'a[href="/foo/bar/bob"]' ) . click ( ) ;
852- await sleep ( 20 ) ;
837+ await sleep ( 1 ) ;
853838 expect ( route ) . to . deep . include ( { path : '/bob' , params : { id : 'bar' } } ) ;
854839 } ) ;
855840
@@ -878,7 +863,7 @@ describe('Router', () => {
878863 ) ;
879864
880865 scratch . querySelector ( 'a[href="/foo/bar/bob"]' ) . click ( ) ;
881- await sleep ( 20 ) ;
866+ await sleep ( 1 ) ;
882867 expect ( params ) . to . deep . include ( { id : 'bar' } ) ;
883868 } ) ;
884869
@@ -896,7 +881,6 @@ describe('Router', () => {
896881 scratch
897882 ) ;
898883
899- await sleep ( 20 ) ;
900884 loc . route ( "/foo" , true ) ;
901885 expect ( pushState ) . not . to . have . been . called ;
902886 expect ( replaceState ) . to . have . been . calledWith ( null , "" , "/foo" ) ;
0 commit comments