diff options
| author | Oliver <oliver@mohlin.dev> | 2025-09-24 15:48:40 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2025-09-30 12:11:36 +0200 |
| commit | 51e06c07a004a8c575621ca2ad2bf40b30fc2d27 (patch) | |
| tree | c19f17ae846f375d2fd683ac18cc1a4ff97bdf84 | |
| parent | 477dae5658e2395c6feb32c55630848f645b3189 (diff) | |
| download | mullvadvpn-51e06c07a004a8c575621ca2ad2bf40b30fc2d27.tar.xz mullvadvpn-51e06c07a004a8c575621ca2ad2bf40b30fc2d27.zip | |
Add shadowsocks settings route object model
4 files changed, 40 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 9cf32e5caf..997247d2fa 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 @@ -10,6 +10,7 @@ import { MultihopSettingsRouteObjectModel } from './multihop-settings'; import { SelectLanguageRouteObjectModel } from './select-language'; import { SelectLocationRouteObjectModel } from './select-location'; import { SettingsRouteObjectModel } from './settings/settings-route-object-model'; +import { ShadowsocksSettingsRouteObjectModel } from './shadowsocks-settings'; import { SplitTunnelingSettingsRouteObjectModel } from './split-tunneling-settings'; import { UdpOverTcpSettingsRouteObjectModel } from './udp-over-tcp-settings'; import { UserInterfaceSettingsRouteObjectModel } from './user-interface-settings'; @@ -31,6 +32,7 @@ export class RoutesObjectModel { readonly multihopSettings: MultihopSettingsRouteObjectModel; readonly daitaSettings: DaitaSettingsRouteObjectModel; readonly splitTunnelingSettings: SplitTunnelingSettingsRouteObjectModel; + readonly shadowsocksSettings: ShadowsocksSettingsRouteObjectModel; constructor(page: Page, utils: TestUtils) { this.selectLanguage = new SelectLanguageRouteObjectModel(page, utils); @@ -47,5 +49,6 @@ export class RoutesObjectModel { this.multihopSettings = new MultihopSettingsRouteObjectModel(page, utils); this.daitaSettings = new DaitaSettingsRouteObjectModel(page, utils); this.splitTunnelingSettings = new SplitTunnelingSettingsRouteObjectModel(page, utils); + this.shadowsocksSettings = new ShadowsocksSettingsRouteObjectModel(page, utils); } } diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/index.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/index.ts new file mode 100644 index 0000000000..ee8499fbda --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/index.ts @@ -0,0 +1,2 @@ +export * from './shadowsocks-settings-route-object-model'; +export * from './selectors'; diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/selectors.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/selectors.ts new file mode 100644 index 0000000000..6d7844396d --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/selectors.ts @@ -0,0 +1,13 @@ +import { Page } from 'playwright'; + +export const createSelectors = (page: Page) => ({ + automaticPortOption: () => + page + .getByRole('listbox', { name: 'Port' }) + .getByRole('option', { name: 'Automatic', exact: true }), + customPortOption: () => + page + .getByRole('listbox', { name: 'Port' }) + .getByRole('option', { name: 'Custom', exact: true }), + portInput: () => page.getByPlaceholder('Port'), +}); diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/shadowsocks-settings-route-object-model.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/shadowsocks-settings-route-object-model.ts new file mode 100644 index 0000000000..3c56fa5bc0 --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/shadowsocks-settings/shadowsocks-settings-route-object-model.ts @@ -0,0 +1,22 @@ +import { Page } from 'playwright'; + +import { TestUtils } from '../../utils'; +import { NavigationObjectModel } from '../navigation'; +import { createSelectors } from './selectors'; + +export class ShadowsocksSettingsRouteObjectModel extends NavigationObjectModel { + readonly selectors: ReturnType<typeof createSelectors>; + + constructor(page: Page, utils: TestUtils) { + super(page, utils); + + this.selectors = createSelectors(page); + } + + async fillPortInput(port: number) { + const input = this.selectors.portInput(); + await input.click(); + await input.fill(`${port}`); + await input.press('Enter'); + } +} |
