diff --git a/src/main/updater.test.ts b/src/main/updater.test.ts
index 7c460aa09..fc858ff48 100644
--- a/src/main/updater.test.ts
+++ b/src/main/updater.test.ts
@@ -205,12 +205,12 @@ describe('main/updater.ts', () => {
});
it('performs initial check and schedules periodic checks', async () => {
- const originalSetInterval = global.setInterval;
+ const originalSetInterval = globalThis.setInterval;
const setIntervalSpy = jest
- .spyOn(global, 'setInterval')
+ .spyOn(globalThis, 'setInterval')
.mockImplementation(((fn: () => void) => {
fn();
- return 0 as unknown as NodeJS.Timer;
+ return 0 as unknown as NodeJS.Timeout;
}) as unknown as typeof setInterval);
try {
await updater.start();
@@ -224,7 +224,7 @@ describe('main/updater.ts', () => {
);
} finally {
setIntervalSpy.mockRestore();
- global.setInterval = originalSetInterval;
+ globalThis.setInterval = originalSetInterval;
}
});
});
diff --git a/src/renderer/__helpers__/test-utils.tsx b/src/renderer/__helpers__/test-utils.tsx
new file mode 100644
index 000000000..f26f9223f
--- /dev/null
+++ b/src/renderer/__helpers__/test-utils.tsx
@@ -0,0 +1,76 @@
+import { render } from '@testing-library/react';
+import type { ReactElement, ReactNode } from 'react';
+import { useMemo } from 'react';
+
+import { BaseStyles, ThemeProvider } from '@primer/react';
+
+import { mockAuth, mockSettings } from '../__mocks__/state-mocks';
+import type { AppContextState } from '../context/App';
+import { AppContext } from '../context/App';
+
+/**
+ * Props for the AppContextProvider wrapper
+ */
+interface AppContextProviderProps {
+ readonly children: ReactNode;
+ readonly value?: Partial;
+}
+
+/**
+ * Wrapper component that provides ThemeProvider, BaseStyles, and AppContext
+ * with sensible defaults for testing.
+ */
+export function AppContextProvider({
+ children,
+ value = {},
+}: AppContextProviderProps) {
+ const defaultValue: Partial = useMemo(() => {
+ return {
+ auth: mockAuth,
+ settings: mockSettings,
+
+ notifications: [],
+
+ status: 'success',
+ globalError: null,
+
+ ...value,
+ } as Partial;
+ }, [value]);
+
+ return (
+
+
+
+ {children}
+
+
+
+ );
+}
+
+/**
+ * Custom render that wraps components with AppContextProvider by default.
+ *
+ * Usage:
+ * renderWithAppContext( , { auth, settings, ... })
+ */
+export function renderWithAppContext(
+ ui: ReactElement,
+ context: Partial = {},
+) {
+ const value: Partial = { ...context };
+
+ return render(ui, {
+ wrapper: ({ children }) => (
+ {children}
+ ),
+ });
+}
+
+/**
+ * Ensure stable snapshots for our randomized emoji use-cases
+ */
+export function ensureStableEmojis() {
+ global.Math.random = jest.fn(() => 0.1);
+}
diff --git a/src/renderer/__mocks__/account-mocks.ts b/src/renderer/__mocks__/account-mocks.ts
new file mode 100644
index 000000000..5e104f4ca
--- /dev/null
+++ b/src/renderer/__mocks__/account-mocks.ts
@@ -0,0 +1,63 @@
+import { Constants } from '../constants';
+import type {
+ Account,
+ AccountNotifications,
+ GitifyError,
+ Hostname,
+ Token,
+} from '../types';
+import { mockGitifyUser } from './user-mocks';
+
+export const mockPersonalAccessTokenAccount: Account = {
+ platform: 'GitHub Cloud',
+ method: 'Personal Access Token',
+ token: 'token-123-456' as Token,
+ hostname: Constants.DEFAULT_AUTH_OPTIONS.hostname,
+ user: mockGitifyUser,
+ hasRequiredScopes: true,
+};
+
+export const mockOAuthAccount: Account = {
+ platform: 'GitHub Enterprise Server',
+ method: 'OAuth App',
+ token: '1234568790' as Token,
+ hostname: 'github.gitify.io' as Hostname,
+ user: mockGitifyUser,
+ hasRequiredScopes: true,
+};
+
+export const mockGitHubCloudAccount: Account = {
+ platform: 'GitHub Cloud',
+ method: 'Personal Access Token',
+ token: 'token-123-456' as Token,
+ hostname: Constants.DEFAULT_AUTH_OPTIONS.hostname,
+ user: mockGitifyUser,
+ version: 'latest',
+ hasRequiredScopes: true,
+};
+
+export const mockGitHubEnterpriseServerAccount: Account = {
+ platform: 'GitHub Enterprise Server',
+ method: 'Personal Access Token',
+ token: '1234568790' as Token,
+ hostname: 'github.gitify.io' as Hostname,
+ user: mockGitifyUser,
+ hasRequiredScopes: true,
+};
+
+export const mockGitHubAppAccount: Account = {
+ platform: 'GitHub Cloud',
+ method: 'GitHub App',
+ token: '987654321' as Token,
+ hostname: Constants.DEFAULT_AUTH_OPTIONS.hostname,
+ user: mockGitifyUser,
+ hasRequiredScopes: true,
+};
+
+export function mockAccountWithError(error: GitifyError): AccountNotifications {
+ return {
+ account: mockGitHubCloudAccount,
+ notifications: [],
+ error,
+ };
+}
diff --git a/src/renderer/__mocks__/notifications-mocks.ts b/src/renderer/__mocks__/notifications-mocks.ts
index f4dadb94b..7b678e777 100644
--- a/src/renderer/__mocks__/notifications-mocks.ts
+++ b/src/renderer/__mocks__/notifications-mocks.ts
@@ -1,6 +1,8 @@
-import type { AccountNotifications, GitifyError } from '../types';
+import { Constants } from '../constants';
+import type { AccountNotifications, Hostname } from '../types';
import type {
Notification,
+ Repository,
StateType,
Subject,
SubjectType,
@@ -13,30 +15,11 @@ import {
import {
mockGitHubCloudAccount,
mockGitHubEnterpriseServerAccount,
-} from './state-mocks';
+} from './account-mocks';
+import { mockToken } from './state-mocks';
+import { mockGitifyUser } from './user-mocks';
-export const mockAccountNotifications: AccountNotifications[] = [
- {
- account: mockGitHubCloudAccount,
- notifications: mockGitHubNotifications,
- error: null,
- },
- {
- account: mockGitHubEnterpriseServerAccount,
- notifications: mockEnterpriseNotifications,
- error: null,
- },
-];
-
-export const mockSingleAccountNotifications: AccountNotifications[] = [
- {
- account: mockGitHubCloudAccount,
- notifications: [mockSingleNotification],
- error: null,
- },
-];
-
-export function createSubjectMock(mocks: {
+export function createMockSubject(mocks: {
title?: string;
type?: SubjectType;
state?: StateType;
@@ -50,12 +33,24 @@ export function createSubjectMock(mocks: {
};
}
-export function mockAccountWithError(error: GitifyError): AccountNotifications {
- return {
- account: mockGitHubCloudAccount,
- notifications: [],
- error,
+export function createPartialMockNotification(
+ subject: Partial,
+ repository?: Partial,
+): Notification {
+ const mockNotification: Partial = {
+ account: {
+ method: 'Personal Access Token',
+ platform: 'GitHub Cloud',
+ hostname: Constants.GITHUB_API_BASE_URL as Hostname,
+ token: mockToken,
+ user: mockGitifyUser,
+ hasRequiredScopes: true,
+ },
+ subject: subject as Subject,
+ repository: repository as Repository,
};
+
+ return mockNotification as Notification;
}
export function createMockNotificationForRepoName(
@@ -68,3 +63,24 @@ export function createMockNotificationForRepoName(
account: mockGitHubCloudAccount,
} as Notification;
}
+
+export const mockAccountNotifications: AccountNotifications[] = [
+ {
+ account: mockGitHubCloudAccount,
+ notifications: mockGitHubNotifications,
+ error: null,
+ },
+ {
+ account: mockGitHubEnterpriseServerAccount,
+ notifications: mockEnterpriseNotifications,
+ error: null,
+ },
+];
+
+export const mockSingleAccountNotifications: AccountNotifications[] = [
+ {
+ account: mockGitHubCloudAccount,
+ notifications: [mockSingleNotification],
+ error: null,
+ },
+];
diff --git a/src/renderer/__mocks__/partial-mocks.ts b/src/renderer/__mocks__/partial-mocks.ts
deleted file mode 100644
index d40b01e73..000000000
--- a/src/renderer/__mocks__/partial-mocks.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Constants } from '../constants';
-import type { Hostname, Link } from '../types';
-import type { Notification, Repository, Subject, User } from '../typesGitHub';
-import { mockGitifyUser, mockToken } from './state-mocks';
-
-export function partialMockNotification(
- subject: Partial,
- repository?: Partial,
-): Notification {
- const mockNotification: Partial = {
- account: {
- method: 'Personal Access Token',
- platform: 'GitHub Cloud',
- hostname: Constants.GITHUB_API_BASE_URL as Hostname,
- token: mockToken,
- user: mockGitifyUser,
- hasRequiredScopes: true,
- },
- subject: subject as Subject,
- repository: repository as Repository,
- };
-
- return mockNotification as Notification;
-}
-
-export function partialMockUser(login: string): User {
- const mockUser: Partial = {
- login: login,
- html_url: `https://github.com/${login}` as Link,
- avatar_url: 'https://avatars.githubusercontent.com/u/583231?v=4' as Link,
- type: 'User',
- };
-
- return mockUser as User;
-}
diff --git a/src/renderer/__mocks__/state-mocks.ts b/src/renderer/__mocks__/state-mocks.ts
index 5dcf04044..63ad1f1c0 100644
--- a/src/renderer/__mocks__/state-mocks.ts
+++ b/src/renderer/__mocks__/state-mocks.ts
@@ -1,15 +1,11 @@
import { Constants } from '../constants';
import {
- type Account,
type AppearanceSettingsState,
type AuthState,
FetchType,
type FilterSettingsState,
type GitifyState,
- type GitifyUser,
GroupBy,
- type Hostname,
- type Link,
type NotificationSettingsState,
OpenPreference,
type Percentage,
@@ -19,59 +15,10 @@ import {
type Token,
type TraySettingsState,
} from '../types';
-
-export const mockGitifyUser: GitifyUser = {
- login: 'octocat',
- name: 'Mona Lisa Octocat',
- id: 123456789,
- avatar: 'https://avatars.githubusercontent.com/u/583231?v=4' as Link,
-};
-
-export const mockPersonalAccessTokenAccount: Account = {
- platform: 'GitHub Cloud',
- method: 'Personal Access Token',
- token: 'token-123-456' as Token,
- hostname: Constants.DEFAULT_AUTH_OPTIONS.hostname,
- user: mockGitifyUser,
- hasRequiredScopes: true,
-};
-
-export const mockOAuthAccount: Account = {
- platform: 'GitHub Enterprise Server',
- method: 'OAuth App',
- token: '1234568790' as Token,
- hostname: 'github.gitify.io' as Hostname,
- user: mockGitifyUser,
- hasRequiredScopes: true,
-};
-
-export const mockGitHubCloudAccount: Account = {
- platform: 'GitHub Cloud',
- method: 'Personal Access Token',
- token: 'token-123-456' as Token,
- hostname: Constants.DEFAULT_AUTH_OPTIONS.hostname,
- user: mockGitifyUser,
- version: 'latest',
- hasRequiredScopes: true,
-};
-
-export const mockGitHubEnterpriseServerAccount: Account = {
- platform: 'GitHub Enterprise Server',
- method: 'Personal Access Token',
- token: '1234568790' as Token,
- hostname: 'github.gitify.io' as Hostname,
- user: mockGitifyUser,
- hasRequiredScopes: true,
-};
-
-export const mockGitHubAppAccount: Account = {
- platform: 'GitHub Cloud',
- method: 'GitHub App',
- token: '987654321' as Token,
- hostname: Constants.DEFAULT_AUTH_OPTIONS.hostname,
- user: mockGitifyUser,
- hasRequiredScopes: true,
-};
+import {
+ mockGitHubCloudAccount,
+ mockGitHubEnterpriseServerAccount,
+} from './account-mocks';
export const mockAuth: AuthState = {
accounts: [mockGitHubCloudAccount, mockGitHubEnterpriseServerAccount],
diff --git a/src/renderer/__mocks__/user-mocks.ts b/src/renderer/__mocks__/user-mocks.ts
new file mode 100644
index 000000000..3cb316d3d
--- /dev/null
+++ b/src/renderer/__mocks__/user-mocks.ts
@@ -0,0 +1,20 @@
+import type { GitifyUser, Link } from '../types';
+import type { User } from '../typesGitHub';
+
+export const mockGitifyUser: GitifyUser = {
+ login: 'octocat',
+ name: 'Mona Lisa Octocat',
+ id: 123456789,
+ avatar: 'https://avatars.githubusercontent.com/u/583231?v=4' as Link,
+};
+
+export function createPartialMockUser(login: string): User {
+ const mockUser: Partial = {
+ login: login,
+ html_url: `https://github.com/${login}` as Link,
+ avatar_url: 'https://avatars.githubusercontent.com/u/583231?v=4' as Link,
+ type: 'User',
+ };
+
+ return mockUser as User;
+}
diff --git a/src/renderer/__mocks__/utils.ts b/src/renderer/__mocks__/utils.ts
deleted file mode 100644
index 2b832d466..000000000
--- a/src/renderer/__mocks__/utils.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Ensure stable snapshots for our randomized emoji use-cases
- */
-export function ensureStableEmojis() {
- global.Math.random = jest.fn(() => 0.1);
-}
diff --git a/src/renderer/components/AllRead.test.tsx b/src/renderer/components/AllRead.test.tsx
index 743e4d6cf..c8f07fbf9 100644
--- a/src/renderer/components/AllRead.test.tsx
+++ b/src/renderer/components/AllRead.test.tsx
@@ -1,8 +1,10 @@
-import { act, render } from '@testing-library/react';
+import { act } from '@testing-library/react';
+import {
+ ensureStableEmojis,
+ renderWithAppContext,
+} from '../__helpers__/test-utils';
import { mockSettings } from '../__mocks__/state-mocks';
-import { ensureStableEmojis } from '../__mocks__/utils';
-import { AppContext } from '../context/App';
import { AllRead } from './AllRead';
describe('renderer/components/AllRead.tsx', () => {
@@ -11,41 +13,29 @@ describe('renderer/components/AllRead.tsx', () => {
});
it('should render itself & its children - no filters', async () => {
- let tree: ReturnType | null = null;
+ let tree: ReturnType | null = null;
await act(async () => {
- tree = render(
-
-
- ,
- );
+ tree = renderWithAppContext( , {
+ settings: {
+ ...mockSettings,
+ },
+ });
});
expect(tree).toMatchSnapshot();
});
it('should render itself & its children - with filters', async () => {
- let tree: ReturnType | null = null;
+ let tree: ReturnType | null = null;
await act(async () => {
- tree = render(
-
-
- ,
- );
+ tree = renderWithAppContext( , {
+ settings: {
+ ...mockSettings,
+ filterReasons: ['author'],
+ },
+ });
});
expect(tree).toMatchSnapshot();
diff --git a/src/renderer/components/Oops.test.tsx b/src/renderer/components/Oops.test.tsx
index 9eb16be2f..d2fc67a00 100644
--- a/src/renderer/components/Oops.test.tsx
+++ b/src/renderer/components/Oops.test.tsx
@@ -1,6 +1,9 @@
-import { act, render } from '@testing-library/react';
+import { act } from '@testing-library/react';
-import { ensureStableEmojis } from '../__mocks__/utils';
+import {
+ ensureStableEmojis,
+ renderWithAppContext,
+} from '../__helpers__/test-utils';
import { Oops } from './Oops';
describe('renderer/components/Oops.tsx', () => {
@@ -15,20 +18,20 @@ describe('renderer/components/Oops.tsx', () => {
emojis: ['🔥'],
};
- let tree: ReturnType | null = null;
+ let tree: ReturnType | null = null;
await act(async () => {
- tree = render( );
+ tree = renderWithAppContext( );
});
expect(tree).toMatchSnapshot();
});
it('should render itself & its children - fallback to unknown error', async () => {
- let tree: ReturnType | null = null;
+ let tree: ReturnType | null = null;
await act(async () => {
- tree = render( );
+ tree = renderWithAppContext( );
});
expect(tree).toMatchSnapshot();
diff --git a/src/renderer/components/Sidebar.test.tsx b/src/renderer/components/Sidebar.test.tsx
index 55c7186bf..93626c1e5 100644
--- a/src/renderer/components/Sidebar.test.tsx
+++ b/src/renderer/components/Sidebar.test.tsx
@@ -1,10 +1,9 @@
-import { render, screen } from '@testing-library/react';
+import { screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { MemoryRouter } from 'react-router-dom';
+import { renderWithAppContext } from '../__helpers__/test-utils';
import { mockAccountNotifications } from '../__mocks__/notifications-mocks';
-import { mockAuth, mockSettings } from '../__mocks__/state-mocks';
-import { AppContext } from '../context/App';
import * as comms from '../utils/comms';
import { Sidebar } from './Sidebar';
@@ -15,8 +14,8 @@ jest.mock('react-router-dom', () => ({
}));
describe('renderer/components/Sidebar.tsx', () => {
- const fetchNotifications = jest.fn();
- const openExternalLinkMock = jest
+ const mockFetchNotifications = jest.fn();
+ const mockOpenExternalLink = jest
.spyOn(comms, 'openExternalLink')
.mockImplementation();
@@ -25,56 +24,39 @@ describe('renderer/components/Sidebar.tsx', () => {
});
it('should render itself & its children (logged in)', () => {
- const tree = render(
-
-
-
-
- ,
+ const tree = renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ },
);
expect(tree).toMatchSnapshot();
});
it('should render itself & its children (logged out)', () => {
- const tree = render(
-
-
-
-
- ,
+ const tree = renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: false,
+ },
);
expect(tree).toMatchSnapshot();
});
it('should navigate home when clicking the gitify logo', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: false,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-home'));
@@ -84,62 +66,46 @@ describe('renderer/components/Sidebar.tsx', () => {
describe('notifications icon', () => {
it('opens notifications home when clicked', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-notifications'));
- expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
- expect(openExternalLinkMock).toHaveBeenCalledWith(
+ expect(mockOpenExternalLink).toHaveBeenCalledTimes(1);
+ expect(mockOpenExternalLink).toHaveBeenCalledWith(
'https://github.com/notifications',
);
});
it('renders correct icon when there are no notifications', () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ notifications: [],
+ },
);
expect(screen.getByTestId('sidebar-notifications')).toMatchSnapshot();
});
it('renders correct icon when there are notifications', () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ notifications: mockAccountNotifications,
+ },
);
expect(screen.getByTestId('sidebar-notifications')).toMatchSnapshot();
@@ -148,19 +114,13 @@ describe('renderer/components/Sidebar.tsx', () => {
describe('Filter notifications', () => {
it('go to the filters route', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-filter-notifications'));
@@ -169,19 +129,13 @@ describe('renderer/components/Sidebar.tsx', () => {
});
it('go to the home if filters path already shown', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-filter-notifications'));
@@ -192,49 +146,39 @@ describe('renderer/components/Sidebar.tsx', () => {
describe('quick links', () => {
it('opens my github issues page', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ notifications: mockAccountNotifications,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-my-issues'));
- expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
- expect(openExternalLinkMock).toHaveBeenCalledWith(
+ expect(mockOpenExternalLink).toHaveBeenCalledTimes(1);
+ expect(mockOpenExternalLink).toHaveBeenCalledWith(
'https://github.com/issues',
);
});
it('opens my github pull requests page', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ notifications: mockAccountNotifications,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-my-pull-requests'));
- expect(openExternalLinkMock).toHaveBeenCalledTimes(1);
- expect(openExternalLinkMock).toHaveBeenCalledWith(
+ expect(mockOpenExternalLink).toHaveBeenCalledTimes(1);
+ expect(mockOpenExternalLink).toHaveBeenCalledWith(
'https://github.com/pulls',
);
});
@@ -242,67 +186,51 @@ describe('renderer/components/Sidebar.tsx', () => {
describe('Refresh Notifications', () => {
it('should refresh the notifications when status is not loading', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ notifications: [],
+ fetchNotifications: mockFetchNotifications,
+ status: 'success',
+ },
);
await userEvent.click(screen.getByTestId('sidebar-refresh'));
- expect(fetchNotifications).toHaveBeenCalledTimes(1);
+ expect(mockFetchNotifications).toHaveBeenCalledTimes(1);
});
it('should not refresh the notifications when status is loading', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ notifications: [],
+ fetchNotifications: mockFetchNotifications,
+ status: 'loading',
+ },
);
await userEvent.click(screen.getByTestId('sidebar-refresh'));
- expect(fetchNotifications).not.toHaveBeenCalled();
+ expect(mockFetchNotifications).not.toHaveBeenCalled();
});
});
describe('Settings', () => {
it('go to the settings route', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-settings'));
@@ -311,49 +239,37 @@ describe('renderer/components/Sidebar.tsx', () => {
});
it('go to the home if settings path already shown', async () => {
- render(
-
-
-
-
- ,
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: true,
+ fetchNotifications: mockFetchNotifications,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-settings'));
- expect(fetchNotifications).toHaveBeenCalledTimes(1);
+ expect(mockFetchNotifications).toHaveBeenCalledTimes(1);
expect(mockNavigate).toHaveBeenNthCalledWith(1, '/', { replace: true });
});
});
it('should quit the app', async () => {
- const quitAppMock = jest.spyOn(comms, 'quitApp');
-
- render(
-
-
-
-
- ,
+ const mockQuitApp = jest.spyOn(comms, 'quitApp');
+
+ renderWithAppContext(
+
+
+ ,
+ {
+ isLoggedIn: false,
+ },
);
await userEvent.click(screen.getByTestId('sidebar-quit'));
- expect(quitAppMock).toHaveBeenCalledTimes(1);
+ expect(mockQuitApp).toHaveBeenCalledTimes(1);
});
});
diff --git a/src/renderer/components/__snapshots__/AllRead.test.tsx.snap b/src/renderer/components/__snapshots__/AllRead.test.tsx.snap
index 2680d7bb3..7fb910ac5 100644
--- a/src/renderer/components/__snapshots__/AllRead.test.tsx.snap
+++ b/src/renderer/components/__snapshots__/AllRead.test.tsx.snap
@@ -6,45 +6,56 @@ exports[`renderer/components/AllRead.tsx should render itself & its children - n
"baseElement":
-
-
-
- No new notifications
+
+
+
+
+
+ No new notifications
+
+
@@ -53,45 +64,56 @@ exports[`renderer/components/AllRead.tsx should render itself & its children - n
,
"container":
-
-
-
- No new notifications
+
+
+
+
+
+ No new notifications
+
+
@@ -157,45 +179,56 @@ exports[`renderer/components/AllRead.tsx should render itself & its children - w
"baseElement":
-
-
-
- No new filtered notifications
+
+
+
+
+
+ No new filtered notifications
+
+
@@ -204,45 +237,56 @@ exports[`renderer/components/AllRead.tsx should render itself & its children - w
,
"container":
-
-
-
- No new filtered notifications
+
+
+
+
+
+ No new filtered notifications
+
+
diff --git a/src/renderer/components/__snapshots__/Oops.test.tsx.snap b/src/renderer/components/__snapshots__/Oops.test.tsx.snap
index 73af1dc40..e4a068b56 100644
--- a/src/renderer/components/__snapshots__/Oops.test.tsx.snap
+++ b/src/renderer/components/__snapshots__/Oops.test.tsx.snap
@@ -6,51 +6,62 @@ exports[`renderer/components/Oops.tsx should render itself & its children - fall
"baseElement":
-
+
+
+
+
+
+ Oops! Something went wrong
+
+
+
+ Please try again later.
+
-
- Oops! Something went wrong
-
-
-
- Please try again later.
@@ -58,52 +69,63 @@ exports[`renderer/components/Oops.tsx should render itself & its children - fall
,
"container":
-
-
-
- Oops! Something went wrong
+
+
+
+
+
+ Oops! Something went wrong
+
+
+
+ Please try again later.
+
-
- Please try again later.
-
,
@@ -167,51 +189,62 @@ exports[`renderer/components/Oops.tsx should render itself & its children - spec
"baseElement":
-
+
+
+
+
+
+ Error title
+
+
+
+ Error description
+
-
- Error title
-
-
-
- Error description
@@ -219,52 +252,63 @@ exports[`renderer/components/Oops.tsx should render itself & its children - spec
,
"container":
-
-
-
- Error title
+
+
+
+
+
+ Error title
+
+
+
+ Error description
+
-
- Error description
-
,
diff --git a/src/renderer/components/__snapshots__/Sidebar.test.tsx.snap b/src/renderer/components/__snapshots__/Sidebar.test.tsx.snap
index 69431d354..7e2af5527 100644
--- a/src/renderer/components/__snapshots__/Sidebar.test.tsx.snap
+++ b/src/renderer/components/__snapshots__/Sidebar.test.tsx.snap
@@ -2,7 +2,7 @@
exports[`renderer/components/Sidebar.tsx notifications icon renders correct icon when there are no notifications 1`] = `
-
-
-
- @gitify-app
+
+
+
+
+
+ @gitify-app
+
+
-
-
-
- @gitify-app
+
+
+
+
+
+ @gitify-app
+
+
-
- @gitify-app
+
+
+
+ @gitify-app
+
+
-
- @gitify-app
+
+
+
+ @gitify-app
+
+