diff options
| author | Oskar <oskar@mullvad.net> | 2025-09-03 13:34:12 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2025-09-05 11:47:01 +0200 |
| commit | 72664231e8703127bc492222d8ea630b4a590f2d (patch) | |
| tree | 9e0f2ec9e4a6d5bdd0e78f6f2c724988c044a90e | |
| parent | 4f055f07f509be353591c1654321170b7f6d1bd5 (diff) | |
| download | mullvadvpn-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.ts | 53 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/app-upgrade/helpers.ts | 41 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/expired-account-error-view.spec.ts | 11 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/feature-indicators.spec.ts | 59 | ||||
| -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.ts | 17 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/notifications.spec.ts | 51 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/helpers.ts | 21 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/select-location/select-location.spec.ts | 8 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/settings.spec.ts | 16 | ||||
| -rw-r--r-- | desktop/packages/mullvad-vpn/test/e2e/mocked/tunnel-state.spec.ts | 55 |
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); }); |
