summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOliver <oliver@mohlin.dev>2025-05-29 11:13:36 +0200
committerOliver <oliver@mohlin.dev>2025-06-05 10:26:46 +0200
commitcd597537e4f6db67c3e601f01b9bdc52528a1a26 (patch)
treecc32666ffb277c2790fa23493041c80ce61baea7
parent06dc7f44cd57dedf3adfb9e99f2593f94ef1f94d (diff)
downloadmullvadvpn-cd597537e4f6db67c3e601f01b9bdc52528a1a26.tar.xz
mullvadvpn-cd597537e4f6db67c3e601f01b9bdc52528a1a26.zip
Add select location route object model
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/index.ts1
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/select-location-route-object-model.ts35
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/selectors.ts11
3 files changed, 47 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/index.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/index.ts
new file mode 100644
index 0000000000..e2f2889caf
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/index.ts
@@ -0,0 +1 @@
+export * from './select-location-route-object-model';
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/select-location-route-object-model.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/select-location-route-object-model.ts
new file mode 100644
index 0000000000..63e03b94e2
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/select-location-route-object-model.ts
@@ -0,0 +1,35 @@
+import { Page } from 'playwright';
+
+import { RoutePath } from '../../../../src/shared/routes';
+import { TestUtils } from '../../utils';
+import { createSelectors } from './selectors';
+
+export class SelectLocationRouteObjectModel {
+ private readonly utils: TestUtils;
+ private readonly selectors: ReturnType<typeof createSelectors>;
+
+ constructor(page: Page, util: TestUtils) {
+ this.utils = util;
+ this.selectors = createSelectors(page);
+ }
+
+ async toggleAccordion(accordionName: string) {
+ const expandAccordion = this.selectors.expandAccordionButton(accordionName);
+ if ((await expandAccordion.count()) > 0) {
+ await expandAccordion.click();
+ }
+ }
+
+ getRelaysMatching(relayNames: string[]) {
+ return this.selectors.relaysMatching(relayNames);
+ }
+
+ getFilterChip(label: string) {
+ return this.selectors.filterChip(label);
+ }
+
+ async gotoFilter() {
+ await this.selectors.filterButton().click();
+ await this.utils.waitForRoute(RoutePath.filter);
+ }
+}
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/selectors.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/selectors.ts
new file mode 100644
index 0000000000..a2c44863ae
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/select-location/selectors.ts
@@ -0,0 +1,11 @@
+import { Page } from 'playwright';
+
+export const createSelectors = (page: Page) => ({
+ filterButton: () => page.getByRole('button', { name: 'Filter' }),
+ filterChip: (label: string) => {
+ return page.locator('button', { hasText: label });
+ },
+ expandAccordionButton: (label: string) => page.getByLabel(`Expand ${label}`),
+ relaysMatching: (relayNames: string[]) =>
+ page.getByRole('button', { name: new RegExp(relayNames.join('|')) }),
+});