diff options
| author | Oliver <oliver@mohlin.dev> | 2025-05-19 15:58:38 +0200 |
|---|---|---|
| committer | Tobias Järvelöv <tobias.jarvelov@mullvad.net> | 2025-05-27 21:38:04 +0200 |
| commit | d63229c841b928da5a220f60ee4793b78d2ddaf8 (patch) | |
| tree | f07c0ecd8407f2ee55379620cfac2a1c83475dc1 | |
| parent | fe7c3949bebf52db830ecf0a2146b077e6565e0d (diff) | |
| download | mullvadvpn-d63229c841b928da5a220f60ee4793b78d2ddaf8.tar.xz mullvadvpn-d63229c841b928da5a220f60ee4793b78d2ddaf8.zip | |
Add vpn settings route object model
4 files changed, 76 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 d9c959122c..cb6b63f99e 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 @@ -5,17 +5,20 @@ import { MainRouteObjectModel } from './main'; import { SelectLanguageRouteObjectModel } from './select-language'; import { SettingsRouteObjectModel } from './settings/settings-route-object-model'; import { UserInterfaceSettingsRouteObjectModel } from './user-interface-settings'; +import { VpnSettingsRouteObjectModel } from './vpn-settings'; export class RoutesObjectModel { readonly main: MainRouteObjectModel; readonly settings: SettingsRouteObjectModel; readonly userInterfaceSettings: UserInterfaceSettingsRouteObjectModel; readonly selectLanguage: SelectLanguageRouteObjectModel; + readonly vpnSettings: VpnSettingsRouteObjectModel; constructor(page: Page, utils: TestUtils) { this.selectLanguage = new SelectLanguageRouteObjectModel(page, utils); this.main = new MainRouteObjectModel(page, utils); this.settings = new SettingsRouteObjectModel(page, utils); this.userInterfaceSettings = new UserInterfaceSettingsRouteObjectModel(page, utils); + this.vpnSettings = new VpnSettingsRouteObjectModel(page, utils); } } diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/index.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/index.ts new file mode 100644 index 0000000000..171ed06a89 --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/index.ts @@ -0,0 +1,2 @@ +export * from './vpn-settings-route-object-model'; +export * from './selectors'; 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 new file mode 100644 index 0000000000..ebae817f2f --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/selectors.ts @@ -0,0 +1,7 @@ +import { Page } from 'playwright'; + +export const createSelectors = (page: Page) => ({ + launchAppOnStartupSwitch: () => page.getByLabel('Launch app on start-up'), + autoConnectSwitch: () => page.getByLabel('Auto-connect'), + lanSwitch: () => page.getByLabel('Local network sharing'), +}); 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 new file mode 100644 index 0000000000..cc23cc60c3 --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/vpn-settings/vpn-settings-route-object-model.ts @@ -0,0 +1,64 @@ +import { Page } from 'playwright'; + +import { TestUtils } from '../../utils'; +import { createSelectors } from './selectors'; + +export class VpnSettingsRouteObjectModel { + readonly page: Page; + readonly utils: TestUtils; + readonly selectors: ReturnType<typeof createSelectors>; + + constructor(page: Page, utils: TestUtils) { + this.page = page; + this.utils = utils; + this.selectors = createSelectors(page); + } + + getAutoConnectSwitch() { + return this.selectors.autoConnectSwitch(); + } + + async setAutoConnectSwitch(enabled: boolean) { + const autoConnectSwitch = this.getAutoConnectSwitch(); + const ariaChecked = await autoConnectSwitch.getAttribute('aria-checked'); + + if ((enabled && ariaChecked === 'false') || (!enabled && ariaChecked === 'true')) { + await autoConnectSwitch.click(); + } + } + + async getAutoConnectSwitchState() { + const autoConnectSwitch = this.getAutoConnectSwitch(); + return autoConnectSwitch.getAttribute('aria-checked'); + } + + getLaunchAppOnStartupSwitch() { + return this.selectors.launchAppOnStartupSwitch(); + } + + async setLaunchAppOnStartupSwitch(enabled: boolean) { + const launchAppOnStartupSwitch = this.getLaunchAppOnStartupSwitch(); + const ariaChecked = await launchAppOnStartupSwitch.getAttribute('aria-checked'); + if ((enabled && ariaChecked === 'false') || (!enabled && ariaChecked === 'true')) { + await launchAppOnStartupSwitch.click(); + } + } + + async getLaunchAppOnStartupSwitchState() { + const launchAppOnStartupSwitch = this.getLaunchAppOnStartupSwitch(); + return launchAppOnStartupSwitch.getAttribute('aria-checked'); + } + + getLanSwitch() { + return this.selectors.lanSwitch(); + } + + async setLanSwitch(enabled: boolean) { + const lanSwitch = this.getLanSwitch(); + const ariaChecked = await lanSwitch.getAttribute('aria-checked'); + + if ((enabled && ariaChecked === 'false') || (!enabled && ariaChecked === 'true')) { + await lanSwitch.click(); + } + } +} |
