diff options
| author | Oskar <oskar@mullvad.net> | 2025-09-10 21:06:06 +0200 |
|---|---|---|
| committer | Oskar <oskar@mullvad.net> | 2025-10-01 13:19:43 +0200 |
| commit | abf1237e5bd8bc7027cf5f66c0af29603ca3288c (patch) | |
| tree | 59fb6721a3aefab95a03c0a0413bf03592e4171b /desktop | |
| parent | 8bd1cb3e309abd8ca827832a84867a64a4631286 (diff) | |
| download | mullvadvpn-abf1237e5bd8bc7027cf5f66c0af29603ca3288c.tar.xz mullvadvpn-abf1237e5bd8bc7027cf5f66c0af29603ca3288c.zip | |
Add redeem voucher route object model
Diffstat (limited to 'desktop')
4 files changed, 39 insertions, 0 deletions
diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/index.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/index.ts new file mode 100644 index 0000000000..f619ccf099 --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/index.ts @@ -0,0 +1,2 @@ +export * from './redeem-voucher-route-object-model'; +export * from './selectors'; diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/redeem-voucher-route-object-model.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/redeem-voucher-route-object-model.ts new file mode 100644 index 0000000000..95afe8d5ad --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/redeem-voucher-route-object-model.ts @@ -0,0 +1,28 @@ +import { Page } from 'playwright'; + +import { RoutePath } from '../../../../src/shared/routes'; +import { TestUtils } from '../../utils'; +import { createSelectors } from './selectors'; + +export class RedeemVoucherRouteObjectModel { + readonly selectors: ReturnType<typeof createSelectors>; + + constructor( + private readonly page: Page, + private readonly utils: TestUtils, + ) { + this.selectors = createSelectors(this.page); + } + + async waitForRoute() { + await this.utils.expectRoute(RoutePath.redeemVoucher); + } + + async fillVoucherInput(accountNumber: string) { + await this.selectors.voucherInput().fill(accountNumber); + } + + async redeemVoucher() { + await this.selectors.redeemButton().click(); + } +} diff --git a/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/selectors.ts b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/selectors.ts new file mode 100644 index 0000000000..c0532e9f3c --- /dev/null +++ b/desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/selectors.ts @@ -0,0 +1,6 @@ +import { Page } from 'playwright'; + +export const createSelectors = (page: Page) => ({ + voucherInput: () => page.getByPlaceholder('XXXX-XXXX-XXXX-XXXX'), + redeemButton: () => page.getByRole('button', { name: 'Redeem' }), +}); 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 b5ba6c7b34..4bb61f1d05 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 @@ -8,6 +8,7 @@ import { LaunchRouteObjectModel } from './launch'; import { LoginRouteObjectModel } from './login'; import { MainRouteObjectModel } from './main'; import { MultihopSettingsRouteObjectModel } from './multihop-settings'; +import { RedeemVoucherRouteObjectModel } from './redeem-voucher'; import { SelectLanguageRouteObjectModel } from './select-language'; import { SelectLocationRouteObjectModel } from './select-location'; import { SettingsRouteObjectModel } from './settings/settings-route-object-model'; @@ -23,6 +24,7 @@ export class RoutesObjectModel { readonly launch: LaunchRouteObjectModel; readonly login: LoginRouteObjectModel; readonly expired: ExpiredRouteObjectModel; + readonly redeemVoucher: RedeemVoucherRouteObjectModel; readonly settings: SettingsRouteObjectModel; readonly userInterfaceSettings: UserInterfaceSettingsRouteObjectModel; readonly selectLanguage: SelectLanguageRouteObjectModel; @@ -42,6 +44,7 @@ export class RoutesObjectModel { this.launch = new LaunchRouteObjectModel(page, utils); this.login = new LoginRouteObjectModel(page, utils); this.expired = new ExpiredRouteObjectModel(page, utils); + this.redeemVoucher = new RedeemVoucherRouteObjectModel(page, utils); this.settings = new SettingsRouteObjectModel(page, utils); this.userInterfaceSettings = new UserInterfaceSettingsRouteObjectModel(page, utils); this.filter = new FilterRouteObjectModel(page, utils); |
