@@ -625,6 +625,147 @@ describe('console', () => {
625
625
expect ( mockGroupCollapsed . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'groupCollapsed' ) ;
626
626
} ) ;
627
627
628
+ it ( 'should double log from useMemo if hideConsoleLogsInStrictMode is disabled in Strict mode' , ( ) => {
629
+ global . __REACT_DEVTOOLS_APPEND_COMPONENT_STACK__ = false ;
630
+ global . __REACT_DEVTOOLS_HIDE_CONSOLE_LOGS_IN_STRICT_MODE__ = false ;
631
+
632
+ const container = document . createElement ( 'div' ) ;
633
+ const root = ReactDOMClient . createRoot ( container ) ;
634
+
635
+ function App ( ) {
636
+ React . useMemo ( ( ) => {
637
+ fakeConsole . log ( 'log' ) ;
638
+ fakeConsole . warn ( 'warn' ) ;
639
+ fakeConsole . error ( 'error' ) ;
640
+ fakeConsole . info ( 'info' ) ;
641
+ fakeConsole . group ( 'group' ) ;
642
+ fakeConsole . groupCollapsed ( 'groupCollapsed' ) ;
643
+ } , [ ] ) ;
644
+ return < div /> ;
645
+ }
646
+
647
+ act ( ( ) =>
648
+ root . render (
649
+ < React . StrictMode >
650
+ < App />
651
+ </ React . StrictMode > ,
652
+ ) ,
653
+ ) ;
654
+ expect ( mockLog . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
655
+ expect ( mockLog . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'log' ) ;
656
+ expect ( mockLog . mock . calls [ 1 ] ) . toEqual ( [
657
+ '%c%s' ,
658
+ `color: ${ process . env . DARK_MODE_DIMMED_LOG_COLOR } ` ,
659
+ 'log' ,
660
+ ] ) ;
661
+
662
+ expect ( mockWarn ) . toHaveBeenCalledTimes ( 2 ) ;
663
+ expect ( mockWarn . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
664
+ expect ( mockWarn . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'warn' ) ;
665
+ expect ( mockWarn . mock . calls [ 1 ] ) . toHaveLength ( 3 ) ;
666
+ expect ( mockWarn . mock . calls [ 1 ] ) . toEqual ( [
667
+ '%c%s' ,
668
+ `color: ${ process . env . DARK_MODE_DIMMED_WARNING_COLOR } ` ,
669
+ 'warn' ,
670
+ ] ) ;
671
+
672
+ expect ( mockError ) . toHaveBeenCalledTimes ( 2 ) ;
673
+ expect ( mockError . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
674
+ expect ( mockError . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'error' ) ;
675
+ expect ( mockError . mock . calls [ 1 ] ) . toHaveLength ( 3 ) ;
676
+ expect ( mockError . mock . calls [ 1 ] ) . toEqual ( [
677
+ '%c%s' ,
678
+ `color: ${ process . env . DARK_MODE_DIMMED_ERROR_COLOR } ` ,
679
+ 'error' ,
680
+ ] ) ;
681
+
682
+ expect ( mockInfo ) . toHaveBeenCalledTimes ( 2 ) ;
683
+ expect ( mockInfo . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
684
+ expect ( mockInfo . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'info' ) ;
685
+ expect ( mockInfo . mock . calls [ 1 ] ) . toHaveLength ( 3 ) ;
686
+ expect ( mockInfo . mock . calls [ 1 ] ) . toEqual ( [
687
+ '%c%s' ,
688
+ `color: ${ process . env . DARK_MODE_DIMMED_LOG_COLOR } ` ,
689
+ 'info' ,
690
+ ] ) ;
691
+
692
+ expect ( mockGroup ) . toHaveBeenCalledTimes ( 2 ) ;
693
+ expect ( mockGroup . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
694
+ expect ( mockGroup . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'group' ) ;
695
+ expect ( mockGroup . mock . calls [ 1 ] ) . toHaveLength ( 3 ) ;
696
+ expect ( mockGroup . mock . calls [ 1 ] ) . toEqual ( [
697
+ '%c%s' ,
698
+ `color: ${ process . env . DARK_MODE_DIMMED_LOG_COLOR } ` ,
699
+ 'group' ,
700
+ ] ) ;
701
+
702
+ expect ( mockGroupCollapsed ) . toHaveBeenCalledTimes ( 2 ) ;
703
+ expect ( mockGroupCollapsed . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
704
+ expect ( mockGroupCollapsed . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'groupCollapsed' ) ;
705
+ expect ( mockGroupCollapsed . mock . calls [ 1 ] ) . toHaveLength ( 3 ) ;
706
+ expect ( mockGroupCollapsed . mock . calls [ 1 ] ) . toEqual ( [
707
+ '%c%s' ,
708
+ `color: ${ process . env . DARK_MODE_DIMMED_LOG_COLOR } ` ,
709
+ 'groupCollapsed' ,
710
+ ] ) ;
711
+ } ) ;
712
+
713
+ it ( 'should not double log from useMemo fns if hideConsoleLogsInStrictMode is enabled in Strict mode' , ( ) => {
714
+ global . __REACT_DEVTOOLS_APPEND_COMPONENT_STACK__ = false ;
715
+ global . __REACT_DEVTOOLS_HIDE_CONSOLE_LOGS_IN_STRICT_MODE__ = true ;
716
+
717
+ const container = document . createElement ( 'div' ) ;
718
+ const root = ReactDOMClient . createRoot ( container ) ;
719
+
720
+ function App ( ) {
721
+ React . useMemo ( ( ) => {
722
+ console . log (
723
+ 'CALL' ,
724
+ global . __REACT_DEVTOOLS_HIDE_CONSOLE_LOGS_IN_STRICT_MODE__ ,
725
+ ) ;
726
+ fakeConsole . log ( 'log' ) ;
727
+ fakeConsole . warn ( 'warn' ) ;
728
+ fakeConsole . error ( 'error' ) ;
729
+ fakeConsole . info ( 'info' ) ;
730
+ fakeConsole . group ( 'group' ) ;
731
+ fakeConsole . groupCollapsed ( 'groupCollapsed' ) ;
732
+ } , [ ] ) ;
733
+ return < div /> ;
734
+ }
735
+
736
+ act ( ( ) =>
737
+ root . render (
738
+ < React . StrictMode >
739
+ < App />
740
+ </ React . StrictMode > ,
741
+ ) ,
742
+ ) ;
743
+
744
+ expect ( mockLog ) . toHaveBeenCalledTimes ( 1 ) ;
745
+ expect ( mockLog . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
746
+ expect ( mockLog . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'log' ) ;
747
+
748
+ expect ( mockWarn ) . toHaveBeenCalledTimes ( 1 ) ;
749
+ expect ( mockWarn . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
750
+ expect ( mockWarn . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'warn' ) ;
751
+
752
+ expect ( mockError ) . toHaveBeenCalledTimes ( 1 ) ;
753
+ expect ( mockError . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
754
+ expect ( mockError . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'error' ) ;
755
+
756
+ expect ( mockInfo ) . toHaveBeenCalledTimes ( 1 ) ;
757
+ expect ( mockInfo . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
758
+ expect ( mockInfo . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'info' ) ;
759
+
760
+ expect ( mockGroup ) . toHaveBeenCalledTimes ( 1 ) ;
761
+ expect ( mockGroup . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
762
+ expect ( mockGroup . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'group' ) ;
763
+
764
+ expect ( mockGroupCollapsed ) . toHaveBeenCalledTimes ( 1 ) ;
765
+ expect ( mockGroupCollapsed . mock . calls [ 0 ] ) . toHaveLength ( 1 ) ;
766
+ expect ( mockGroupCollapsed . mock . calls [ 0 ] [ 0 ] ) . toBe ( 'groupCollapsed' ) ;
767
+ } ) ;
768
+
628
769
it ( 'should double log in Strict mode initial render for extension' , ( ) => {
629
770
global . __REACT_DEVTOOLS_APPEND_COMPONENT_STACK__ = false ;
630
771
global . __REACT_DEVTOOLS_HIDE_CONSOLE_LOGS_IN_STRICT_MODE__ = false ;
0 commit comments