diff options
| author | Oskar <oskar@mullvad.net> | 2024-10-22 14:27:41 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2024-10-22 14:27:41 +0200 |
| commit | 8a9c15f4f098c8197c46223bd9a67c734ab020d3 (patch) | |
| tree | ce80a8e9cec4c509beeb5e84cce36c3c015e57a7 /gui/test | |
| parent | d339daefa6784a1e734ab20bb4a7db9fc8482ec5 (diff) | |
| parent | c63d501223bac2a430a68d824dd37a3f611f4310 (diff) | |
| download | mullvadvpn-8a9c15f4f098c8197c46223bd9a67c734ab020d3.tar.xz mullvadvpn-8a9c15f4f098c8197c46223bd9a67c734ab020d3.zip | |
Merge branch 'implement-ui-for-smart-routing-override-multihop-des-1302'
Diffstat (limited to 'gui/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(); +}); |
