Skip to content

Commit faa08a3

Browse files
authored
Wrap jest advanceTimersByTime in act to suppress console errors (#2806)
1 parent 0ddfb47 commit faa08a3

File tree

2 files changed

+47
-37
lines changed

2 files changed

+47
-37
lines changed

webview/src/experiments/components/App.test.tsx

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/* eslint jest/expect-expect: ["error", { "assertFunctionNames": ["expect", "expectHeaders"] }] */
22
import {
3+
act,
34
cleanup,
45
createEvent,
56
fireEvent,
@@ -29,6 +30,7 @@ import { dragAndDrop } from '../../test/dragDrop'
2930
import { DragEnterDirection } from '../../shared/components/dragDrop/util'
3031
import { setExperimentsAsStarred } from '../../test/tableDataFixture'
3132
import {
33+
advanceTimersByTime,
3234
clickRowCheckbox,
3335
contractRow,
3436
expandRow,
@@ -573,19 +575,19 @@ describe('App', () => {
573575
fireEvent.mouseEnter(testParamHeader, { bubbles: true })
574576
expect(screen.queryByRole('tooltip')).not.toBeInTheDocument()
575577

576-
jest.advanceTimersByTime(HEADER_TOOLTIP_DELAY - 1)
578+
advanceTimersByTime(HEADER_TOOLTIP_DELAY - 1)
577579
expect(screen.queryByRole('tooltip')).not.toBeInTheDocument()
578580

579-
jest.advanceTimersByTime(1)
581+
advanceTimersByTime(1)
580582
expect(screen.getByRole('tooltip')).toBeInTheDocument()
581583
expect(screen.getByRole('tooltip')).toHaveTextContent(testParamName)
582584

583585
fireEvent.mouseLeave(testParamHeader, { bubbles: true })
584586

585-
jest.advanceTimersByTime(HEADER_TOOLTIP_DELAY - 1)
587+
advanceTimersByTime(HEADER_TOOLTIP_DELAY - 1)
586588
expect(screen.getByRole('tooltip')).toBeInTheDocument()
587589

588-
jest.advanceTimersByTime(1)
590+
advanceTimersByTime(1)
589591
expect(screen.queryByRole('tooltip')).not.toBeInTheDocument()
590592
})
591593

@@ -599,7 +601,7 @@ describe('App', () => {
599601
const testParamHeader = screen.getByText(testParamName)
600602

601603
fireEvent.mouseEnter(testParamHeader, { bubbles: true })
602-
jest.advanceTimersByTime(HEADER_TOOLTIP_DELAY)
604+
advanceTimersByTime(HEADER_TOOLTIP_DELAY)
603605

604606
expect(screen.queryByRole('tooltip')).not.toBeInTheDocument()
605607
})
@@ -610,18 +612,18 @@ describe('App', () => {
610612
const testParamCell = screen.getByText(testParamStringValue)
611613
fireEvent.mouseEnter(testParamCell, { bubbles: true })
612614

613-
jest.advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0] - 1)
615+
advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0] - 1)
614616
expect(screen.queryByRole('tooltip')).not.toBeInTheDocument()
615617

616-
jest.advanceTimersByTime(1)
618+
advanceTimersByTime(1)
617619
const tooltip = screen.getByRole('tooltip')
618620
expect(tooltip).toBeInTheDocument()
619621

620622
expect(tooltip).toHaveTextContent(testParamStringValue)
621623

622624
fireEvent.mouseLeave(testParamCell, { bubbles: true })
623625

624-
jest.advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
626+
advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
625627
expect(screen.queryByRole('tooltip')).not.toBeInTheDocument()
626628
})
627629

@@ -631,14 +633,14 @@ describe('App', () => {
631633
const testParamCell = screen.getByText(testParamStringValue)
632634
fireEvent.mouseEnter(testParamCell, { bubbles: true })
633635

634-
jest.advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
636+
advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
635637
const tooltip = screen.getByRole('tooltip')
636638
expect(tooltip).toBeInTheDocument()
637639

638640
fireEvent.mouseLeave(testParamCell, { bubbles: true })
639641
fireEvent.mouseEnter(tooltip, { bubbles: true })
640642

641-
jest.advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
643+
advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
642644
expect(tooltip).toBeInTheDocument()
643645
})
644646

@@ -652,13 +654,13 @@ describe('App', () => {
652654

653655
fireEvent.mouseEnter(testParamCell, { bubbles: true })
654656

655-
jest.advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
657+
advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
656658
const tooltip = screen.queryByRole('tooltip')
657659
expect(tooltip).toHaveTextContent(expectedTooltipResult)
658660

659661
fireEvent.mouseLeave(testParamCell, { bubbles: true })
660662

661-
jest.advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
663+
advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
662664
expect(screen.queryByRole('tooltip')).not.toBeInTheDocument()
663665
}
664666

@@ -694,7 +696,7 @@ describe('App', () => {
694696
)
695697
fireEvent.mouseEnter(radioButton)
696698

697-
jest.advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
699+
advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
698700
const tooltip = screen.queryByRole('tooltip')
699701

700702
expect(tooltip).toBeInTheDocument()
@@ -716,7 +718,7 @@ describe('App', () => {
716718
const radioButton = within(getRow('main')).getByTestId('row-action-star')
717719
fireEvent.mouseEnter(radioButton)
718720

719-
jest.advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
721+
advanceTimersByTime(NORMAL_TOOLTIP_DELAY[0])
720722
const tooltip = screen.queryByRole('tooltip')
721723

722724
expect(tooltip).toBeInTheDocument()
@@ -743,7 +745,9 @@ describe('App', () => {
743745
const paramsFileHeader = screen.getByText('params.yaml')
744746
fireEvent.click(paramsFileHeader, { bubbles: true })
745747

746-
jest.advanceTimersByTime(100)
748+
act(() => {
749+
advanceTimersByTime(100)
750+
})
747751
expect(screen.queryAllByRole('menuitem')).toHaveLength(0)
748752
})
749753

@@ -753,7 +757,7 @@ describe('App', () => {
753757
const paramsFileHeader = screen.getByText('params.yaml')
754758
fireEvent.contextMenu(paramsFileHeader, { bubbles: true })
755759

756-
jest.advanceTimersByTime(100)
760+
advanceTimersByTime(100)
757761

758762
const menuitems = screen.getAllByRole('menuitem')
759763
expect(menuitems).toHaveLength(2)
@@ -777,7 +781,7 @@ describe('App', () => {
777781
const target = screen.getByTestId('workspace-row')
778782
fireEvent.contextMenu(target, { bubbles: true })
779783

780-
jest.advanceTimersByTime(100)
784+
advanceTimersByTime(100)
781785
const menu = screen.getByTestId('messages-menu')
782786
expect(menu).toBeDefined()
783787
})
@@ -788,7 +792,7 @@ describe('App', () => {
788792
const target = screen.getByTestId('workspace-row')
789793
fireEvent.contextMenu(target, { bubbles: true })
790794

791-
jest.advanceTimersByTime(100)
795+
advanceTimersByTime(100)
792796
const menuitems = screen.getAllByRole('menuitem')
793797
const itemLabels = menuitems.map(item => item.textContent)
794798
expect(itemLabels).toStrictEqual(['Modify and Run', 'Modify and Queue'])
@@ -800,7 +804,7 @@ describe('App', () => {
800804
const target = screen.getByText('main')
801805
fireEvent.contextMenu(target, { bubbles: true })
802806

803-
jest.advanceTimersByTime(100)
807+
advanceTimersByTime(100)
804808
const menuitems = screen.getAllByRole('menuitem')
805809
const itemLabels = menuitems.map(item => item.textContent)
806810
expect(itemLabels).toStrictEqual([
@@ -817,7 +821,7 @@ describe('App', () => {
817821
const target = screen.getByText('[exp-e7a67]')
818822
fireEvent.contextMenu(target, { bubbles: true })
819823

820-
jest.advanceTimersByTime(100)
824+
advanceTimersByTime(100)
821825
const menuitems = screen.getAllByRole('menuitem')
822826
const itemLabels = menuitems.map(item => item.textContent)
823827
expect(itemLabels).toStrictEqual([
@@ -842,11 +846,11 @@ describe('App', () => {
842846
const row = getRow('4fb124a')
843847
fireEvent.contextMenu(row, { bubbles: true })
844848

845-
jest.advanceTimersByTime(100)
849+
advanceTimersByTime(100)
846850
expect(screen.getAllByRole('menuitem')).toHaveLength(9)
847851

848852
fireEvent.click(window, { bubbles: true })
849-
jest.advanceTimersByTime(100)
853+
advanceTimersByTime(100)
850854
expect(screen.queryAllByRole('menuitem')).toHaveLength(0)
851855
})
852856

@@ -856,12 +860,12 @@ describe('App', () => {
856860
const row = getRow('4fb124a')
857861
fireEvent.contextMenu(row, { bubbles: true })
858862

859-
jest.advanceTimersByTime(100)
863+
advanceTimersByTime(100)
860864
expect(screen.getAllByRole('menuitem')).toHaveLength(9)
861865

862866
const branch = getRow('main')
863867
fireEvent.click(branch, { bubbles: true })
864-
jest.advanceTimersByTime(100)
868+
advanceTimersByTime(100)
865869
expect(screen.queryAllByRole('menuitem')).toHaveLength(0)
866870
})
867871

@@ -871,13 +875,13 @@ describe('App', () => {
871875
const row = getRow('4fb124a')
872876
fireEvent.contextMenu(row, { bubbles: true })
873877

874-
jest.advanceTimersByTime(100)
878+
advanceTimersByTime(100)
875879
expect(screen.queryAllByRole('menuitem')).toHaveLength(9)
876880

877881
fireEvent.contextMenu(within(row).getByText('[exp-e7a67]'), {
878882
bubbles: true
879883
})
880-
jest.advanceTimersByTime(200)
884+
advanceTimersByTime(200)
881885
expect(screen.queryAllByRole('menuitem')).toHaveLength(9)
882886
})
883887

@@ -887,7 +891,7 @@ describe('App', () => {
887891
const target = screen.getByText('4fb124a')
888892
fireEvent.contextMenu(target, { bubbles: true })
889893

890-
jest.advanceTimersByTime(100)
894+
advanceTimersByTime(100)
891895
const menuitems = screen.getAllByRole('menuitem')
892896
const itemLabels = menuitems.map(item => item.textContent)
893897
expect(itemLabels).toContain('Remove')
@@ -902,7 +906,7 @@ describe('App', () => {
902906
const target = screen.getByText('4fb124a')
903907
fireEvent.contextMenu(target, { bubbles: true })
904908

905-
jest.advanceTimersByTime(100)
909+
advanceTimersByTime(100)
906910
const menuitems = screen.getAllByRole('menuitem')
907911
const itemLabels = menuitems.map(item => item.textContent)
908912
expect(itemLabels).toContain('Remove Selected Rows')
@@ -917,7 +921,7 @@ describe('App', () => {
917921
const target = screen.getByText('4fb124a')
918922
fireEvent.contextMenu(target, { bubbles: true })
919923

920-
jest.advanceTimersByTime(100)
924+
advanceTimersByTime(100)
921925
const menuitems = screen.getAllByRole('menuitem')
922926
const itemLabels = menuitems.map(item => item.textContent)
923927
expect(itemLabels).toContain('Plot and Show')
@@ -935,7 +939,7 @@ describe('App', () => {
935939
const target = screen.getByText('4fb124a')
936940
fireEvent.contextMenu(target, { bubbles: true })
937941

938-
jest.advanceTimersByTime(100)
942+
advanceTimersByTime(100)
939943
const menuitems = screen.getAllByRole('menuitem')
940944
const itemLabels = menuitems.map(item => item.textContent)
941945
expect(itemLabels).toContain('Star')
@@ -958,12 +962,12 @@ describe('App', () => {
958962

959963
contractRow('42b8736')
960964

961-
jest.advanceTimersByTime(100)
965+
advanceTimersByTime(100)
962966
clickRowCheckbox('4fb124a')
963967
clickRowCheckbox('22e40e1', true)
964968
expandRow('42b8736')
965969

966-
jest.advanceTimersByTime(100)
970+
advanceTimersByTime(100)
967971
expect(getRow('42b8736')).toHaveAttribute('aria-selected', 'true')
968972
expect(getRow('2173124')).not.toHaveAttribute('aria-selected', 'true')
969973
expect(getRow('9523bde')).not.toHaveAttribute('aria-selected', 'true')
@@ -980,11 +984,11 @@ describe('App', () => {
980984
const target = screen.getByText('4fb124a')
981985
fireEvent.contextMenu(target, { bubbles: true })
982986

983-
jest.advanceTimersByTime(100)
987+
advanceTimersByTime(100)
984988
const clearOption = screen.getByText('Clear row selection')
985989
fireEvent.click(clearOption)
986990

987-
jest.advanceTimersByTime(100)
991+
advanceTimersByTime(100)
988992
expect(selectedRows().length).toBe(0)
989993
})
990994

@@ -998,7 +1002,7 @@ describe('App', () => {
9981002

9991003
fireEvent.keyUp(getRow('42b8736'), { bubbles: true, key: 'Escape' })
10001004

1001-
jest.advanceTimersByTime(100)
1005+
advanceTimersByTime(100)
10021006
expect(selectedRows().length).toBe(0)
10031007
})
10041008
})
@@ -1044,7 +1048,7 @@ describe('App', () => {
10441048
const mainRow = getRow('main')
10451049
fireEvent.contextMenu(mainRow, { bubbles: true })
10461050

1047-
jest.advanceTimersByTime(100)
1051+
advanceTimersByTime(100)
10481052

10491053
const starOption = screen.getByText('Star')
10501054
fireEvent.click(starOption)
@@ -1066,7 +1070,7 @@ describe('App', () => {
10661070
clickRowCheckbox('4fb124a')
10671071

10681072
fireEvent.contextMenu(mainRow, { bubbles: true })
1069-
jest.advanceTimersByTime(100)
1073+
advanceTimersByTime(100)
10701074

10711075
const starOption = screen.getByText('Star')
10721076
fireEvent.click(starOption)

webview/src/test/experimentsTable.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { configureStore } from '@reduxjs/toolkit'
22
import {
3+
act,
34
fireEvent,
45
render,
56
within,
@@ -104,3 +105,8 @@ export const expandRow = (label: string) => {
104105

105106
export const selectedRows = () =>
106107
screen.queryAllByRole('row', { selected: true })
108+
109+
export const advanceTimersByTime = (ms: number) =>
110+
act(() => {
111+
jest.advanceTimersByTime(ms)
112+
})

0 commit comments

Comments
 (0)