diff options
| author | Oskar <oskar@mullvad.net> | 2024-10-21 15:07:06 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2024-10-22 14:27:04 +0200 |
| commit | 00f39cce6b83d8741280fedc6e25874ec94436dd (patch) | |
| tree | 858ebbd809aa7c6aa0c984b0de6dafc8afa509b4 | |
| parent | 98153d8f612a5c5e3bc4149ce3c33071b5dfd5d5 (diff) | |
| download | mullvadvpn-00f39cce6b83d8741280fedc6e25874ec94436dd.tar.xz mullvadvpn-00f39cce6b83d8741280fedc6e25874ec94436dd.zip | |
Add entry selection test
| -rw-r--r-- | gui/test/e2e/mocked/select-location.spec.ts | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/gui/test/e2e/mocked/select-location.spec.ts b/gui/test/e2e/mocked/select-location.spec.ts new file mode 100644 index 0000000000..342d511b9e --- /dev/null +++ b/gui/test/e2e/mocked/select-location.spec.ts @@ -0,0 +1,148 @@ +import { expect, test } from '@playwright/test'; +import { Page } from 'playwright'; + +import { colors } from '../../../src/config.json'; +import { getDefaultSettings } from '../../../src/main/default-settings'; +import { + IRelayList, + IRelayListWithEndpointData, + ISettings, + IWireguardEndpointData, +} from '../../../src/shared/daemon-rpc-types'; +import { MockedTestUtils, startMockedApp } from './mocked-utils'; + +const relayList: IRelayList = { + countries: [ + { + name: 'Sweden', + code: 'se', + cities: [ + { + name: 'Gothenburg', + code: 'got', + latitude: 58, + longitude: 12, + relays: [ + { + hostname: 'se-got-wg-101', + provider: 'mullvad', + ipv4AddrIn: '10.0.0.1', + includeInCountry: true, + active: true, + weight: 0, + owned: true, + endpointType: 'wireguard', + daita: true, + }, + { + hostname: 'se-got-wg-102', + provider: 'mullvad', + ipv4AddrIn: '10.0.0.2', + includeInCountry: true, + active: true, + weight: 0, + owned: true, + endpointType: 'wireguard', + daita: true, + }, + ], + }, + ], + }, + ], +}; + +const wireguardEndpointData: IWireguardEndpointData = { + portRanges: [], + udp2tcpPorts: [], +}; + +let page: Page; +let util: MockedTestUtils; + +test.beforeAll(async () => { + ({ page, util } = await startMockedApp()); + await setMultihop(); + await util.waitForNavigation(() => page.getByLabel('Select location').click()); +}); + +test.afterAll(async () => { + await page.close(); +}); + +async function setMultihop() { + const settings = getDefaultSettings(); + if ('normal' in settings.relaySettings) { + settings.relaySettings.normal.wireguardConstraints.useMultihop = true; + } + + await util.sendMockIpcResponse<ISettings>({ + channel: 'settings-', + response: settings, + }); + + await util.sendMockIpcResponse<IRelayListWithEndpointData>({ + channel: 'relays-', + response: { relayList, wireguardEndpointData }, + }); +} + +test('App should show entry selection', async () => { + const entryTab = page.getByText('Entry'); + await entryTab.click(); + await expect(entryTab).toHaveCSS('background-color', colors.green); + + const sweden = page.getByText('Sweden'); + await expect(sweden).toBeVisible(); +}); + +test('App should show exit selection', async () => { + const exitTab = page.getByText('Exit'); + await exitTab.click(); + await expect(exitTab).toHaveCSS('background-color', colors.green); + + const sweden = page.getByText('Sweden'); + await expect(sweden).toBeVisible(); +}); + +test("App shouldn't show entry selection when daita is enabled without direct only", async () => { + const settings = getDefaultSettings(); + if ('normal' in settings.relaySettings && settings.tunnelOptions.wireguard.daita) { + settings.relaySettings.normal.wireguardConstraints.useMultihop = true; + settings.tunnelOptions.wireguard.daita.enabled = true; + settings.tunnelOptions.wireguard.daita.directOnly = false; + } + + await util.sendMockIpcResponse<ISettings>({ + channel: 'settings-', + response: settings, + }); + + const entryTab = page.getByText('Entry'); + await entryTab.click(); + await expect(entryTab).toHaveCSS('background-color', colors.green); + + const sweden = page.getByText('Sweden'); + await expect(sweden).not.toBeVisible(); +}); + +test('App should show entry selection when daita is enabled with direct only', async () => { + const settings = getDefaultSettings(); + if ('normal' in settings.relaySettings && settings.tunnelOptions.wireguard.daita) { + settings.relaySettings.normal.wireguardConstraints.useMultihop = true; + settings.tunnelOptions.wireguard.daita.enabled = true; + settings.tunnelOptions.wireguard.daita.directOnly = true; + } + + await util.sendMockIpcResponse<ISettings>({ + channel: 'settings-', + response: settings, + }); + + const entryTab = page.getByText('Entry'); + await entryTab.click(); + await expect(entryTab).toHaveCSS('background-color', colors.green); + + const sweden = page.getByText('Sweden'); + await expect(sweden).toBeVisible(); +}); |
