summaryrefslogtreecommitdiffhomepage
path: root/desktop
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2025-09-10 21:06:06 +0200
committerOskar <oskar@mullvad.net>2025-10-01 13:19:43 +0200
commitabf1237e5bd8bc7027cf5f66c0af29603ca3288c (patch)
tree59fb6721a3aefab95a03c0a0413bf03592e4171b /desktop
parent8bd1cb3e309abd8ca827832a84867a64a4631286 (diff)
downloadmullvadvpn-abf1237e5bd8bc7027cf5f66c0af29603ca3288c.tar.xz
mullvadvpn-abf1237e5bd8bc7027cf5f66c0af29603ca3288c.zip
Add redeem voucher route object model
Diffstat (limited to 'desktop')
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/index.ts2
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/redeem-voucher-route-object-model.ts28
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/redeem-voucher/selectors.ts6
-rw-r--r--desktop/packages/mullvad-vpn/test/e2e/route-object-models/routes-object-model.ts3
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);