diff --git a/src/renderer/components/primitives/EmojiText.test.tsx b/src/renderer/components/primitives/EmojiText.test.tsx
index d5cdbcc84..a0d21a4bc 100644
--- a/src/renderer/components/primitives/EmojiText.test.tsx
+++ b/src/renderer/components/primitives/EmojiText.test.tsx
@@ -1,7 +1,7 @@
import { render } from '@testing-library/react';
import { EmojiText, type IEmojiText } from './EmojiText';
-describe('renderer/components/primitives/Emoji.tsx', () => {
+describe('renderer/components/primitives/EmojiText.tsx', () => {
it('should render', () => {
const props: IEmojiText = {
text: '🍺',
diff --git a/src/renderer/components/primitives/__snapshots__/EmojiText.test.tsx.snap b/src/renderer/components/primitives/__snapshots__/EmojiText.test.tsx.snap
index 697cea39a..fcdc09413 100644
--- a/src/renderer/components/primitives/__snapshots__/EmojiText.test.tsx.snap
+++ b/src/renderer/components/primitives/__snapshots__/EmojiText.test.tsx.snap
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`renderer/components/primitives/Emoji.tsx should render 1`] = `
+exports[`renderer/components/primitives/EmojiText.tsx should render 1`] = `
{
"asFragment": [Function],
"baseElement":
diff --git a/src/renderer/components/settings/AppearanceSettings.test.tsx b/src/renderer/components/settings/AppearanceSettings.test.tsx
index 94ff794e7..3c60490f4 100644
--- a/src/renderer/components/settings/AppearanceSettings.test.tsx
+++ b/src/renderer/components/settings/AppearanceSettings.test.tsx
@@ -9,7 +9,7 @@ import {
import { AppContext } from '../../context/App';
import { AppearanceSettings } from './AppearanceSettings';
-describe('renderer/routes/components/settings/AppearanceSettings.tsx', () => {
+describe('renderer/components/settings/AppearanceSettings.tsx', () => {
const updateSetting = jest.fn();
const zoomTimeout = () => new Promise((r) => setTimeout(r, 300));
diff --git a/src/renderer/components/settings/NotificationSettings.test.tsx b/src/renderer/components/settings/NotificationSettings.test.tsx
index 0776d3f4b..d27db6c9b 100644
--- a/src/renderer/components/settings/NotificationSettings.test.tsx
+++ b/src/renderer/components/settings/NotificationSettings.test.tsx
@@ -5,7 +5,7 @@ import { AppContext } from '../../context/App';
import * as comms from '../../utils/comms';
import { NotificationSettings } from './NotificationSettings';
-describe('renderer/routes/components/settings/NotificationSettings.tsx', () => {
+describe('renderer/components/settings/NotificationSettings.tsx', () => {
const updateSetting = jest.fn();
afterEach(() => {
diff --git a/src/renderer/components/settings/SettingsFooter.test.tsx b/src/renderer/components/settings/SettingsFooter.test.tsx
index 0f301d72e..cf5c7fa85 100644
--- a/src/renderer/components/settings/SettingsFooter.test.tsx
+++ b/src/renderer/components/settings/SettingsFooter.test.tsx
@@ -11,7 +11,7 @@ jest.mock('react-router-dom', () => ({
useNavigate: () => mockNavigate,
}));
-describe('renderer/routes/components/settings/SettingsFooter.tsx', () => {
+describe('renderer/components/settings/SettingsFooter.tsx', () => {
let originalEnv: NodeJS.ProcessEnv;
beforeEach(() => {
diff --git a/src/renderer/components/settings/SettingsReset.test.tsx b/src/renderer/components/settings/SettingsReset.test.tsx
new file mode 100644
index 000000000..0293e5e38
--- /dev/null
+++ b/src/renderer/components/settings/SettingsReset.test.tsx
@@ -0,0 +1,63 @@
+import { act, fireEvent, render, screen } from '@testing-library/react';
+import { MemoryRouter } from 'react-router-dom';
+import { mockAuth, mockSettings } from '../../__mocks__/state-mocks';
+import { AppContext } from '../../context/App';
+import { SettingsReset } from './SettingsReset';
+
+describe('renderer/components/settings/SettingsReset.tsx', () => {
+ const resetSettings = jest.fn();
+
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('should reset default settings when `OK`', async () => {
+ window.confirm = jest.fn(() => true); // always click 'OK'
+
+ await act(async () => {
+ render(
+
+
+
+
+ ,
+ );
+ });
+
+ fireEvent.click(screen.getByTestId('settings-reset'));
+ fireEvent.click(screen.getByText('Reset'));
+
+ expect(resetSettings).toHaveBeenCalled();
+ });
+
+ it('should skip reset default settings when `cancelled`', async () => {
+ window.confirm = jest.fn(() => false); // always click 'cancel'
+
+ await act(async () => {
+ render(
+
+
+
+
+ ,
+ );
+ });
+
+ fireEvent.click(screen.getByTestId('settings-reset'));
+ fireEvent.click(screen.getByText('Cancel'));
+
+ expect(resetSettings).not.toHaveBeenCalled();
+ });
+});
diff --git a/src/renderer/components/settings/SettingsReset.tsx b/src/renderer/components/settings/SettingsReset.tsx
new file mode 100644
index 000000000..e77209d6c
--- /dev/null
+++ b/src/renderer/components/settings/SettingsReset.tsx
@@ -0,0 +1,51 @@
+import { type FC, useCallback, useContext, useState } from 'react';
+
+import { Button, Stack, Text } from '@primer/react';
+import { Dialog } from '@primer/react/experimental';
+import { AppContext } from '../../context/App';
+
+export const SettingsReset: FC = () => {
+ const { resetSettings } = useContext(AppContext);
+ const [isOpen, setIsOpen] = useState(false);
+ const onDialogClose = useCallback(() => setIsOpen(false), []);
+ const onDialogProceed = useCallback(() => {
+ resetSettings();
+ setIsOpen(false);
+ }, [resetSettings]);
+
+ return (
+
+
+ {isOpen && (
+
+ )}
+
+ );
+};
diff --git a/src/renderer/components/settings/SystemSettings.test.tsx b/src/renderer/components/settings/SystemSettings.test.tsx
index 0ecc19567..6cc78d44d 100644
--- a/src/renderer/components/settings/SystemSettings.test.tsx
+++ b/src/renderer/components/settings/SystemSettings.test.tsx
@@ -4,7 +4,7 @@ import { mockAuth, mockSettings } from '../../__mocks__/state-mocks';
import { AppContext } from '../../context/App';
import { SystemSettings } from './SystemSettings';
-describe('renderer/routes/components/settings/SystemSettings.tsx', () => {
+describe('renderer/components/settings/SystemSettings.tsx', () => {
const updateSetting = jest.fn();
afterEach(() => {
diff --git a/src/renderer/components/settings/__snapshots__/SettingsFooter.test.tsx.snap b/src/renderer/components/settings/__snapshots__/SettingsFooter.test.tsx.snap
index ffe664526..fef41bc4c 100644
--- a/src/renderer/components/settings/__snapshots__/SettingsFooter.test.tsx.snap
+++ b/src/renderer/components/settings/__snapshots__/SettingsFooter.test.tsx.snap
@@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`renderer/routes/components/settings/SettingsFooter.tsx app version should show development app version 1`] = `
+exports[`renderer/components/settings/SettingsFooter.tsx app version should show development app version 1`] = `