diff options
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); |
