diff options
| author | Oskar <oskar@mullvad.net> | 2025-08-21 16:42:01 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2025-08-26 13:12:21 +0200 |
| commit | 9901826b587f5214c60a328f6891faceced33ca3 (patch) | |
| tree | 8de2e1aaee792ea71ca0121bec7342f031e987b5 /desktop | |
| parent | 451980c9a5f72c2a062e4ad02f015515917c8115 (diff) | |
| download | mullvadvpn-9901826b587f5214c60a328f6891faceced33ca3.tar.xz mullvadvpn-9901826b587f5214c60a328f6891faceced33ca3.zip | |
Add route object models for wireguard and udp-over-tcp settings
Diffstat (limited to 'desktop')
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(); + } +} |
