summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOliver <oliver@mohlin.dev>2025-09-13 14:36:55 +0200
committerTobias Järvelöv <tobias.jarvelov@mullvad.net>2025-10-10 13:36:20 +0200
commit2674ba6138cc45abcff092a7b136be75372702d9 (patch)
tree9216bf2ae66621a80499e02d59d7b4c452ce8707
parent36e2755daa1fc1465086ec404f539dc5b4ccfb31 (diff)
downloadmullvadvpn-2674ba6138cc45abcff092a7b136be75372702d9.tar.xz
mullvadvpn-2674ba6138cc45abcff092a7b136be75372702d9.zip
Add manage devices route object model
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/index.ts2
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/manage-devices-route-object-model.ts16
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/selectors.ts8
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/routes-object-model.ts3
4 files changed, 29 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/index.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/index.ts
new file mode 100644
index 0000000000..2caff95ea1
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/index.ts
@@ -0,0 +1,2 @@
+export * from './manage-devices-route-object-model';
+export * from './selectors';
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/manage-devices-route-object-model.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/manage-devices-route-object-model.ts
new file mode 100644
index 0000000000..ab1a55c0d2
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/manage-devices-route-object-model.ts
@@ -0,0 +1,16 @@
+import { Page } from 'playwright';
+
+import { TestUtils } from '../../utils';
+import { createSelectors } from './selectors';
+
+export class ManageDevicesRouteObjectModel {
+ readonly page: Page;
+ readonly utils: TestUtils;
+ readonly selectors: ReturnType<typeof createSelectors>;
+
+ constructor(page: Page, util: TestUtils) {
+ this.page = page;
+ this.utils = util;
+ this.selectors = createSelectors(page);
+ }
+}
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/selectors.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/selectors.ts
new file mode 100644
index 0000000000..5e6250ee5c
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/manage-devices/selectors.ts
@@ -0,0 +1,8 @@
+import { Page } from 'playwright';
+
+export const createSelectors = (page: Page) => ({
+ deviceListItems: () => page.getByRole('list'),
+ deviceListItem: (name: string) => page.getByRole('listitem').filter({ hasText: name }),
+ removeDeviceButton: (name: string) => page.getByLabel(`Remove device named ${name}`),
+ confirmRemoveDeviceButton: () => page.getByRole('button', { name: 'Remove', exact: true }),
+});
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 e93faa7097..1e31a36441 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,6 +9,7 @@ import { FilterRouteObjectModel } from './filter';
import { LaunchRouteObjectModel } from './launch';
import { LoginRouteObjectModel } from './login';
import { MainRouteObjectModel } from './main';
+import { ManageDevicesRouteObjectModel } from './manage-devices';
import { MultihopSettingsRouteObjectModel } from './multihop-settings';
import { RedeemVoucherRouteObjectModel } from './redeem-voucher';
import { SelectLanguageRouteObjectModel } from './select-language';
@@ -49,6 +50,7 @@ export class RoutesObjectModel {
readonly splitTunnelingSettings: SplitTunnelingSettingsRouteObjectModel;
readonly shadowsocksSettings: ShadowsocksSettingsRouteObjectModel;
readonly account: AccountRouteObjectModel;
+ readonly manageDevices: ManageDevicesRouteObjectModel;
constructor(page: Page, utils: TestUtils) {
this.selectLanguage = new SelectLanguageRouteObjectModel(page, utils);
@@ -74,5 +76,6 @@ export class RoutesObjectModel {
this.splitTunnelingSettings = new SplitTunnelingSettingsRouteObjectModel(page, utils);
this.shadowsocksSettings = new ShadowsocksSettingsRouteObjectModel(page, utils);
this.account = new AccountRouteObjectModel(page, utils);
+ this.manageDevices = new ManageDevicesRouteObjectModel(page, utils);
}
}