@shopware-ag/acceptance-test-suite 12.23.2 → 12.24.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.d.mts CHANGED
@@ -368,6 +368,9 @@ type DeliveryTime = components["schemas"]["DeliveryTime"] & {
368
368
  type CmsPage = components["schemas"]["CmsPage"] & {
369
369
  id: string;
370
370
  };
371
+ type LandingPage = components["schemas"]["LandingPage"] & {
372
+ id: string;
373
+ };
371
374
  type CustomerGroup = components["schemas"]["CustomerGroup"] & {
372
375
  id: string;
373
376
  };
@@ -842,6 +845,20 @@ declare class TestDataService {
842
845
  * @param overrides - Specific data overrides that will be applied to the cms page layout data struct.
843
846
  */
844
847
  createBasicPageLayout(cmsPageType: string, overrides?: Partial<CmsPage>): Promise<CmsPage>;
848
+ /**
849
+ * Creates a landing page category
850
+ *
851
+ * @param salesChannelId - The uuid of the sales channel in which the landing page should be active.
852
+ * @param overrides - Specific data overrides applied to the landing page payload.
853
+ */
854
+ createLandingPage(overrides?: Partial<LandingPage>, salesChannelId?: string): Promise<LandingPage>;
855
+ /**
856
+ * Assigns a CMS landing page layout to a landing page category
857
+ *
858
+ * @param landingPageId - The uuid of the landing page category.
859
+ * @param cmsPageId - The uuid of the CMS landing page layout.
860
+ */
861
+ assignLandingPageLayout(landingPageId: string, cmsPageId: string): Promise<LandingPage>;
845
862
  /**
846
863
  * Creates a random country
847
864
  *
@@ -1170,6 +1187,14 @@ declare class TestDataService {
1170
1187
  * Will delete all entities created by the data service via sync API.
1171
1188
  */
1172
1189
  cleanUp(): Promise<playwright_core.APIResponse | null>;
1190
+ /**
1191
+ * Deletes all documents of the given orders.
1192
+ * Documents restrict the deletion of their order, so the cleanup calls this before deleting created orders.
1193
+ * Dependent documents (e.g. credit notes, cancellation invoices) are deleted before the documents they reference.
1194
+ *
1195
+ * @param orderIds - The ids of the orders whose documents should be deleted.
1196
+ */
1197
+ deleteOrderDocuments(orderIds: string[]): Promise<void>;
1173
1198
  isProduct(item: Product | Promotion): item is Product;
1174
1199
  isPromotion(item: Product | Promotion): item is Promotion;
1175
1200
  /**
@@ -1311,6 +1336,15 @@ declare class TestDataService {
1311
1336
  } & Partial<OrderLineItem>;
1312
1337
  getBasicPromotionStruct(salesChannelId?: string, overrides?: Partial<Promotion>): Partial<Promotion>;
1313
1338
  getBasicCmsStruct(cmsType: string, overrides: Partial<CmsPage>): Partial<CmsPage>;
1339
+ getBasicLandingPageStruct(salesChannelId: string, overrides?: Partial<LandingPage>): {
1340
+ id: string;
1341
+ name: string;
1342
+ url: string;
1343
+ active: boolean;
1344
+ salesChannels: {
1345
+ id: string;
1346
+ }[];
1347
+ } & Partial<LandingPage>;
1314
1348
  getBasicCustomerGroupStruct(overrides?: Partial<CustomerGroup>): Partial<CustomerGroup>;
1315
1349
  getBasicCustomerAddressStruct(customerId: string, overrides?: Partial<Address>): Partial<Address>;
1316
1350
  getSalesChannelAnalyticsStruct(overrides?: Partial<SalesChannelAnalytics>): Partial<SalesChannelAnalytics>;
@@ -5488,6 +5522,7 @@ declare class CustomerDetail implements PageObject {
5488
5522
  readonly customFieldCard: Locator;
5489
5523
  readonly customFieldSetTabs: Locator;
5490
5524
  readonly customFieldSetTabCustomContent: Locator;
5525
+ readonly customerGroupRegistrationAlert: Locator;
5491
5526
  readonly customerGroupRequestMessage: Locator;
5492
5527
  readonly customerGroupAcceptButton: Locator;
5493
5528
  readonly customerGroupDeclineButton: Locator;
@@ -7097,4 +7132,4 @@ declare const test: playwright_test.TestType<playwright_test.PlaywrightTestArgs
7097
7132
  }>;
7098
7133
 
7099
7134
  export { Actor, AdminPageObjects, BUNDLED_RESOURCES, COUNTRY_ADDRESS_DATA, FeatureService, IdProvider, LanguageHelper, RuleType, StorefrontPageObjects, TestDataService, assertScreenshot, baseNamespaces, clearDelayedCache, compareFlowTemplateWithFlow, createNewAdminPageContext, createRandomImage, createSolidColorImage, encodeImage, expandAdminMenu, extractIdFromUrl, formatPrice, getCountryAddressData, getCountryCodeFromLocale, getCountryId, getCurrency, getCurrencyCodeFromLocale, getCurrencySymbolFromLocale, getCurrentContext, getDefaultShippingMethodId, getFlow, getFlowId, getFlowTemplate, getLanguageCode, getLanguageData, getLocale, getMediaId, getOrderTransactionId, getPaymentMethodId, getPromotionWithDiscount, getSalutationId, getShippingMethodId, getSnippetSetId, getStateMachineId, getStateMachineStateId, getTaxId, getThemeId, hideElements, hideSymfonyToolbarOnReload, isPaaSInstance, isSaaSInstance, isThemeCompiled, loginToAdministration, mockApiCalls, replaceElements, replaceElementsIndividually, setCurrentContext, setOrderStatus, setViewport, test, translate, updateAdminUser, uploadRandomPngMedia };
7100
- export type { AccountData, AclRole, Address, BasicRuleCondition, CalculatedTaxes, Category$1 as Category, CategoryCustomizableLinkData, CategoryData, CmsPage, Country$1 as Country, CreatedRecord, Currency$2 as Currency, CustomField, CustomFieldData, CustomFieldSet, Customer, CustomerAddress, CustomerGroup, DataServiceOptions, DeliveryTime, FixtureTypes, Flow, FlowConfig, FlowTemplate, Image, Language$2 as Language, Manufacturer, Media$1 as Media, NewsletterRecipient, Options, Order, OrderDelivery, OrderLineItem, OrderStatus, PageObject, PaymentMethod$1 as PaymentMethod, Price, Product, ProductCreationType, ProductCrossSelling, ProductFormData, ProductPrice, ProductReview, Promotion, PromotionDiscount, PromotionWithConditionRuleOptions, PropertyGroup, PropertyGroupOption, RegistrationData, ReplaceTarget, Rule, RuleAssignmentEntity, SalesChannel, SalesChannelAnalytics, SalesChannelDomain, SalesChannelRecord, Salutation, ShippingMethod$1 as ShippingMethod, SimpleLineItem, StateMachine, StateMachineState, SyncApiOperation, SystemConfig, Tag, TagData, Task, Tax$1 as Tax, TaxRules, TranslateFn, TranslationKey, UploadMediaTarget, User, VariantListingConfig };
7135
+ export type { AccountData, AclRole, Address, BasicRuleCondition, CalculatedTaxes, Category$1 as Category, CategoryCustomizableLinkData, CategoryData, CmsPage, Country$1 as Country, CreatedRecord, Currency$2 as Currency, CustomField, CustomFieldData, CustomFieldSet, Customer, CustomerAddress, CustomerGroup, DataServiceOptions, DeliveryTime, FixtureTypes, Flow, FlowConfig, FlowTemplate, Image, LandingPage, Language$2 as Language, Manufacturer, Media$1 as Media, NewsletterRecipient, Options, Order, OrderDelivery, OrderLineItem, OrderStatus, PageObject, PaymentMethod$1 as PaymentMethod, Price, Product, ProductCreationType, ProductCrossSelling, ProductFormData, ProductPrice, ProductReview, Promotion, PromotionDiscount, PromotionWithConditionRuleOptions, PropertyGroup, PropertyGroupOption, RegistrationData, ReplaceTarget, Rule, RuleAssignmentEntity, SalesChannel, SalesChannelAnalytics, SalesChannelDomain, SalesChannelRecord, Salutation, ShippingMethod$1 as ShippingMethod, SimpleLineItem, StateMachine, StateMachineState, SyncApiOperation, SystemConfig, Tag, TagData, Task, Tax$1 as Tax, TaxRules, TranslateFn, TranslationKey, UploadMediaTarget, User, VariantListingConfig };
package/dist/index.d.ts CHANGED
@@ -368,6 +368,9 @@ type DeliveryTime = components["schemas"]["DeliveryTime"] & {
368
368
  type CmsPage = components["schemas"]["CmsPage"] & {
369
369
  id: string;
370
370
  };
371
+ type LandingPage = components["schemas"]["LandingPage"] & {
372
+ id: string;
373
+ };
371
374
  type CustomerGroup = components["schemas"]["CustomerGroup"] & {
372
375
  id: string;
373
376
  };
@@ -842,6 +845,20 @@ declare class TestDataService {
842
845
  * @param overrides - Specific data overrides that will be applied to the cms page layout data struct.
843
846
  */
844
847
  createBasicPageLayout(cmsPageType: string, overrides?: Partial<CmsPage>): Promise<CmsPage>;
848
+ /**
849
+ * Creates a landing page category
850
+ *
851
+ * @param salesChannelId - The uuid of the sales channel in which the landing page should be active.
852
+ * @param overrides - Specific data overrides applied to the landing page payload.
853
+ */
854
+ createLandingPage(overrides?: Partial<LandingPage>, salesChannelId?: string): Promise<LandingPage>;
855
+ /**
856
+ * Assigns a CMS landing page layout to a landing page category
857
+ *
858
+ * @param landingPageId - The uuid of the landing page category.
859
+ * @param cmsPageId - The uuid of the CMS landing page layout.
860
+ */
861
+ assignLandingPageLayout(landingPageId: string, cmsPageId: string): Promise<LandingPage>;
845
862
  /**
846
863
  * Creates a random country
847
864
  *
@@ -1170,6 +1187,14 @@ declare class TestDataService {
1170
1187
  * Will delete all entities created by the data service via sync API.
1171
1188
  */
1172
1189
  cleanUp(): Promise<playwright_core.APIResponse | null>;
1190
+ /**
1191
+ * Deletes all documents of the given orders.
1192
+ * Documents restrict the deletion of their order, so the cleanup calls this before deleting created orders.
1193
+ * Dependent documents (e.g. credit notes, cancellation invoices) are deleted before the documents they reference.
1194
+ *
1195
+ * @param orderIds - The ids of the orders whose documents should be deleted.
1196
+ */
1197
+ deleteOrderDocuments(orderIds: string[]): Promise<void>;
1173
1198
  isProduct(item: Product | Promotion): item is Product;
1174
1199
  isPromotion(item: Product | Promotion): item is Promotion;
1175
1200
  /**
@@ -1311,6 +1336,15 @@ declare class TestDataService {
1311
1336
  } & Partial<OrderLineItem>;
1312
1337
  getBasicPromotionStruct(salesChannelId?: string, overrides?: Partial<Promotion>): Partial<Promotion>;
1313
1338
  getBasicCmsStruct(cmsType: string, overrides: Partial<CmsPage>): Partial<CmsPage>;
1339
+ getBasicLandingPageStruct(salesChannelId: string, overrides?: Partial<LandingPage>): {
1340
+ id: string;
1341
+ name: string;
1342
+ url: string;
1343
+ active: boolean;
1344
+ salesChannels: {
1345
+ id: string;
1346
+ }[];
1347
+ } & Partial<LandingPage>;
1314
1348
  getBasicCustomerGroupStruct(overrides?: Partial<CustomerGroup>): Partial<CustomerGroup>;
1315
1349
  getBasicCustomerAddressStruct(customerId: string, overrides?: Partial<Address>): Partial<Address>;
1316
1350
  getSalesChannelAnalyticsStruct(overrides?: Partial<SalesChannelAnalytics>): Partial<SalesChannelAnalytics>;
@@ -5488,6 +5522,7 @@ declare class CustomerDetail implements PageObject {
5488
5522
  readonly customFieldCard: Locator;
5489
5523
  readonly customFieldSetTabs: Locator;
5490
5524
  readonly customFieldSetTabCustomContent: Locator;
5525
+ readonly customerGroupRegistrationAlert: Locator;
5491
5526
  readonly customerGroupRequestMessage: Locator;
5492
5527
  readonly customerGroupAcceptButton: Locator;
5493
5528
  readonly customerGroupDeclineButton: Locator;
@@ -7097,4 +7132,4 @@ declare const test: playwright_test.TestType<playwright_test.PlaywrightTestArgs
7097
7132
  }>;
7098
7133
 
7099
7134
  export { Actor, AdminPageObjects, BUNDLED_RESOURCES, COUNTRY_ADDRESS_DATA, FeatureService, IdProvider, LanguageHelper, RuleType, StorefrontPageObjects, TestDataService, assertScreenshot, baseNamespaces, clearDelayedCache, compareFlowTemplateWithFlow, createNewAdminPageContext, createRandomImage, createSolidColorImage, encodeImage, expandAdminMenu, extractIdFromUrl, formatPrice, getCountryAddressData, getCountryCodeFromLocale, getCountryId, getCurrency, getCurrencyCodeFromLocale, getCurrencySymbolFromLocale, getCurrentContext, getDefaultShippingMethodId, getFlow, getFlowId, getFlowTemplate, getLanguageCode, getLanguageData, getLocale, getMediaId, getOrderTransactionId, getPaymentMethodId, getPromotionWithDiscount, getSalutationId, getShippingMethodId, getSnippetSetId, getStateMachineId, getStateMachineStateId, getTaxId, getThemeId, hideElements, hideSymfonyToolbarOnReload, isPaaSInstance, isSaaSInstance, isThemeCompiled, loginToAdministration, mockApiCalls, replaceElements, replaceElementsIndividually, setCurrentContext, setOrderStatus, setViewport, test, translate, updateAdminUser, uploadRandomPngMedia };
7100
- export type { AccountData, AclRole, Address, BasicRuleCondition, CalculatedTaxes, Category$1 as Category, CategoryCustomizableLinkData, CategoryData, CmsPage, Country$1 as Country, CreatedRecord, Currency$2 as Currency, CustomField, CustomFieldData, CustomFieldSet, Customer, CustomerAddress, CustomerGroup, DataServiceOptions, DeliveryTime, FixtureTypes, Flow, FlowConfig, FlowTemplate, Image, Language$2 as Language, Manufacturer, Media$1 as Media, NewsletterRecipient, Options, Order, OrderDelivery, OrderLineItem, OrderStatus, PageObject, PaymentMethod$1 as PaymentMethod, Price, Product, ProductCreationType, ProductCrossSelling, ProductFormData, ProductPrice, ProductReview, Promotion, PromotionDiscount, PromotionWithConditionRuleOptions, PropertyGroup, PropertyGroupOption, RegistrationData, ReplaceTarget, Rule, RuleAssignmentEntity, SalesChannel, SalesChannelAnalytics, SalesChannelDomain, SalesChannelRecord, Salutation, ShippingMethod$1 as ShippingMethod, SimpleLineItem, StateMachine, StateMachineState, SyncApiOperation, SystemConfig, Tag, TagData, Task, Tax$1 as Tax, TaxRules, TranslateFn, TranslationKey, UploadMediaTarget, User, VariantListingConfig };
7135
+ export type { AccountData, AclRole, Address, BasicRuleCondition, CalculatedTaxes, Category$1 as Category, CategoryCustomizableLinkData, CategoryData, CmsPage, Country$1 as Country, CreatedRecord, Currency$2 as Currency, CustomField, CustomFieldData, CustomFieldSet, Customer, CustomerAddress, CustomerGroup, DataServiceOptions, DeliveryTime, FixtureTypes, Flow, FlowConfig, FlowTemplate, Image, LandingPage, Language$2 as Language, Manufacturer, Media$1 as Media, NewsletterRecipient, Options, Order, OrderDelivery, OrderLineItem, OrderStatus, PageObject, PaymentMethod$1 as PaymentMethod, Price, Product, ProductCreationType, ProductCrossSelling, ProductFormData, ProductPrice, ProductReview, Promotion, PromotionDiscount, PromotionWithConditionRuleOptions, PropertyGroup, PropertyGroupOption, RegistrationData, ReplaceTarget, Rule, RuleAssignmentEntity, SalesChannel, SalesChannelAnalytics, SalesChannelDomain, SalesChannelRecord, Salutation, ShippingMethod$1 as ShippingMethod, SimpleLineItem, StateMachine, StateMachineState, SyncApiOperation, SystemConfig, Tag, TagData, Task, Tax$1 as Tax, TaxRules, TranslateFn, TranslationKey, UploadMediaTarget, User, VariantListingConfig };
package/dist/index.mjs CHANGED
@@ -3982,6 +3982,8 @@ async function loginToAdministration(adminLoginPage, merchant, AdminApiContext)
3982
3982
  return adminLoginPage;
3983
3983
  }
3984
3984
 
3985
+ const THEME_SETUP_SAFETY_MARGIN = 15e3;
3986
+ const THEME_ASSIGN_MAX_ATTEMPTS = 5;
3985
3987
  const test$b = test$e.extend({
3986
3988
  AdminSession: [
3987
3989
  async ({ IdProvider, AdminApiContext, SalesChannelBaseConfig, browser }, use) => {
@@ -4025,7 +4027,7 @@ const test$b = test$e.extend({
4025
4027
  await page.close();
4026
4028
  setCurrentContext(null);
4027
4029
  },
4028
- StorefrontPage: async ({ DefaultSalesChannel, SalesChannelBaseConfig, browser, AdminApiContext, StoreApiContext, InstanceMeta, CustomTranslationResources }, use) => {
4030
+ StorefrontPage: async ({ DefaultSalesChannel, SalesChannelBaseConfig, browser, AdminApiContext, StoreApiContext, CustomTranslationResources }, use) => {
4029
4031
  const { url, salesChannel } = DefaultSalesChannel;
4030
4032
  const locale = getLocale();
4031
4033
  const languageHelper = await LanguageHelper.createInstance(locale, CustomTranslationResources);
@@ -4039,14 +4041,27 @@ const test$b = test$e.extend({
4039
4041
  let page;
4040
4042
  if (!await isThemeCompiled(StoreApiContext, DefaultSalesChannel.url)) {
4041
4043
  test$e.slow();
4042
- await AdminApiContext.post(`./_action/theme/${SalesChannelBaseConfig.defaultThemeId}/assign/${salesChannel.id}`);
4044
+ const deadline = Date.now() + (test$e.info().timeout || 18e4) - THEME_SETUP_SAFETY_MARGIN;
4045
+ const assignUrl = `./_action/theme/${SalesChannelBaseConfig.defaultThemeId}/assign/${salesChannel.id}`;
4046
+ let response = await AdminApiContext.post(assignUrl);
4047
+ for (let attempt = 1; attempt < THEME_ASSIGN_MAX_ATTEMPTS && response.status() >= 500 && Date.now() < deadline; attempt++) {
4048
+ console.warn(
4049
+ `[Warning] Theme assign for sales channel ${salesChannel.id} failed with HTTP ${response.status()} (attempt ${attempt}), retrying: ${(await response.text()).slice(0, 500)}`
4050
+ );
4051
+ await new Promise((resolve) => setTimeout(resolve, 2e3 * attempt));
4052
+ response = await AdminApiContext.post(assignUrl);
4053
+ }
4054
+ if (!response.ok()) {
4055
+ throw new Error(`Theme assign for sales channel ${salesChannel.id} failed with HTTP ${response.status()}: ${(await response.text()).slice(0, 500)}`);
4056
+ }
4043
4057
  await clearDelayedCache(AdminApiContext);
4044
4058
  page = await context.newPage();
4045
- if (InstanceMeta.isSaaS) {
4046
- while (!await isThemeCompiled(StoreApiContext, DefaultSalesChannel.url)) {
4047
- await clearDelayedCache(AdminApiContext);
4048
- await page.waitForTimeout(4e3);
4059
+ while (!await isThemeCompiled(StoreApiContext, DefaultSalesChannel.url)) {
4060
+ if (Date.now() > deadline) {
4061
+ throw new Error(`Theme for sales channel ${salesChannel.id} is still not compiled within the test timeout (${DefaultSalesChannel.url}).`);
4049
4062
  }
4063
+ await clearDelayedCache(AdminApiContext);
4064
+ await page.waitForTimeout(4e3);
4050
4065
  }
4051
4066
  } else {
4052
4067
  page = await context.newPage();
@@ -4994,6 +5009,38 @@ class TestDataService {
4994
5009
  this.addCreatedRecord("cms_page", layout.id);
4995
5010
  return layout;
4996
5011
  }
5012
+ /**
5013
+ * Creates a landing page category
5014
+ *
5015
+ * @param salesChannelId - The uuid of the sales channel in which the landing page should be active.
5016
+ * @param overrides - Specific data overrides applied to the landing page payload.
5017
+ */
5018
+ async createLandingPage(overrides = {}, salesChannelId = this.defaultSalesChannel.id) {
5019
+ const basicLandingPage = this.getBasicLandingPageStruct(salesChannelId, overrides);
5020
+ const response = await this.AdminApiClient.post("landing-page?_response=detail", {
5021
+ data: basicLandingPage
5022
+ });
5023
+ expect(response.ok()).toBeTruthy();
5024
+ const { data: landingPage } = await response.json();
5025
+ this.addCreatedRecord("landing_page", landingPage.id);
5026
+ return landingPage;
5027
+ }
5028
+ /**
5029
+ * Assigns a CMS landing page layout to a landing page category
5030
+ *
5031
+ * @param landingPageId - The uuid of the landing page category.
5032
+ * @param cmsPageId - The uuid of the CMS landing page layout.
5033
+ */
5034
+ async assignLandingPageLayout(landingPageId, cmsPageId) {
5035
+ const response = await this.AdminApiClient.patch(`landing-page/${landingPageId}?_response=detail`, {
5036
+ data: {
5037
+ cmsPageId
5038
+ }
5039
+ });
5040
+ expect(response.ok()).toBeTruthy();
5041
+ const { data: landingPage } = await response.json();
5042
+ return landingPage;
5043
+ }
4997
5044
  /**
4998
5045
  * Creates a random country
4999
5046
  *
@@ -5928,6 +5975,8 @@ class TestDataService {
5928
5975
  expect(salesChannelResponse.ok()).toBeTruthy();
5929
5976
  }
5930
5977
  }
5978
+ const createdOrderIds = this.createdRecords.filter((record) => record.resource === "order").map((record) => record.payload.id);
5979
+ await this.deleteOrderDocuments(createdOrderIds);
5931
5980
  this.createdRecords.forEach((record) => {
5932
5981
  if (record.resource === "user") {
5933
5982
  if (!deleteUserIds.includes(record.payload.id)) {
@@ -5988,6 +6037,43 @@ class TestDataService {
5988
6037
  data: deleteOperations
5989
6038
  });
5990
6039
  }
6040
+ /**
6041
+ * Deletes all documents of the given orders.
6042
+ * Documents restrict the deletion of their order, so the cleanup calls this before deleting created orders.
6043
+ * Dependent documents (e.g. credit notes, cancellation invoices) are deleted before the documents they reference.
6044
+ *
6045
+ * @param orderIds - The ids of the orders whose documents should be deleted.
6046
+ */
6047
+ async deleteOrderDocuments(orderIds) {
6048
+ if (orderIds.length === 0) {
6049
+ return;
6050
+ }
6051
+ const documentResponse = await this.AdminApiClient.post("search/document", {
6052
+ data: {
6053
+ filter: [{ type: "equalsAny", field: "orderId", value: orderIds }],
6054
+ includes: { document: ["id", "referencedDocumentId"] }
6055
+ }
6056
+ });
6057
+ expect(documentResponse.ok()).toBeTruthy();
6058
+ const { data: documents } = await documentResponse.json();
6059
+ const dependentDocuments = documents.filter((document) => document.referencedDocumentId);
6060
+ const referencedDocuments = documents.filter((document) => !document.referencedDocumentId);
6061
+ for (const batch of [dependentDocuments, referencedDocuments]) {
6062
+ if (batch.length === 0) {
6063
+ continue;
6064
+ }
6065
+ const deleteResponse = await this.AdminApiClient.post("_action/sync", {
6066
+ data: {
6067
+ "delete-document": {
6068
+ entity: "document",
6069
+ action: "delete",
6070
+ payload: batch.map(({ id }) => ({ id }))
6071
+ }
6072
+ }
6073
+ });
6074
+ expect(deleteResponse.ok()).toBeTruthy();
6075
+ }
6076
+ }
5991
6077
  isProduct(item) {
5992
6078
  return item.productNumber !== void 0;
5993
6079
  }
@@ -6707,6 +6793,18 @@ class TestDataService {
6707
6793
  };
6708
6794
  return Object.assign({}, basicCmsPage, overrides);
6709
6795
  }
6796
+ getBasicLandingPageStruct(salesChannelId, overrides = {}) {
6797
+ const landingPageUuid = this.IdProvider.getIdPair().uuid;
6798
+ const landingPageName = `${this.namePrefix}LandingPage-${landingPageUuid}${this.nameSuffix}`;
6799
+ const basicLandingPage = {
6800
+ id: landingPageUuid,
6801
+ name: landingPageName,
6802
+ url: `${this.namePrefix}landing-page-${landingPageUuid}${this.nameSuffix}`,
6803
+ active: true,
6804
+ salesChannels: [{ id: salesChannelId }]
6805
+ };
6806
+ return Object.assign({}, basicLandingPage, overrides);
6807
+ }
6710
6808
  getBasicCustomerGroupStruct(overrides = {}) {
6711
6809
  const customerGroupUuid = this.IdProvider.getIdPair().uuid;
6712
6810
  const customerGroupName = `${this.namePrefix}CustomerGroup-${customerGroupUuid}${this.nameSuffix}`;
@@ -9094,6 +9192,7 @@ class CustomerDetail {
9094
9192
  customFieldCard;
9095
9193
  customFieldSetTabs;
9096
9194
  customFieldSetTabCustomContent;
9195
+ customerGroupRegistrationAlert;
9097
9196
  customerGroupRequestMessage;
9098
9197
  customerGroupAcceptButton;
9099
9198
  customerGroupDeclineButton;
@@ -9118,10 +9217,11 @@ class CustomerDetail {
9118
9217
  }
9119
9218
  this.customFieldSetTabs = this.customFieldCard.locator(".sw-tabs-item");
9120
9219
  this.customFieldSetTabCustomContent = this.customFieldCard.locator(".sw-tabs__custom-content");
9220
+ this.customerGroupRegistrationAlert = page.locator(".sw-customer-detail__customer-registration-alert");
9121
9221
  if (satisfies(instanceMeta.version, "<6.7")) {
9122
- this.customerGroupRequestMessage = page.locator(".sw-alert__message");
9222
+ this.customerGroupRequestMessage = this.customerGroupRegistrationAlert.locator(".sw-alert__message");
9123
9223
  } else {
9124
- this.customerGroupRequestMessage = page.locator(".mt-banner__message");
9224
+ this.customerGroupRequestMessage = this.customerGroupRegistrationAlert.locator(".mt-banner__message");
9125
9225
  }
9126
9226
  this.customerGroupAcceptButton = page.getByRole("button", { name: translate("administration:customer:detail.accept") });
9127
9227
  this.customerGroupDeclineButton = page.getByRole("button", { name: translate("administration:customer:detail.decline") });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopware-ag/acceptance-test-suite",
3
- "version": "12.23.2",
3
+ "version": "12.24.1",
4
4
  "description": "Shopware Acceptance Test Suite",
5
5
  "keywords": [
6
6
  "fixtures",