@shopware-ag/acceptance-test-suite 11.5.0 → 11.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -386,16 +386,16 @@ const test$c = test$e.extend({
386
386
  ]
387
387
  });
388
388
 
389
- var __defProp$V = Object.defineProperty;
390
- var __defNormalProp$V = (obj, key, value) => key in obj ? __defProp$V(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
391
- var __publicField$V = (obj, key, value) => {
392
- __defNormalProp$V(obj, typeof key !== "symbol" ? key + "" : key, value);
389
+ var __defProp$X = Object.defineProperty;
390
+ var __defNormalProp$X = (obj, key, value) => key in obj ? __defProp$X(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
391
+ var __publicField$X = (obj, key, value) => {
392
+ __defNormalProp$X(obj, typeof key !== "symbol" ? key + "" : key, value);
393
393
  return value;
394
394
  };
395
395
  const _AdminApiContext = class _AdminApiContext {
396
396
  constructor(context, options) {
397
- __publicField$V(this, "context");
398
- __publicField$V(this, "options");
397
+ __publicField$X(this, "context");
398
+ __publicField$X(this, "options");
399
399
  this.context = context;
400
400
  this.options = options;
401
401
  }
@@ -502,13 +502,20 @@ const _AdminApiContext = class _AdminApiContext {
502
502
  let response = await methodMap[method](url, options);
503
503
  if (response.status() === 401) {
504
504
  await this.refreshAccessToken();
505
- const updatedOptions = { ...options, headers: { Authorization: `Bearer ${this.options["access_token"]}` } };
505
+ const updatedOptions = {
506
+ ...options,
507
+ data: options?.data ?? void 0,
508
+ headers: {
509
+ ...options?.headers || {},
510
+ Authorization: `Bearer ${this.options["access_token"]}`
511
+ }
512
+ };
506
513
  response = await methodMap[method](url, updatedOptions);
507
514
  }
508
515
  return response;
509
516
  }
510
517
  };
511
- __publicField$V(_AdminApiContext, "defaultOptions", {
518
+ __publicField$X(_AdminApiContext, "defaultOptions", {
512
519
  app_url: process.env["APP_URL"],
513
520
  client_id: process.env["SHOPWARE_ACCESS_KEY_ID"],
514
521
  client_secret: process.env["SHOPWARE_SECRET_ACCESS_KEY"],
@@ -518,16 +525,16 @@ __publicField$V(_AdminApiContext, "defaultOptions", {
518
525
  });
519
526
  let AdminApiContext = _AdminApiContext;
520
527
 
521
- var __defProp$U = Object.defineProperty;
522
- var __defNormalProp$U = (obj, key, value) => key in obj ? __defProp$U(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
523
- var __publicField$U = (obj, key, value) => {
524
- __defNormalProp$U(obj, typeof key !== "symbol" ? key + "" : key, value);
528
+ var __defProp$W = Object.defineProperty;
529
+ var __defNormalProp$W = (obj, key, value) => key in obj ? __defProp$W(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
530
+ var __publicField$W = (obj, key, value) => {
531
+ __defNormalProp$W(obj, typeof key !== "symbol" ? key + "" : key, value);
525
532
  return value;
526
533
  };
527
534
  const _StoreApiContext = class _StoreApiContext {
528
535
  constructor(context, options) {
529
- __publicField$U(this, "context");
530
- __publicField$U(this, "options");
536
+ __publicField$W(this, "context");
537
+ __publicField$W(this, "options");
531
538
  this.context = context;
532
539
  this.options = options;
533
540
  }
@@ -586,21 +593,21 @@ const _StoreApiContext = class _StoreApiContext {
586
593
  return this.context.head(url, options);
587
594
  }
588
595
  };
589
- __publicField$U(_StoreApiContext, "defaultOptions", {
596
+ __publicField$W(_StoreApiContext, "defaultOptions", {
590
597
  app_url: process.env["APP_URL"],
591
598
  ignoreHTTPSErrors: true
592
599
  });
593
600
  let StoreApiContext = _StoreApiContext;
594
601
 
595
- var __defProp$T = Object.defineProperty;
596
- var __defNormalProp$T = (obj, key, value) => key in obj ? __defProp$T(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
597
- var __publicField$T = (obj, key, value) => {
598
- __defNormalProp$T(obj, typeof key !== "symbol" ? key + "" : key, value);
602
+ var __defProp$V = Object.defineProperty;
603
+ var __defNormalProp$V = (obj, key, value) => key in obj ? __defProp$V(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
604
+ var __publicField$V = (obj, key, value) => {
605
+ __defNormalProp$V(obj, typeof key !== "symbol" ? key + "" : key, value);
599
606
  return value;
600
607
  };
601
608
  class MailpitApiContext {
602
609
  constructor(context) {
603
- __publicField$T(this, "context");
610
+ __publicField$V(this, "context");
604
611
  this.context = context;
605
612
  }
606
613
  /**
@@ -897,17 +904,17 @@ const test$a = test$e.extend({
897
904
  }
898
905
  });
899
906
 
900
- var __defProp$S = Object.defineProperty;
901
- var __defNormalProp$S = (obj, key, value) => key in obj ? __defProp$S(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
902
- var __publicField$S = (obj, key, value) => {
903
- __defNormalProp$S(obj, typeof key !== "symbol" ? key + "" : key, value);
907
+ var __defProp$U = Object.defineProperty;
908
+ var __defNormalProp$U = (obj, key, value) => key in obj ? __defProp$U(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
909
+ var __publicField$U = (obj, key, value) => {
910
+ __defNormalProp$U(obj, typeof key !== "symbol" ? key + "" : key, value);
904
911
  return value;
905
912
  };
906
913
  class Actor {
907
914
  constructor(name, page) {
908
- __publicField$S(this, "page");
909
- __publicField$S(this, "name");
910
- __publicField$S(this, "expects", expect);
915
+ __publicField$U(this, "page");
916
+ __publicField$U(this, "name");
917
+ __publicField$U(this, "expects", expect);
911
918
  this.name = name;
912
919
  this.page = page;
913
920
  }
@@ -956,31 +963,31 @@ function createRandomImage(width = 800, height = 600) {
956
963
  return new Image(width, height, buffer);
957
964
  }
958
965
 
959
- var __defProp$R = Object.defineProperty;
960
- var __defNormalProp$R = (obj, key, value) => key in obj ? __defProp$R(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
961
- var __publicField$R = (obj, key, value) => {
962
- __defNormalProp$R(obj, typeof key !== "symbol" ? key + "" : key, value);
966
+ var __defProp$T = Object.defineProperty;
967
+ var __defNormalProp$T = (obj, key, value) => key in obj ? __defProp$T(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
968
+ var __publicField$T = (obj, key, value) => {
969
+ __defNormalProp$T(obj, typeof key !== "symbol" ? key + "" : key, value);
963
970
  return value;
964
971
  };
965
972
  class TestDataService {
966
973
  constructor(AdminApiClient, IdProvider, options) {
967
- __publicField$R(this, "AdminApiClient");
968
- __publicField$R(this, "IdProvider");
969
- __publicField$R(this, "namePrefix", "Test-");
970
- __publicField$R(this, "nameSuffix", "");
971
- __publicField$R(this, "defaultSalesChannel");
972
- __publicField$R(this, "defaultTaxId");
973
- __publicField$R(this, "defaultCurrencyId");
974
- __publicField$R(this, "defaultCategoryId");
975
- __publicField$R(this, "defaultLanguageId");
976
- __publicField$R(this, "defaultCountryId");
977
- __publicField$R(this, "defaultCustomerGroupId");
974
+ __publicField$T(this, "AdminApiClient");
975
+ __publicField$T(this, "IdProvider");
976
+ __publicField$T(this, "namePrefix", "Test-");
977
+ __publicField$T(this, "nameSuffix", "");
978
+ __publicField$T(this, "defaultSalesChannel");
979
+ __publicField$T(this, "defaultTaxId");
980
+ __publicField$T(this, "defaultCurrencyId");
981
+ __publicField$T(this, "defaultCategoryId");
982
+ __publicField$T(this, "defaultLanguageId");
983
+ __publicField$T(this, "defaultCountryId");
984
+ __publicField$T(this, "defaultCustomerGroupId");
978
985
  /**
979
986
  * Configures if an automated cleanup of the data should be executed.
980
987
  *
981
988
  * @private
982
989
  */
983
- __publicField$R(this, "shouldCleanUp", true);
990
+ __publicField$T(this, "shouldCleanUp", true);
984
991
  /**
985
992
  * Configuration of higher priority entities for the cleanup operation.
986
993
  * These entities will be deleted before others.
@@ -988,26 +995,26 @@ class TestDataService {
988
995
  *
989
996
  * @private
990
997
  */
991
- __publicField$R(this, "highPriorityEntities", ["order", "product", "landing_page", "shipping_method", "sales_channel_domain", "sales_channel_currency", "sales_channel_country", "sales_channel_payment_method", "customer"]);
998
+ __publicField$T(this, "highPriorityEntities", ["order", "product", "product_cross_selling", "landing_page", "shipping_method", "sales_channel_domain", "sales_channel_currency", "sales_channel_country", "sales_channel_payment_method", "customer"]);
992
999
  /**
993
1000
  * A registry of all created records.
994
1001
  *
995
1002
  * @private
996
1003
  */
997
- __publicField$R(this, "createdRecords", []);
998
- __publicField$R(this, "restoreSystemConfig", {});
1004
+ __publicField$T(this, "createdRecords", []);
1005
+ __publicField$T(this, "restoreSystemConfig", {});
999
1006
  /**
1000
1007
  * A registry of all created sales channel records.
1001
1008
  *
1002
1009
  * @private
1003
1010
  */
1004
- __publicField$R(this, "createdSalesChannelRecords", []);
1011
+ __publicField$T(this, "createdSalesChannelRecords", []);
1005
1012
  /**
1006
1013
  * Function that generates combinations from n number of arrays
1007
1014
  * with m number of elements in them.
1008
1015
  * @param array
1009
1016
  */
1010
- __publicField$R(this, "combineAll", (array) => {
1017
+ __publicField$T(this, "combineAll", (array) => {
1011
1018
  const result = [];
1012
1019
  const max = array.length - 1;
1013
1020
  const helper = (tmpArray, i) => {
@@ -1063,6 +1070,22 @@ class TestDataService {
1063
1070
  this.addCreatedRecord("product", product.id);
1064
1071
  return product;
1065
1072
  }
1073
+ /**
1074
+ * Creates a basic product cross-selling entity without products.
1075
+ *
1076
+ * @param productId - The uuid of the product to which the pproduct cross-selling should be assigned.
1077
+ * @param overrides - Specific data overrides that will be applied to the property group data struct.
1078
+ */
1079
+ async createProductCrossSelling(productId, overrides = {}) {
1080
+ const crossSellingStruct = this.getBasicCrossSellingStruct(productId, overrides);
1081
+ const response = await this.AdminApiClient.post("product-cross-selling?_response=detail", {
1082
+ data: crossSellingStruct
1083
+ });
1084
+ expect(response.ok()).toBeTruthy();
1085
+ const { data: productCrossSelling } = await response.json();
1086
+ this.addCreatedRecord("product_cross_selling", productCrossSelling.id);
1087
+ return productCrossSelling;
1088
+ }
1066
1089
  /**
1067
1090
  * Creates a basic product with one randomly generated image.
1068
1091
  * The product will be added to the default sales channel category if configured.
@@ -2093,6 +2116,29 @@ class TestDataService {
2093
2116
  const { data: address } = await response.json();
2094
2117
  return address;
2095
2118
  }
2119
+ /**
2120
+ * Retrieves a customer by its email address.
2121
+ *
2122
+ * @param email - The email address of the customer.
2123
+ * @returns The customer object.
2124
+ */
2125
+ async getCustomerByEmail(email) {
2126
+ const response = await this.AdminApiClient.post("search/customer", {
2127
+ data: {
2128
+ limit: 1,
2129
+ filter: [
2130
+ {
2131
+ type: "equals",
2132
+ field: "email",
2133
+ value: email
2134
+ }
2135
+ ]
2136
+ }
2137
+ });
2138
+ expect(response.ok()).toBeTruthy();
2139
+ const { data: result } = await response.json();
2140
+ return result[0];
2141
+ }
2096
2142
  /**
2097
2143
  * Retrieves a customer salutations by its key.
2098
2144
  *
@@ -3057,6 +3103,23 @@ class TestDataService {
3057
3103
  };
3058
3104
  return Object.assign({}, basicTaxStruct, overrides);
3059
3105
  }
3106
+ getBasicCrossSellingStruct(productId, overrides = {}) {
3107
+ const { id: productCrossSellingId, uuid: productCrossSellingUuid } = this.IdProvider.getIdPair();
3108
+ const productCrossSellingName = `${this.namePrefix}ProductCrossSelling-${productCrossSellingId}${this.nameSuffix}`;
3109
+ const defaultCrossSelling = {
3110
+ id: productCrossSellingUuid,
3111
+ productId,
3112
+ name: productCrossSellingName,
3113
+ type: "product_list",
3114
+ position: 1,
3115
+ active: true,
3116
+ productStreamId: null,
3117
+ sortingType: "name",
3118
+ limit: 10,
3119
+ sortBy: "name"
3120
+ };
3121
+ return Object.assign({}, defaultCrossSelling, overrides);
3122
+ }
3060
3123
  }
3061
3124
 
3062
3125
  const test$8 = test$e.extend({
@@ -3075,16 +3138,16 @@ const test$8 = test$e.extend({
3075
3138
  }
3076
3139
  });
3077
3140
 
3078
- var __defProp$Q = Object.defineProperty;
3079
- var __defNormalProp$Q = (obj, key, value) => key in obj ? __defProp$Q(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3080
- var __publicField$Q = (obj, key, value) => {
3081
- __defNormalProp$Q(obj, typeof key !== "symbol" ? key + "" : key, value);
3141
+ var __defProp$S = Object.defineProperty;
3142
+ var __defNormalProp$S = (obj, key, value) => key in obj ? __defProp$S(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3143
+ var __publicField$S = (obj, key, value) => {
3144
+ __defNormalProp$S(obj, typeof key !== "symbol" ? key + "" : key, value);
3082
3145
  return value;
3083
3146
  };
3084
3147
  class IdProvider {
3085
3148
  constructor(workerIndex, seed) {
3086
- __publicField$Q(this, "workerIndex");
3087
- __publicField$Q(this, "seed");
3149
+ __publicField$S(this, "workerIndex");
3150
+ __publicField$S(this, "seed");
3088
3151
  this.workerIndex = workerIndex;
3089
3152
  this.seed = seed;
3090
3153
  }
@@ -3168,40 +3231,42 @@ const test$7 = test$e.extend({
3168
3231
  ]
3169
3232
  });
3170
3233
 
3171
- var __defProp$P = Object.defineProperty;
3172
- var __defNormalProp$P = (obj, key, value) => key in obj ? __defProp$P(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3173
- var __publicField$P = (obj, key, value) => {
3174
- __defNormalProp$P(obj, typeof key !== "symbol" ? key + "" : key, value);
3234
+ var __defProp$R = Object.defineProperty;
3235
+ var __defNormalProp$R = (obj, key, value) => key in obj ? __defProp$R(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3236
+ var __publicField$R = (obj, key, value) => {
3237
+ __defNormalProp$R(obj, typeof key !== "symbol" ? key + "" : key, value);
3175
3238
  return value;
3176
3239
  };
3177
3240
  class Home {
3178
3241
  constructor(page) {
3179
3242
  this.page = page;
3180
- __publicField$P(this, "accountMenuButton");
3181
- __publicField$P(this, "closeGuestSessionButton");
3182
- __publicField$P(this, "productImages");
3183
- __publicField$P(this, "productListItems");
3184
- __publicField$P(this, "languagesDropdown");
3185
- __publicField$P(this, "languagesMenuOptions");
3186
- __publicField$P(this, "currenciesDropdown");
3187
- __publicField$P(this, "currenciesMenuOptions");
3188
- __publicField$P(this, "consentOnlyTechnicallyRequiredButton");
3189
- __publicField$P(this, "consentConfigureButton");
3190
- __publicField$P(this, "consentAcceptAllCookiesButton");
3191
- __publicField$P(this, "consentCookiePreferences");
3192
- __publicField$P(this, "consentCookiePermissionContent");
3193
- __publicField$P(this, "consentDialog");
3194
- __publicField$P(this, "consentDialogTechnicallyRequiredCheckbox");
3195
- __publicField$P(this, "consentDialogStatisticsCheckbox");
3243
+ __publicField$R(this, "accountMenuButton");
3244
+ __publicField$R(this, "closeGuestSessionButton");
3245
+ __publicField$R(this, "productImages");
3246
+ __publicField$R(this, "productListItems");
3247
+ __publicField$R(this, "languagesDropdown");
3248
+ __publicField$R(this, "languagesMenuOptions");
3249
+ __publicField$R(this, "currenciesDropdown");
3250
+ __publicField$R(this, "currenciesMenuOptions");
3251
+ __publicField$R(this, "consentOnlyTechnicallyRequiredButton");
3252
+ __publicField$R(this, "consentConfigureButton");
3253
+ __publicField$R(this, "consentAcceptAllCookiesButton");
3254
+ __publicField$R(this, "consentCookiePreferences");
3255
+ __publicField$R(this, "consentCookiePermissionContent");
3256
+ __publicField$R(this, "consentDialog");
3257
+ __publicField$R(this, "consentDialogTechnicallyRequiredCheckbox");
3258
+ __publicField$R(this, "consentDialogStatisticsCheckbox");
3196
3259
  /**
3197
3260
  * @deprecated Use 'consentDialogMarketingCheckbox' instead
3198
3261
  */
3199
- __publicField$P(this, "consentDialogMarketingdCheckbox");
3200
- __publicField$P(this, "consentDialogMarketingCheckbox");
3201
- __publicField$P(this, "consentDialogAcceptAllCookiesButton");
3202
- __publicField$P(this, "consentDialogSaveButton");
3203
- __publicField$P(this, "consentCookieBannerContainer");
3204
- __publicField$P(this, "offcanvasBackdrop");
3262
+ __publicField$R(this, "consentDialogMarketingdCheckbox");
3263
+ __publicField$R(this, "consentDialogMarketingCheckbox");
3264
+ __publicField$R(this, "consentDialogAcceptAllCookiesButton");
3265
+ __publicField$R(this, "consentDialogSaveButton");
3266
+ __publicField$R(this, "consentCookieBannerContainer");
3267
+ __publicField$R(this, "offcanvasBackdrop");
3268
+ __publicField$R(this, "mainNavigationLink");
3269
+ __publicField$R(this, "contactFormLink");
3205
3270
  this.accountMenuButton = page.getByLabel("Your account");
3206
3271
  this.closeGuestSessionButton = page.locator(".account-aside-btn");
3207
3272
  this.productImages = page.locator(".product-image-wrapper");
@@ -3236,6 +3301,8 @@ class Home {
3236
3301
  exact: true
3237
3302
  });
3238
3303
  this.offcanvasBackdrop = page.locator(".offcanvas-backdrop");
3304
+ this.mainNavigationLink = page.locator(".main-navigation-link-text");
3305
+ this.contactFormLink = this.page.getByRole("listitem").getByTitle("Contact form", { exact: true });
3239
3306
  }
3240
3307
  async getMenuItemByCategoryName(categoryName) {
3241
3308
  const menuNavigationItem = this.page.locator(".nav-main").getByText(categoryName, { exact: true });
@@ -3251,6 +3318,9 @@ class Home {
3251
3318
  flyoutCategoryLink
3252
3319
  };
3253
3320
  }
3321
+ /**
3322
+ * @deprecated - use getListingItemByProductName instead
3323
+ */
3254
3324
  async getListingItemByProductId(productId) {
3255
3325
  const listingItem = this.page.getByRole("listitem").filter({ has: this.page.locator(`[value="${productId}"]`) });
3256
3326
  const productImage = listingItem.locator(".product-image-link");
@@ -3264,6 +3334,9 @@ class Home {
3264
3334
  const productAddToShoppingCart = listingItem.getByRole("button", {
3265
3335
  name: "Add to shopping cart"
3266
3336
  });
3337
+ const productListingPrice = listingItem.locator(".list-price-price");
3338
+ const productListingPricePercentage = listingItem.locator(".list-price-percentage");
3339
+ const productListingPriceBadge = listingItem.locator(".badge-discount");
3267
3340
  return {
3268
3341
  productImage,
3269
3342
  productRating,
@@ -3273,7 +3346,41 @@ class Home {
3273
3346
  productCheapestPrice,
3274
3347
  productPrice,
3275
3348
  productName,
3276
- productAddToShoppingCart
3349
+ productAddToShoppingCart,
3350
+ productListingPrice,
3351
+ productListingPricePercentage,
3352
+ productListingPriceBadge
3353
+ };
3354
+ }
3355
+ async getListingItemByProductName(productListingName) {
3356
+ const listingItem = this.page.getByRole("listitem").filter({ has: this.page.getByText(productListingName) });
3357
+ const productImage = listingItem.locator(".product-image-link");
3358
+ const productRating = listingItem.locator(".product-rating");
3359
+ const productVariantCharacteristics = listingItem.locator(".product-variant-characteristics");
3360
+ const productDescription = listingItem.locator(".product-description");
3361
+ const productPriceUnit = listingItem.locator(".product-price-unit");
3362
+ const productCheapestPrice = listingItem.locator(".product-cheapest-price");
3363
+ const productPrice = listingItem.locator(".product-price");
3364
+ const productName = listingItem.locator(".product-name");
3365
+ const productAddToShoppingCart = listingItem.getByRole("button", {
3366
+ name: "Add to shopping cart"
3367
+ });
3368
+ const productListingPrice = listingItem.locator(".list-price-price");
3369
+ const productListingPricePercentage = listingItem.locator(".list-price-percentage");
3370
+ const productListingPriceBadge = listingItem.locator(".badge-discount");
3371
+ return {
3372
+ productImage,
3373
+ productRating,
3374
+ productVariantCharacteristics,
3375
+ productDescription,
3376
+ productPriceUnit,
3377
+ productCheapestPrice,
3378
+ productPrice,
3379
+ productName,
3380
+ productAddToShoppingCart,
3381
+ productListingPrice,
3382
+ productListingPricePercentage,
3383
+ productListingPriceBadge
3277
3384
  };
3278
3385
  }
3279
3386
  url() {
@@ -3281,31 +3388,37 @@ class Home {
3281
3388
  }
3282
3389
  }
3283
3390
 
3284
- var __defProp$O = Object.defineProperty;
3285
- var __defNormalProp$O = (obj, key, value) => key in obj ? __defProp$O(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3286
- var __publicField$O = (obj, key, value) => {
3287
- __defNormalProp$O(obj, typeof key !== "symbol" ? key + "" : key, value);
3391
+ var __defProp$Q = Object.defineProperty;
3392
+ var __defNormalProp$Q = (obj, key, value) => key in obj ? __defProp$Q(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3393
+ var __publicField$Q = (obj, key, value) => {
3394
+ __defNormalProp$Q(obj, typeof key !== "symbol" ? key + "" : key, value);
3288
3395
  return value;
3289
3396
  };
3290
3397
  let ProductDetail$1 = class ProductDetail {
3291
3398
  constructor(page) {
3292
3399
  this.page = page;
3293
- __publicField$O(this, "addToCartButton");
3294
- __publicField$O(this, "quantitySelect");
3295
- __publicField$O(this, "productSingleImage");
3296
- __publicField$O(this, "productSinglePrice");
3297
- __publicField$O(this, "productPriceRangesRow");
3298
- __publicField$O(this, "offCanvasCartTitle");
3299
- __publicField$O(this, "offCanvasCart");
3300
- __publicField$O(this, "offCanvasCartGoToCheckoutButton");
3301
- __publicField$O(this, "offCanvasLineItemImages");
3302
- __publicField$O(this, "offCanvasSummaryTotalPrice");
3303
- __publicField$O(this, "offCanvas");
3400
+ __publicField$Q(this, "addToCartButton");
3401
+ __publicField$Q(this, "quantitySelect");
3402
+ __publicField$Q(this, "productSingleImage");
3403
+ __publicField$Q(this, "productSinglePrice");
3404
+ __publicField$Q(this, "productPriceRangesRow");
3405
+ __publicField$Q(this, "productListingPriceBadge");
3406
+ __publicField$Q(this, "productListingPrice");
3407
+ __publicField$Q(this, "productListingPricePercentage");
3408
+ __publicField$Q(this, "offCanvasCartTitle");
3409
+ __publicField$Q(this, "offCanvasCart");
3410
+ __publicField$Q(this, "offCanvasCartGoToCheckoutButton");
3411
+ __publicField$Q(this, "offCanvasLineItemImages");
3412
+ __publicField$Q(this, "offCanvasSummaryTotalPrice");
3413
+ __publicField$Q(this, "offCanvas");
3304
3414
  this.addToCartButton = page.getByRole("button", { name: "Add to shopping cart" });
3305
3415
  this.quantitySelect = page.getByLabel("Quantity", { exact: true });
3306
3416
  this.productSingleImage = page.locator(".gallery-slider-single-image");
3307
3417
  this.productSinglePrice = page.locator(".product-detail-price");
3308
3418
  this.productPriceRangesRow = page.locator(".product-block-prices-row");
3419
+ this.productListingPriceBadge = page.locator(".list-price-badge");
3420
+ this.productListingPrice = page.locator(".list-price-price");
3421
+ this.productListingPricePercentage = page.locator(".list-price-percentage");
3309
3422
  this.offCanvas = page.locator("offcanvas-body");
3310
3423
  this.offCanvasCartTitle = page.getByText("Shopping cart", { exact: true });
3311
3424
  this.offCanvasCart = page.getByRole("dialog");
@@ -3322,18 +3435,18 @@ let ProductDetail$1 = class ProductDetail {
3322
3435
  }
3323
3436
  };
3324
3437
 
3325
- var __defProp$N = Object.defineProperty;
3326
- var __defNormalProp$N = (obj, key, value) => key in obj ? __defProp$N(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3327
- var __publicField$N = (obj, key, value) => {
3328
- __defNormalProp$N(obj, typeof key !== "symbol" ? key + "" : key, value);
3438
+ var __defProp$P = Object.defineProperty;
3439
+ var __defNormalProp$P = (obj, key, value) => key in obj ? __defProp$P(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3440
+ var __publicField$P = (obj, key, value) => {
3441
+ __defNormalProp$P(obj, typeof key !== "symbol" ? key + "" : key, value);
3329
3442
  return value;
3330
3443
  };
3331
3444
  class Category {
3332
3445
  constructor(page) {
3333
3446
  this.page = page;
3334
- __publicField$N(this, "sortingSelect");
3335
- __publicField$N(this, "firstProductBuyButton");
3336
- __publicField$N(this, "noProductsFoundAlert");
3447
+ __publicField$P(this, "sortingSelect");
3448
+ __publicField$P(this, "firstProductBuyButton");
3449
+ __publicField$P(this, "noProductsFoundAlert");
3337
3450
  this.sortingSelect = page.getByLabel("Sorting");
3338
3451
  this.firstProductBuyButton = page.getByRole("button", { name: "Add to shopping cart" }).first();
3339
3452
  this.noProductsFoundAlert = page.getByText("No products found.");
@@ -3343,24 +3456,24 @@ class Category {
3343
3456
  }
3344
3457
  }
3345
3458
 
3346
- var __defProp$M = Object.defineProperty;
3347
- var __defNormalProp$M = (obj, key, value) => key in obj ? __defProp$M(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3348
- var __publicField$M = (obj, key, value) => {
3349
- __defNormalProp$M(obj, typeof key !== "symbol" ? key + "" : key, value);
3459
+ var __defProp$O = Object.defineProperty;
3460
+ var __defNormalProp$O = (obj, key, value) => key in obj ? __defProp$O(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3461
+ var __publicField$O = (obj, key, value) => {
3462
+ __defNormalProp$O(obj, typeof key !== "symbol" ? key + "" : key, value);
3350
3463
  return value;
3351
3464
  };
3352
3465
  class CheckoutCart {
3353
3466
  constructor(page) {
3354
3467
  this.page = page;
3355
- __publicField$M(this, "headline");
3356
- __publicField$M(this, "goToCheckoutButton");
3357
- __publicField$M(this, "enterPromoInput");
3358
- __publicField$M(this, "grandTotalPrice");
3359
- __publicField$M(this, "emptyCartAlert");
3360
- __publicField$M(this, "stockReachedAlert");
3361
- __publicField$M(this, "cartLineItemImages");
3362
- __publicField$M(this, "unitPriceInfo");
3363
- __publicField$M(this, "cartQuantityNumber");
3468
+ __publicField$O(this, "headline");
3469
+ __publicField$O(this, "goToCheckoutButton");
3470
+ __publicField$O(this, "enterPromoInput");
3471
+ __publicField$O(this, "grandTotalPrice");
3472
+ __publicField$O(this, "emptyCartAlert");
3473
+ __publicField$O(this, "stockReachedAlert");
3474
+ __publicField$O(this, "cartLineItemImages");
3475
+ __publicField$O(this, "unitPriceInfo");
3476
+ __publicField$O(this, "cartQuantityNumber");
3364
3477
  this.headline = page.getByRole("heading", { name: "Shopping cart" });
3365
3478
  this.goToCheckoutButton = page.getByRole("link", { name: "Go to checkout" });
3366
3479
  this.enterPromoInput = page.getByLabel("Promo code");
@@ -3401,25 +3514,25 @@ class CheckoutCart {
3401
3514
  }
3402
3515
  }
3403
3516
 
3404
- var __defProp$L = Object.defineProperty;
3405
- var __defNormalProp$L = (obj, key, value) => key in obj ? __defProp$L(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3406
- var __publicField$L = (obj, key, value) => {
3407
- __defNormalProp$L(obj, typeof key !== "symbol" ? key + "" : key, value);
3517
+ var __defProp$N = Object.defineProperty;
3518
+ var __defNormalProp$N = (obj, key, value) => key in obj ? __defProp$N(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3519
+ var __publicField$N = (obj, key, value) => {
3520
+ __defNormalProp$N(obj, typeof key !== "symbol" ? key + "" : key, value);
3408
3521
  return value;
3409
3522
  };
3410
3523
  class OffCanvasCart {
3411
3524
  constructor(page) {
3412
3525
  this.page = page;
3413
- __publicField$L(this, "headline");
3414
- __publicField$L(this, "itemCount");
3415
- __publicField$L(this, "goToCheckoutButton");
3416
- __publicField$L(this, "goToCartButton");
3417
- __publicField$L(this, "continueShoppingButton");
3418
- __publicField$L(this, "enterPromoInput");
3419
- __publicField$L(this, "submitDiscountButton");
3420
- __publicField$L(this, "subTotalPrice");
3421
- __publicField$L(this, "shippingCosts");
3422
- __publicField$L(this, "cartQuantityNumber");
3526
+ __publicField$N(this, "headline");
3527
+ __publicField$N(this, "itemCount");
3528
+ __publicField$N(this, "goToCheckoutButton");
3529
+ __publicField$N(this, "goToCartButton");
3530
+ __publicField$N(this, "continueShoppingButton");
3531
+ __publicField$N(this, "enterPromoInput");
3532
+ __publicField$N(this, "submitDiscountButton");
3533
+ __publicField$N(this, "subTotalPrice");
3534
+ __publicField$N(this, "shippingCosts");
3535
+ __publicField$N(this, "cartQuantityNumber");
3423
3536
  this.headline = page.getByRole("heading", { name: "Shopping cart" });
3424
3537
  this.itemCount = page.locator(".offcanvas-cart-header-count");
3425
3538
  this.goToCheckoutButton = page.getByRole("link", { name: "Go to checkout" });
@@ -3461,36 +3574,36 @@ class OffCanvasCart {
3461
3574
  }
3462
3575
  }
3463
3576
 
3464
- var __defProp$K = Object.defineProperty;
3465
- var __defNormalProp$K = (obj, key, value) => key in obj ? __defProp$K(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3466
- var __publicField$K = (obj, key, value) => {
3467
- __defNormalProp$K(obj, typeof key !== "symbol" ? key + "" : key, value);
3577
+ var __defProp$M = Object.defineProperty;
3578
+ var __defNormalProp$M = (obj, key, value) => key in obj ? __defProp$M(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3579
+ var __publicField$M = (obj, key, value) => {
3580
+ __defNormalProp$M(obj, typeof key !== "symbol" ? key + "" : key, value);
3468
3581
  return value;
3469
3582
  };
3470
3583
  class CheckoutConfirm {
3471
3584
  constructor(page) {
3472
3585
  this.page = page;
3473
- __publicField$K(this, "headline");
3474
- __publicField$K(this, "termsAndConditionsCheckbox");
3475
- __publicField$K(this, "immediateAccessToDigitalProductCheckbox");
3476
- __publicField$K(this, "grandTotalPrice");
3477
- __publicField$K(this, "taxPrice");
3478
- __publicField$K(this, "submitOrderButton");
3586
+ __publicField$M(this, "headline");
3587
+ __publicField$M(this, "termsAndConditionsCheckbox");
3588
+ __publicField$M(this, "immediateAccessToDigitalProductCheckbox");
3589
+ __publicField$M(this, "grandTotalPrice");
3590
+ __publicField$M(this, "taxPrice");
3591
+ __publicField$M(this, "submitOrderButton");
3479
3592
  /**
3480
3593
  * Payment options
3481
3594
  */
3482
- __publicField$K(this, "paymentCashOnDelivery");
3483
- __publicField$K(this, "paymentPaidInAdvance");
3484
- __publicField$K(this, "paymentInvoice");
3595
+ __publicField$M(this, "paymentCashOnDelivery");
3596
+ __publicField$M(this, "paymentPaidInAdvance");
3597
+ __publicField$M(this, "paymentInvoice");
3485
3598
  /**
3486
3599
  * Shipping options
3487
3600
  */
3488
- __publicField$K(this, "shippingStandard");
3489
- __publicField$K(this, "shippingExpress");
3601
+ __publicField$M(this, "shippingStandard");
3602
+ __publicField$M(this, "shippingExpress");
3490
3603
  /**
3491
3604
  * Product details
3492
3605
  */
3493
- __publicField$K(this, "cartLineItemImages");
3606
+ __publicField$M(this, "cartLineItemImages");
3494
3607
  this.headline = page.getByRole("heading", { name: "Complete order" });
3495
3608
  this.termsAndConditionsCheckbox = page.getByLabel("I have read and accepted the general terms and conditions.");
3496
3609
  this.immediateAccessToDigitalProductCheckbox = page.getByLabel("I want immediate access to the digital content and I acknowledge that thereby I waive my right to cancel.");
@@ -3509,21 +3622,21 @@ class CheckoutConfirm {
3509
3622
  }
3510
3623
  }
3511
3624
 
3512
- var __defProp$J = Object.defineProperty;
3513
- var __defNormalProp$J = (obj, key, value) => key in obj ? __defProp$J(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3514
- var __publicField$J = (obj, key, value) => {
3515
- __defNormalProp$J(obj, typeof key !== "symbol" ? key + "" : key, value);
3625
+ var __defProp$L = Object.defineProperty;
3626
+ var __defNormalProp$L = (obj, key, value) => key in obj ? __defProp$L(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3627
+ var __publicField$L = (obj, key, value) => {
3628
+ __defNormalProp$L(obj, typeof key !== "symbol" ? key + "" : key, value);
3516
3629
  return value;
3517
3630
  };
3518
3631
  class CheckoutFinish {
3519
3632
  constructor(page) {
3520
3633
  this.page = page;
3521
- __publicField$J(this, "headline");
3522
- __publicField$J(this, "orderNumberText");
3523
- __publicField$J(this, "grandTotalPrice");
3524
- __publicField$J(this, "taxPrice");
3525
- __publicField$J(this, "cartLineItemImages");
3526
- __publicField$J(this, "orderNumberRegex", /Your order number: #(\d+)/);
3634
+ __publicField$L(this, "headline");
3635
+ __publicField$L(this, "orderNumberText");
3636
+ __publicField$L(this, "grandTotalPrice");
3637
+ __publicField$L(this, "taxPrice");
3638
+ __publicField$L(this, "cartLineItemImages");
3639
+ __publicField$L(this, "orderNumberRegex", /Your order number: #(\d+)/);
3527
3640
  this.headline = page.getByRole("heading", { name: "Thank you for your order" });
3528
3641
  this.orderNumberText = page.getByText(this.orderNumberRegex);
3529
3642
  this.grandTotalPrice = page.locator('dt:has-text("Grand total") + dd');
@@ -3552,16 +3665,16 @@ class CheckoutFinish {
3552
3665
  }
3553
3666
  }
3554
3667
 
3555
- var __defProp$I = Object.defineProperty;
3556
- var __defNormalProp$I = (obj, key, value) => key in obj ? __defProp$I(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3557
- var __publicField$I = (obj, key, value) => {
3558
- __defNormalProp$I(obj, typeof key !== "symbol" ? key + "" : key, value);
3668
+ var __defProp$K = Object.defineProperty;
3669
+ var __defNormalProp$K = (obj, key, value) => key in obj ? __defProp$K(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3670
+ var __publicField$K = (obj, key, value) => {
3671
+ __defNormalProp$K(obj, typeof key !== "symbol" ? key + "" : key, value);
3559
3672
  return value;
3560
3673
  };
3561
3674
  class CheckoutRegister {
3562
3675
  constructor(page) {
3563
3676
  this.page = page;
3564
- __publicField$I(this, "cartLineItemImages");
3677
+ __publicField$K(this, "cartLineItemImages");
3565
3678
  this.cartLineItemImages = page.locator(".line-item-img-link");
3566
3679
  }
3567
3680
  url() {
@@ -3569,24 +3682,26 @@ class CheckoutRegister {
3569
3682
  }
3570
3683
  }
3571
3684
 
3572
- var __defProp$H = Object.defineProperty;
3573
- var __defNormalProp$H = (obj, key, value) => key in obj ? __defProp$H(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3574
- var __publicField$H = (obj, key, value) => {
3575
- __defNormalProp$H(obj, typeof key !== "symbol" ? key + "" : key, value);
3685
+ var __defProp$J = Object.defineProperty;
3686
+ var __defNormalProp$J = (obj, key, value) => key in obj ? __defProp$J(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3687
+ var __publicField$J = (obj, key, value) => {
3688
+ __defNormalProp$J(obj, typeof key !== "symbol" ? key + "" : key, value);
3576
3689
  return value;
3577
3690
  };
3578
3691
  class Account {
3579
3692
  constructor(page, instanceMeta) {
3580
3693
  this.page = page;
3581
3694
  this.instanceMeta = instanceMeta;
3582
- __publicField$H(this, "headline");
3583
- __publicField$H(this, "personalDataCardTitle");
3584
- __publicField$H(this, "paymentMethodCardTitle");
3585
- __publicField$H(this, "billingAddressCardTitle");
3586
- __publicField$H(this, "shippingAddressCardTitle");
3587
- __publicField$H(this, "newsletterCheckbox");
3588
- __publicField$H(this, "newsletterRegistrationSuccessMessage");
3589
- __publicField$H(this, "customerGroupRequestMessage");
3695
+ __publicField$J(this, "headline");
3696
+ __publicField$J(this, "personalDataCardTitle");
3697
+ __publicField$J(this, "paymentMethodCardTitle");
3698
+ __publicField$J(this, "billingAddressCardTitle");
3699
+ __publicField$J(this, "shippingAddressCardTitle");
3700
+ __publicField$J(this, "newsletterCheckbox");
3701
+ __publicField$J(this, "newsletterRegistrationSuccessMessage");
3702
+ __publicField$J(this, "customerGroupRequestMessage");
3703
+ __publicField$J(this, "cannotDeliverToCountryAlert");
3704
+ __publicField$J(this, "shippingToAddressNotPossibleAlert");
3590
3705
  this.headline = page.getByRole("heading", { name: "Overview" });
3591
3706
  this.personalDataCardTitle = page.getByRole("heading", { name: "Personal data" });
3592
3707
  this.paymentMethodCardTitle = page.getByRole("heading", { name: "Default payment method" });
@@ -3599,6 +3714,8 @@ class Account {
3599
3714
  } else {
3600
3715
  this.customerGroupRequestMessage = page.locator(".alert-content-container");
3601
3716
  }
3717
+ this.cannotDeliverToCountryAlert = page.getByText("We can not deliver to the country that is stored in your delivery address.");
3718
+ this.shippingToAddressNotPossibleAlert = page.getByText("Shipping to the selected shipping address is currently not possible.");
3602
3719
  }
3603
3720
  async getCustomerGroupAlert(customerGroup) {
3604
3721
  return this.customerGroupRequestMessage.getByText(`Access to customer group "${customerGroup}" requested.`);
@@ -3608,40 +3725,57 @@ class Account {
3608
3725
  }
3609
3726
  }
3610
3727
 
3611
- var __defProp$G = Object.defineProperty;
3612
- var __defNormalProp$G = (obj, key, value) => key in obj ? __defProp$G(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3613
- var __publicField$G = (obj, key, value) => {
3614
- __defNormalProp$G(obj, typeof key !== "symbol" ? key + "" : key, value);
3728
+ var __defProp$I = Object.defineProperty;
3729
+ var __defNormalProp$I = (obj, key, value) => key in obj ? __defProp$I(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3730
+ var __publicField$I = (obj, key, value) => {
3731
+ __defNormalProp$I(obj, typeof key !== "symbol" ? key + "" : key, value);
3615
3732
  return value;
3616
3733
  };
3617
3734
  class AccountLogin {
3618
3735
  constructor(page) {
3619
3736
  this.page = page;
3620
- __publicField$G(this, "emailInput");
3621
- __publicField$G(this, "passwordInput");
3622
- __publicField$G(this, "forgotPasswordLink");
3623
- __publicField$G(this, "loginButton");
3624
- __publicField$G(this, "logoutLink");
3625
- __publicField$G(this, "successAlert");
3626
- __publicField$G(this, "invalidCredentialsAlert");
3627
- __publicField$G(this, "passwordUpdatedAlert");
3737
+ __publicField$I(this, "emailInput");
3738
+ __publicField$I(this, "passwordInput");
3739
+ __publicField$I(this, "forgotPasswordLink");
3740
+ __publicField$I(this, "loginButton");
3741
+ __publicField$I(this, "logoutLink");
3742
+ __publicField$I(this, "successAlert");
3743
+ __publicField$I(this, "invalidCredentialsAlert");
3744
+ __publicField$I(this, "passwordUpdatedAlert");
3628
3745
  // Inputs for registration
3629
- __publicField$G(this, "personalFormArea");
3630
- __publicField$G(this, "billingAddressFormArea");
3631
- __publicField$G(this, "accountTypeSelect");
3632
- __publicField$G(this, "salutationSelect");
3633
- __publicField$G(this, "firstNameInput");
3634
- __publicField$G(this, "lastNameInput");
3635
- __publicField$G(this, "companyInput");
3636
- __publicField$G(this, "departmentInput");
3637
- __publicField$G(this, "vatRegNoInput");
3638
- __publicField$G(this, "registerEmailInput");
3639
- __publicField$G(this, "registerPasswordInput");
3640
- __publicField$G(this, "streetAddressInput");
3641
- __publicField$G(this, "cityInput");
3642
- __publicField$G(this, "countryInput");
3643
- __publicField$G(this, "postalCodeInput");
3644
- __publicField$G(this, "registerButton");
3746
+ __publicField$I(this, "personalFormArea");
3747
+ __publicField$I(this, "billingAddressFormArea");
3748
+ __publicField$I(this, "accountTypeSelect");
3749
+ __publicField$I(this, "salutationSelect");
3750
+ __publicField$I(this, "firstNameInput");
3751
+ __publicField$I(this, "lastNameInput");
3752
+ __publicField$I(this, "companyInput");
3753
+ __publicField$I(this, "departmentInput");
3754
+ __publicField$I(this, "vatRegNoInput");
3755
+ __publicField$I(this, "registerEmailInput");
3756
+ __publicField$I(this, "registerPasswordInput");
3757
+ __publicField$I(this, "streetAddressInput");
3758
+ __publicField$I(this, "cityInput");
3759
+ __publicField$I(this, "countryInput");
3760
+ __publicField$I(this, "postalCodeInput");
3761
+ __publicField$I(this, "registerButton");
3762
+ // Inputs for reCaptcha
3763
+ __publicField$I(this, "greCaptchaV2Container");
3764
+ __publicField$I(this, "greCaptchaV2Input");
3765
+ __publicField$I(this, "greCaptchaV3Input");
3766
+ __publicField$I(this, "greCaptchaProtectionInformation");
3767
+ __publicField$I(this, "greCaptchaBadge");
3768
+ //Input for shipping address
3769
+ __publicField$I(this, "differentShippingAddressCheckbox");
3770
+ __publicField$I(this, "registerShippingAddressFormArea");
3771
+ __publicField$I(this, "shippingAddressSalutationSelect");
3772
+ __publicField$I(this, "shippingAddressFirstNameInput");
3773
+ __publicField$I(this, "shippingAddressLastNameInput");
3774
+ __publicField$I(this, "shippingAddressStreetAddressInput");
3775
+ __publicField$I(this, "shippingAddressCityInput");
3776
+ __publicField$I(this, "shippingAddressCountryInput");
3777
+ __publicField$I(this, "shippingAddressPostalCodeInput");
3778
+ __publicField$I(this, "shippingAddressStateInput");
3645
3779
  this.emailInput = page.getByLabel("Your email address");
3646
3780
  this.passwordInput = page.getByLabel("Your password");
3647
3781
  this.loginButton = page.getByRole("button", { name: "Log in" });
@@ -3663,36 +3797,54 @@ class AccountLogin {
3663
3797
  this.cityInput = this.billingAddressFormArea.getByLabel("City");
3664
3798
  this.countryInput = this.billingAddressFormArea.getByLabel("Country");
3665
3799
  this.postalCodeInput = this.billingAddressFormArea.getByLabel("Postal code");
3800
+ this.differentShippingAddressCheckbox = page.getByRole("checkbox", { name: "Shipping and billing address do not match." });
3801
+ this.registerShippingAddressFormArea = page.locator(".register-shipping");
3802
+ this.shippingAddressSalutationSelect = this.registerShippingAddressFormArea.locator(".form-group").filter({ has: page.getByLabel("Salutation") }).locator(".form-select");
3803
+ this.shippingAddressFirstNameInput = this.registerShippingAddressFormArea.getByLabel("First name");
3804
+ this.shippingAddressLastNameInput = this.registerShippingAddressFormArea.getByLabel("Last name");
3805
+ this.shippingAddressStreetAddressInput = this.registerShippingAddressFormArea.getByLabel("Street address");
3806
+ this.shippingAddressCityInput = this.registerShippingAddressFormArea.getByLabel("City");
3807
+ this.shippingAddressCountryInput = this.registerShippingAddressFormArea.getByLabel("Country");
3808
+ this.shippingAddressPostalCodeInput = this.registerShippingAddressFormArea.getByLabel("Postal code");
3809
+ this.shippingAddressStateInput = this.registerShippingAddressFormArea.getByLabel("State");
3666
3810
  this.registerButton = page.getByRole("button", { name: "Continue" });
3667
3811
  this.logoutLink = page.getByRole("link", { name: "Log out" });
3668
3812
  this.successAlert = page.getByText("Successfully logged out.");
3669
3813
  this.passwordUpdatedAlert = page.getByText("Your password has been updated.");
3814
+ this.greCaptchaV2Container = this.page.locator(".grecaptcha-v2-container");
3815
+ this.greCaptchaV2Input = this.page.locator(".grecaptcha-v2-input");
3816
+ this.greCaptchaV3Input = this.page.locator(".grecaptcha_v3-input");
3817
+ this.greCaptchaProtectionInformation = this.page.locator(".grecaptcha-protection-information");
3818
+ this.greCaptchaBadge = this.page.locator(".grecaptcha-badge");
3819
+ }
3820
+ async getShippingCountryLocatorByName(countryName) {
3821
+ return this.shippingAddressCountryInput.locator("option").filter({ hasText: countryName });
3670
3822
  }
3671
3823
  url() {
3672
3824
  return "account/login";
3673
3825
  }
3674
3826
  }
3675
3827
 
3676
- var __defProp$F = Object.defineProperty;
3677
- var __defNormalProp$F = (obj, key, value) => key in obj ? __defProp$F(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3678
- var __publicField$F = (obj, key, value) => {
3679
- __defNormalProp$F(obj, typeof key !== "symbol" ? key + "" : key, value);
3828
+ var __defProp$H = Object.defineProperty;
3829
+ var __defNormalProp$H = (obj, key, value) => key in obj ? __defProp$H(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3830
+ var __publicField$H = (obj, key, value) => {
3831
+ __defNormalProp$H(obj, typeof key !== "symbol" ? key + "" : key, value);
3680
3832
  return value;
3681
3833
  };
3682
3834
  class AccountRecover {
3683
3835
  constructor(page) {
3684
3836
  this.page = page;
3685
- __publicField$F(this, "passwordRecoveryForm");
3686
- __publicField$F(this, "title");
3687
- __publicField$F(this, "subtitle");
3688
- __publicField$F(this, "emailInput");
3689
- __publicField$F(this, "requestEmailButton");
3690
- __publicField$F(this, "backButton");
3691
- __publicField$F(this, "passwordResetEmailSentMessage");
3692
- __publicField$F(this, "newPasswordInput");
3693
- __publicField$F(this, "newPasswordConfirmInput");
3694
- __publicField$F(this, "changePasswordButton");
3695
- __publicField$F(this, "invalidLinkMessage");
3837
+ __publicField$H(this, "passwordRecoveryForm");
3838
+ __publicField$H(this, "title");
3839
+ __publicField$H(this, "subtitle");
3840
+ __publicField$H(this, "emailInput");
3841
+ __publicField$H(this, "requestEmailButton");
3842
+ __publicField$H(this, "backButton");
3843
+ __publicField$H(this, "passwordResetEmailSentMessage");
3844
+ __publicField$H(this, "newPasswordInput");
3845
+ __publicField$H(this, "newPasswordConfirmInput");
3846
+ __publicField$H(this, "changePasswordButton");
3847
+ __publicField$H(this, "invalidLinkMessage");
3696
3848
  this.passwordRecoveryForm = page.locator(".account-recover-password-form");
3697
3849
  const cardTitle = this.passwordRecoveryForm.locator(".card-title");
3698
3850
  this.title = cardTitle.getByText("Password recovery");
@@ -3714,36 +3866,36 @@ class AccountRecover {
3714
3866
  }
3715
3867
  }
3716
3868
 
3717
- var __defProp$E = Object.defineProperty;
3718
- var __defNormalProp$E = (obj, key, value) => key in obj ? __defProp$E(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3719
- var __publicField$E = (obj, key, value) => {
3720
- __defNormalProp$E(obj, typeof key !== "symbol" ? key + "" : key, value);
3869
+ var __defProp$G = Object.defineProperty;
3870
+ var __defNormalProp$G = (obj, key, value) => key in obj ? __defProp$G(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3871
+ var __publicField$G = (obj, key, value) => {
3872
+ __defNormalProp$G(obj, typeof key !== "symbol" ? key + "" : key, value);
3721
3873
  return value;
3722
3874
  };
3723
3875
  class AccountProfile {
3724
3876
  constructor(page, instanceMeta) {
3725
3877
  this.page = page;
3726
3878
  this.instanceMeta = instanceMeta;
3727
- __publicField$E(this, "salutationSelect");
3728
- __publicField$E(this, "firstNameInput");
3729
- __publicField$E(this, "lastNameInput");
3730
- __publicField$E(this, "saveProfileButton");
3731
- __publicField$E(this, "changeEmailButton");
3732
- __publicField$E(this, "emailAddressInput");
3733
- __publicField$E(this, "emailAddressConfirmInput");
3734
- __publicField$E(this, "emailConfirmPasswordInput");
3735
- __publicField$E(this, "saveEmailAddressButton");
3736
- __publicField$E(this, "changePasswordButton");
3737
- __publicField$E(this, "newPasswordInput");
3738
- __publicField$E(this, "newPasswordConfirmInput");
3739
- __publicField$E(this, "currentPasswordInput");
3740
- __publicField$E(this, "saveNewPasswordButton");
3741
- __publicField$E(this, "loginDataEmailAddress");
3742
- __publicField$E(this, "emailUpdateMessage");
3743
- __publicField$E(this, "passwordUpdateMessage");
3744
- __publicField$E(this, "emailValidationAlert");
3745
- __publicField$E(this, "emailUpdateFailureAlert");
3746
- __publicField$E(this, "passwordUpdateFailureAlert");
3879
+ __publicField$G(this, "salutationSelect");
3880
+ __publicField$G(this, "firstNameInput");
3881
+ __publicField$G(this, "lastNameInput");
3882
+ __publicField$G(this, "saveProfileButton");
3883
+ __publicField$G(this, "changeEmailButton");
3884
+ __publicField$G(this, "emailAddressInput");
3885
+ __publicField$G(this, "emailAddressConfirmInput");
3886
+ __publicField$G(this, "emailConfirmPasswordInput");
3887
+ __publicField$G(this, "saveEmailAddressButton");
3888
+ __publicField$G(this, "changePasswordButton");
3889
+ __publicField$G(this, "newPasswordInput");
3890
+ __publicField$G(this, "newPasswordConfirmInput");
3891
+ __publicField$G(this, "currentPasswordInput");
3892
+ __publicField$G(this, "saveNewPasswordButton");
3893
+ __publicField$G(this, "loginDataEmailAddress");
3894
+ __publicField$G(this, "emailUpdateMessage");
3895
+ __publicField$G(this, "passwordUpdateMessage");
3896
+ __publicField$G(this, "emailValidationAlert");
3897
+ __publicField$G(this, "emailUpdateFailureAlert");
3898
+ __publicField$G(this, "passwordUpdateFailureAlert");
3747
3899
  this.salutationSelect = page.getByLabel("Salutation");
3748
3900
  this.firstNameInput = page.getByLabel("First name");
3749
3901
  this.lastNameInput = page.getByLabel("Last name");
@@ -3783,25 +3935,21 @@ class AccountProfile {
3783
3935
  }
3784
3936
  }
3785
3937
 
3786
- var __defProp$D = Object.defineProperty;
3787
- var __defNormalProp$D = (obj, key, value) => key in obj ? __defProp$D(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3788
- var __publicField$D = (obj, key, value) => {
3789
- __defNormalProp$D(obj, typeof key !== "symbol" ? key + "" : key, value);
3938
+ var __defProp$F = Object.defineProperty;
3939
+ var __defNormalProp$F = (obj, key, value) => key in obj ? __defProp$F(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3940
+ var __publicField$F = (obj, key, value) => {
3941
+ __defNormalProp$F(obj, typeof key !== "symbol" ? key + "" : key, value);
3790
3942
  return value;
3791
3943
  };
3792
3944
  class AccountOrder {
3793
3945
  constructor(page) {
3794
3946
  this.page = page;
3795
- __publicField$D(this, "cartLineItemImages");
3796
- __publicField$D(this, "orderExpandButton");
3797
- __publicField$D(this, "digitalProductDownloadButton");
3798
- __publicField$D(this, "dialogOrderCancel");
3799
- __publicField$D(this, "dialogOrderCancelButton");
3800
- __publicField$D(this, "dialogBackButton");
3801
- __publicField$D(this, "getViewSubscriptionLink", (orderNumber) => {
3802
- const orderContainer = this.page.locator(".order-item-header", { hasText: `Order Number: ${orderNumber}` });
3803
- return orderContainer.getByText("View Subscription");
3804
- });
3947
+ __publicField$F(this, "cartLineItemImages");
3948
+ __publicField$F(this, "orderExpandButton");
3949
+ __publicField$F(this, "digitalProductDownloadButton");
3950
+ __publicField$F(this, "dialogOrderCancel");
3951
+ __publicField$F(this, "dialogOrderCancelButton");
3952
+ __publicField$F(this, "dialogBackButton");
3805
3953
  this.orderExpandButton = page.getByRole("button", { name: /Expand|Show details/ }).first();
3806
3954
  this.cartLineItemImages = page.locator(".line-item-img-link");
3807
3955
  this.digitalProductDownloadButton = page.getByRole("link", { name: "Download" }).first();
@@ -3849,44 +3997,59 @@ class AccountOrder {
3849
3997
  }
3850
3998
  }
3851
3999
 
3852
- var __defProp$C = Object.defineProperty;
3853
- var __defNormalProp$C = (obj, key, value) => key in obj ? __defProp$C(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3854
- var __publicField$C = (obj, key, value) => {
3855
- __defNormalProp$C(obj, typeof key !== "symbol" ? key + "" : key, value);
4000
+ var __defProp$E = Object.defineProperty;
4001
+ var __defNormalProp$E = (obj, key, value) => key in obj ? __defProp$E(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4002
+ var __publicField$E = (obj, key, value) => {
4003
+ __defNormalProp$E(obj, typeof key !== "symbol" ? key + "" : key, value);
3856
4004
  return value;
3857
4005
  };
3858
4006
  class AccountAddresses {
3859
- constructor(page) {
4007
+ constructor(page, instanceMeta) {
3860
4008
  this.page = page;
3861
- __publicField$C(this, "addNewAddressButton");
3862
- __publicField$C(this, "editBillingAddressButton");
3863
- __publicField$C(this, "editShippingAddressButton");
3864
- __publicField$C(this, "useDefaultBillingAddressButton");
3865
- __publicField$C(this, "useDefaultShippingAddressButton");
4009
+ this.instanceMeta = instanceMeta;
4010
+ __publicField$E(this, "addNewAddressButton");
4011
+ __publicField$E(this, "editBillingAddressButton");
4012
+ __publicField$E(this, "editShippingAddressButton");
4013
+ __publicField$E(this, "useDefaultBillingAddressButton");
4014
+ __publicField$E(this, "useDefaultShippingAddressButton");
4015
+ __publicField$E(this, "deliveryNotPossibleAlert");
4016
+ __publicField$E(this, "availableAddresses");
4017
+ __publicField$E(this, "addressDropdownButton");
4018
+ __publicField$E(this, "availableAddressesUseAsBillingAddress");
4019
+ __publicField$E(this, "availableAddressesUseAsShippingAddress");
3866
4020
  this.addNewAddressButton = page.getByRole("link", { name: /Add (new )?address/ });
3867
4021
  this.editBillingAddressButton = page.getByRole("link", { name: "Edit address" }).first();
3868
4022
  this.editShippingAddressButton = page.getByRole("link", { name: "Edit address" }).nth(1);
3869
4023
  this.useDefaultBillingAddressButton = page.getByRole("button", { name: "Use as default billing address" });
3870
4024
  this.useDefaultShippingAddressButton = page.getByRole("button", { name: "Use as default shipping address" });
4025
+ if (satisfies(instanceMeta.version, "<6.7")) {
4026
+ this.availableAddresses = page.locator(".other-address").locator(".address").nth(1);
4027
+ this.deliveryNotPossibleAlert = this.availableAddresses.getByText("A delivery to this country is not possible.");
4028
+ } else {
4029
+ this.availableAddresses = page.locator(".address-manager-list-wrapper");
4030
+ this.addressDropdownButton = this.availableAddresses.locator("#dropdownMenuButton");
4031
+ this.availableAddressesUseAsBillingAddress = this.availableAddresses.getByRole("button", { name: "Use as default billing address" });
4032
+ this.availableAddressesUseAsShippingAddress = this.availableAddresses.getByRole("button", { name: "Use as default shipping address" });
4033
+ }
3871
4034
  }
3872
4035
  url() {
3873
4036
  return "account/address";
3874
4037
  }
3875
4038
  }
3876
4039
 
3877
- var __defProp$B = Object.defineProperty;
3878
- var __defNormalProp$B = (obj, key, value) => key in obj ? __defProp$B(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3879
- var __publicField$B = (obj, key, value) => {
3880
- __defNormalProp$B(obj, typeof key !== "symbol" ? key + "" : key, value);
4040
+ var __defProp$D = Object.defineProperty;
4041
+ var __defNormalProp$D = (obj, key, value) => key in obj ? __defProp$D(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4042
+ var __publicField$D = (obj, key, value) => {
4043
+ __defNormalProp$D(obj, typeof key !== "symbol" ? key + "" : key, value);
3881
4044
  return value;
3882
4045
  };
3883
4046
  class AccountPayment {
3884
4047
  constructor(page) {
3885
4048
  this.page = page;
3886
- __publicField$B(this, "cashOnDeliveryOption");
3887
- __publicField$B(this, "paidInAdvanceOption");
3888
- __publicField$B(this, "invoiceOption");
3889
- __publicField$B(this, "changeDefaultPaymentButton");
4049
+ __publicField$D(this, "cashOnDeliveryOption");
4050
+ __publicField$D(this, "paidInAdvanceOption");
4051
+ __publicField$D(this, "invoiceOption");
4052
+ __publicField$D(this, "changeDefaultPaymentButton");
3890
4053
  this.cashOnDeliveryOption = page.getByLabel("Cash on delivery");
3891
4054
  this.paidInAdvanceOption = page.getByLabel("Paid in advance");
3892
4055
  this.invoiceOption = page.getByLabel("Invoice");
@@ -3897,17 +4060,17 @@ class AccountPayment {
3897
4060
  }
3898
4061
  }
3899
4062
 
3900
- var __defProp$A = Object.defineProperty;
3901
- var __defNormalProp$A = (obj, key, value) => key in obj ? __defProp$A(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3902
- var __publicField$A = (obj, key, value) => {
3903
- __defNormalProp$A(obj, typeof key !== "symbol" ? key + "" : key, value);
4063
+ var __defProp$C = Object.defineProperty;
4064
+ var __defNormalProp$C = (obj, key, value) => key in obj ? __defProp$C(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4065
+ var __publicField$C = (obj, key, value) => {
4066
+ __defNormalProp$C(obj, typeof key !== "symbol" ? key + "" : key, value);
3904
4067
  return value;
3905
4068
  };
3906
4069
  class Search {
3907
4070
  constructor(page) {
3908
4071
  this.page = page;
3909
- __publicField$A(this, "headline");
3910
- __publicField$A(this, "productImages");
4072
+ __publicField$C(this, "headline");
4073
+ __publicField$C(this, "productImages");
3911
4074
  this.headline = page.locator("h1.search-headline");
3912
4075
  this.productImages = page.locator(".product-image-wrapper");
3913
4076
  }
@@ -3916,25 +4079,25 @@ class Search {
3916
4079
  }
3917
4080
  }
3918
4081
 
3919
- var __defProp$z = Object.defineProperty;
3920
- var __defNormalProp$z = (obj, key, value) => key in obj ? __defProp$z(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3921
- var __publicField$z = (obj, key, value) => {
3922
- __defNormalProp$z(obj, typeof key !== "symbol" ? key + "" : key, value);
4082
+ var __defProp$B = Object.defineProperty;
4083
+ var __defNormalProp$B = (obj, key, value) => key in obj ? __defProp$B(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4084
+ var __publicField$B = (obj, key, value) => {
4085
+ __defNormalProp$B(obj, typeof key !== "symbol" ? key + "" : key, value);
3923
4086
  return value;
3924
4087
  };
3925
4088
  class SearchSuggest extends Home {
3926
4089
  constructor(page) {
3927
4090
  super(page);
3928
4091
  this.page = page;
3929
- __publicField$z(this, "searchSuggestLineItemImages");
3930
- __publicField$z(this, "searchInput");
3931
- __publicField$z(this, "searchIcon");
3932
- __publicField$z(this, "searchSuggestNoResult");
3933
- __publicField$z(this, "searchSuggestLineItemName");
3934
- __publicField$z(this, "searchSuggestLineItemPrice");
3935
- __publicField$z(this, "searchSuggestTotalLink");
3936
- __publicField$z(this, "searchResultTotal");
3937
- __publicField$z(this, "searchHeadline");
4092
+ __publicField$B(this, "searchSuggestLineItemImages");
4093
+ __publicField$B(this, "searchInput");
4094
+ __publicField$B(this, "searchIcon");
4095
+ __publicField$B(this, "searchSuggestNoResult");
4096
+ __publicField$B(this, "searchSuggestLineItemName");
4097
+ __publicField$B(this, "searchSuggestLineItemPrice");
4098
+ __publicField$B(this, "searchSuggestTotalLink");
4099
+ __publicField$B(this, "searchResultTotal");
4100
+ __publicField$B(this, "searchHeadline");
3938
4101
  this.searchSuggestLineItemImages = page.locator(".search-suggest-product-image-container");
3939
4102
  this.searchInput = page.locator(".header-search-input");
3940
4103
  this.searchIcon = page.locator(".header-search-icon");
@@ -3964,31 +4127,31 @@ class CustomRegister extends AccountLogin {
3964
4127
  }
3965
4128
  }
3966
4129
 
3967
- var __defProp$y = Object.defineProperty;
3968
- var __defNormalProp$y = (obj, key, value) => key in obj ? __defProp$y(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3969
- var __publicField$y = (obj, key, value) => {
3970
- __defNormalProp$y(obj, typeof key !== "symbol" ? key + "" : key, value);
4130
+ var __defProp$A = Object.defineProperty;
4131
+ var __defNormalProp$A = (obj, key, value) => key in obj ? __defProp$A(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4132
+ var __publicField$A = (obj, key, value) => {
4133
+ __defNormalProp$A(obj, typeof key !== "symbol" ? key + "" : key, value);
3971
4134
  return value;
3972
4135
  };
3973
4136
  class CheckoutOrderEdit {
3974
4137
  constructor(page) {
3975
4138
  this.page = page;
3976
- __publicField$y(this, "completePaymentButton");
3977
- __publicField$y(this, "orderCancelButton");
3978
- __publicField$y(this, "dialogOrderCancel");
3979
- __publicField$y(this, "dialogOrderCancelButton");
3980
- __publicField$y(this, "dialogBackButton");
4139
+ __publicField$A(this, "completePaymentButton");
4140
+ __publicField$A(this, "orderCancelButton");
4141
+ __publicField$A(this, "dialogOrderCancel");
4142
+ __publicField$A(this, "dialogOrderCancelButton");
4143
+ __publicField$A(this, "dialogBackButton");
3981
4144
  /**
3982
4145
  * Payment options
3983
4146
  */
3984
- __publicField$y(this, "paymentCashOnDelivery");
3985
- __publicField$y(this, "paymentPaidInAdvance");
3986
- __publicField$y(this, "paymentInvoice");
4147
+ __publicField$A(this, "paymentCashOnDelivery");
4148
+ __publicField$A(this, "paymentPaidInAdvance");
4149
+ __publicField$A(this, "paymentInvoice");
3987
4150
  /**
3988
4151
  * Shipping options
3989
4152
  */
3990
- __publicField$y(this, "shippingStandard");
3991
- __publicField$y(this, "shippingExpress");
4153
+ __publicField$A(this, "shippingStandard");
4154
+ __publicField$A(this, "shippingExpress");
3992
4155
  this.completePaymentButton = page.getByRole("button", { name: "Complete payment" });
3993
4156
  this.orderCancelButton = page.getByRole("button", { name: "Cancel order" });
3994
4157
  this.dialogOrderCancel = page.getByRole("dialog", { name: "Cancel order" });
@@ -4013,34 +4176,36 @@ class CheckoutOrderEdit {
4013
4176
  }
4014
4177
  }
4015
4178
 
4016
- var __defProp$x = Object.defineProperty;
4017
- var __defNormalProp$x = (obj, key, value) => key in obj ? __defProp$x(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4018
- var __publicField$x = (obj, key, value) => {
4019
- __defNormalProp$x(obj, typeof key !== "symbol" ? key + "" : key, value);
4179
+ var __defProp$z = Object.defineProperty;
4180
+ var __defNormalProp$z = (obj, key, value) => key in obj ? __defProp$z(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4181
+ var __publicField$z = (obj, key, value) => {
4182
+ __defNormalProp$z(obj, typeof key !== "symbol" ? key + "" : key, value);
4020
4183
  return value;
4021
4184
  };
4022
4185
  class AccountAddressCreate {
4023
4186
  constructor(page) {
4024
4187
  this.page = page;
4025
- __publicField$x(this, "salutationDropdown");
4026
- __publicField$x(this, "firstNameInput");
4027
- __publicField$x(this, "lastNameInput");
4028
- __publicField$x(this, "companyInput");
4029
- __publicField$x(this, "departmentInput");
4030
- __publicField$x(this, "streetInput");
4031
- __publicField$x(this, "zipcodeInput");
4032
- __publicField$x(this, "cityInput");
4033
- __publicField$x(this, "countryDropdown");
4034
- __publicField$x(this, "saveAddressButton");
4035
- this.salutationDropdown = page.locator("#addresspersonalSalutation");
4036
- this.firstNameInput = page.locator("#addresspersonalFirstName");
4037
- this.lastNameInput = page.locator("#addresspersonalLastName");
4038
- this.companyInput = page.locator("#addresscompany");
4039
- this.departmentInput = page.locator("#addressdepartment");
4040
- this.streetInput = page.locator("#addressAddressStreet");
4041
- this.zipcodeInput = page.locator("#addressAddressZipcode");
4188
+ __publicField$z(this, "salutationDropdown");
4189
+ __publicField$z(this, "firstNameInput");
4190
+ __publicField$z(this, "lastNameInput");
4191
+ __publicField$z(this, "companyInput");
4192
+ __publicField$z(this, "departmentInput");
4193
+ __publicField$z(this, "streetInput");
4194
+ __publicField$z(this, "zipcodeInput");
4195
+ __publicField$z(this, "cityInput");
4196
+ __publicField$z(this, "countryDropdown");
4197
+ __publicField$z(this, "saveAddressButton");
4198
+ __publicField$z(this, "stateDropdown");
4199
+ this.salutationDropdown = page.getByRole("combobox", { name: "Salutation" });
4200
+ this.firstNameInput = page.getByRole("textbox", { name: "First name" });
4201
+ this.lastNameInput = page.getByRole("textbox", { name: "Last name" });
4202
+ this.companyInput = page.getByRole("textbox", { name: "Company" });
4203
+ this.departmentInput = page.getByRole("textbox", { name: "Department" });
4204
+ this.streetInput = page.getByRole("textbox", { name: "Street" });
4205
+ this.zipcodeInput = page.getByRole("textbox", { name: "Postal code" });
4042
4206
  this.cityInput = page.locator("#addressAddressCity");
4043
4207
  this.countryDropdown = page.locator("#addressAddressCountry");
4208
+ this.stateDropdown = page.locator("#addressAddressCountryState");
4044
4209
  this.saveAddressButton = page.locator(".address-form-submit");
4045
4210
  }
4046
4211
  url() {
@@ -4048,6 +4213,107 @@ class AccountAddressCreate {
4048
4213
  }
4049
4214
  }
4050
4215
 
4216
+ var __defProp$y = Object.defineProperty;
4217
+ var __defNormalProp$y = (obj, key, value) => key in obj ? __defProp$y(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4218
+ var __publicField$y = (obj, key, value) => {
4219
+ __defNormalProp$y(obj, typeof key !== "symbol" ? key + "" : key, value);
4220
+ return value;
4221
+ };
4222
+ class PageNotFound {
4223
+ constructor(page) {
4224
+ this.page = page;
4225
+ __publicField$y(this, "pageNotFoundImage");
4226
+ __publicField$y(this, "headline");
4227
+ __publicField$y(this, "pageNotFoundMessage");
4228
+ __publicField$y(this, "backToShopButton");
4229
+ this.pageNotFoundImage = page.getByAltText("Page not found");
4230
+ this.headline = page.getByRole("heading", { name: "Page not found" });
4231
+ this.pageNotFoundMessage = page.getByText(`We are sorry, the page you're looking for could not be found. It may no longer exist or may have been moved.`);
4232
+ this.backToShopButton = page.getByRole("link", { name: "Back to shop" });
4233
+ }
4234
+ url() {
4235
+ return "non-existing-page";
4236
+ }
4237
+ }
4238
+
4239
+ var __defProp$x = Object.defineProperty;
4240
+ var __defNormalProp$x = (obj, key, value) => key in obj ? __defProp$x(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4241
+ var __publicField$x = (obj, key, value) => {
4242
+ __defNormalProp$x(obj, typeof key !== "symbol" ? key + "" : key, value);
4243
+ return value;
4244
+ };
4245
+ class ContactForm extends Home {
4246
+ constructor(page, instanceMeta) {
4247
+ super(page);
4248
+ this.page = page;
4249
+ this.instanceMeta = instanceMeta;
4250
+ /**
4251
+ * @deprecated Compatible until 6.6.x, will be removed in 6.8.x, use 'contactWrapper' instead
4252
+ */
4253
+ __publicField$x(this, "contactModal");
4254
+ /**
4255
+ * @deprecated Compatible until 6.6.x, will be removed in 6.8.x, use 'contactSuccessMessage' instead
4256
+ */
4257
+ __publicField$x(this, "contactSuccessModal");
4258
+ __publicField$x(this, "contactWrapper");
4259
+ __publicField$x(this, "salutationSelect");
4260
+ __publicField$x(this, "firstNameInput");
4261
+ __publicField$x(this, "lastNameInput");
4262
+ __publicField$x(this, "emailInput");
4263
+ __publicField$x(this, "phoneInput");
4264
+ __publicField$x(this, "subjectInput");
4265
+ __publicField$x(this, "commentInput");
4266
+ __publicField$x(this, "privacyPolicyCheckbox");
4267
+ __publicField$x(this, "submitButton");
4268
+ __publicField$x(this, "contactSuccessMessage");
4269
+ __publicField$x(this, "cardTitle");
4270
+ __publicField$x(this, "formFieldFeedback");
4271
+ __publicField$x(this, "formAlert");
4272
+ /**
4273
+ * Captcha locators
4274
+ */
4275
+ __publicField$x(this, "basicCaptcha");
4276
+ __publicField$x(this, "basicCaptchaImage");
4277
+ __publicField$x(this, "basicCaptchaRefreshButton");
4278
+ __publicField$x(this, "basicCaptchaInput");
4279
+ __publicField$x(this, "greCaptchaV2Container");
4280
+ __publicField$x(this, "greCaptchaV2Input");
4281
+ __publicField$x(this, "greCaptchaProtectionInformation");
4282
+ this.contactModal = this.page.getByRole("dialog").filter({ has: this.page.getByText("Contact") });
4283
+ if (satisfies(instanceMeta.version, "<6.7")) {
4284
+ this.contactWrapper = this.page.getByRole("dialog").filter({ has: this.page.getByText("Contact") });
4285
+ this.contactSuccessModal = this.page.getByRole("dialog").filter({ has: this.page.locator(".confirm-message") });
4286
+ this.contactSuccessMessage = this.contactSuccessModal.locator(".confirm-message");
4287
+ } else {
4288
+ this.contactWrapper = this.page.locator(".card").filter({ has: this.page.getByText("Contact") });
4289
+ this.formFieldFeedback = this.contactWrapper.locator(".form-field-feedback");
4290
+ this.formAlert = this.page.getByRole("alert");
4291
+ this.contactSuccessMessage = this.page.locator(".confirm-message");
4292
+ }
4293
+ this.basicCaptcha = this.contactWrapper.locator(".basic-captcha");
4294
+ this.salutationSelect = this.contactWrapper.getByLabel("Salutation");
4295
+ this.firstNameInput = this.contactWrapper.getByLabel("First name");
4296
+ this.lastNameInput = this.contactWrapper.getByLabel("Last name");
4297
+ this.emailInput = this.contactWrapper.getByLabel("Your email address");
4298
+ this.phoneInput = this.contactWrapper.getByLabel("Phone");
4299
+ this.subjectInput = this.contactWrapper.getByLabel("Subject");
4300
+ this.commentInput = this.contactWrapper.getByLabel("Comment");
4301
+ this.privacyPolicyCheckbox = this.contactWrapper.getByRole("checkbox", { name: "By selecting continue you confirm that you have read and agree to our" });
4302
+ this.submitButton = this.contactWrapper.getByRole("button", { name: "Submit" });
4303
+ this.cardTitle = this.contactWrapper.locator(".card-title");
4304
+ this.basicCaptcha = this.contactWrapper.locator(".basic-captcha");
4305
+ this.greCaptchaV2Container = this.contactWrapper.locator(".grecaptcha-v2-container");
4306
+ this.greCaptchaV2Input = this.contactWrapper.locator(".grecaptcha-v2-input");
4307
+ this.greCaptchaProtectionInformation = this.contactWrapper.locator(".grecaptcha-protection-information");
4308
+ this.basicCaptchaImage = this.basicCaptcha.locator("img");
4309
+ this.basicCaptchaRefreshButton = this.basicCaptcha.locator(".basic-captcha-content-refresh-icon");
4310
+ this.basicCaptchaInput = this.basicCaptcha.locator('input[name="shopware_basic_captcha_confirm"]');
4311
+ }
4312
+ url() {
4313
+ return new Error("Function not implemented, because it is a modal page object").message;
4314
+ }
4315
+ }
4316
+
4051
4317
  const StorefrontPageObjects = {
4052
4318
  Home,
4053
4319
  ProductDetail: ProductDetail$1,
@@ -4068,7 +4334,9 @@ const StorefrontPageObjects = {
4068
4334
  Search,
4069
4335
  SearchSuggest,
4070
4336
  CustomRegister,
4071
- CheckoutOrderEdit
4337
+ CheckoutOrderEdit,
4338
+ PageNotFound,
4339
+ ContactForm
4072
4340
  };
4073
4341
  const test$6 = test$e.extend({
4074
4342
  StorefrontHome: async ({ StorefrontPage }, use) => {
@@ -4110,8 +4378,8 @@ const test$6 = test$e.extend({
4110
4378
  StorefrontAccountOrder: async ({ StorefrontPage }, use) => {
4111
4379
  await use(new AccountOrder(StorefrontPage));
4112
4380
  },
4113
- StorefrontAccountAddresses: async ({ StorefrontPage }, use) => {
4114
- await use(new AccountAddresses(StorefrontPage));
4381
+ StorefrontAccountAddresses: async ({ StorefrontPage, InstanceMeta }, use) => {
4382
+ await use(new AccountAddresses(StorefrontPage, InstanceMeta));
4115
4383
  },
4116
4384
  StorefrontAccountAddressCreate: async ({ StorefrontPage }, use) => {
4117
4385
  await use(new AccountAddressCreate(StorefrontPage));
@@ -4130,6 +4398,12 @@ const test$6 = test$e.extend({
4130
4398
  },
4131
4399
  StorefrontCheckoutOrderEdit: async ({ StorefrontPage }, use) => {
4132
4400
  await use(new CheckoutOrderEdit(StorefrontPage));
4401
+ },
4402
+ StorefrontPageNotFound: async ({ StorefrontPage }, use) => {
4403
+ await use(new PageNotFound(StorefrontPage));
4404
+ },
4405
+ StorefrontContactForm: async ({ StorefrontPage, InstanceMeta }, use) => {
4406
+ await use(new ContactForm(StorefrontPage, InstanceMeta));
4133
4407
  }
4134
4408
  });
4135
4409
 
@@ -6730,7 +7004,7 @@ const Logout = test$e.extend({
6730
7004
  });
6731
7005
 
6732
7006
  const Register = test$e.extend({
6733
- Register: async ({ StorefrontAccountLogin, AdminApiContext: AdminApiContext2, IdProvider }, use) => {
7007
+ Register: async ({ StorefrontAccountLogin, IdProvider, TestDataService }, use) => {
6734
7008
  let registeredEmail = "";
6735
7009
  const defaultRegistrationData = {
6736
7010
  isCommercial: false,
@@ -6769,36 +7043,15 @@ const Register = test$e.extend({
6769
7043
  await StorefrontAccountLogin.cityInput.fill(registrationData.city);
6770
7044
  await StorefrontAccountLogin.countryInput.selectOption({ label: registrationData.country });
6771
7045
  await StorefrontAccountLogin.registerButton.click();
7046
+ const customer = await TestDataService.getCustomerByEmail(registeredEmail);
7047
+ if (customer) {
7048
+ TestDataService.addCreatedRecord("customer", customer.id);
7049
+ }
6772
7050
  };
6773
7051
  };
6774
7052
  await use(task);
6775
- await deleteRegisteredUser(AdminApiContext2, registeredEmail);
6776
7053
  }
6777
7054
  });
6778
- async function deleteRegisteredUser(adminApiContext, email) {
6779
- if (!email)
6780
- return;
6781
- try {
6782
- const response = await adminApiContext.post("search/customer", {
6783
- data: {
6784
- limit: 1,
6785
- filter: [
6786
- {
6787
- type: "equals",
6788
- field: "email",
6789
- value: email
6790
- }
6791
- ]
6792
- }
6793
- });
6794
- const { data: customers } = await response.json();
6795
- for (const customer of customers) {
6796
- await adminApiContext.delete(`customer/${customer.id}`);
6797
- }
6798
- } catch (error) {
6799
- console.error(`Error deleting user with email ${email}:`, error);
6800
- }
6801
- }
6802
7055
 
6803
7056
  const RegisterGuest = test$e.extend({
6804
7057
  RegisterGuest: async ({ StorefrontAccountLogin, AdminApiContext }, use) => {
@@ -6860,6 +7113,29 @@ const ChangeStorefrontCurrency = test$e.extend({
6860
7113
  }
6861
7114
  });
6862
7115
 
7116
+ const AddNewAddress = test$e.extend({
7117
+ AddNewAddress: async ({ StorefrontAccountAddresses, StorefrontAccountAddressCreate }, use) => {
7118
+ const task = (address) => {
7119
+ return async function AddNewAddress2() {
7120
+ await StorefrontAccountAddresses.addNewAddressButton.click();
7121
+ await StorefrontAccountAddressCreate.firstNameInput.fill(address.firstName);
7122
+ await StorefrontAccountAddressCreate.lastNameInput.fill(address.lastName);
7123
+ await StorefrontAccountAddressCreate.companyInput.fill(address.company);
7124
+ await StorefrontAccountAddressCreate.departmentInput.fill(address.department);
7125
+ await StorefrontAccountAddressCreate.streetInput.fill(address.street);
7126
+ await StorefrontAccountAddressCreate.zipcodeInput.fill(address.zipCode);
7127
+ await StorefrontAccountAddressCreate.cityInput.fill(address.city);
7128
+ await StorefrontAccountAddressCreate.countryDropdown.selectOption({ label: address.country });
7129
+ if (address.state) {
7130
+ await StorefrontAccountAddressCreate.stateDropdown.selectOption({ label: address.state });
7131
+ }
7132
+ await StorefrontAccountAddressCreate.saveAddressButton.click();
7133
+ };
7134
+ };
7135
+ await use(task);
7136
+ }
7137
+ });
7138
+
6863
7139
  const AddProductToCart = test$e.extend({
6864
7140
  AddProductToCart: async ({ ShopCustomer, StorefrontProductDetail }, use) => {
6865
7141
  const task = (ProductData, quantity = "1") => {
@@ -7073,6 +7349,7 @@ const test$2 = mergeTests(
7073
7349
  Register,
7074
7350
  RegisterGuest,
7075
7351
  ChangeStorefrontCurrency,
7352
+ AddNewAddress,
7076
7353
  AddProductToCart,
7077
7354
  ChangeProductQuantity,
7078
7355
  ProceedFromProductToCheckout,