@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 +36 -1
- package/dist/index.d.ts +36 -1
- package/dist/index.mjs +108 -8
- package/package.json +1 -1
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,
|
|
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
|
-
|
|
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
|
-
|
|
4046
|
-
|
|
4047
|
-
|
|
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 =
|
|
9222
|
+
this.customerGroupRequestMessage = this.customerGroupRegistrationAlert.locator(".sw-alert__message");
|
|
9123
9223
|
} else {
|
|
9124
|
-
this.customerGroupRequestMessage =
|
|
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") });
|