summaryrefslogtreecommitdiffhomepage
path: root/desktop
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2025-08-21 16:42:01 +0200
committerOskar <oskar@mullvad.net>2025-08-26 13:12:21 +0200
commit9901826b587f5214c60a328f6891faceced33ca3 (patch)
tree8de2e1aaee792ea71ca0121bec7342f031e987b5 /desktop
parent451980c9a5f72c2a062e4ad02f015515917c8115 (diff)
downloadmullvadvpn-9901826b587f5214c60a328f6891faceced33ca3.tar.xz
mullvadvpn-9901826b587f5214c60a328f6891faceced33ca3.zip
Add route object models for wireguard and udp-over-tcp settings
Diffstat (limited to 'desktop')
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/routes-object-model.ts6
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/index.ts2
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/selectors.ts5
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/udp-over-tcp-settings-route-object-model.ts19
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/selectors.ts1
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/vpn-settings-route-object-model.ts6
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/index.ts2
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/selectors.ts10
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/wireguard-settings-route-object-model.ts37
9 files changed, 88 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/routes-object-model.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/routes-object-model.ts
index d85c698984..2de9fa7d64 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/routes-object-model.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/routes-object-model.ts
@@ -9,8 +9,10 @@ import { MultihopSettingsRouteObjectModel } from './multihop-settings';
import { SelectLanguageRouteObjectModel } from './select-language';
import { SelectLocationRouteObjectModel } from './select-location';
import { SettingsRouteObjectModel } from './settings/settings-route-object-model';
+import { UdpOverTcpSettingsRouteObjectModel } from './udp-over-tcp-settings';
import { UserInterfaceSettingsRouteObjectModel } from './user-interface-settings';
import { VpnSettingsRouteObjectModel } from './vpn-settings';
+import { WireguardSettingsRouteObjectModel } from './wireguard-settings';
export class RoutesObjectModel {
readonly main: MainRouteObjectModel;
@@ -21,6 +23,8 @@ export class RoutesObjectModel {
readonly filter: FilterRouteObjectModel;
readonly selectLocation: SelectLocationRouteObjectModel;
readonly vpnSettings: VpnSettingsRouteObjectModel;
+ readonly wireguardSettings: WireguardSettingsRouteObjectModel;
+ readonly udpOverTcpSettings: UdpOverTcpSettingsRouteObjectModel;
readonly multihopSettings: MultihopSettingsRouteObjectModel;
readonly daitaSettings: DaitaSettingsRouteObjectModel;
@@ -33,6 +37,8 @@ export class RoutesObjectModel {
this.filter = new FilterRouteObjectModel(page, utils);
this.selectLocation = new SelectLocationRouteObjectModel(page, utils);
this.vpnSettings = new VpnSettingsRouteObjectModel(page, utils);
+ this.wireguardSettings = new WireguardSettingsRouteObjectModel(page, utils);
+ this.udpOverTcpSettings = new UdpOverTcpSettingsRouteObjectModel(page, utils);
this.multihopSettings = new MultihopSettingsRouteObjectModel(page, utils);
this.daitaSettings = new DaitaSettingsRouteObjectModel(page, utils);
}
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/index.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/index.ts
new file mode 100644
index 0000000000..89fbb87028
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/index.ts
@@ -0,0 +1,2 @@
+export * from './udp-over-tcp-settings-route-object-model';
+export * from './selectors';
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/selectors.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/selectors.ts
new file mode 100644
index 0000000000..f993e501ca
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/selectors.ts
@@ -0,0 +1,5 @@
+import { Page } from 'playwright';
+
+export const createSelectors = (page: Page) => ({
+ portNumber: (port: number) => page.getByRole('option', { name: `${port}` }),
+});
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/udp-over-tcp-settings-route-object-model.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/udp-over-tcp-settings-route-object-model.ts
new file mode 100644
index 0000000000..962a350311
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/udp-over-tcp-settings/udp-over-tcp-settings-route-object-model.ts
@@ -0,0 +1,19 @@
+import { Page } from 'playwright';
+
+import { TestUtils } from '../../utils';
+import { NavigationObjectModel } from '../navigation';
+import { createSelectors } from './selectors';
+
+export class UdpOverTcpSettingsRouteObjectModel extends NavigationObjectModel {
+ readonly selectors: ReturnType<typeof createSelectors>;
+
+ constructor(page: Page, utils: TestUtils) {
+ super(page, utils);
+
+ this.selectors = createSelectors(page);
+ }
+
+ async selectPort(port: number) {
+ await this.selectors.portNumber(port).click();
+ }
+}
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/selectors.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/selectors.ts
index ebae817f2f..367f84e38d 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/selectors.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/selectors.ts
@@ -4,4 +4,5 @@ export const createSelectors = (page: Page) => ({
launchAppOnStartupSwitch: () => page.getByLabel('Launch app on start-up'),
autoConnectSwitch: () => page.getByLabel('Auto-connect'),
lanSwitch: () => page.getByLabel('Local network sharing'),
+ wireguardSettingsButton: () => page.getByRole('button', { name: 'WireGuard settings' }),
});
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/vpn-settings-route-object-model.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/vpn-settings-route-object-model.ts
index 5e8ea0e99b..e1c05ee801 100644
--- a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/vpn-settings-route-object-model.ts
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/vpn-settings-route-object-model.ts
@@ -1,5 +1,6 @@
import { Page } from 'playwright';
+import { RoutePath } from '../../../../src/shared/routes';
import { TestUtils } from '../../utils';
import { createSelectors } from './selectors';
@@ -14,6 +15,11 @@ export class VpnSettingsRouteObjectModel {
this.selectors = createSelectors(page);
}
+ async gotoWireguardSettings() {
+ await this.selectors.wireguardSettingsButton().click();
+ await this.utils.waitForRoute(RoutePath.wireguardSettings);
+ }
+
getAutoConnectSwitch() {
return this.selectors.autoConnectSwitch();
}
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/index.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/index.ts
new file mode 100644
index 0000000000..4378d9c067
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/index.ts
@@ -0,0 +1,2 @@
+export * from './wireguard-settings-route-object-model';
+export * from './selectors';
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/selectors.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/selectors.ts
new file mode 100644
index 0000000000..ff7621e637
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/selectors.ts
@@ -0,0 +1,10 @@
+import { Page } from 'playwright';
+
+export const createSelectors = (page: Page) => ({
+ udpOverTcpSettingsButton: () => page.getByRole('button', { name: 'UDP-over-TCP settings' }),
+ udpOverTcpOption: () => page.getByRole('option', { name: 'UDP-over-TCP' }),
+ automaticObfuscationOption: () =>
+ page
+ .getByRole('listbox', { name: 'Obfuscation' })
+ .getByRole('option', { name: 'Automatic', exact: true }),
+});
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/wireguard-settings-route-object-model.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/wireguard-settings-route-object-model.ts
new file mode 100644
index 0000000000..409c9ed725
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/wireguard-settings/wireguard-settings-route-object-model.ts
@@ -0,0 +1,37 @@
+import { Page } from 'playwright';
+
+import { RoutePath } from '../../../../src/shared/routes';
+import { TestUtils } from '../../utils';
+import { NavigationObjectModel } from '../navigation';
+import { createSelectors } from './selectors';
+
+export class WireguardSettingsRouteObjectModel extends NavigationObjectModel {
+ readonly selectors: ReturnType<typeof createSelectors>;
+
+ constructor(page: Page, utils: TestUtils) {
+ super(page, utils);
+
+ this.selectors = createSelectors(page);
+ }
+
+ async gotoUdpOverTcpSettings() {
+ await this.selectors.udpOverTcpSettingsButton().click();
+ await this.utils.waitForRoute(RoutePath.udpOverTcp);
+ }
+
+ getAutomaticObfuscationOption() {
+ return this.selectors.automaticObfuscationOption();
+ }
+
+ async selectAutomaticObfuscation() {
+ await this.getAutomaticObfuscationOption().click();
+ }
+
+ getUdpOverTcpOption() {
+ return this.selectors.udpOverTcpOption();
+ }
+
+ async selectUdpOverTcp() {
+ await this.getUdpOverTcpOption().click();
+ }
+}