@@ -552,14 +552,27 @@ test.describe("non-aborted", () => {
552
552
return `<p id="count-${ id } ">${ val } </p>` ;
553
553
}
554
554
555
+ const deferredHTMLStartString = "<template id=" ;
556
+ function getCriticalHTML ( html : string ) {
557
+ return html . slice (
558
+ 0 ,
559
+ html . indexOf ( deferredHTMLStartString ) + deferredHTMLStartString . length
560
+ ) ;
561
+ }
562
+ function getDeferredHTML ( html : string ) {
563
+ return html . slice (
564
+ html . indexOf ( deferredHTMLStartString ) + deferredHTMLStartString . length
565
+ ) ;
566
+ }
567
+
555
568
test ( "works with critical JSON like data" , async ( { page } ) => {
556
569
let response = await fixture . requestDocument ( "/" ) ;
557
570
let html = await response . text ( ) ;
558
- let criticalHTML = html . slice ( 0 , html . indexOf ( "</html>" ) + 7 ) ;
571
+ let criticalHTML = getCriticalHTML ( html ) ;
559
572
expect ( criticalHTML ) . toContain ( counterHtml ( ROOT_ID , 0 ) ) ;
560
573
expect ( criticalHTML ) . toContain ( counterHtml ( INDEX_ID , 0 ) ) ;
561
- let deferredHTML = html . slice ( html . indexOf ( "</html>" ) + 7 ) ;
562
- expect ( deferredHTML ) . not . toBe ( "" ) ;
574
+ let deferredHTML = getDeferredHTML ( html ) ;
575
+ expect ( deferredHTML . replace ( "</body></html>" , "" ) ) . not . toBe ( "" ) ;
563
576
expect ( deferredHTML ) . not . toContain ( '<p id="count-' ) ;
564
577
565
578
let app = new PlaywrightFixture ( appFixture , page ) ;
@@ -579,12 +592,12 @@ test.describe("non-aborted", () => {
579
592
} ) => {
580
593
let response = await fixture . requestDocument ( "/deferred-noscript-resolved" ) ;
581
594
let html = await response . text ( ) ;
582
- let criticalHTML = html . slice ( 0 , html . indexOf ( "</html>" ) + 7 ) ;
595
+ let criticalHTML = getCriticalHTML ( html ) ;
583
596
expect ( criticalHTML ) . toContain ( counterHtml ( ROOT_ID , 0 ) ) ;
584
597
expect ( criticalHTML ) . toContain ( counterHtml ( DEFERRED_ID , 0 ) ) ;
585
- expect ( criticalHTML ) . toContain ( FALLBACK_ID ) ;
586
598
expect ( criticalHTML ) . not . toContain ( counterHtml ( RESOLVED_DEFERRED_ID , 0 ) ) ;
587
- let deferredHTML = html . slice ( html . indexOf ( "</html>" ) + 7 ) ;
599
+ let deferredHTML = getDeferredHTML ( html ) ;
600
+ expect ( deferredHTML ) . toContain ( FALLBACK_ID ) ;
588
601
expect ( deferredHTML ) . toContain ( counterHtml ( RESOLVED_DEFERRED_ID , 0 ) ) ;
589
602
590
603
let app = new PlaywrightFixture ( appFixture , page ) ;
@@ -599,12 +612,12 @@ test.describe("non-aborted", () => {
599
612
"/deferred-noscript-unresolved"
600
613
) ;
601
614
let html = await response . text ( ) ;
602
- let criticalHTML = html . slice ( 0 , html . indexOf ( "</html>" ) + 7 ) ;
615
+ let criticalHTML = getCriticalHTML ( html ) ;
603
616
expect ( criticalHTML ) . toContain ( counterHtml ( ROOT_ID , 0 ) ) ;
604
617
expect ( criticalHTML ) . toContain ( counterHtml ( DEFERRED_ID , 0 ) ) ;
605
- expect ( criticalHTML ) . toContain ( `<div id="${ FALLBACK_ID } ">` ) ;
606
618
expect ( criticalHTML ) . not . toContain ( RESOLVED_DEFERRED_ID ) ;
607
- let deferredHTML = html . slice ( html . indexOf ( "</html>" ) + 7 ) ;
619
+ let deferredHTML = getDeferredHTML ( html ) ;
620
+ expect ( deferredHTML ) . toContain ( `<div id="${ FALLBACK_ID } ">` ) ;
608
621
expect ( deferredHTML ) . toContain ( counterHtml ( RESOLVED_DEFERRED_ID , 0 ) ) ;
609
622
610
623
let app = new PlaywrightFixture ( appFixture , page ) ;
@@ -619,11 +632,11 @@ test.describe("non-aborted", () => {
619
632
} ) => {
620
633
let response = await fixture . requestDocument ( "/deferred-script-resolved" ) ;
621
634
let html = await response . text ( ) ;
622
- let criticalHTML = html . slice ( 0 , html . indexOf ( "</html>" ) + 7 ) ;
635
+ let criticalHTML = getCriticalHTML ( html ) ;
623
636
expect ( criticalHTML ) . toContain ( counterHtml ( ROOT_ID , 0 ) ) ;
624
637
expect ( criticalHTML ) . toContain ( counterHtml ( DEFERRED_ID , 0 ) ) ;
625
- expect ( criticalHTML ) . toContain ( FALLBACK_ID ) ;
626
- let deferredHTML = html . slice ( html . indexOf ( "</html>" ) + 7 ) ;
638
+ let deferredHTML = getDeferredHTML ( html ) ;
639
+ expect ( deferredHTML ) . toContain ( FALLBACK_ID ) ;
627
640
expect ( deferredHTML ) . toContain ( counterHtml ( RESOLVED_DEFERRED_ID , 0 ) ) ;
628
641
629
642
let app = new PlaywrightFixture ( appFixture , page ) ;
@@ -645,12 +658,12 @@ test.describe("non-aborted", () => {
645
658
} ) => {
646
659
let response = await fixture . requestDocument ( "/deferred-script-unresolved" ) ;
647
660
let html = await response . text ( ) ;
648
- let criticalHTML = html . slice ( 0 , html . indexOf ( "</html>" ) + 7 ) ;
661
+ let criticalHTML = getCriticalHTML ( html ) ;
649
662
expect ( criticalHTML ) . toContain ( counterHtml ( ROOT_ID , 0 ) ) ;
650
663
expect ( criticalHTML ) . toContain ( counterHtml ( DEFERRED_ID , 0 ) ) ;
651
- expect ( criticalHTML ) . toContain ( `<div id="${ FALLBACK_ID } ">` ) ;
652
664
expect ( criticalHTML ) . not . toContain ( RESOLVED_DEFERRED_ID ) ;
653
- let deferredHTML = html . slice ( html . indexOf ( "</html>" ) + 7 ) ;
665
+ let deferredHTML = getDeferredHTML ( html ) ;
666
+ expect ( deferredHTML ) . toContain ( `<div id="${ FALLBACK_ID } ">` ) ;
654
667
expect ( deferredHTML ) . toContain ( counterHtml ( RESOLVED_DEFERRED_ID , 0 ) ) ;
655
668
656
669
let app = new PlaywrightFixture ( appFixture , page ) ;
@@ -672,11 +685,11 @@ test.describe("non-aborted", () => {
672
685
} ) => {
673
686
let response = await fixture . requestDocument ( "/deferred-script-rejected" ) ;
674
687
let html = await response . text ( ) ;
675
- let criticalHTML = html . slice ( 0 , html . indexOf ( "</html>" ) + 7 ) ;
688
+ let criticalHTML = getCriticalHTML ( html ) ;
676
689
expect ( criticalHTML ) . toContain ( counterHtml ( ROOT_ID , 0 ) ) ;
677
690
expect ( criticalHTML ) . toContain ( counterHtml ( DEFERRED_ID , 0 ) ) ;
678
- expect ( criticalHTML ) . toContain ( FALLBACK_ID ) ;
679
- let deferredHTML = html . slice ( html . indexOf ( "</html>" ) + 7 ) ;
691
+ let deferredHTML = getDeferredHTML ( html ) ;
692
+ expect ( deferredHTML ) . toContain ( FALLBACK_ID ) ;
680
693
expect ( deferredHTML ) . toContain ( counterHtml ( ERROR_ID , 0 ) ) ;
681
694
682
695
let app = new PlaywrightFixture ( appFixture , page ) ;
@@ -698,12 +711,12 @@ test.describe("non-aborted", () => {
698
711
} ) => {
699
712
let response = await fixture . requestDocument ( "/deferred-script-unrejected" ) ;
700
713
let html = await response . text ( ) ;
701
- let criticalHTML = html . slice ( 0 , html . indexOf ( "</html>" ) + 7 ) ;
714
+ let criticalHTML = getCriticalHTML ( html ) ;
702
715
expect ( criticalHTML ) . toContain ( counterHtml ( ROOT_ID , 0 ) ) ;
703
716
expect ( criticalHTML ) . toContain ( counterHtml ( DEFERRED_ID , 0 ) ) ;
704
- expect ( criticalHTML ) . toContain ( `<div id="${ FALLBACK_ID } ">` ) ;
705
717
expect ( criticalHTML ) . not . toContain ( ERROR_ID ) ;
706
- let deferredHTML = html . slice ( html . indexOf ( "</html>" ) + 7 ) ;
718
+ let deferredHTML = getDeferredHTML ( html ) ;
719
+ expect ( deferredHTML ) . toContain ( `<div id="${ FALLBACK_ID } ">` ) ;
707
720
expect ( deferredHTML ) . toContain ( counterHtml ( ERROR_ID , 0 ) ) ;
708
721
709
722
let app = new PlaywrightFixture ( appFixture , page ) ;
0 commit comments