diff options
| author | Oliver <oliver@mohlin.dev> | 2025-05-29 11:13:36 +0200 |
|---|---|---|
| committer | Oliver <oliver@mohlin.dev> | 2025-06-05 10:26:46 +0200 |
| commit | cd597537e4f6db67c3e601f01b9bdc52528a1a26 (patch) | |
| tree | cc32666ffb277c2790fa23493041c80ce61baea7 | |
| parent | 06dc7f44cd57dedf3adfb9e99f2593f94ef1f94d (diff) | |
| download | mullvadvpn-cd597537e4f6db67c3e601f01b9bdc52528a1a26.tar.xz mullvadvpn-cd597537e4f6db67c3e601f01b9bdc52528a1a26.zip | |
Add select location route object model
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('|')) }), +}); |
