@shopware-ag/acceptance-test-suite 12.8.4 → 12.10.0

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
@@ -762,19 +762,39 @@ const administrationCustomField = {
762
762
 
763
763
  const buttons$h = {
764
764
  agree: "Agree",
765
- disableDataSharing: "Disable data sharing"
765
+ disableDataSharing: "Disable data sharing",
766
+ allowAll: "Allow all",
767
+ rejectAll: "Reject All",
768
+ savePreferences: "Save Preferences",
769
+ declineUsageData: "Decline",
770
+ giveConsentUsageData: "Give Consent"
771
+ };
772
+ const checkboxes$3 = {
773
+ shareStoreData: "Share store data (anonymous)",
774
+ shareUsageData: "Share Usage data"
775
+ };
776
+ const headlines$3 = {
777
+ consentModal: "Help us to improve Shopware",
778
+ storeData: "Store data",
779
+ usageData: "Usage data",
780
+ dataConsent: "Data Consent"
781
+ };
782
+ const links$7 = {
783
+ storeDataCollectionDetails: "here",
784
+ privacyPolicy: "Privacy Policy"
766
785
  };
767
786
  const messages$7 = {
787
+ storeData: "Anonymous data from your Shopware environment such as orders, diagnostic data, and store data helps us to improve features. You can find an overview of all collected data and details of the agreement here.",
788
+ usageData: "We use personal usage data about how you interact with the administration to continously improve usability. You can find all details in our Privacy Policy.",
768
789
  sharingData: "You are sharing data with us",
769
790
  termsAgreement: "By clicking \"Agree\", you confirm that you are authorised to enter into this agreement on behalf of your company."
770
791
  };
771
- const headlines$1 = {
772
- dataConsent: "Data Consent"
773
- };
774
792
  const administrationDataSharing = {
775
793
  buttons: buttons$h,
776
- messages: messages$7,
777
- headlines: headlines$1
794
+ checkboxes: checkboxes$3,
795
+ headlines: headlines$3,
796
+ links: links$7,
797
+ messages: messages$7
778
798
  };
779
799
 
780
800
  const listing$m = {
@@ -1084,8 +1104,54 @@ const administrationRule = {
1084
1104
  const header$1 = {
1085
1105
  settings: "Settings"
1086
1106
  };
1107
+ const links$6 = {
1108
+ basicInformation: "Basic information",
1109
+ cartSettings: "Cart settings",
1110
+ languages: "Languages",
1111
+ measurementSystem: "Measurement system",
1112
+ numberRanges: "Number ranges",
1113
+ productUnits: "Product units",
1114
+ search: "Search",
1115
+ statusManagement: "Status management",
1116
+ customerGroups: "Customer groups",
1117
+ loginAndSignUp: "Log-in & sign-up",
1118
+ salutations: "Salutations",
1119
+ flowBuilder: "Flow Builder",
1120
+ importExport: "Import/Export",
1121
+ ruleBuilder: "Rule builder",
1122
+ countries: "Countries",
1123
+ currencies: "Currencies",
1124
+ snippets: "Snippets",
1125
+ tax: "Tax",
1126
+ customFields: "Custom fields",
1127
+ emailTemplates: "Email templates",
1128
+ media: "Media",
1129
+ newsletter: "Newsletter",
1130
+ seo: "SEO",
1131
+ sitemap: "Sitemap",
1132
+ tags: "Tags",
1133
+ deliveryTimes: "Delivery times",
1134
+ documents: "Documents",
1135
+ essentialCharacteristics: "Essential characteristics",
1136
+ paymentMethods: "Payment methods",
1137
+ products: "Products",
1138
+ shipping: "Shipping",
1139
+ cachesAndIndexes: "Caches & indexes",
1140
+ eventLogs: "Event logs",
1141
+ firstRunWizard: "First Run Wizard",
1142
+ integrations: "Integrations",
1143
+ mailer: "Mailer",
1144
+ messageQueueStatistics: "Message queue statistics",
1145
+ privacy: "Privacy",
1146
+ shopwareAccount: "Shopware Account",
1147
+ shopwareServices: "Shopware Services",
1148
+ shopwareUpdates: "Shopware updates",
1149
+ storefront: "Storefront",
1150
+ usersAndPermissions: "Users & permissions"
1151
+ };
1087
1152
  const administrationSettings = {
1088
- header: header$1
1153
+ header: header$1,
1154
+ links: links$6
1089
1155
  };
1090
1156
 
1091
1157
  const common$9 = {
@@ -1116,7 +1182,8 @@ const administrationShipping = {
1116
1182
  };
1117
1183
 
1118
1184
  const tabs$8 = {
1119
- searchPreferences: "Search preferences"
1185
+ searchPreferences: "Search preferences",
1186
+ privacyPreferences: "Privacy preferences"
1120
1187
  };
1121
1188
  const fields$6 = {
1122
1189
  firstName: "First name",
@@ -1127,10 +1194,23 @@ const fields$6 = {
1127
1194
  const buttons$e = {
1128
1195
  deselectAll: "Deselect all"
1129
1196
  };
1197
+ const links$5 = {
1198
+ privacy: "Privacy Policy"
1199
+ };
1200
+ const checkboxes$2 = {
1201
+ usageDataCheckbox: "Share Usage Data"
1202
+ };
1203
+ const headlines$2 = {
1204
+ usageDataHeadline: "Usage data",
1205
+ cardTitle: "Help us to improve Shopware"
1206
+ };
1130
1207
  const administrationYourProfile = {
1131
1208
  tabs: tabs$8,
1132
1209
  fields: fields$6,
1133
- buttons: buttons$e
1210
+ buttons: buttons$e,
1211
+ links: links$5,
1212
+ checkboxes: checkboxes$2,
1213
+ headlines: headlines$2
1134
1214
  };
1135
1215
 
1136
1216
  const listing$g = {
@@ -1227,7 +1307,7 @@ const modals$3 = {
1227
1307
  const messages$5 = {
1228
1308
  accessDenied: "Access denied"
1229
1309
  };
1230
- const links$1 = {
1310
+ const links$4 = {
1231
1311
  shopwareServices: "Shopware Services"
1232
1312
  };
1233
1313
  const dashboard$1 = {
@@ -1238,7 +1318,7 @@ const administrationShopwareServices = {
1238
1318
  buttons: buttons$c,
1239
1319
  modals: modals$3,
1240
1320
  messages: messages$5,
1241
- links: links$1,
1321
+ links: links$4,
1242
1322
  dashboard: dashboard$1
1243
1323
  };
1244
1324
 
@@ -1957,19 +2037,39 @@ const deAdministrationDashboard = {
1957
2037
 
1958
2038
  const buttons$8 = {
1959
2039
  agree: "Zustimmen",
1960
- disableDataSharing: "Datenfreigabe deaktivieren"
2040
+ disableDataSharing: "Datenfreigabe deaktivieren",
2041
+ allowAll: "Alle akzeptieren",
2042
+ rejectAll: "Alle ablehnen",
2043
+ savePreferences: "Auswahl speichern",
2044
+ declineUsageData: "Ablehnen",
2045
+ giveConsentUsageData: "Zustimmung geben"
2046
+ };
2047
+ const checkboxes$1 = {
2048
+ shareStoreData: "Shopdaten teilen (anonym)",
2049
+ shareUsageData: "Nutzungsdaten teilen"
2050
+ };
2051
+ const headlines$1 = {
2052
+ consentModal: "Hilf uns dabei, Shopware zu verbessern",
2053
+ storeData: "Shopdaten",
2054
+ usageData: "Nutzungsdaten",
2055
+ dataConsent: "Dateneinverständnis"
2056
+ };
2057
+ const links$3 = {
2058
+ storeDataCollectionDetails: "hier",
2059
+ privacyPolicy: "Datenschutzerklärung"
1961
2060
  };
1962
2061
  const messages$3 = {
2062
+ storeData: "Anonyme Daten aus Deiner Shopware-Umgebung wie Bestellungen, Diagnosedaten und Shopdaten helfen uns, Funktionen zu verbessern. Eine Übersicht über alle Daten und Einzelheiten der Vereinbarung findest Du hier.",
2063
+ usageData: "Wir nutzen personenbezogene Daten über dein Verhalten in der Administration, um die Benutzerfreundlichkeit weiter zu verbessern. Alle Einzelheiten findest Du in unserer Datenschutzerklärung.",
1963
2064
  sharingData: "Sie teilen Daten mit uns",
1964
2065
  termsAgreement: "Durch Klicken auf \"Zustimmen\" bestätigen Sie, dass Sie berechtigt sind, diese Vereinbarung im Namen Ihres Unternehmens abzuschließen."
1965
2066
  };
1966
- const headlines = {
1967
- dataConsent: "Dateneinverständnis"
1968
- };
1969
2067
  const deAdministrationDataSharing = {
1970
2068
  buttons: buttons$8,
1971
- messages: messages$3,
1972
- headlines: headlines
2069
+ checkboxes: checkboxes$1,
2070
+ headlines: headlines$1,
2071
+ links: links$3,
2072
+ messages: messages$3
1973
2073
  };
1974
2074
 
1975
2075
  const listing$9 = {
@@ -2430,8 +2530,54 @@ const deAdministrationRule = {
2430
2530
  const header = {
2431
2531
  settings: "Einstellungen"
2432
2532
  };
2533
+ const links$2 = {
2534
+ basicInformation: "Stammdaten",
2535
+ cartSettings: "Warenkorb",
2536
+ languages: "Sprachen",
2537
+ measurementSystem: "Maßeinheitensystem",
2538
+ numberRanges: "Nummernkreise",
2539
+ productUnits: "Produkteinheiten",
2540
+ search: "Suche",
2541
+ statusManagement: "Statusverwaltung",
2542
+ customerGroups: "Kundengruppen",
2543
+ loginAndSignUp: "Anmeldung & Registrierung",
2544
+ salutations: "Anreden",
2545
+ flowBuilder: "Flow Builder",
2546
+ importExport: "Import/Export",
2547
+ ruleBuilder: "Rule Builder",
2548
+ countries: "Länder",
2549
+ currencies: "Währungen",
2550
+ snippets: "Textbausteine",
2551
+ tax: "Steuern",
2552
+ customFields: "Zusatzfelder",
2553
+ emailTemplates: "E-Mail-Templates",
2554
+ media: "Medien",
2555
+ newsletter: "Newsletter",
2556
+ seo: "SEO",
2557
+ sitemap: "Sitemap",
2558
+ tags: "Tags",
2559
+ deliveryTimes: "Lieferzeiten",
2560
+ documents: "Dokumente",
2561
+ essentialCharacteristics: "Wesentliche Merkmale",
2562
+ paymentMethods: "Zahlungsarten",
2563
+ products: "Produkte",
2564
+ shipping: "Versand",
2565
+ cachesAndIndexes: "Caches & Indizes",
2566
+ eventLogs: "Ereignis-Logs",
2567
+ firstRunWizard: "Ersteinrichtungs-Assistent",
2568
+ integrations: "Integrationen",
2569
+ mailer: "Mailer",
2570
+ messageQueueStatistics: "Nachrichtenwarteschlangen-Statistiken",
2571
+ privacy: "Datenschutzeinstellungen",
2572
+ shopwareAccount: "Shopware Account",
2573
+ shopwareServices: "Shopware Services",
2574
+ shopwareUpdates: "Shopware-Aktualisierungen",
2575
+ storefront: "Storefront",
2576
+ usersAndPermissions: "Benutzer & Rechte"
2577
+ };
2433
2578
  const deAdministrationSettings = {
2434
- header: header
2579
+ header: header,
2580
+ links: links$2
2435
2581
  };
2436
2582
 
2437
2583
  const common$3 = {
@@ -2476,7 +2622,7 @@ const modals = {
2476
2622
  const messages$1 = {
2477
2623
  accessDenied: "Zugriff verweigert"
2478
2624
  };
2479
- const links = {
2625
+ const links$1 = {
2480
2626
  shopwareServices: "Shopware Services"
2481
2627
  };
2482
2628
  const dashboard = {
@@ -2487,7 +2633,7 @@ const deAdministrationShopwareServices = {
2487
2633
  buttons: buttons$3,
2488
2634
  modals: modals,
2489
2635
  messages: messages$1,
2490
- links: links,
2636
+ links: links$1,
2491
2637
  dashboard: dashboard
2492
2638
  };
2493
2639
 
@@ -2506,7 +2652,8 @@ const general$2 = {
2506
2652
  saveSuccess: "Profil wurde erfolgreich aktualisiert."
2507
2653
  };
2508
2654
  const tabs$1 = {
2509
- searchPreferences: "Suchen"
2655
+ searchPreferences: "Suchen",
2656
+ privacyPreferences: "Datenschutzeinstellungen"
2510
2657
  };
2511
2658
  const fields = {
2512
2659
  firstName: "Vorname",
@@ -2517,11 +2664,24 @@ const fields = {
2517
2664
  const buttons$2 = {
2518
2665
  deselectAll: "Alle abwählen"
2519
2666
  };
2667
+ const links = {
2668
+ privacy: "Datenschutzerklärung"
2669
+ };
2670
+ const checkboxes = {
2671
+ usageDataCheckbox: "Nutzungsdaten teilen"
2672
+ };
2673
+ const headlines = {
2674
+ usageDataHeadline: "Nutzungsdaten",
2675
+ cardTitle: "Hilfen Sie uns, Shopware zu verbessern"
2676
+ };
2520
2677
  const deAdministrationYourProfile = {
2521
2678
  general: general$2,
2522
2679
  tabs: tabs$1,
2523
2680
  fields: fields,
2524
- buttons: buttons$2
2681
+ buttons: buttons$2,
2682
+ links: links,
2683
+ checkboxes: checkboxes,
2684
+ headlines: headlines
2525
2685
  };
2526
2686
 
2527
2687
  const tabs = {
@@ -3970,6 +4130,21 @@ function createRandomImage(width = 800, height = 600) {
3970
4130
  data
3971
4131
  });
3972
4132
  }
4133
+ function createSolidColorImage(width = 800, height = 600, color = [255, 0, 0]) {
4134
+ const channels = 3;
4135
+ const data = new Uint8Array(width * height * channels);
4136
+ const [r, g, b] = color;
4137
+ for (let i = 0; i < data.length; i += channels) {
4138
+ data[i] = r;
4139
+ data[i + 1] = g;
4140
+ data[i + 2] = b;
4141
+ }
4142
+ return new Image(width, height, {
4143
+ colorModel: "RGB",
4144
+ bitDepth: 8,
4145
+ data
4146
+ });
4147
+ }
3973
4148
  function encodeImage(image) {
3974
4149
  return Buffer.from(encode(image));
3975
4150
  }
@@ -4254,6 +4429,26 @@ class TestDataService {
4254
4429
  this.addCreatedRecord("media", media.id);
4255
4430
  return media;
4256
4431
  }
4432
+ /**
4433
+ * Creates a new media resource containing a solid color PNG image.
4434
+ * Unlike `createMediaPNG`, the result is deterministic and suitable for visual regression tests.
4435
+ *
4436
+ * @param width - The width of the image in pixel. Default is 800.
4437
+ * @param height - The height of the image in pixel. Default is 600.
4438
+ * @param color - RGB color as `[r, g, b]` with values 0..255. Default is red `[255, 0, 0]`.
4439
+ */
4440
+ async createMediaPNGSolid(width = 800, height = 600, color = [255, 0, 0]) {
4441
+ const image = createSolidColorImage(width, height, color);
4442
+ const media = await this.createMediaResource();
4443
+ const filename = `${this.namePrefix}Media-${media.id}${this.nameSuffix}`;
4444
+ const response = await this.AdminApiClient.post(`_action/media/${media.id}/upload?extension=png&fileName=${filename}`, {
4445
+ data: encodeImage(image),
4446
+ headers: { "content-type": "image/png" }
4447
+ });
4448
+ expect(response.ok()).toBeTruthy();
4449
+ this.addCreatedRecord("media", media.id);
4450
+ return media;
4451
+ }
4257
4452
  /**
4258
4453
  * Creates a new media resource containing a text file.
4259
4454
  *
@@ -5215,6 +5410,30 @@ class TestDataService {
5215
5410
  const { data: result } = await response.json();
5216
5411
  return result[0];
5217
5412
  }
5413
+ /**
5414
+ * Retrieves a payment method by its distinguishable name.
5415
+ *
5416
+ * @param name - The name of the payment method.
5417
+ * @param exact - exact name or part of it
5418
+ */
5419
+ async getPaymentMethodByDistinguishableName(name, exact = true) {
5420
+ const searchType = exact ? "equals" : "contains";
5421
+ const response = await this.AdminApiClient.post("search/payment-method", {
5422
+ data: {
5423
+ limit: 1,
5424
+ filter: [
5425
+ {
5426
+ type: searchType,
5427
+ field: "distinguishableName",
5428
+ value: name
5429
+ }
5430
+ ]
5431
+ }
5432
+ });
5433
+ expect(response.ok()).toBeTruthy();
5434
+ const { data: result } = await response.json();
5435
+ return result[0];
5436
+ }
5218
5437
  /**
5219
5438
  * Retrieves the address of a customer by its uuid.
5220
5439
  *
@@ -7267,7 +7486,7 @@ class AccountLogin {
7267
7486
  this.shippingAddressCountryInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.country"));
7268
7487
  this.shippingAddressPostalCodeInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.postalCode"));
7269
7488
  this.shippingAddressStateInput = this.registerShippingAddressFormArea.getByLabel(translate("storefront:login:register.state"));
7270
- this.registerButton = page.getByRole("button", { name: translate("storefront:login:register.continue") });
7489
+ this.registerButton = page.locator('form.register-form button[type="submit"]');
7271
7490
  this.logoutLink = page.getByRole("link", { name: translate("storefront:login:logout") });
7272
7491
  this.successAlert = page.getByText(translate("storefront:login:successfulLogout"));
7273
7492
  this.passwordUpdatedAlert = page.getByText(translate("storefront:login:passwordUpdated"));
@@ -7427,9 +7646,7 @@ class AccountOrder extends BaseAccount {
7427
7646
  name: new RegExp(`${translate("storefront:account:orders.expand")}|${translate("storefront:account:orders.showDetails")}`)
7428
7647
  });
7429
7648
  const orderImage = orderItem.locator(".line-item-img-link");
7430
- const taxPrice = orderItem.locator(
7431
- `dt:text-matches('${translate("storefront:account:orders.includeVat")} [0-9]\\+\\?${translate("storefront:account:orders.vatSuffix")}') + dd`
7432
- );
7649
+ const taxPrice = orderItem.locator(`dt:text-matches(${JSON.stringify(this.buildTaxPricePattern())}) + dd`);
7433
7650
  const shippingCosts = orderItem.locator(`dt:text-matches('${translate("storefront:account:orders.shippingCosts")}') + dd`);
7434
7651
  const totalGross = orderItem.locator(`dt:text-matches('${translate("storefront:account:orders.totalGross")}') + dd`);
7435
7652
  return {
@@ -7453,6 +7670,17 @@ class AccountOrder extends BaseAccount {
7453
7670
  url() {
7454
7671
  return "account/order";
7455
7672
  }
7673
+ buildTaxPricePattern() {
7674
+ const taxRatePattern = "[0-9]+(?:[.,][0-9]+)?";
7675
+ const taxLabelPattern = [
7676
+ this.escapeRegex(translate("storefront:account:orders.includeVat")),
7677
+ this.escapeRegex(translate("storefront:account:orders.plusVat"))
7678
+ ].join("|");
7679
+ return `(?:${taxLabelPattern})\\s+${taxRatePattern}${this.escapeRegex(translate("storefront:account:orders.vatSuffix"))}`;
7680
+ }
7681
+ escapeRegex(text) {
7682
+ return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
7683
+ }
7456
7684
  }
7457
7685
 
7458
7686
  class AccountAddresses extends BaseAccount {
@@ -8897,18 +9125,29 @@ class DataSharing {
8897
9125
  dataSharingTermsAgreementLabel;
8898
9126
  page;
8899
9127
  instanceMeta;
9128
+ dataSharingCardTitle;
9129
+ dataSharingStoreDataHeadline;
9130
+ dataSharingStoreDataCheckbox;
9131
+ dataUseDetailsLink;
8900
9132
  constructor(page, instanceMeta) {
8901
9133
  this.page = page;
8902
9134
  this.instanceMeta = instanceMeta;
8903
- if (satisfies(instanceMeta.version, "<6.6.1")) {
8904
- this.dataConsentHeadline = page.locator("header.sw-usage-data-consent-banner__title");
9135
+ if (satisfies(instanceMeta.version, "<6.7.9.0")) {
9136
+ if (satisfies(instanceMeta.version, "<6.6.1")) {
9137
+ this.dataConsentHeadline = page.locator("header.sw-usage-data-consent-banner__title");
9138
+ } else {
9139
+ this.dataConsentHeadline = page.locator("h3.sw-usage-data-consent-banner__content-headline");
9140
+ }
9141
+ this.dataSharingAgreeButton = page.getByRole("button", { name: translate("administration:dataSharing:buttons.agree") });
9142
+ this.dataSharingDisableButton = page.getByRole("button", { name: translate("administration:dataSharing:buttons.disableDataSharing") });
9143
+ this.dataSharingSuccessMessageLabel = page.getByText(translate("administration:dataSharing:messages.sharingData"), { exact: true });
9144
+ this.dataSharingTermsAgreementLabel = page.getByText(translate("administration:dataSharing:messages.termsAgreement"));
8905
9145
  } else {
8906
- this.dataConsentHeadline = page.locator("h3.sw-usage-data-consent-banner__content-headline");
9146
+ this.dataSharingCardTitle = page.getByRole("heading", { name: translate("administration:dataSharing:headlines.consentModal") });
9147
+ this.dataSharingStoreDataHeadline = page.getByRole("heading", { name: translate("administration:dataSharing:headlines.storeData") });
9148
+ this.dataSharingStoreDataCheckbox = page.getByRole("checkbox", { name: translate("administration:dataSharing:checkboxes.shareStoreData") });
9149
+ this.dataUseDetailsLink = page.getByRole("link", { name: translate("administration:dataSharing:links.storeDataCollectionDetails") });
8907
9150
  }
8908
- this.dataSharingAgreeButton = page.getByRole("button", { name: translate("administration:dataSharing:buttons.agree") });
8909
- this.dataSharingDisableButton = page.getByRole("button", { name: translate("administration:dataSharing:buttons.disableDataSharing") });
8910
- this.dataSharingSuccessMessageLabel = page.getByText(translate("administration:dataSharing:messages.sharingData"), { exact: true });
8911
- this.dataSharingTermsAgreementLabel = page.getByText(translate("administration:dataSharing:messages.termsAgreement"));
8912
9151
  }
8913
9152
  url() {
8914
9153
  if (satisfies(this.instanceMeta.version, "<6.6.1")) {
@@ -8928,6 +9167,7 @@ class Dashboard {
8928
9167
  adminMenuContent;
8929
9168
  adminMenuMarketing;
8930
9169
  adminMenuExtension;
9170
+ adminMenuSettings;
8931
9171
  adminMenuUserChevron;
8932
9172
  adminMenuUserIcon;
8933
9173
  adminMenuUserName;
@@ -8962,6 +9202,7 @@ class Dashboard {
8962
9202
  this.adminMenuUserChevron = page.locator(".sw-admin-menu__user-actions-indicator");
8963
9203
  this.adminMenuUserIcon = page.locator(".sw-avatar");
8964
9204
  this.adminMenuUserName = page.locator(".sw-admin-menu__user-name");
9205
+ this.adminMenuSettings = page.locator(".sw-settings");
8965
9206
  this.welcomeHeadline = page.locator("h1.sw-dashboard-index__welcome-title");
8966
9207
  this.welcomeMessage = page.locator(".sw-dashboard-index__welcome-message");
8967
9208
  this.dataSharingConsentBanner = page.locator(".sw-usage-data-consent-banner");
@@ -9984,13 +10225,99 @@ class CustomerBulkEdit {
9984
10225
  class SettingsListing {
9985
10226
  contentView;
9986
10227
  header;
9987
- shopwareServicesLink;
9988
10228
  page;
10229
+ basicInformationLink;
10230
+ cartSettingsLink;
10231
+ languagesLink;
10232
+ measurementSystemLink;
10233
+ numberRangesLink;
10234
+ productUnitsLink;
10235
+ searchLink;
10236
+ statusManagementLink;
10237
+ customerGroupsLink;
10238
+ loginAndSignUpLink;
10239
+ salutationsLink;
10240
+ flowBuilderLink;
10241
+ importExportLink;
10242
+ ruleBuilderLink;
10243
+ countriesLink;
10244
+ currenciesLink;
10245
+ snippetsLink;
10246
+ taxLink;
10247
+ customFieldsLink;
10248
+ emailTemplatesLink;
10249
+ mediaLink;
10250
+ newsletterLink;
10251
+ seoLink;
10252
+ sitemapLink;
10253
+ tagsLink;
10254
+ deliveryTimesLink;
10255
+ documentsLink;
10256
+ essentialCharacteristicsLink;
10257
+ paymentMethodsLink;
10258
+ productsLink;
10259
+ shippingLink;
10260
+ cachesAndIndexesLink;
10261
+ eventLogsLink;
10262
+ firstRunWizardLink;
10263
+ integrationsLink;
10264
+ mailerLink;
10265
+ messageQueueStatisticsLink;
10266
+ privacyLink;
10267
+ shopwareAccountLink;
10268
+ shopwareServicesLink;
10269
+ shopwareUpdatesLink;
10270
+ storefrontLink;
10271
+ usersAndPermissionsLink;
9989
10272
  constructor(page) {
9990
10273
  this.page = page;
9991
10274
  this.header = page.locator(".sw-settings__content-header");
9992
10275
  this.contentView = page.locator(".sw-desktop__content");
9993
10276
  this.shopwareServicesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:shopwareServices:links.shopwareServices") });
10277
+ this.privacyLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.privacy") });
10278
+ this.basicInformationLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.basicInformation") });
10279
+ this.cartSettingsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.cartSettings") });
10280
+ this.languagesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.languages") });
10281
+ this.measurementSystemLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.measurementSystem") });
10282
+ this.numberRangesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.numberRanges") });
10283
+ this.productUnitsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.productUnits") });
10284
+ this.searchLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.search") });
10285
+ this.statusManagementLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.statusManagement") });
10286
+ this.customerGroupsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.customerGroups") });
10287
+ this.loginAndSignUpLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.loginAndSignUp") });
10288
+ this.salutationsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.salutations") });
10289
+ this.flowBuilderLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.flowBuilder") });
10290
+ this.importExportLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.importExport") });
10291
+ this.ruleBuilderLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.ruleBuilder") });
10292
+ this.countriesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.countries") });
10293
+ this.currenciesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.currencies") });
10294
+ this.snippetsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.snippets") });
10295
+ this.taxLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.tax") });
10296
+ this.customFieldsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.customFields") });
10297
+ this.emailTemplatesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.emailTemplates") });
10298
+ this.mediaLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.media") });
10299
+ this.newsletterLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.newsletter") });
10300
+ this.seoLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.seo") });
10301
+ this.sitemapLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.sitemap") });
10302
+ this.tagsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.tags") });
10303
+ this.deliveryTimesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.deliveryTimes") });
10304
+ this.documentsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.documents") });
10305
+ this.essentialCharacteristicsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.essentialCharacteristics") });
10306
+ this.paymentMethodsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.paymentMethods") });
10307
+ this.productsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.products") });
10308
+ this.shippingLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.shipping") });
10309
+ this.cachesAndIndexesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.cachesAndIndexes") });
10310
+ this.eventLogsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.eventLogs") });
10311
+ this.firstRunWizardLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.firstRunWizard") });
10312
+ this.integrationsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.integrations") });
10313
+ this.mailerLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.mailer") });
10314
+ this.messageQueueStatisticsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.messageQueueStatistics") });
10315
+ this.privacyLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.privacy") });
10316
+ this.shopwareAccountLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.shopwareAccount") });
10317
+ this.shopwareServicesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.shopwareServices") });
10318
+ this.shopwareUpdatesLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.shopwareUpdates") });
10319
+ this.storefrontLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.storefront") });
10320
+ this.usersAndPermissionsLink = page.locator(".sw-settings__content-grid").getByRole("link", { name: translate("administration:settings:links.usersAndPermissions") });
9994
10321
  }
9995
10322
  url() {
9996
10323
  return "#/sw/settings/index/shop";
@@ -10299,6 +10626,11 @@ class YourProfile {
10299
10626
  userNameField;
10300
10627
  emailField;
10301
10628
  deselectAllButton;
10629
+ privacyPreferencesTab;
10630
+ dataSharingCardTitle;
10631
+ dataSharingUsageDataHeadline;
10632
+ dataSharingUsageDataCheckbox;
10633
+ privacyPolicyLink;
10302
10634
  constructor(page) {
10303
10635
  this.page = page;
10304
10636
  this.contentView = page.locator(".sw-desktop__content");
@@ -10308,9 +10640,14 @@ class YourProfile {
10308
10640
  this.userNameField = page.getByRole("textbox", { name: translate("administration:yourProfile:fields.username") });
10309
10641
  this.emailField = page.getByRole("textbox", { name: translate("administration:yourProfile:fields.email") });
10310
10642
  this.deselectAllButton = page.getByRole("button", { name: translate("administration:yourProfile:buttons.deselectAll") });
10643
+ this.privacyPreferencesTab = page.locator(".sw-tabs-item").filter({ hasText: translate("administration:yourProfile:tabs.privacyPreferences") });
10644
+ this.dataSharingCardTitle = page.getByRole("heading", { name: translate("administration:yourProfile:headlines.cardTitle") });
10645
+ this.dataSharingUsageDataHeadline = page.getByRole("heading", { name: translate("administration:yourProfile:headlines.usageDataHeadline") });
10646
+ this.dataSharingUsageDataCheckbox = page.getByRole("checkbox", { name: translate("administration:yourProfile:checkboxes.usageDataCheckbox") });
10647
+ this.privacyPolicyLink = page.getByRole("link", { name: translate("administration:yourProfile:links.privacy") });
10311
10648
  }
10312
- url() {
10313
- return "#/sw/profile/index/general";
10649
+ url(tabName = "general") {
10650
+ return `#/sw/profile/index/${tabName}`;
10314
10651
  }
10315
10652
  }
10316
10653
 
@@ -10537,6 +10874,70 @@ class OrderListing {
10537
10874
  }
10538
10875
  }
10539
10876
 
10877
+ class DataSharingConsentModal {
10878
+ page;
10879
+ consentModal;
10880
+ allowAllButton;
10881
+ rejectAllButton;
10882
+ savePreferencesButton;
10883
+ declineUsageDataButton;
10884
+ giveConsentUsageDataButton;
10885
+ shareStoreDataHeadline;
10886
+ shareStoreDataText;
10887
+ shareStoreDataCheckbox;
10888
+ shareUsageDataHeadline;
10889
+ shareUsageDataText;
10890
+ shareUsageDataCheckbox;
10891
+ storeDataCollectionDetailsLink;
10892
+ privacyPolicyLink;
10893
+ constructor(page) {
10894
+ this.page = page;
10895
+ this.consentModal = page.getByRole("dialog").filter({
10896
+ has: page.getByRole("heading", {
10897
+ name: translate("administration:dataSharing:headlines.consentModal")
10898
+ })
10899
+ });
10900
+ this.allowAllButton = this.consentModal.getByRole("button", {
10901
+ name: translate("administration:dataSharing:buttons.allowAll")
10902
+ });
10903
+ this.rejectAllButton = this.consentModal.getByRole("button", {
10904
+ name: translate("administration:dataSharing:buttons.rejectAll")
10905
+ });
10906
+ this.savePreferencesButton = this.consentModal.getByRole("button", {
10907
+ name: translate("administration:dataSharing:buttons.savePreferences")
10908
+ });
10909
+ this.declineUsageDataButton = this.consentModal.getByRole("button", {
10910
+ name: translate("administration:dataSharing:buttons.declineUsageData")
10911
+ });
10912
+ this.giveConsentUsageDataButton = this.consentModal.getByRole("button", {
10913
+ name: translate("administration:dataSharing:buttons.giveConsentUsageData")
10914
+ });
10915
+ this.shareStoreDataHeadline = this.consentModal.getByRole("heading", {
10916
+ name: translate("administration:dataSharing:headlines.storeData")
10917
+ });
10918
+ this.shareStoreDataText = this.consentModal.getByText(translate("administration:dataSharing:messages.storeData"));
10919
+ this.shareStoreDataCheckbox = this.consentModal.getByRole("checkbox", {
10920
+ name: translate("administration:dataSharing:checkboxes.shareStoreData")
10921
+ });
10922
+ this.shareUsageDataHeadline = this.consentModal.getByRole("heading", {
10923
+ name: translate("administration:dataSharing:headlines.usageData")
10924
+ });
10925
+ this.shareUsageDataText = this.consentModal.getByText(translate("administration:dataSharing:messages.usageData"));
10926
+ this.shareUsageDataCheckbox = this.consentModal.getByRole("checkbox", {
10927
+ name: translate("administration:dataSharing:checkboxes.shareUsageData")
10928
+ });
10929
+ this.storeDataCollectionDetailsLink = this.consentModal.getByRole("link", {
10930
+ name: translate("administration:dataSharing:links.storeDataCollectionDetails")
10931
+ });
10932
+ this.privacyPolicyLink = this.consentModal.getByRole("link", {
10933
+ name: translate("administration:dataSharing:links.privacyPolicy")
10934
+ });
10935
+ }
10936
+ url() {
10937
+ return new Error("Method not implemented, because it is a modal which can not be routed.").message;
10938
+ }
10939
+ }
10940
+
10540
10941
  const AdminPageObjects = {
10541
10942
  ProductDetail,
10542
10943
  OrderDetail,
@@ -10587,7 +10988,8 @@ const AdminPageObjects = {
10587
10988
  LayoutListing,
10588
10989
  ListingPageLayoutDetail,
10589
10990
  LayoutCreate,
10590
- OrderListing
10991
+ OrderListing,
10992
+ DataSharingConsentModal
10591
10993
  };
10592
10994
  const test$6 = test$e.extend({
10593
10995
  AdminProductDetail: async ({ AdminPage, InstanceMeta }, use) => {
@@ -10739,6 +11141,9 @@ const test$6 = test$e.extend({
10739
11141
  },
10740
11142
  AdminOrderListing: async ({ AdminPage, InstanceMeta }, use) => {
10741
11143
  await use(new OrderListing(AdminPage, InstanceMeta));
11144
+ },
11145
+ AdminDataSharingConsentModal: async ({ AdminPage }, use) => {
11146
+ await use(new DataSharingConsentModal(AdminPage));
10742
11147
  }
10743
11148
  });
10744
11149
 
@@ -12705,6 +13110,23 @@ async function assertScreenshot(page, filename, locator) {
12705
13110
  }
12706
13111
  }
12707
13112
 
13113
+ async function uploadRandomPngMedia(target, imageName) {
13114
+ const image = createRandomImage();
13115
+ const fileChooserPromise = target.page.waitForEvent("filechooser");
13116
+ await target.uploadMediaButton.click();
13117
+ const fileChooser = await fileChooserPromise;
13118
+ const responsePromise = target.page.waitForResponse(
13119
+ (response2) => response2.url().includes("/api/search/media") && response2.ok()
13120
+ );
13121
+ await fileChooser.setFiles({
13122
+ name: `${imageName}.png`,
13123
+ mimeType: "image/png",
13124
+ buffer: encodeImage(image)
13125
+ });
13126
+ const response = await responsePromise;
13127
+ expect(response.ok()).toBeTruthy();
13128
+ }
13129
+
12708
13130
  const test = mergeTests(
12709
13131
  test$8,
12710
13132
  test$d,
@@ -12721,4 +13143,4 @@ const test = mergeTests(
12721
13143
  test$3
12722
13144
  );
12723
13145
 
12724
- export { Actor, AdminPageObjects, BUNDLED_RESOURCES, COUNTRY_ADDRESS_DATA, FeatureService, IdProvider, LanguageHelper, RuleType, StorefrontPageObjects, TestDataService, assertScreenshot, baseNamespaces, clearDelayedCache, compareFlowTemplateWithFlow, createNewAdminPageContext, createRandomImage, encodeImage, 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, isSaaSInstance, isThemeCompiled, loginToAdministration, mockApiCalls, replaceElements, replaceElementsIndividually, setCurrentContext, setOrderStatus, setViewport, test, translate, updateAdminUser };
13146
+ export { Actor, AdminPageObjects, BUNDLED_RESOURCES, COUNTRY_ADDRESS_DATA, FeatureService, IdProvider, LanguageHelper, RuleType, StorefrontPageObjects, TestDataService, assertScreenshot, baseNamespaces, clearDelayedCache, compareFlowTemplateWithFlow, createNewAdminPageContext, createRandomImage, createSolidColorImage, encodeImage, 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, isSaaSInstance, isThemeCompiled, loginToAdministration, mockApiCalls, replaceElements, replaceElementsIndividually, setCurrentContext, setOrderStatus, setViewport, test, translate, updateAdminUser, uploadRandomPngMedia };