summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2025-09-03 13:34:12 +0200
committerOskar <oskar@mullvad.net>2025-09-05 11:47:01 +0200
commit72664231e8703127bc492222d8ea630b4a590f2d (patch)
tree9e0f2ec9e4a6d5bdd0e78f6f2c724988c044a90e
parent4f055f07f509be353591c1654321170b7f6d1bd5 (diff)
downloadmullvadvpn-72664231e8703127bc492222d8ea630b4a590f2d.tar.xz
mullvadvpn-72664231e8703127bc492222d8ea630b4a590f2d.zip
Convert existing mocked tests to new ipc utility
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/app-upgrade.spec.ts53
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/helpers.ts41
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/expired-account-error-view.spec.ts11
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/feature-indicators.spec.ts59
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/launch.spec.ts (renamed from desktop/packages/mullvad-vpn/test/e2e/mocked/launch/launch.spec.ts)13
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/launch/ipc.ts17
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/notifications.spec.ts51
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/helpers.ts21
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/select-location.spec.ts8
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/settings.spec.ts16
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/mocked/tunnel-state.spec.ts55
11 files changed, 104 insertions, 241 deletions
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/app-upgrade.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/app-upgrade.spec.ts
index 6015f1b4fe..c8ded9a898 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/app-upgrade.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/app-upgrade.spec.ts
@@ -3,12 +3,17 @@ import { Page } from 'playwright';
import { RoutePath } from '../../../../src/shared/routes';
import { MockedTestUtils, startMockedApp } from '../mocked-utils';
-import { createHelpers, createIpc, createSelectors, mockData, resolveIpcHandle } from './helpers';
+import {
+ createAppUpgradeEventIpcHelper,
+ createHelpers,
+ createSelectors,
+ mockData,
+} from './helpers';
let page: Page;
let util: MockedTestUtils;
let helpers: ReturnType<typeof createHelpers>;
-let ipc: ReturnType<typeof createIpc>;
+let upgradeEventIpc: ReturnType<typeof createAppUpgradeEventIpcHelper>;
let selectors: ReturnType<typeof createSelectors>;
test.describe('App upgrade', () => {
@@ -20,12 +25,12 @@ test.describe('App upgrade', () => {
({ page, util } = await startMockedApp());
helpers = createHelpers(page, util);
- ipc = createIpc(util);
+ upgradeEventIpc = createAppUpgradeEventIpcHelper(util);
selectors = createSelectors(page);
await util.waitForRoute(RoutePath.main);
- await ipc.send.upgradeVersion({
+ await util.ipc.upgradeVersion[''].notify({
supported: true,
suggestedIsBeta: false,
suggestedUpgrade: {
@@ -96,7 +101,7 @@ test.describe('App upgrade', () => {
test('Should show download progress after receiving event', async () => {
const mockedProgress = 90;
- await ipc.send.appUpgradeEventDownloadProgress({
+ await upgradeEventIpc.send.appUpgradeEventDownloadProgress({
progress: mockedProgress,
server: 'cdn.mullvad.net',
timeLeft: 120,
@@ -109,7 +114,7 @@ test.describe('App upgrade', () => {
});
test('Should verify installer when download is complete', async () => {
- await ipc.send.appUpgradeEventVerifyingInstaller();
+ await upgradeEventIpc.send.appUpgradeEventVerifyingInstaller();
await expect(page.getByText('Verifying installer')).toBeVisible();
await expect(page.getByText('Download complete')).toBeVisible();
@@ -118,7 +123,7 @@ test.describe('App upgrade', () => {
});
test('Should show that it has verified the installer when verification is complete', async () => {
- await ipc.send.appUpgradeEventVerifiedInstaller();
+ await upgradeEventIpc.send.appUpgradeEventVerifiedInstaller();
await expect(page.getByText('Verification successful!')).toBeVisible();
await expect(page.getByText('Download complete')).toBeVisible();
@@ -131,7 +136,7 @@ test.describe('App upgrade', () => {
test.afterAll(() => restart());
test('Should handle failing to download upgrade', async () => {
- await ipc.send.appUpgradeError('DOWNLOAD_FAILED');
+ await util.ipc.app.upgradeError.notify('DOWNLOAD_FAILED');
await expect(
page.getByText(
@@ -149,7 +154,7 @@ test.describe('App upgrade', () => {
test('Should handle retrying download of upgrade', async () => {
const retryButton = selectors.retryButton();
- await resolveIpcHandle(ipc.handle.appUpgrade(), retryButton.click());
+ await Promise.all([util.ipc.app.upgrade.expect(), retryButton.click()]);
await expect(page.getByText('Downloading...')).toBeVisible();
await expect(page.getByText('Starting download...')).toBeVisible();
@@ -164,9 +169,9 @@ test.describe('App upgrade', () => {
// This test should fail due to the window not being focused,
// which is a pre-requisite for launching the installer automatically.
test('Should handle installer failing to start automatically', async () => {
- await ipc.send.windowFocus(false);
+ await util.ipc.window.focus.notify(false);
- await ipc.send.upgradeVersion({
+ await util.ipc.upgradeVersion[''].notify({
supported: true,
suggestedIsBeta: false,
suggestedUpgrade: {
@@ -176,7 +181,7 @@ test.describe('App upgrade', () => {
},
});
- await ipc.send.appUpgradeEventVerifiedInstaller();
+ await upgradeEventIpc.send.appUpgradeEventVerifiedInstaller();
const installUpdateButton = selectors.installButton();
@@ -188,10 +193,10 @@ test.describe('App upgrade', () => {
test('Should handle installer failing to start manually', async () => {
const installUpdateButton = selectors.installButton();
- await resolveIpcHandle(ipc.handle.appUpgradeInstallerStart(), installUpdateButton.click());
+ await Promise.all([util.ipc.app.upgradeInstallerStart.expect(), installUpdateButton.click()]);
- await ipc.send.appUpgradeEventExitedInstaller();
- await ipc.send.appUpgradeError('START_INSTALLER_FAILED');
+ await upgradeEventIpc.send.appUpgradeEventExitedInstaller();
+ await util.ipc.app.upgradeError.notify('START_INSTALLER_FAILED');
await expect(installUpdateButton).not.toBeVisible();
@@ -212,13 +217,13 @@ test.describe('App upgrade', () => {
// Call the retry button 2 additional times, to increase the total
// errorCount to 3 in order for the ManualDownloadLink to be shown.
- await resolveIpcHandle(ipc.handle.appUpgradeInstallerStart(), retryButton.click());
- await ipc.send.appUpgradeEventExitedInstaller();
- await ipc.send.appUpgradeError('START_INSTALLER_FAILED');
+ await Promise.all([util.ipc.app.upgradeInstallerStart.expect(), retryButton.click()]);
+ await upgradeEventIpc.send.appUpgradeEventExitedInstaller();
+ await util.ipc.app.upgradeError.notify('START_INSTALLER_FAILED');
- await resolveIpcHandle(ipc.handle.appUpgradeInstallerStart(), retryButton.click());
- await ipc.send.appUpgradeEventExitedInstaller();
- await ipc.send.appUpgradeError('START_INSTALLER_FAILED');
+ await Promise.all([util.ipc.app.upgradeInstallerStart.expect(), retryButton.click()]);
+ await upgradeEventIpc.send.appUpgradeEventExitedInstaller();
+ await util.ipc.app.upgradeError.notify('START_INSTALLER_FAILED');
const manualDownloadLink = selectors.manualDownloadLink();
await expect(manualDownloadLink).toBeVisible();
@@ -237,11 +242,11 @@ test.describe('App upgrade', () => {
test('Should pause upgrade when clicking the Pause button', async () => {
const pauseButton = selectors.pauseButton();
- await resolveIpcHandle(ipc.handle.appUpgradeAbort(), pauseButton.click());
+ await Promise.all([util.ipc.app.upgradeAbort.expect(), pauseButton.click()]);
// After the app upgrade abort RPC is sent we expect to receive an aborted
// event.
- await ipc.send.appUpgradeEventAborted();
+ await upgradeEventIpc.send.appUpgradeEventAborted();
await expect(pauseButton).toBeHidden();
@@ -253,7 +258,7 @@ test.describe('App upgrade', () => {
test('Should start upgrade again when clicking Resume button', async () => {
const resumeButton = selectors.resumeButton();
- await resolveIpcHandle(ipc.handle.appUpgrade(), resumeButton.click());
+ await Promise.all([util.ipc.app.upgrade.expect(), resumeButton.click()]);
await expect(resumeButton).toBeHidden();
});
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/helpers.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/helpers.ts
index 9c2570f04b..ffb11effb7 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/helpers.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/helpers.ts
@@ -1,32 +1,15 @@
import { expect } from '@playwright/test';
import { Page } from 'playwright';
-import { AppUpgradeError, AppUpgradeEvent } from '../../../../src/shared/app-upgrade';
-import {
- DaemonAppUpgradeEventStatusDownloadProgress,
- IAppVersionInfo,
-} from '../../../../src/shared/daemon-rpc-types';
+import { AppUpgradeEvent } from '../../../../src/shared/app-upgrade';
+import { DaemonAppUpgradeEventStatusDownloadProgress } from '../../../../src/shared/daemon-rpc-types';
import { MockedTestUtils } from '../mocked-utils';
-export const createIpc = (util: MockedTestUtils) => {
- const createMockHandle = <T>(channel: string, response?: T) =>
- util.mockIpcHandle<T | undefined>({ channel, response });
-
- const createMockResponse = <T>(channel: string, response: T) =>
- util.sendMockIpcResponse<T>({
- channel,
- response,
- });
-
+export const createAppUpgradeEventIpcHelper = (util: MockedTestUtils) => {
const createMockResponseAppUpgradeEvent = (event: AppUpgradeEvent) =>
- createMockResponse<AppUpgradeEvent>('app-upgradeEvent', event);
+ util.ipc.app.upgradeEvent.notify(event);
return {
- handle: {
- appUpgrade: () => createMockHandle('appUpgrade'),
- appUpgradeAbort: () => createMockHandle('appUpgradeAbort'),
- appUpgradeInstallerStart: () => createMockHandle('appUpgradeInstallerStart'),
- },
send: {
appUpgradeEventAborted: () =>
createMockResponseAppUpgradeEvent({
@@ -59,11 +42,6 @@ export const createIpc = (util: MockedTestUtils) => {
createMockResponseAppUpgradeEvent({
type: 'APP_UPGRADE_STATUS_EXITED_INSTALLER',
}),
- appUpgradeError: (error: AppUpgradeError) =>
- createMockResponse<AppUpgradeError>('app-upgradeError', error),
- upgradeVersion: (data: IAppVersionInfo) =>
- createMockResponse<IAppVersionInfo>('upgradeVersion-', data),
- windowFocus: (value: boolean) => createMockResponse<boolean>('window-focus', value),
},
};
};
@@ -110,21 +88,14 @@ export const mockData = {
version: '2100.1',
};
-export const resolveIpcHandle = async (test: Promise<void>, trigger: Promise<void>) => {
- // The promise is resolved when its handle has been called.
- // The handle should be called when the trigger is called.
- const promise = await Promise.all([test, trigger]);
- expect(promise).toBeTruthy();
-};
-
export const createHelpers = (page: Page, util: MockedTestUtils) => {
const selectors = createSelectors(page);
- const ipc = createIpc(util);
+ const ipc = createAppUpgradeEventIpcHelper(util);
const startAppUpgrade = async () => {
const downloadAndLaunchInstallerButton = selectors.downloadAndLaunchInstallerButton();
- await resolveIpcHandle(ipc.handle.appUpgrade(), downloadAndLaunchInstallerButton.click());
+ await Promise.all([util.ipc.app.upgrade.expect(), downloadAndLaunchInstallerButton.click()]);
await ipc.send.appUpgradeEventDownloadStarted();
};
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/expired-account-error-view.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/expired-account-error-view.spec.ts
index fc1c6d99e7..71c3443704 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/expired-account-error-view.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/expired-account-error-view.spec.ts
@@ -2,7 +2,6 @@ import { expect, test } from '@playwright/test';
import { Page } from 'playwright';
import { colorTokens } from '../../../src/renderer/lib/foundations';
-import { IAccountData } from '../../../src/shared/daemon-rpc-types';
import { RoutePath } from '../../../src/shared/routes';
import { getBackgroundColor } from '../utils';
import { MockedTestUtils, startMockedApp } from './mocked-utils';
@@ -20,9 +19,8 @@ test.afterEach(async () => {
});
test('App should show Expired Account Error View', async () => {
- await util.sendMockIpcResponse<IAccountData>({
- channel: 'account-',
- response: { expiry: new Date(Date.now() - 10 * 24 * 60 * 60 * 1000).toISOString() },
+ await util.ipc.account[''].notify({
+ expiry: new Date(Date.now() - 10 * 24 * 60 * 60 * 1000).toISOString(),
});
await expect(page.locator('text=Out of time')).toBeVisible();
@@ -39,9 +37,6 @@ test('App should show out of time view after running out of time', async () => {
const expiryDate = new Date();
expiryDate.setSeconds(expiryDate.getSeconds() + 2);
- await util.sendMockIpcResponse<IAccountData>({
- channel: 'account-',
- response: { expiry: expiryDate.toISOString() },
- });
+ await util.ipc.account[''].notify({ expiry: expiryDate.toISOString() });
await util.waitForRoute(RoutePath.expired);
});
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/feature-indicators.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/feature-indicators.spec.ts
index 26509664b3..9145068c58 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/feature-indicators.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/feature-indicators.spec.ts
@@ -1,12 +1,7 @@
import { expect, test } from '@playwright/test';
import { Page } from 'playwright';
-import {
- FeatureIndicator,
- ILocation,
- ITunnelEndpoint,
- TunnelState,
-} from '../../../src/shared/daemon-rpc-types';
+import { FeatureIndicator, ILocation, ITunnelEndpoint } from '../../../src/shared/daemon-rpc-types';
import { RoutePath } from '../../../src/shared/routes';
import { expectConnected } from '../shared/tunnel-state';
import { MockedTestUtils, startMockedApp } from './mocked-utils';
@@ -42,17 +37,10 @@ test.afterAll(async () => {
});
test('App should show no feature indicators', async () => {
- await util.mockIpcHandle<ILocation>({
- channel: 'location-get',
- response: mockDisconnectedLocation,
- });
- await util.sendMockIpcResponse<TunnelState>({
- channel: 'tunnel-',
- response: {
- state: 'connected',
- details: { endpoint, location: mockConnectedLocation },
- featureIndicators: undefined,
- },
+ await util.ipc.tunnel[''].notify({
+ state: 'connected',
+ details: { endpoint, location: mockConnectedLocation },
+ featureIndicators: undefined,
});
await expectConnected(page);
@@ -69,28 +57,21 @@ test('App should show no feature indicators', async () => {
});
test('App should show feature indicators', async () => {
- await util.mockIpcHandle<ILocation>({
- channel: 'location-get',
- response: mockDisconnectedLocation,
- });
- await util.sendMockIpcResponse<TunnelState>({
- channel: 'tunnel-',
- response: {
- state: 'connected',
- details: { endpoint, location: mockConnectedLocation },
- featureIndicators: [
- FeatureIndicator.daita,
- FeatureIndicator.udp2tcp,
- FeatureIndicator.customMssFix,
- FeatureIndicator.customMtu,
- FeatureIndicator.lanSharing,
- FeatureIndicator.serverIpOverride,
- FeatureIndicator.customDns,
- FeatureIndicator.lockdownMode,
- FeatureIndicator.quantumResistance,
- FeatureIndicator.multihop,
- ],
- },
+ await util.ipc.tunnel[''].notify({
+ state: 'connected',
+ details: { endpoint, location: mockConnectedLocation },
+ featureIndicators: [
+ FeatureIndicator.daita,
+ FeatureIndicator.udp2tcp,
+ FeatureIndicator.customMssFix,
+ FeatureIndicator.customMtu,
+ FeatureIndicator.lanSharing,
+ FeatureIndicator.serverIpOverride,
+ FeatureIndicator.customDns,
+ FeatureIndicator.lockdownMode,
+ FeatureIndicator.quantumResistance,
+ FeatureIndicator.multihop,
+ ],
});
// Make sure panel is collapsed before checking indicator visibility.
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/launch.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/launch.spec.ts
index 30e793d6b8..b9614a29e8 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/launch.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/launch.spec.ts
@@ -1,24 +1,21 @@
import { expect, test } from '@playwright/test';
import { Page } from 'playwright';
-import { RoutePath } from '../../../../src/shared/routes';
-import { RoutesObjectModel } from '../../route-object-models';
-import { MockedTestUtils, startMockedApp } from '../mocked-utils';
-import { createIpc } from './ipc';
+import { RoutePath } from '../../../src/shared/routes';
+import { RoutesObjectModel } from '../route-object-models';
+import { MockedTestUtils, startMockedApp } from './mocked-utils';
let page: Page;
let util: MockedTestUtils;
let routes: RoutesObjectModel;
-let ipc: ReturnType<typeof createIpc>;
test.describe('Launch', () => {
test.beforeAll(async () => {
({ page, util } = await startMockedApp());
- ipc = createIpc(util);
routes = new RoutesObjectModel(page, util);
await util.waitForRoute(RoutePath.main);
- await ipc.send.daemonDisconnected();
+ await util.ipc.daemon.disconnected.notify();
await routes.launch.waitForRoute();
});
@@ -54,7 +51,7 @@ test.describe('Launch', () => {
await expect(defaultFooterText).toBeVisible();
});
test('Should display permission footer when daemon is not allowed', async () => {
- await ipc.send.daemonAllowed(false);
+ await util.ipc.daemon.daemonAllowed.notify(false);
const gotoSystemSettingsButton = routes.launch.selectors.gotoSystemSettingsButton();
await expect(gotoSystemSettingsButton).toBeVisible();
});
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/ipc.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/ipc.ts
deleted file mode 100644
index 6e790c444f..0000000000
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/launch/ipc.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { MockedTestUtils } from '../mocked-utils';
-
-export const createIpc = (util: MockedTestUtils) => {
- const createMockResponse = <T>(channel: string, response: T) =>
- util.sendMockIpcResponse<T>({
- channel,
- response,
- });
-
- return {
- handle: {},
- send: {
- daemonDisconnected: () => createMockResponse('daemon-disconnected', {}),
- daemonAllowed: (allowed: boolean) => createMockResponse('daemon-daemonAllowed', allowed),
- },
- };
-};
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/notifications.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/notifications.spec.ts
index d432e0df4c..aa0ae73055 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/notifications.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/notifications.spec.ts
@@ -3,14 +3,7 @@ import { Page } from 'playwright';
import { getDefaultSettings } from '../../../src/main/default-settings';
import { colorTokens } from '../../../src/renderer/lib/foundations';
-import {
- Constraint,
- ErrorStateCause,
- IAccountData,
- IRelayListWithEndpointData,
- ISettings,
- TunnelState,
-} from '../../../src/shared/daemon-rpc-types';
+import { Constraint, ErrorStateCause, TunnelState } from '../../../src/shared/daemon-rpc-types';
import { RoutePath } from '../../../src/shared/routes';
import { getBackgroundColor } from '../utils';
import { MockedTestUtils, startMockedApp } from './mocked-utils';
@@ -31,9 +24,8 @@ test.afterAll(async () => {
* Expires soon
*/
test('App should notify user about account expiring soon', async () => {
- await util.sendMockIpcResponse<IAccountData>({
- channel: 'account-',
- response: { expiry: new Date(Date.now() + 2 * 24 * 60 * 60 * 1000).toISOString() },
+ await util.ipc.account[''].notify({
+ expiry: new Date(Date.now() + 2 * 24 * 60 * 60 * 1000).toISOString(),
});
const title = page.getByTestId('notificationTitle');
@@ -46,16 +38,14 @@ test('App should notify user about account expiring soon', async () => {
const indicatorColor = await getBackgroundColor(indicator);
expect(indicatorColor).toBe(colorTokens.yellow);
- await util.sendMockIpcResponse<IAccountData>({
- channel: 'account-',
- response: { expiry: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000).toISOString() },
+ await util.ipc.account[''].notify({
+ expiry: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000).toISOString(),
});
subTitle = page.getByTestId('notificationSubTitle');
await expect(subTitle).toContainText(/2 days left\. buy more credit\./i);
- await util.sendMockIpcResponse<IAccountData>({
- channel: 'account-',
- response: { expiry: new Date(Date.now() + 1 * 24 * 60 * 60 * 1000).toISOString() },
+ await util.ipc.account[''].notify({
+ expiry: new Date(Date.now() + 1 * 24 * 60 * 60 * 1000).toISOString(),
});
subTitle = page.getByTestId('notificationSubTitle');
await expect(subTitle).toContainText(/less than a day left\. buy more credit\./i);
@@ -74,32 +64,23 @@ test.describe('Unsupported wireguard port', () => {
if ('normal' in settings.relaySettings) {
settings.relaySettings.normal.wireguardConstraints.port = port;
}
- await util.sendMockIpcResponse<ISettings>({
- channel: 'settings-',
- response: settings,
- });
+ await util.ipc.settings[''].notify(settings);
};
const updatePortRanges = async (portRanges: [number, number][]) => {
- await util.sendMockIpcResponse<IRelayListWithEndpointData>({
- channel: 'relays-',
- response: {
- relayList: {
- countries: [],
- },
- wireguardEndpointData: {
- portRanges,
- udp2tcpPorts: [],
- },
+ await util.ipc.relays[''].notify({
+ relayList: {
+ countries: [],
+ },
+ wireguardEndpointData: {
+ portRanges,
+ udp2tcpPorts: [],
},
});
};
const updateTunnelState = async (tunnelState: TunnelState) => {
- await util.sendMockIpcResponse<TunnelState>({
- channel: 'tunnel-',
- response: tunnelState,
- });
+ await util.ipc.tunnel[''].notify(tunnelState);
};
test.beforeAll(async () => {
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/helpers.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/helpers.ts
index ccfa8289f2..663116643b 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/helpers.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/helpers.ts
@@ -8,6 +8,7 @@ import {
IRelayListHostname,
ISettings,
Ownership,
+ RelaySettings,
} from '../../../../src/shared/daemon-rpc-types';
import { RoutePath } from '../../../../src/shared/routes';
import { RoutesObjectModel } from '../../route-object-models';
@@ -107,14 +108,8 @@ export const createHelpers = (page: Page, routes: RoutesObjectModel, utils: Mock
settings.relaySettings.normal.providers = providers;
}
}
- await utils.mockIpcHandle({
- channel: 'settings-setRelaySettings',
- response: {},
- });
- await utils.sendMockIpcResponse({
- channel: 'settings-',
- response: settings,
- });
+ await utils.ipc.settings.setRelaySettings.handle({} as RelaySettings);
+ await utils.ipc.settings[''].notify(settings);
};
const updateMockSettings = async (
@@ -139,10 +134,7 @@ export const createHelpers = (page: Page, routes: RoutesObjectModel, utils: Mock
if (directOnly !== undefined) settings.tunnelOptions.wireguard.daita.directOnly = directOnly;
}
- await utils.sendMockIpcResponse<ISettings>({
- channel: 'settings-',
- response: settings,
- });
+ await utils.ipc.settings[''].notify(settings);
return settings;
};
@@ -161,10 +153,7 @@ export const createHelpers = (page: Page, routes: RoutesObjectModel, utils: Mock
};
}
- await utils.sendMockIpcResponse<ISettings>({
- channel: 'settings-',
- response: settings,
- });
+ await utils.ipc.settings[''].notify(settings);
return settings;
};
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/select-location.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/select-location.spec.ts
index 2c0a413522..e01aac0d08 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/select-location.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/select-location.spec.ts
@@ -3,7 +3,7 @@ import { Page } from 'playwright';
import { getDefaultSettings } from '../../../../src/main/default-settings';
import { colorTokens } from '../../../../src/renderer/lib/foundations';
-import { ISettings, ObfuscationType, Ownership } from '../../../../src/shared/daemon-rpc-types';
+import { ObfuscationType, Ownership } from '../../../../src/shared/daemon-rpc-types';
import { RoutePath } from '../../../../src/shared/routes';
import { mockData } from '../../mock-data';
import { RoutesObjectModel } from '../../route-object-models';
@@ -279,10 +279,8 @@ test.describe('Select location', () => {
if ('normal' in settings.relaySettings) {
settings.obfuscationSettings.selectedObfuscation = ObfuscationType.quic;
}
- await util.sendMockIpcResponse<ISettings>({
- channel: 'settings-',
- response: settings,
- });
+ await util.ipc.settings[''].notify(settings);
+
const locatedRelays = helpers.locateRelaysByObfuscation(relayList);
const relays = locatedRelays.map((locatedRelay) => locatedRelay.relay);
const relayNames = relays.map((relay) => relay.hostname);
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/settings.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/settings.spec.ts
index 472893a5c0..8648cf4e69 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/settings.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/settings.spec.ts
@@ -1,7 +1,6 @@
import { expect, test } from '@playwright/test';
import { Page } from 'playwright';
-import { IAccountData } from '../../../src/shared/daemon-rpc-types';
import { RoutePath } from '../../../src/shared/routes';
import { MockedTestUtils, startMockedApp } from './mocked-utils';
@@ -30,27 +29,24 @@ test('Headerbar account info should be displayed correctly', async () => {
* 729 days left
* Add a one-second margin to the test, since it randomly fails in Github Actions otherwise
*/
- await util.sendMockIpcResponse<IAccountData>({
- channel: 'account-',
- response: { expiry: new Date(Date.now() + 730 * 24 * 60 * 60 * 1000 - 1000).toISOString() },
+ await util.ipc.account[''].notify({
+ expiry: new Date(Date.now() + 730 * 24 * 60 * 60 * 1000 - 1000).toISOString(),
});
await expect(expiryText).toContainText(/Time left: 729 days/i);
/**
* 2 years left
*/
- await util.sendMockIpcResponse<IAccountData>({
- channel: 'account-',
- response: { expiry: new Date(Date.now() + 731 * 24 * 60 * 60 * 1000).toISOString() },
+ await util.ipc.account[''].notify({
+ expiry: new Date(Date.now() + 731 * 24 * 60 * 60 * 1000).toISOString(),
});
await expect(expiryText).toContainText(/Time left: 2 years/i);
/**
* Expiry 1 day ago should show 'out of time'
*/
- await util.sendMockIpcResponse<IAccountData>({
- channel: 'account-',
- response: { expiry: new Date(Date.now() - 1 * 24 * 60 * 60 * 1000).toISOString() },
+ await util.ipc.account[''].notify({
+ expiry: new Date(Date.now() - 1 * 24 * 60 * 60 * 1000).toISOString(),
});
await expect(expiryText).not.toBeVisible();
});
diff --git a/desktop/packages/mullvad-vpn/test/e2e/mocked/tunnel-state.spec.ts b/desktop/packages/mullvad-vpn/test/e2e/mocked/tunnel-state.spec.ts
index e8a706471b..d1790925c9 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/mocked/tunnel-state.spec.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/mocked/tunnel-state.spec.ts
@@ -1,12 +1,7 @@
import { test } from '@playwright/test';
import { Page } from 'playwright';
-import {
- ErrorStateCause,
- ILocation,
- ITunnelEndpoint,
- TunnelState,
-} from '../../../src/shared/daemon-rpc-types';
+import { ErrorStateCause, ILocation, ITunnelEndpoint } from '../../../src/shared/daemon-rpc-types';
import { RoutePath } from '../../../src/shared/routes';
import {
expectConnected,
@@ -41,14 +36,7 @@ test.afterAll(async () => {
* Disconnected state
*/
test('App should show disconnected tunnel state', async () => {
- await util.mockIpcHandle<ILocation>({
- channel: 'location-get',
- response: mockLocation,
- });
- await util.sendMockIpcResponse<TunnelState>({
- channel: 'tunnel-',
- response: { state: 'disconnected', lockedDown: false },
- });
+ await util.ipc.tunnel[''].notify({ state: 'disconnected', lockedDown: false });
await expectDisconnected(page);
});
@@ -56,14 +44,7 @@ test('App should show disconnected tunnel state', async () => {
* Connecting state
*/
test('App should show connecting tunnel state', async () => {
- await util.mockIpcHandle<ILocation>({
- channel: 'location-get',
- response: mockLocation,
- });
- await util.sendMockIpcResponse<TunnelState>({
- channel: 'tunnel-',
- response: { state: 'connecting', featureIndicators: undefined },
- });
+ await util.ipc.tunnel[''].notify({ state: 'connecting', featureIndicators: undefined });
await expectConnecting(page);
});
@@ -72,10 +53,6 @@ test('App should show connecting tunnel state', async () => {
*/
test('App should show connected tunnel state', async () => {
const location: ILocation = { ...mockLocation, mullvadExitIp: true };
- await util.mockIpcHandle<ILocation>({
- channel: 'location-get',
- response: location,
- });
const endpoint: ITunnelEndpoint = {
address: 'wg10:80',
@@ -84,9 +61,10 @@ test('App should show connected tunnel state', async () => {
tunnelType: 'wireguard',
daita: false,
};
- await util.sendMockIpcResponse<TunnelState>({
- channel: 'tunnel-',
- response: { state: 'connected', details: { endpoint, location }, featureIndicators: undefined },
+ await util.ipc.tunnel[''].notify({
+ state: 'connected',
+ details: { endpoint, location },
+ featureIndicators: undefined,
});
await expectConnected(page);
@@ -96,14 +74,7 @@ test('App should show connected tunnel state', async () => {
* Disconnecting state
*/
test('App should show disconnecting tunnel state', async () => {
- await util.mockIpcHandle<ILocation>({
- channel: 'location-get',
- response: mockLocation,
- });
- await util.sendMockIpcResponse<TunnelState>({
- channel: 'tunnel-',
- response: { state: 'disconnecting', details: 'nothing' },
- });
+ await util.ipc.tunnel[''].notify({ state: 'disconnecting', details: 'nothing' });
await expectDisconnecting(page);
});
@@ -111,13 +82,9 @@ test('App should show disconnecting tunnel state', async () => {
* Error state
*/
test('App should show error tunnel state', async () => {
- await util.mockIpcHandle<ILocation>({
- channel: 'location-get',
- response: mockLocation,
- });
- await util.sendMockIpcResponse<TunnelState>({
- channel: 'tunnel-',
- response: { state: 'error', details: { cause: ErrorStateCause.isOffline } },
+ await util.ipc.tunnel[''].notify({
+ state: 'error',
+ details: { cause: ErrorStateCause.isOffline },
});
await expectError(page);
});