diff --git a/src/main/menu.test.ts b/src/main/menu.test.ts
index dfea5a3f3..5055c6b3b 100644
--- a/src/main/menu.test.ts
+++ b/src/main/menu.test.ts
@@ -1,5 +1,6 @@
import { Menu, MenuItem } from 'electron';
import type { Menubar } from 'menubar';
+
import MenuBuilder from './menu';
jest.mock('electron', () => ({
diff --git a/src/renderer/components/AllRead.test.tsx b/src/renderer/components/AllRead.test.tsx
index 80ff5409a..b43c833d7 100644
--- a/src/renderer/components/AllRead.test.tsx
+++ b/src/renderer/components/AllRead.test.tsx
@@ -1,5 +1,6 @@
import { render } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
+
import { mockSettings } from '../__mocks__/state-mocks';
import { ensureStableEmojis } from '../__mocks__/utils';
import { AppContext } from '../context/App';
diff --git a/src/renderer/components/Oops.test.tsx b/src/renderer/components/Oops.test.tsx
index 319357448..4293911b1 100644
--- a/src/renderer/components/Oops.test.tsx
+++ b/src/renderer/components/Oops.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { ensureStableEmojis } from '../__mocks__/utils';
import { Oops } from './Oops';
diff --git a/src/renderer/components/Sidebar.test.tsx b/src/renderer/components/Sidebar.test.tsx
index cb80eb6e1..55c7186bf 100644
--- a/src/renderer/components/Sidebar.test.tsx
+++ b/src/renderer/components/Sidebar.test.tsx
@@ -1,5 +1,7 @@
-import { fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAccountNotifications } from '../__mocks__/notifications-mocks';
import { mockAuth, mockSettings } from '../__mocks__/state-mocks';
import { AppContext } from '../context/App';
@@ -59,7 +61,7 @@ describe('renderer/components/Sidebar.tsx', () => {
expect(tree).toMatchSnapshot();
});
- it('should navigate home when clicking the gitify logo', () => {
+ it('should navigate home when clicking the gitify logo', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-home'));
+ await userEvent.click(screen.getByTestId('sidebar-home'));
+
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true });
});
describe('notifications icon', () => {
- it('opens notifications home when clicked', () => {
+ it('opens notifications home when clicked', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-notifications'));
+ await userEvent.click(screen.getByTestId('sidebar-notifications'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
@@ -144,7 +147,7 @@ describe('renderer/components/Sidebar.tsx', () => {
});
describe('Filter notifications', () => {
- it('go to the filters route', () => {
+ it('go to the filters route', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-filter-notifications'));
+ await userEvent.click(screen.getByTestId('sidebar-filter-notifications'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/filters');
});
- it('go to the home if filters path already shown', () => {
+ it('go to the home if filters path already shown', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-filter-notifications'));
+ await userEvent.click(screen.getByTestId('sidebar-filter-notifications'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true });
});
});
describe('quick links', () => {
- it('opens my github issues page', () => {
+ it('opens my github issues page', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-my-issues'));
+ await userEvent.click(screen.getByTestId('sidebar-my-issues'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
@@ -212,7 +215,7 @@ describe('renderer/components/Sidebar.tsx', () => {
);
});
- it('opens my github pull requests page', () => {
+ it('opens my github pull requests page', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-my-pull-requests'));
+ await userEvent.click(screen.getByTestId('sidebar-my-pull-requests'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
@@ -238,7 +241,7 @@ describe('renderer/components/Sidebar.tsx', () => {
});
describe('Refresh Notifications', () => {
- it('should refresh the notifications when status is not loading', () => {
+ it('should refresh the notifications when status is not loading', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-refresh'));
+ await userEvent.click(screen.getByTestId('sidebar-refresh'));
expect(fetchNotifications).toHaveBeenCalledTimes(1);
});
- it('should not refresh the notifications when status is loading', () => {
+ it('should not refresh the notifications when status is loading', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-refresh'));
+ await userEvent.click(screen.getByTestId('sidebar-refresh'));
expect(fetchNotifications).not.toHaveBeenCalled();
});
});
describe('Settings', () => {
- it('go to the settings route', () => {
+ it('go to the settings route', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-settings'));
+ await userEvent.click(screen.getByTestId('sidebar-settings'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/settings');
});
- it('go to the home if settings path already shown', () => {
+ it('go to the home if settings path already shown', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('sidebar-settings'));
+ await userEvent.click(screen.getByTestId('sidebar-settings'));
expect(fetchNotifications).toHaveBeenCalledTimes(1);
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true });
});
});
- it('should quit the app', () => {
+ it('should quit the app', async () => {
const quitAppMock = jest.spyOn(comms, 'quitApp');
render(
@@ -349,7 +352,7 @@ describe('renderer/components/Sidebar.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('sidebar-quit'));
+ await userEvent.click(screen.getByTestId('sidebar-quit'));
expect(quitAppMock).toHaveBeenCalledTimes(1);
});
diff --git a/src/renderer/components/fields/Checkbox.test.tsx b/src/renderer/components/fields/Checkbox.test.tsx
index 0620300e9..623a59d91 100644
--- a/src/renderer/components/fields/Checkbox.test.tsx
+++ b/src/renderer/components/fields/Checkbox.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { Checkbox, type ICheckbox } from './Checkbox';
describe('renderer/components/fields/Checkbox.tsx', () => {
diff --git a/src/renderer/components/fields/FieldLabel.test.tsx b/src/renderer/components/fields/FieldLabel.test.tsx
index 31f76978d..e10a2e655 100644
--- a/src/renderer/components/fields/FieldLabel.test.tsx
+++ b/src/renderer/components/fields/FieldLabel.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { FieldLabel, type IFieldLabel } from './FieldLabel';
describe('renderer/components/fields/FieldLabel.tsx', () => {
diff --git a/src/renderer/components/fields/RadioGroup.test.tsx b/src/renderer/components/fields/RadioGroup.test.tsx
index eeb2ba652..1a433383d 100644
--- a/src/renderer/components/fields/RadioGroup.test.tsx
+++ b/src/renderer/components/fields/RadioGroup.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { type IRadioGroup, RadioGroup } from './RadioGroup';
describe('renderer/components/fields/RadioGroup.tsx', () => {
diff --git a/src/renderer/components/fields/Tooltip.test.tsx b/src/renderer/components/fields/Tooltip.test.tsx
index ae81a48d4..466f3ee24 100644
--- a/src/renderer/components/fields/Tooltip.test.tsx
+++ b/src/renderer/components/fields/Tooltip.test.tsx
@@ -1,4 +1,6 @@
-import { fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
import { type ITooltip, Tooltip } from './Tooltip';
describe('renderer/components/fields/Tooltip.tsx', () => {
@@ -12,15 +14,15 @@ describe('renderer/components/fields/Tooltip.tsx', () => {
expect(tree).toMatchSnapshot();
});
- it('should display on mouse enter / leave', () => {
+ it('should display on mouse enter / leave', async () => {
render();
const tooltipElement = screen.getByTestId('tooltip-test');
- fireEvent.mouseEnter(tooltipElement);
+ await userEvent.hover(tooltipElement);
expect(tooltipElement).toMatchSnapshot();
- fireEvent.mouseLeave(tooltipElement);
+ await userEvent.unhover(tooltipElement);
expect(tooltipElement).toMatchSnapshot();
});
});
diff --git a/src/renderer/components/filters/FilterSection.test.tsx b/src/renderer/components/filters/FilterSection.test.tsx
index 832b48a15..bd087db6e 100644
--- a/src/renderer/components/filters/FilterSection.test.tsx
+++ b/src/renderer/components/filters/FilterSection.test.tsx
@@ -1,6 +1,8 @@
import { MarkGithubIcon } from '@primer/octicons-react';
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { act, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAccountNotifications } from '../../__mocks__/notifications-mocks';
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
@@ -98,7 +100,7 @@ describe('renderer/components/filters/FilterSection.tsx', () => {
);
});
- fireEvent.click(screen.getByLabelText('Open'));
+ await userEvent.click(screen.getByLabelText('Open'));
expect(updateFilter).toHaveBeenCalledWith(mockFilterSetting, 'open', true);
@@ -133,7 +135,7 @@ describe('renderer/components/filters/FilterSection.tsx', () => {
);
});
- fireEvent.click(screen.getByLabelText('Closed'));
+ await userEvent.click(screen.getByLabelText('Closed'));
expect(updateFilter).toHaveBeenCalledWith(
mockFilterSetting,
diff --git a/src/renderer/components/filters/ReasonFilter.test.tsx b/src/renderer/components/filters/ReasonFilter.test.tsx
index 485cd2156..9fe104f18 100644
--- a/src/renderer/components/filters/ReasonFilter.test.tsx
+++ b/src/renderer/components/filters/ReasonFilter.test.tsx
@@ -1,5 +1,6 @@
import { render } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAccountNotifications } from '../../__mocks__/notifications-mocks';
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
diff --git a/src/renderer/components/filters/RequiresDetailedNotificationsWarning.test.tsx b/src/renderer/components/filters/RequiresDetailedNotificationsWarning.test.tsx
index 0ddc41dc8..f0348091f 100644
--- a/src/renderer/components/filters/RequiresDetailedNotificationsWarning.test.tsx
+++ b/src/renderer/components/filters/RequiresDetailedNotificationsWarning.test.tsx
@@ -1,5 +1,6 @@
import { render } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAccountNotifications } from '../../__mocks__/notifications-mocks';
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
diff --git a/src/renderer/components/filters/StateFilter.test.tsx b/src/renderer/components/filters/StateFilter.test.tsx
index 316a417f6..264bafac3 100644
--- a/src/renderer/components/filters/StateFilter.test.tsx
+++ b/src/renderer/components/filters/StateFilter.test.tsx
@@ -1,5 +1,6 @@
import { render } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAccountNotifications } from '../../__mocks__/notifications-mocks';
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
diff --git a/src/renderer/components/filters/SubjectTypeFilter.test.tsx b/src/renderer/components/filters/SubjectTypeFilter.test.tsx
index b9f8cf3f2..e6c86b800 100644
--- a/src/renderer/components/filters/SubjectTypeFilter.test.tsx
+++ b/src/renderer/components/filters/SubjectTypeFilter.test.tsx
@@ -1,5 +1,6 @@
import { render } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAccountNotifications } from '../../__mocks__/notifications-mocks';
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
diff --git a/src/renderer/components/filters/UserHandleFilter.test.tsx b/src/renderer/components/filters/UserHandleFilter.test.tsx
index 0892de338..796791cf2 100644
--- a/src/renderer/components/filters/UserHandleFilter.test.tsx
+++ b/src/renderer/components/filters/UserHandleFilter.test.tsx
@@ -1,5 +1,7 @@
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { act, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAccountNotifications } from '../../__mocks__/notifications-mocks';
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
@@ -76,14 +78,10 @@ describe('renderer/components/filters/UserHandleFilter.tsx', () => {
);
});
- fireEvent.change(screen.getByTitle('Include handles'), {
- target: { value: 'github-user' },
- });
-
- fireEvent.keyDown(screen.getByTitle('Include handles'), {
- key: 'Enter',
- code: 'Enter',
- });
+ await userEvent.type(
+ screen.getByTitle('Include handles'),
+ 'github-user{enter}',
+ );
expect(updateFilter).toHaveBeenCalledWith(
'filterIncludeHandles',
@@ -112,14 +110,10 @@ describe('renderer/components/filters/UserHandleFilter.tsx', () => {
);
});
- fireEvent.change(screen.getByTitle('Include handles'), {
- target: { value: 'github-user' },
- });
-
- fireEvent.keyDown(screen.getByTitle('Include handles'), {
- key: 'Enter',
- code: 'Enter',
- });
+ await userEvent.type(
+ screen.getByTitle('Include handles'),
+ 'github-user{enter}',
+ );
expect(updateFilter).toHaveBeenCalledTimes(0);
});
@@ -146,14 +140,10 @@ describe('renderer/components/filters/UserHandleFilter.tsx', () => {
);
});
- fireEvent.change(screen.getByTitle('Exclude handles'), {
- target: { value: 'github-user' },
- });
-
- fireEvent.keyDown(screen.getByTitle('Exclude handles'), {
- key: 'Enter',
- code: 'Enter',
- });
+ await userEvent.type(
+ screen.getByTitle('Exclude handles'),
+ 'github-user{enter}',
+ );
expect(updateFilter).toHaveBeenCalledWith(
'filterExcludeHandles',
@@ -182,14 +172,10 @@ describe('renderer/components/filters/UserHandleFilter.tsx', () => {
);
});
- fireEvent.change(screen.getByTitle('Exclude handles'), {
- target: { value: 'github-user' },
- });
-
- fireEvent.keyDown(screen.getByTitle('Exclude handles'), {
- key: 'Enter',
- code: 'Enter',
- });
+ await userEvent.type(
+ screen.getByTitle('Exclude handles'),
+ 'github-user{enter}',
+ );
expect(updateFilter).toHaveBeenCalledTimes(0);
});
diff --git a/src/renderer/components/filters/UserTypeFilter.test.tsx b/src/renderer/components/filters/UserTypeFilter.test.tsx
index 4ade31495..c1433500a 100644
--- a/src/renderer/components/filters/UserTypeFilter.test.tsx
+++ b/src/renderer/components/filters/UserTypeFilter.test.tsx
@@ -1,5 +1,6 @@
import { render } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAccountNotifications } from '../../__mocks__/notifications-mocks';
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
diff --git a/src/renderer/components/icons/LogoIcon.test.tsx b/src/renderer/components/icons/LogoIcon.test.tsx
index 13fd19597..ccd4f61a3 100644
--- a/src/renderer/components/icons/LogoIcon.test.tsx
+++ b/src/renderer/components/icons/LogoIcon.test.tsx
@@ -1,4 +1,6 @@
-import { fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
import { Size } from '../../types';
import { LogoIcon } from './LogoIcon';
@@ -15,11 +17,11 @@ describe('renderer/components/icons/LogoIcon.tsx', () => {
expect(tree).toMatchSnapshot();
});
- it('should click on the logo', () => {
+ it('should click on the logo', async () => {
const onClick = jest.fn();
render();
- fireEvent.click(screen.getByLabelText('Gitify Logo'));
+ await userEvent.click(screen.getByLabelText('Gitify Logo'));
expect(onClick).toHaveBeenCalledTimes(1);
});
diff --git a/src/renderer/components/layout/Centered.test.tsx b/src/renderer/components/layout/Centered.test.tsx
index f7103406c..9bb464304 100644
--- a/src/renderer/components/layout/Centered.test.tsx
+++ b/src/renderer/components/layout/Centered.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { Centered } from './Centered';
describe('renderer/components/layout/Centered.tsx', () => {
diff --git a/src/renderer/components/layout/Contents.test.tsx b/src/renderer/components/layout/Contents.test.tsx
index 79b1dc6db..c8d2bce0d 100644
--- a/src/renderer/components/layout/Contents.test.tsx
+++ b/src/renderer/components/layout/Contents.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { Contents } from './Contents';
describe('renderer/components/layout/Contents.tsx', () => {
diff --git a/src/renderer/components/layout/EmojiSplash.test.tsx b/src/renderer/components/layout/EmojiSplash.test.tsx
index 313c95986..a8b0dc212 100644
--- a/src/renderer/components/layout/EmojiSplash.test.tsx
+++ b/src/renderer/components/layout/EmojiSplash.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { EmojiSplash } from './EmojiSplash';
describe('renderer/components/layout/EmojiSplash.tsx', () => {
diff --git a/src/renderer/components/layout/Page.test.tsx b/src/renderer/components/layout/Page.test.tsx
index bf51c7ec6..92aae65fd 100644
--- a/src/renderer/components/layout/Page.test.tsx
+++ b/src/renderer/components/layout/Page.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { Page } from './Page';
describe('renderer/components/layout/Page.tsx', () => {
diff --git a/src/renderer/components/metrics/MetricGroup.test.tsx b/src/renderer/components/metrics/MetricGroup.test.tsx
index 6be4727f6..c74849a39 100644
--- a/src/renderer/components/metrics/MetricGroup.test.tsx
+++ b/src/renderer/components/metrics/MetricGroup.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
import type { Milestone } from '../../typesGitHub';
diff --git a/src/renderer/components/metrics/MetricPill.test.tsx b/src/renderer/components/metrics/MetricPill.test.tsx
index ceed253bf..6c3a103ba 100644
--- a/src/renderer/components/metrics/MetricPill.test.tsx
+++ b/src/renderer/components/metrics/MetricPill.test.tsx
@@ -1,5 +1,6 @@
import { MarkGithubIcon } from '@primer/octicons-react';
import { render } from '@testing-library/react';
+
import { IconColor } from '../../types';
import { type IMetricPill, MetricPill } from './MetricPill';
diff --git a/src/renderer/components/notifications/AccountNotifications.test.tsx b/src/renderer/components/notifications/AccountNotifications.test.tsx
index b2a7825dc..c55989cb2 100644
--- a/src/renderer/components/notifications/AccountNotifications.test.tsx
+++ b/src/renderer/components/notifications/AccountNotifications.test.tsx
@@ -1,4 +1,6 @@
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
import {
mockGitHubCloudAccount,
mockSettings,
@@ -34,6 +36,7 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -52,6 +55,7 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -68,6 +72,7 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -88,6 +93,7 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -103,15 +109,13 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => {
error: null,
};
- await act(async () => {
- render(
-
-
- ,
- );
- });
+ render(
+
+
+ ,
+ );
- fireEvent.click(screen.getByTestId('account-profile'));
+ await userEvent.click(screen.getByTestId('account-profile'));
expect(openAccountProfileMock).toHaveBeenCalledTimes(1);
expect(openAccountProfileMock).toHaveBeenCalledWith(mockGitHubCloudAccount);
@@ -129,15 +133,13 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => {
error: null,
};
- await act(async () => {
- render(
-
-
- ,
- );
- });
+ render(
+
+
+ ,
+ );
- fireEvent.click(screen.getByTestId('account-issues'));
+ await userEvent.click(screen.getByTestId('account-issues'));
expect(openMyIssuesMock).toHaveBeenCalledTimes(1);
expect(openMyIssuesMock).toHaveBeenCalledWith(
@@ -157,15 +159,13 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => {
error: null,
};
- await act(async () => {
- render(
-
-
- ,
- );
- });
+ render(
+
+
+ ,
+ );
- fireEvent.click(screen.getByTestId('account-pull-requests'));
+ await userEvent.click(screen.getByTestId('account-pull-requests'));
expect(openPullRequestsMock).toHaveBeenCalledTimes(1);
expect(openPullRequestsMock).toHaveBeenCalledWith(
@@ -181,15 +181,13 @@ describe('renderer/components/notifications/AccountNotifications.tsx', () => {
error: null,
};
- await act(async () => {
- render(
-
-
- ,
- );
- });
+ render(
+
+
+ ,
+ );
- fireEvent.click(screen.getByTestId('account-toggle'));
+ await userEvent.click(screen.getByTestId('account-toggle'));
const tree = render(
diff --git a/src/renderer/components/notifications/NotificationFooter.test.tsx b/src/renderer/components/notifications/NotificationFooter.test.tsx
index 559721bc1..f7ee60fa8 100644
--- a/src/renderer/components/notifications/NotificationFooter.test.tsx
+++ b/src/renderer/components/notifications/NotificationFooter.test.tsx
@@ -1,4 +1,6 @@
-import { fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
import {
mockGitHubCloudAccount,
mockSettings,
@@ -31,6 +33,7 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -51,6 +54,7 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -72,6 +76,7 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -92,6 +97,7 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
});
@@ -113,10 +119,11 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
- it('should open notification user profile', () => {
+ it('should open notification user profile', async () => {
const openExternalLinkMock = jest
.spyOn(comms, 'openExternalLink')
.mockImplementation();
@@ -149,7 +156,8 @@ describe('renderer/components/notifications/NotificationFooter.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('view-profile'));
+ await userEvent.click(screen.getByTestId('view-profile'));
+
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
props.notification.subject.user.html_url,
diff --git a/src/renderer/components/notifications/NotificationHeader.test.tsx b/src/renderer/components/notifications/NotificationHeader.test.tsx
index 9415ba26e..712977216 100644
--- a/src/renderer/components/notifications/NotificationHeader.test.tsx
+++ b/src/renderer/components/notifications/NotificationHeader.test.tsx
@@ -1,4 +1,6 @@
-import { fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
import { mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
import { GroupBy } from '../../types';
@@ -23,6 +25,7 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -39,6 +42,7 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -60,6 +64,7 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -78,11 +83,12 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
});
- it('should open notification user profile - group by date', () => {
+ it('should open notification user profile - group by date', async () => {
const openExternalLinkMock = jest
.spyOn(comms, 'openExternalLink')
.mockImplementation();
@@ -99,7 +105,8 @@ describe('renderer/components/notifications/NotificationHeader.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('view-repository'));
+ await userEvent.click(screen.getByTestId('view-repository'));
+
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
props.notification.repository.html_url,
diff --git a/src/renderer/components/notifications/NotificationRow.test.tsx b/src/renderer/components/notifications/NotificationRow.test.tsx
index b440aa1dd..2a47f0c34 100644
--- a/src/renderer/components/notifications/NotificationRow.test.tsx
+++ b/src/renderer/components/notifications/NotificationRow.test.tsx
@@ -1,4 +1,6 @@
-import { fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
import {
mockAuth,
mockGitHubCloudAccount,
@@ -36,6 +38,7 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -56,6 +59,7 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -76,11 +80,12 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
+
expect(tree).toMatchSnapshot();
});
describe('notification interactions', () => {
- it('should open a notification in the browser - click', () => {
+ it('should open a notification in the browser - click', async () => {
const markNotificationsAsRead = jest.fn();
const props = {
@@ -100,12 +105,13 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('notification-row'));
+ await userEvent.click(screen.getByTestId('notification-row'));
+
expect(links.openNotification).toHaveBeenCalledTimes(1);
expect(markNotificationsAsRead).toHaveBeenCalledTimes(1);
});
- it('should open a notification in the browser - delay notification setting enabled', () => {
+ it('should open a notification in the browser - delay notification setting enabled', async () => {
const markNotificationsAsRead = jest.fn();
const props = {
@@ -129,12 +135,13 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('notification-row'));
+ await userEvent.click(screen.getByTestId('notification-row'));
+
expect(links.openNotification).toHaveBeenCalledTimes(1);
expect(markNotificationsAsRead).toHaveBeenCalledTimes(1);
});
- it('should open a notification in browser & mark it as done', () => {
+ it('should open a notification in browser & mark it as done', async () => {
const markNotificationsAsDone = jest.fn();
const props = {
@@ -154,12 +161,13 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('notification-row'));
+ await userEvent.click(screen.getByTestId('notification-row'));
+
expect(links.openNotification).toHaveBeenCalledTimes(1);
expect(markNotificationsAsDone).toHaveBeenCalledTimes(1);
});
- it('should mark notifications as read', () => {
+ it('should mark notifications as read', async () => {
const markNotificationsAsRead = jest.fn();
const props = {
@@ -178,11 +186,12 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('notification-mark-as-read'));
+ await userEvent.click(screen.getByTestId('notification-mark-as-read'));
+
expect(markNotificationsAsRead).toHaveBeenCalledTimes(1);
});
- it('should mark notifications as done', () => {
+ it('should mark notifications as done', async () => {
const markNotificationsAsDone = jest.fn();
const props = {
@@ -198,11 +207,12 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('notification-mark-as-done'));
+ await userEvent.click(screen.getByTestId('notification-mark-as-done'));
+
expect(markNotificationsAsDone).toHaveBeenCalledTimes(1);
});
- it('should unsubscribe from a notification thread', () => {
+ it('should unsubscribe from a notification thread', async () => {
const unsubscribeNotification = jest.fn();
const props = {
@@ -219,9 +229,11 @@ describe('renderer/components/notifications/NotificationRow.tsx', () => {
,
);
- fireEvent.click(
+
+ await userEvent.click(
screen.getByTestId('notification-unsubscribe-from-thread'),
);
+
expect(unsubscribeNotification).toHaveBeenCalledTimes(1);
});
});
diff --git a/src/renderer/components/notifications/RepositoryNotifications.test.tsx b/src/renderer/components/notifications/RepositoryNotifications.test.tsx
index 72cb19b65..90b725bb9 100644
--- a/src/renderer/components/notifications/RepositoryNotifications.test.tsx
+++ b/src/renderer/components/notifications/RepositoryNotifications.test.tsx
@@ -1,4 +1,6 @@
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { act, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
import {
mockGitHubCloudAccount,
mockSettings,
@@ -33,10 +35,11 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () =>
,
);
+
expect(tree).toMatchSnapshot();
});
- it('should open the browser when clicking on the repo name', () => {
+ it('should open the browser when clicking on the repo name', async () => {
const openExternalLinkMock = jest
.spyOn(comms, 'openExternalLink')
.mockImplementation();
@@ -47,7 +50,7 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () =>
,
);
- fireEvent.click(screen.getByTestId('open-repository'));
+ await userEvent.click(screen.getByTestId('open-repository'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
@@ -55,7 +58,7 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () =>
);
});
- it('should mark a repo as read', () => {
+ it('should mark a repo as read', async () => {
render(
,
);
- fireEvent.click(screen.getByTestId('repository-mark-as-read'));
+ await userEvent.click(screen.getByTestId('repository-mark-as-read'));
expect(markNotificationsAsRead).toHaveBeenCalledWith(
mockGitHubNotifications,
);
});
- it('should mark a repo as done', () => {
+ it('should mark a repo as done', async () => {
render(
,
);
- fireEvent.click(screen.getByTestId('repository-mark-as-done'));
+ await userEvent.click(screen.getByTestId('repository-mark-as-done'));
expect(markNotificationsAsDone).toHaveBeenCalledWith(
mockGitHubNotifications,
@@ -95,6 +98,7 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () =>
,
);
+
expect(tree).toMatchSnapshot();
});
@@ -103,7 +107,7 @@ describe('renderer/components/notifications/RepositoryNotifications.tsx', () =>
render();
});
- fireEvent.click(screen.getByTestId('repository-toggle'));
+ await userEvent.click(screen.getByTestId('repository-toggle'));
const tree = render();
expect(tree).toMatchSnapshot();
diff --git a/src/renderer/components/primitives/CustomCounter.test.tsx b/src/renderer/components/primitives/CustomCounter.test.tsx
index 60239b859..d477615c5 100644
--- a/src/renderer/components/primitives/CustomCounter.test.tsx
+++ b/src/renderer/components/primitives/CustomCounter.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { CustomCounter } from './CustomCounter';
describe('renderer/components/primitives/CustomCounter.tsx', () => {
diff --git a/src/renderer/components/primitives/EmojiText.test.tsx b/src/renderer/components/primitives/EmojiText.test.tsx
index a0d21a4bc..9363554e8 100644
--- a/src/renderer/components/primitives/EmojiText.test.tsx
+++ b/src/renderer/components/primitives/EmojiText.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { EmojiText, type IEmojiText } from './EmojiText';
describe('renderer/components/primitives/EmojiText.tsx', () => {
diff --git a/src/renderer/components/primitives/Footer.test.tsx b/src/renderer/components/primitives/Footer.test.tsx
index 77e713abd..e932c704e 100644
--- a/src/renderer/components/primitives/Footer.test.tsx
+++ b/src/renderer/components/primitives/Footer.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { Footer } from './Footer';
describe('renderer/components/primitives/Footer.tsx', () => {
diff --git a/src/renderer/components/primitives/Header.test.tsx b/src/renderer/components/primitives/Header.test.tsx
index 50ad7c581..ffc23ac5b 100644
--- a/src/renderer/components/primitives/Header.test.tsx
+++ b/src/renderer/components/primitives/Header.test.tsx
@@ -1,5 +1,7 @@
import { MarkGithubIcon } from '@primer/octicons-react';
-import { fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+
import { AppContext } from '../../context/App';
import { Header } from './Header';
@@ -22,15 +24,15 @@ describe('renderer/components/primitives/Header.tsx', () => {
expect(tree).toMatchSnapshot();
});
- it('should navigate back', () => {
+ it('should navigate back', async () => {
render();
- fireEvent.click(screen.getByTestId('header-nav-back'));
+ await userEvent.click(screen.getByTestId('header-nav-back'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, -1);
});
- it('should navigate back and fetch notifications', () => {
+ it('should navigate back and fetch notifications', async () => {
render(
{
,
);
- fireEvent.click(screen.getByTestId('header-nav-back'));
+ await userEvent.click(screen.getByTestId('header-nav-back'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, -1);
expect(fetchNotifications).toHaveBeenCalledTimes(1);
diff --git a/src/renderer/components/primitives/HoverButton.test.tsx b/src/renderer/components/primitives/HoverButton.test.tsx
index a09534dc5..be4606262 100644
--- a/src/renderer/components/primitives/HoverButton.test.tsx
+++ b/src/renderer/components/primitives/HoverButton.test.tsx
@@ -1,5 +1,6 @@
import { MarkGithubIcon } from '@primer/octicons-react';
import { render } from '@testing-library/react';
+
import { HoverButton } from './HoverButton';
describe('renderer/components/primitives/HoverButton.tsx', () => {
diff --git a/src/renderer/components/primitives/HoverGroup.test.tsx b/src/renderer/components/primitives/HoverGroup.test.tsx
index 5ab612f3a..c8fc8bd9a 100644
--- a/src/renderer/components/primitives/HoverGroup.test.tsx
+++ b/src/renderer/components/primitives/HoverGroup.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { HoverGroup } from './HoverGroup';
describe('renderer/components/primitives/HoverGroup.tsx', () => {
diff --git a/src/renderer/components/primitives/Title.test.tsx b/src/renderer/components/primitives/Title.test.tsx
index e20d60fd5..647f863be 100644
--- a/src/renderer/components/primitives/Title.test.tsx
+++ b/src/renderer/components/primitives/Title.test.tsx
@@ -1,5 +1,6 @@
import { PersonFillIcon } from '@primer/octicons-react';
import { render } from '@testing-library/react';
+
import { Title } from './Title';
describe('renderer/routes/components/primitives/Title.tsx', () => {
diff --git a/src/renderer/components/settings/AppearanceSettings.test.tsx b/src/renderer/components/settings/AppearanceSettings.test.tsx
index 3c60490f4..1c65a1095 100644
--- a/src/renderer/components/settings/AppearanceSettings.test.tsx
+++ b/src/renderer/components/settings/AppearanceSettings.test.tsx
@@ -1,6 +1,8 @@
import { act, fireEvent, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { webFrame } from 'electron';
import { MemoryRouter } from 'react-router-dom';
+
import {
mockAuth,
mockGitHubAppAccount,
@@ -34,8 +36,10 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => {
);
});
- const select = screen.getByTestId('settings-theme') as HTMLSelectElement;
- fireEvent.change(select, { target: { value: 'LIGHT' } });
+ await userEvent.selectOptions(
+ screen.getByTestId('settings-theme'),
+ 'LIGHT',
+ );
expect(updateSetting).toHaveBeenCalledTimes(1);
expect(updateSetting).toHaveBeenCalledWith('theme', 'LIGHT');
@@ -90,32 +94,35 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => {
);
});
+ // Zoom Out
await act(async () => {
- fireEvent.click(screen.getByTestId('settings-zoom-out'));
+ await userEvent.click(screen.getByTestId('settings-zoom-out'));
await zoomTimeout();
- });
- expect(updateSetting).toHaveBeenCalledTimes(1);
- expect(updateSetting).toHaveBeenCalledWith('zoomPercentage', 90);
+ expect(updateSetting).toHaveBeenCalledTimes(1);
+ expect(updateSetting).toHaveBeenCalledWith('zoomPercentage', 90);
+ });
await act(async () => {
- fireEvent.click(screen.getByTestId('settings-zoom-out'));
+ await userEvent.click(screen.getByTestId('settings-zoom-out'));
await zoomTimeout();
expect(updateSetting).toHaveBeenCalledTimes(2);
expect(updateSetting).toHaveBeenNthCalledWith(2, 'zoomPercentage', 80);
});
+ // Zoom In
await act(async () => {
- fireEvent.click(screen.getByTestId('settings-zoom-in'));
+ await userEvent.click(screen.getByTestId('settings-zoom-in'));
await zoomTimeout();
expect(updateSetting).toHaveBeenCalledTimes(3);
expect(updateSetting).toHaveBeenNthCalledWith(3, 'zoomPercentage', 90);
});
+ // Zoom Reset
await act(async () => {
- fireEvent.click(screen.getByTestId('settings-zoom-reset'));
+ await userEvent.click(screen.getByTestId('settings-zoom-reset'));
await zoomTimeout();
expect(updateSetting).toHaveBeenCalledTimes(4);
@@ -142,7 +149,7 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-showAccountHeader'));
+ await userEvent.click(screen.getByTestId('checkbox-showAccountHeader'));
expect(updateSetting).toHaveBeenCalledTimes(1);
expect(updateSetting).toHaveBeenCalledWith('showAccountHeader', true);
@@ -167,7 +174,7 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-wrapNotificationTitle'));
+ await userEvent.click(screen.getByTestId('checkbox-wrapNotificationTitle'));
expect(updateSetting).toHaveBeenCalledTimes(1);
expect(updateSetting).toHaveBeenCalledWith('wrapNotificationTitle', true);
diff --git a/src/renderer/components/settings/NotificationSettings.test.tsx b/src/renderer/components/settings/NotificationSettings.test.tsx
index 329d447e3..23ee6107b 100644
--- a/src/renderer/components/settings/NotificationSettings.test.tsx
+++ b/src/renderer/components/settings/NotificationSettings.test.tsx
@@ -1,5 +1,7 @@
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { act, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAuth, mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
import * as comms from '../../utils/comms';
@@ -29,7 +31,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('radio-groupBy-date'));
+ await userEvent.click(screen.getByTestId('radio-groupBy-date'));
expect(updateSetting).toHaveBeenCalledTimes(1);
expect(updateSetting).toHaveBeenCalledWith('groupBy', 'DATE');
@@ -52,9 +54,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-fetchAllNotifications'), {
- target: { checked: true },
- });
+ await userEvent.click(screen.getByTestId('checkbox-fetchAllNotifications'));
expect(updateSetting).toHaveBeenCalledTimes(1);
expect(updateSetting).toHaveBeenCalledWith('fetchAllNotifications', false);
@@ -77,7 +77,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-detailedNotifications'));
+ await userEvent.click(screen.getByTestId('checkbox-detailedNotifications'));
expect(updateSetting).toHaveBeenCalledTimes(1);
expect(updateSetting).toHaveBeenCalledWith('detailedNotifications', false);
@@ -100,7 +100,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-showPills'));
+ await userEvent.click(screen.getByTestId('checkbox-showPills'));
expect(updateSetting).toHaveBeenCalledTimes(1);
expect(updateSetting).toHaveBeenCalledWith('showPills', false);
@@ -123,7 +123,7 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-showNumber'));
+ await userEvent.click(screen.getByTestId('checkbox-showNumber'));
expect(updateSetting).toHaveBeenCalledTimes(1);
expect(updateSetting).toHaveBeenCalledWith('showNumber', false);
@@ -146,12 +146,10 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-showOnlyParticipating'), {
- target: { checked: true },
- });
+ await userEvent.click(screen.getByTestId('checkbox-showOnlyParticipating'));
expect(updateSetting).toHaveBeenCalledTimes(1);
- expect(updateSetting).toHaveBeenCalledWith('participating', false);
+ expect(updateSetting).toHaveBeenCalledWith('participating', true);
});
it('should open official docs for showOnlyParticipating tooltip', async () => {
@@ -179,9 +177,8 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
'tooltip-showOnlyParticipating',
);
- fireEvent.mouseEnter(tooltipElement);
-
- fireEvent.click(
+ await userEvent.hover(tooltipElement);
+ await userEvent.click(
screen.getByTitle(
'Open GitHub documentation for participating and watching notifications',
),
@@ -210,12 +207,10 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-markAsDoneOnOpen'), {
- target: { checked: true },
- });
+ await userEvent.click(screen.getByTestId('checkbox-markAsDoneOnOpen'));
expect(updateSetting).toHaveBeenCalledTimes(1);
- expect(updateSetting).toHaveBeenCalledWith('markAsDoneOnOpen', false);
+ expect(updateSetting).toHaveBeenCalledWith('markAsDoneOnOpen', true);
});
it('should toggle the markAsDoneOnUnsubscribe checkbox', async () => {
@@ -235,15 +230,12 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-markAsDoneOnUnsubscribe'), {
- target: { checked: true },
- });
+ await userEvent.click(
+ screen.getByTestId('checkbox-markAsDoneOnUnsubscribe'),
+ );
expect(updateSetting).toHaveBeenCalledTimes(1);
- expect(updateSetting).toHaveBeenCalledWith(
- 'markAsDoneOnUnsubscribe',
- false,
- );
+ expect(updateSetting).toHaveBeenCalledWith('markAsDoneOnUnsubscribe', true);
});
it('should toggle the delayNotificationState checkbox', async () => {
@@ -263,11 +255,11 @@ describe('renderer/components/settings/NotificationSettings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('checkbox-delayNotificationState'), {
- target: { checked: true },
- });
+ await userEvent.click(
+ screen.getByTestId('checkbox-delayNotificationState'),
+ );
expect(updateSetting).toHaveBeenCalledTimes(1);
- expect(updateSetting).toHaveBeenCalledWith('delayNotificationState', false);
+ expect(updateSetting).toHaveBeenCalledWith('delayNotificationState', true);
});
});
diff --git a/src/renderer/components/settings/SettingsFooter.test.tsx b/src/renderer/components/settings/SettingsFooter.test.tsx
index cf5c7fa85..f267b6738 100644
--- a/src/renderer/components/settings/SettingsFooter.test.tsx
+++ b/src/renderer/components/settings/SettingsFooter.test.tsx
@@ -1,5 +1,7 @@
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { act, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAuth, mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
import * as comms from '../../utils/comms';
@@ -98,7 +100,7 @@ describe('renderer/components/settings/SettingsFooter.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('settings-release-notes'));
+ await userEvent.click(screen.getByTestId('settings-release-notes'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
@@ -122,7 +124,7 @@ describe('renderer/components/settings/SettingsFooter.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('settings-accounts'));
+ await userEvent.click(screen.getByTestId('settings-accounts'));
expect(mockNavigate).toHaveBeenCalledWith('/accounts');
});
@@ -145,7 +147,7 @@ describe('renderer/components/settings/SettingsFooter.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('settings-quit'));
+ await userEvent.click(screen.getByTestId('settings-quit'));
expect(quitAppMock).toHaveBeenCalledTimes(1);
});
diff --git a/src/renderer/components/settings/SettingsReset.test.tsx b/src/renderer/components/settings/SettingsReset.test.tsx
index 0293e5e38..471dacbb3 100644
--- a/src/renderer/components/settings/SettingsReset.test.tsx
+++ b/src/renderer/components/settings/SettingsReset.test.tsx
@@ -1,5 +1,7 @@
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { act, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAuth, mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
import { SettingsReset } from './SettingsReset';
@@ -30,8 +32,8 @@ describe('renderer/components/settings/SettingsReset.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('settings-reset'));
- fireEvent.click(screen.getByText('Reset'));
+ await userEvent.click(screen.getByTestId('settings-reset'));
+ await userEvent.click(screen.getByText('Reset'));
expect(resetSettings).toHaveBeenCalled();
});
@@ -55,8 +57,8 @@ describe('renderer/components/settings/SettingsReset.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('settings-reset'));
- fireEvent.click(screen.getByText('Cancel'));
+ await userEvent.click(screen.getByTestId('settings-reset'));
+ await userEvent.click(screen.getByText('Cancel'));
expect(resetSettings).not.toHaveBeenCalled();
});
diff --git a/src/renderer/context/App.test.tsx b/src/renderer/context/App.test.tsx
index 237117517..b9f09513f 100644
--- a/src/renderer/context/App.test.tsx
+++ b/src/renderer/context/App.test.tsx
@@ -1,5 +1,6 @@
import { act, fireEvent, render, waitFor } from '@testing-library/react';
import { useContext } from 'react';
+
import { mockAuth, mockSettings } from '../__mocks__/state-mocks';
import { useNotifications } from '../hooks/useNotifications';
import type { AuthState, Hostname, SettingsState, Token } from '../types';
diff --git a/src/renderer/routes/Accounts.test.tsx b/src/renderer/routes/Accounts.test.tsx
index e3ed4afbc..b94c1fc0a 100644
--- a/src/renderer/routes/Accounts.test.tsx
+++ b/src/renderer/routes/Accounts.test.tsx
@@ -1,13 +1,7 @@
-import {
- act,
- fireEvent,
- render,
- screen,
- waitFor,
-} from '@testing-library/react';
-import { MemoryRouter } from 'react-router-dom';
-
import { BaseStyles, ThemeProvider } from '@primer/react';
+import { act, render, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
+import { MemoryRouter } from 'react-router-dom';
import {
mockAuth,
@@ -76,7 +70,7 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('header-nav-back'));
+ await userEvent.click(screen.getByTestId('header-nav-back'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, -1);
});
@@ -105,7 +99,7 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('account-profile'));
+ await userEvent.click(screen.getByTestId('account-profile'));
expect(openAccountProfileMock).toHaveBeenCalledTimes(1);
expect(openAccountProfileMock).toHaveBeenCalledWith(
@@ -135,7 +129,7 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('account-host'));
+ await userEvent.click(screen.getByTestId('account-host'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith('https://github.com');
@@ -163,7 +157,7 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('account-developer-settings'));
+ await userEvent.click(screen.getByTestId('account-developer-settings'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
@@ -202,7 +196,7 @@ describe('renderer/routes/Accounts.tsx', () => {
expect(screen.getByTestId('accounts')).toMatchSnapshot();
- fireEvent.click(screen.getAllByTestId('account-missing-scopes')[0]);
+ await userEvent.click(screen.getAllByTestId('account-missing-scopes')[0]);
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
expect(openExternalLinkMock).toHaveBeenCalledWith(
@@ -238,7 +232,7 @@ describe('renderer/routes/Accounts.tsx', () => {
expect(screen.getByTestId('accounts')).toMatchSnapshot();
- fireEvent.click(screen.getAllByTestId('account-set-primary')[0]);
+ await userEvent.click(screen.getAllByTestId('account-set-primary')[0]);
expect(saveStateMock).toHaveBeenCalled();
});
@@ -263,7 +257,7 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('account-refresh'));
+ await userEvent.click(screen.getByTestId('account-refresh'));
expect(apiRequestAuthMock).toHaveBeenCalledTimes(1);
expect(apiRequestAuthMock).toHaveBeenCalledWith(
@@ -301,10 +295,9 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('account-logout'));
+ await userEvent.click(screen.getByTestId('account-logout'));
expect(logoutFromAccountMock).toHaveBeenCalledTimes(1);
-
expect(updateTrayIconMock).toHaveBeenCalledTimes(1);
expect(updateTrayIconMock).toHaveBeenCalledWith();
expect(updateTrayTitleMock).toHaveBeenCalledTimes(1);
@@ -337,8 +330,8 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('account-add-new'));
- fireEvent.click(screen.getByTestId('account-add-github'));
+ await userEvent.click(screen.getByTestId('account-add-new'));
+ await userEvent.click(screen.getByTestId('account-add-github'));
expect(mockLoginWithGitHubApp).toHaveBeenCalled();
});
@@ -363,8 +356,8 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('account-add-new'));
- fireEvent.click(screen.getByTestId('account-add-pat'));
+ await userEvent.click(screen.getByTestId('account-add-new'));
+ await userEvent.click(screen.getByTestId('account-add-pat'));
expect(mockNavigate).toHaveBeenNthCalledWith(
1,
@@ -395,8 +388,8 @@ describe('renderer/routes/Accounts.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('account-add-new'));
- fireEvent.click(screen.getByTestId('account-add-oauth-app'));
+ await userEvent.click(screen.getByTestId('account-add-new'));
+ await userEvent.click(screen.getByTestId('account-add-oauth-app'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/login-oauth-app', {
replace: true,
diff --git a/src/renderer/routes/Filters.test.tsx b/src/renderer/routes/Filters.test.tsx
index 982fb9e62..25b6ba782 100644
--- a/src/renderer/routes/Filters.test.tsx
+++ b/src/renderer/routes/Filters.test.tsx
@@ -1,5 +1,7 @@
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { act, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAuth, mockSettings } from '../__mocks__/state-mocks';
import { AppContext } from '../context/App';
import { FiltersRoute } from './Filters';
@@ -57,7 +59,8 @@ describe('renderer/routes/Filters.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('header-nav-back'));
+ await userEvent.click(screen.getByTestId('header-nav-back'));
+
expect(fetchNotifications).toHaveBeenCalledTimes(1);
expect(mockNavigate).toHaveBeenNthCalledWith(1, -1);
});
@@ -82,7 +85,7 @@ describe('renderer/routes/Filters.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('filters-clear'));
+ await userEvent.click(screen.getByTestId('filters-clear'));
expect(clearFilters).toHaveBeenCalled();
});
diff --git a/src/renderer/routes/Login.test.tsx b/src/renderer/routes/Login.test.tsx
index 5f83e6c32..ebe226cde 100644
--- a/src/renderer/routes/Login.test.tsx
+++ b/src/renderer/routes/Login.test.tsx
@@ -1,5 +1,7 @@
-import { fireEvent, render, screen } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { AppContext } from '../context/App';
import * as comms from '../utils/comms';
import { LoginRoute } from './Login';
@@ -48,7 +50,7 @@ describe('renderer/routes/Login.tsx', () => {
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true });
});
- it('should login with github', () => {
+ it('should login with github', async () => {
const mockLoginWithGitHubApp = jest.fn();
render(
{
,
);
- fireEvent.click(screen.getByTestId('login-github'));
+ await userEvent.click(screen.getByTestId('login-github'));
expect(mockLoginWithGitHubApp).toHaveBeenCalled();
});
- it('should navigate to login with personal access token', () => {
+ it('should navigate to login with personal access token', async () => {
render(
,
);
- fireEvent.click(screen.getByTestId('login-pat'));
+ await userEvent.click(screen.getByTestId('login-pat'));
expect(mockNavigate).toHaveBeenNthCalledWith(
1,
@@ -83,14 +85,14 @@ describe('renderer/routes/Login.tsx', () => {
);
});
- it('should navigate to login with oauth app', () => {
+ it('should navigate to login with oauth app', async () => {
render(
,
);
- fireEvent.click(screen.getByTestId('login-oauth-app'));
+ await userEvent.click(screen.getByTestId('login-oauth-app'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/login-oauth-app');
});
diff --git a/src/renderer/routes/LoginWithOAuthApp.test.tsx b/src/renderer/routes/LoginWithOAuthApp.test.tsx
index b1d79e982..598e8821c 100644
--- a/src/renderer/routes/LoginWithOAuthApp.test.tsx
+++ b/src/renderer/routes/LoginWithOAuthApp.test.tsx
@@ -1,5 +1,7 @@
-import { fireEvent, render, screen, waitFor } from '@testing-library/react';
+import { render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { AppContext } from '../context/App';
import type { AuthState, ClientID, ClientSecret, Hostname } from '../types';
import * as comms from '../utils/comms';
@@ -38,7 +40,7 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => {
expect(tree).toMatchSnapshot();
});
- it('let us go back', () => {
+ it('let us go back', async () => {
render(
@@ -47,7 +49,7 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('header-nav-back'));
+ await userEvent.click(screen.getByTestId('header-nav-back'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, -1);
});
@@ -89,11 +91,9 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => {
,
);
- fireEvent.change(screen.getByTestId('login-hostname'), {
- target: { value: '' },
- });
+ await userEvent.clear(screen.getByTestId('login-hostname'));
- fireEvent.click(screen.getByTestId('login-create-oauth-app'));
+ await userEvent.click(screen.getByTestId('login-create-oauth-app'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(0);
});
@@ -107,11 +107,11 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => {
,
);
- fireEvent.change(screen.getByTestId('login-hostname'), {
- target: { value: 'company.github.com' },
- });
+ const hostname = screen.getByTestId('login-hostname');
+ await userEvent.clear(hostname);
+ await userEvent.type(hostname, 'company.github.com');
- fireEvent.click(screen.getByTestId('login-create-oauth-app'));
+ await userEvent.click(screen.getByTestId('login-create-oauth-app'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
});
@@ -132,25 +132,27 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => {
,
);
- fireEvent.change(screen.getByTestId('login-hostname'), {
- target: { value: 'github.com' },
- });
- fireEvent.change(screen.getByTestId('login-clientId'), {
- target: { value: '1234567890_ASDFGHJKL' },
- });
- fireEvent.change(screen.getByTestId('login-clientSecret'), {
- target: { value: '1234567890_asdfghjklPOIUYTREWQ0987654321' },
- });
+ const hostname = screen.getByTestId('login-hostname');
+ await userEvent.clear(hostname);
+ await userEvent.type(hostname, 'github.com');
+
+ await userEvent.type(
+ screen.getByTestId('login-clientId'),
+ '1234567890_ASDFGHJKL',
+ );
- fireEvent.click(screen.getByTestId('login-submit'));
+ await userEvent.type(
+ screen.getByTestId('login-clientSecret'),
+ '1234567890_asdfghjklPOIUYTREWQ0987654321',
+ );
- await waitFor(() => expect(mockLoginWithOAuthApp).toHaveBeenCalledTimes(1));
+ await userEvent.click(screen.getByTestId('login-submit'));
expect(mockLoginWithOAuthApp).toHaveBeenCalledTimes(1);
expect(mockNavigate).toHaveBeenNthCalledWith(1, -1);
});
- it('should render the form with errors', () => {
+ it('should render the form with errors', async () => {
render(
@@ -159,22 +161,22 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => {
,
);
- fireEvent.change(screen.getByTestId('login-hostname'), {
- target: { value: 'test' },
- });
- fireEvent.change(screen.getByTestId('login-clientId'), {
- target: { value: '123' },
- });
- fireEvent.change(screen.getByTestId('login-clientSecret'), {
- target: { value: 'abc' },
- });
+ const hostname = screen.getByTestId('login-hostname');
+ await userEvent.clear(hostname);
+ await userEvent.type(hostname, 'test');
+
+ await userEvent.type(screen.getByTestId('login-clientId'), '123');
+
+ await userEvent.type(screen.getByTestId('login-clientSecret'), 'abc');
- fireEvent.click(screen.getByTestId('login-submit'));
+ await userEvent.click(screen.getByTestId('login-submit'));
- expect(screen.getByTestId('login-errors')).toBeTruthy();
- expect(screen.getByText('Hostname format is invalid')).toBeTruthy();
- expect(screen.getByText('Client ID format is invalid')).toBeTruthy();
- expect(screen.getByText('Client Secret format is invalid')).toBeTruthy();
+ expect(screen.getByTestId('login-errors')).toBeInTheDocument();
+ expect(screen.getByText('Hostname format is invalid')).toBeInTheDocument();
+ expect(screen.getByText('Client ID format is invalid')).toBeInTheDocument();
+ expect(
+ screen.getByText('Client Secret format is invalid'),
+ ).toBeInTheDocument();
});
it('should open help docs in the browser', async () => {
@@ -186,7 +188,7 @@ describe('renderer/routes/LoginWithOAuthApp.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('login-docs'));
+ await userEvent.click(screen.getByTestId('login-docs'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
});
diff --git a/src/renderer/routes/LoginWithPersonalAccessToken.test.tsx b/src/renderer/routes/LoginWithPersonalAccessToken.test.tsx
index a797413f8..59c54093c 100644
--- a/src/renderer/routes/LoginWithPersonalAccessToken.test.tsx
+++ b/src/renderer/routes/LoginWithPersonalAccessToken.test.tsx
@@ -1,5 +1,7 @@
-import { fireEvent, render, screen, waitFor } from '@testing-library/react';
+import { render, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { AppContext } from '../context/App';
import * as comms from '../utils/comms';
import {
@@ -33,14 +35,14 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => {
expect(tree).toMatchSnapshot();
});
- it('let us go back', () => {
+ it('let us go back', async () => {
render(
,
);
- fireEvent.click(screen.getByTestId('header-nav-back'));
+ await userEvent.click(screen.getByTestId('header-nav-back'));
expect(mockNavigate).toHaveBeenNthCalledWith(1, -1);
});
@@ -80,11 +82,9 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => {
,
);
- fireEvent.change(screen.getByTestId('login-hostname'), {
- target: { value: '' },
- });
+ await userEvent.clear(screen.getByTestId('login-hostname'));
- fireEvent.click(screen.getByTestId('login-create-token'));
+ await userEvent.click(screen.getByTestId('login-create-token'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(0);
});
@@ -102,7 +102,7 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('login-create-token'));
+ await userEvent.click(screen.getByTestId('login-create-token'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
});
@@ -123,15 +123,16 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => {
,
);
- fireEvent.change(screen.getByTestId('login-hostname'), {
- target: { value: 'github.com' },
- });
+ const hostname = screen.getByTestId('login-hostname');
+ await userEvent.clear(hostname);
+ await userEvent.type(hostname, 'github.com');
- fireEvent.change(screen.getByTestId('login-token'), {
- target: { value: '1234567890123456789012345678901234567890' },
- });
+ await userEvent.type(
+ screen.getByTestId('login-token'),
+ '1234567890123456789012345678901234567890',
+ );
- fireEvent.click(screen.getByTestId('login-submit'));
+ await userEvent.click(screen.getByTestId('login-submit'));
await waitFor(() =>
expect(mockLoginWithPersonalAccessToken).toHaveBeenCalledTimes(1),
@@ -156,15 +157,16 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => {
,
);
- fireEvent.change(screen.getByTestId('login-hostname'), {
- target: { value: 'github.com' },
- });
+ const hostname = screen.getByTestId('login-hostname');
+ await userEvent.clear(hostname);
+ await userEvent.type(hostname, 'github.com');
- fireEvent.change(screen.getByTestId('login-token'), {
- target: { value: '1234567890123456789012345678901234567890' },
- });
+ await userEvent.type(
+ screen.getByTestId('login-token'),
+ '1234567890123456789012345678901234567890',
+ );
- fireEvent.click(screen.getByTestId('login-submit'));
+ await userEvent.click(screen.getByTestId('login-submit'));
await waitFor(() =>
expect(mockLoginWithPersonalAccessToken).toHaveBeenCalledTimes(1),
@@ -174,25 +176,24 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => {
expect(mockNavigate).toHaveBeenCalledTimes(0);
});
- it('should render the form with errors', () => {
+ it('should render the form with errors', async () => {
render(
,
);
- fireEvent.change(screen.getByTestId('login-hostname'), {
- target: { value: 'test' },
- });
- fireEvent.change(screen.getByTestId('login-token'), {
- target: { value: '123' },
- });
+ const hostname = screen.getByTestId('login-hostname');
+ await userEvent.clear(hostname);
+ await userEvent.type(hostname, 'test');
+
+ await userEvent.type(screen.getByTestId('login-token'), '123');
- fireEvent.click(screen.getByTestId('login-submit'));
+ await userEvent.click(screen.getByTestId('login-submit'));
- expect(screen.getByTestId('login-errors')).toBeTruthy();
- expect(screen.getByText('Hostname format is invalid')).toBeTruthy();
- expect(screen.getByText('Token format is invalid')).toBeTruthy();
+ expect(screen.getByTestId('login-errors')).toBeInTheDocument();
+ expect(screen.getByText('Hostname format is invalid')).toBeInTheDocument();
+ expect(screen.getByText('Token format is invalid')).toBeInTheDocument();
});
it('should open help docs in the browser', async () => {
@@ -208,7 +209,7 @@ describe('renderer/routes/LoginWithPersonalAccessToken.tsx', () => {
,
);
- fireEvent.click(screen.getByTestId('login-docs'));
+ await userEvent.click(screen.getByTestId('login-docs'));
expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
});
diff --git a/src/renderer/routes/Notifications.test.tsx b/src/renderer/routes/Notifications.test.tsx
index f18b7c416..0c5f83e65 100644
--- a/src/renderer/routes/Notifications.test.tsx
+++ b/src/renderer/routes/Notifications.test.tsx
@@ -1,4 +1,5 @@
import { render } from '@testing-library/react';
+
import { mockAccountNotifications } from '../__mocks__/notifications-mocks';
import { mockSettings } from '../__mocks__/state-mocks';
import { AppContext } from '../context/App';
diff --git a/src/renderer/routes/Settings.test.tsx b/src/renderer/routes/Settings.test.tsx
index 6cbe069d3..cbba9861d 100644
--- a/src/renderer/routes/Settings.test.tsx
+++ b/src/renderer/routes/Settings.test.tsx
@@ -1,5 +1,7 @@
-import { act, fireEvent, render, screen } from '@testing-library/react';
+import { act, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+
import { mockAuth, mockSettings } from '../__mocks__/state-mocks';
import { AppContext } from '../context/App';
import { SettingsRoute } from './Settings';
@@ -48,7 +50,8 @@ describe('renderer/routes/Settings.tsx', () => {
);
});
- fireEvent.click(screen.getByTestId('header-nav-back'));
+ await userEvent.click(screen.getByTestId('header-nav-back'));
+
expect(fetchNotifications).toHaveBeenCalledTimes(1);
expect(mockNavigate).toHaveBeenNthCalledWith(1, -1);
});
diff --git a/src/renderer/utils/api/client.test.ts b/src/renderer/utils/api/client.test.ts
index f7b9acbd2..0edf752db 100644
--- a/src/renderer/utils/api/client.test.ts
+++ b/src/renderer/utils/api/client.test.ts
@@ -1,4 +1,5 @@
import axios, { type AxiosPromise, type AxiosResponse } from 'axios';
+
import * as logger from '../../../shared/logger';
import {
mockGitHubCloudAccount,
diff --git a/src/renderer/utils/api/errors.test.ts b/src/renderer/utils/api/errors.test.ts
index 321003ffc..da440b18e 100644
--- a/src/renderer/utils/api/errors.test.ts
+++ b/src/renderer/utils/api/errors.test.ts
@@ -1,4 +1,5 @@
import { AxiosError, type AxiosResponse } from 'axios';
+
import type { Link } from '../../types';
import type { GitHubRESTError } from '../../typesGitHub';
import { Errors } from '../errors';
diff --git a/src/renderer/utils/api/request.test.ts b/src/renderer/utils/api/request.test.ts
index 13cca1661..fcc1785f9 100644
--- a/src/renderer/utils/api/request.test.ts
+++ b/src/renderer/utils/api/request.test.ts
@@ -1,4 +1,5 @@
import axios from 'axios';
+
import type { Link, Token } from '../../types';
import { apiRequest, apiRequestAuth } from './request';
diff --git a/src/renderer/utils/api/utils.test.ts b/src/renderer/utils/api/utils.test.ts
index 1c4df5505..9435c95cc 100644
--- a/src/renderer/utils/api/utils.test.ts
+++ b/src/renderer/utils/api/utils.test.ts
@@ -1,4 +1,5 @@
import type { AxiosResponse } from 'axios';
+
import type { Hostname } from '../../types';
import {
getGitHubAPIBaseUrl,
diff --git a/src/renderer/utils/auth/utils.test.ts b/src/renderer/utils/auth/utils.test.ts
index 9e38b5ff6..276e7d89f 100644
--- a/src/renderer/utils/auth/utils.test.ts
+++ b/src/renderer/utils/auth/utils.test.ts
@@ -2,6 +2,7 @@ import axios from 'axios';
import type { AxiosPromise, AxiosResponse } from 'axios';
import { ipcRenderer } from 'electron';
import nock from 'nock';
+
import {
mockAuth,
mockGitHubCloudAccount,
diff --git a/src/renderer/utils/helpers.test.ts b/src/renderer/utils/helpers.test.ts
index ffaa1e939..77c702927 100644
--- a/src/renderer/utils/helpers.test.ts
+++ b/src/renderer/utils/helpers.test.ts
@@ -1,13 +1,12 @@
-import type { AxiosPromise, AxiosResponse } from 'axios';
-import { mockPersonalAccessTokenAccount } from '../__mocks__/state-mocks';
-
import {
ChevronDownIcon,
ChevronLeftIcon,
ChevronRightIcon,
} from '@primer/octicons-react';
+import type { AxiosPromise, AxiosResponse } from 'axios';
import * as logger from '../../shared/logger';
+import { mockPersonalAccessTokenAccount } from '../__mocks__/state-mocks';
import type { Hostname, Link } from '../types';
import type { SubjectType } from '../typesGitHub';
import {
diff --git a/src/renderer/utils/icons.test.ts b/src/renderer/utils/icons.test.ts
index c037d27f5..12a57331a 100644
--- a/src/renderer/utils/icons.test.ts
+++ b/src/renderer/utils/icons.test.ts
@@ -6,6 +6,7 @@ import {
MarkGithubIcon,
OrganizationIcon,
} from '@primer/octicons-react';
+
import { IconColor } from '../types';
import type {
GitifyPullRequestReview,