summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2024-10-21 15:07:06 +0200
committerOskar <oskar@mullvad.net>2024-10-22 14:27:04 +0200
commit00f39cce6b83d8741280fedc6e25874ec94436dd (patch)
tree858ebbd809aa7c6aa0c984b0de6dafc8afa509b4
parent98153d8f612a5c5e3bc4149ce3c33071b5dfd5d5 (diff)
downloadmullvadvpn-00f39cce6b83d8741280fedc6e25874ec94436dd.tar.xz
mullvadvpn-00f39cce6b83d8741280fedc6e25874ec94436dd.zip
Add entry selection test
-rw-r--r--gui/test/e2e/mocked/select-location.spec.ts148
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();
+});