@shopware-ag/acceptance-test-suite 5.0.1 → 5.2.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/README.md CHANGED
@@ -14,6 +14,7 @@ This test suite is an extension to [Playwright](https://playwright.dev/) to easi
14
14
  * [Page Objects](#page-objects)
15
15
  * [Actor Pattern](#actor-pattern)
16
16
  * [Data Fixtures](#data-fixtures)
17
+ * [Test Data Service](#test-data-service)
17
18
  * [Code Contribution](#code-contribution)
18
19
  * [Best practices](#best-practices)
19
20
 
@@ -321,6 +322,12 @@ test('Customer login test scenario', async ({ ShopCustomer, Login }) => {
321
322
  You can create your own tasks in the same way to make them available for the actor pattern. Every task is just a simple Playwright fixture containing a function call with the corresponding test logic. Make sure to merge your task fixtures with other fixtures you created in your base test file. You can use the `mergeTests` method of Playwright to combine several fixtures into one test extension.
322
323
 
323
324
  ## Data Fixtures
325
+
326
+ ---
327
+ **Deprecated:** Use the [Test Data Service](#test-data-service) instead.
328
+
329
+ ---
330
+
324
331
  We already covered a lot of interesting fixtures you can use to create your test scenario. One topic which is missing is test data. Most test scenarios will need some predefined state within the system under test to validate a certain behaviour. Within this test suite we use Playwright fixtures also to create necessary test data via API. The goal is to have no direct system dependencies like a database connection to the system under test.
325
332
 
326
333
  **Example**
@@ -374,6 +381,58 @@ test('Property group test scenario', async ({ PropertiesData }) => {
374
381
 
375
382
  If you create your own data fixtures make sure to import and merge them in your base test file with other fixtures you created.
376
383
 
384
+ ## Test Data Service
385
+ This service is a simple way to create test data within your tests. It simplifies the usage of the Shopware API and provides sample structs for various entities, which you also can adjust to your needs. For detailed documentation of the methods you can have a look at the service class or simply use the auto-completion of your IDE. Here is a list of available methods:
386
+
387
+ ### Creating Data
388
+ * `createBasicProduct()`
389
+ * `createProductWithImage()`
390
+ * `createDigitalProduct()`
391
+ * `createProductWithPriceRange()`
392
+ * `createBasicManufacturer()`
393
+ * `createManufacturerWithImage()`
394
+ * `createCategory()`
395
+ * `createMediaPNG()`
396
+ * `createMediaTXT()`
397
+ * `createColorPropertyGroup()`
398
+ * `createTextPropertyGroup()`
399
+ * `createTag()`
400
+ * `createCustomer()`
401
+ * `createOrder()`
402
+ * `createPromotionWithCode()`
403
+ * `createBasicPaymentMethod()`
404
+ * `createPaymentMethodWithImage()`
405
+ * `createBasicShippingMethod()`
406
+ * `createShippingMethodWithImage()`
407
+ * `createBasicRule()`
408
+ * `createBasicPageLayout()`
409
+
410
+ ### Relations
411
+ * `assignProductDownload()`
412
+ * `assignProductMedia()`
413
+ * `assignProductManufacturer()`
414
+ * `assignProductCategory()`
415
+ * `assignProductTag()`
416
+ * `assignManufacturerMedia()`
417
+ * `assignPaymentMethodMedia()`
418
+ * `assignShippingMethodMedia()`
419
+
420
+ ### Retrieving Basic Data
421
+ * `getCurrency()`
422
+ * `getRule()`
423
+ * `getShippingMethod()`
424
+ * `getPaymentMethod()`
425
+ * `getAllDeliveryTimeResources()`
426
+ * `getCustomerAddress()`
427
+ * `getSalutation()`
428
+ * `getOrderStateMachine()`
429
+ * `getDeliveryStateMachine()`
430
+ * `getTransactionStateMachine()`
431
+ * `getTransactionStateMachine()`
432
+ * `getStateMachine()`
433
+ * `getStateMachineState()`
434
+ * `getPropertyGroupOptions()`
435
+
377
436
  ## Code Contribution
378
437
  You can contribute to this project via its [official repository](https://github.com/shopware/acceptance-test-suite/) on GitHub.
379
438
 
@@ -406,3 +465,22 @@ The most important part is [test isolation](https://playwright.dev/docs/best-pra
406
465
  - do not expect the shop to have the defaults en_GB and EUR
407
466
  - do not change global settings (sales channel is ok, because it's created by us)
408
467
  - basically everything in Settings that is not specific to a sales channel (tax, search, etc.)
468
+
469
+ ## Running Tests in the Test Suite
470
+ If you want to work on the test suite and try to execute tests from within this repository, you have to run a corresponding docker image for a specific Shopware version.
471
+
472
+ Shopware 6.6
473
+ ```
474
+ docker compose up -d shopware
475
+ ```
476
+
477
+ Shopware 6.5
478
+ ```
479
+ docker compose up -d shopware-65
480
+ ```
481
+
482
+ When the docker container is running you can execute the normal playwright commands.
483
+
484
+ ```
485
+ npx playwright test
486
+ ```
package/dist/index.d.mts CHANGED
@@ -171,9 +171,27 @@ declare class IdProvider {
171
171
  type SalesChannel = components['schemas']['SalesChannel'] & {
172
172
  id: string;
173
173
  };
174
- type Customer = components['schemas']['Customer'] & {
174
+ type Customer = Omit<components['schemas']['Customer'], 'defaultShippingAddress' | 'defaultBillingAddress'> & {
175
175
  id: string;
176
176
  password: string;
177
+ defaultShippingAddress: {
178
+ firstName: string;
179
+ lastName: string;
180
+ city: string;
181
+ street: string;
182
+ zipcode: string;
183
+ countryId: string;
184
+ salutationId: string;
185
+ };
186
+ defaultBillingAddress: {
187
+ firstName: string;
188
+ lastName: string;
189
+ city: string;
190
+ street: string;
191
+ zipcode: string;
192
+ countryId: string;
193
+ salutationId: string;
194
+ };
177
195
  };
178
196
  type CustomerAddress = components['schemas']['CustomerAddress'] & {
179
197
  id: string;
@@ -235,6 +253,9 @@ type Rule = components['schemas']['Rule'] & {
235
253
  type Currency$1 = components['schemas']['Currency'] & {
236
254
  id: string;
237
255
  };
256
+ type Country = components['schemas']['Country'] & {
257
+ id: string;
258
+ };
238
259
  interface CalculatedTaxes {
239
260
  tax: number;
240
261
  taxRate: number;
@@ -398,6 +419,14 @@ declare class TestDataService {
398
419
  * @param currencyId - The uuid of the currency to use for the product pricing.
399
420
  */
400
421
  createProductWithPriceRange(overrides?: Partial<Product>, taxId?: string, currencyId?: string): Promise<Product>;
422
+ /**
423
+ * Creates basic variant products based on property group.
424
+ *
425
+ * @param parentProduct Parent product of the variants
426
+ * @param propertyGroups Property group collection which contain options
427
+ * @param overrides - Specific data overrides that will be applied to the variant data struct.
428
+ */
429
+ createVariantProducts(parentProduct: Product, propertyGroups: PropertyGroup[], overrides?: Partial<Product>): Promise<Product[]>;
401
430
  /**
402
431
  * Creates a basic manufacturer without images or other special configuration.
403
432
  *
@@ -483,19 +512,6 @@ declare class TestDataService {
483
512
  * @param overrides - Specific data overrides that will be applied to the payment method data struct.
484
513
  */
485
514
  createBasicPaymentMethod(overrides?: Partial<PaymentMethod>): Promise<PaymentMethod>;
486
- /**
487
- * Creates a new basic rule with the condition cart amount >= 1.
488
- *
489
- * @param overrides - Specific data overrides that will be applied to the payment method data struct.
490
- */
491
- createBasicRule(overrides?: Partial<Rule>, conditionType?: string, operator?: string, amount?: number): Promise<Rule>;
492
- /**
493
- * Creates a new basic page layout.
494
- *
495
- * @param cmsPageType - The type of the cms page layout (page/landingpage/product_detail/product_list).
496
- * @param overrides - Specific data overrides that will be applied to the cms page layout data struct.
497
- */
498
- createBasicPageLayout(cmsPageType: string, overrides?: Partial<CmsPage>): Promise<CmsPage>;
499
515
  /**
500
516
  * Creates a payment method with one randomly generated image.
501
517
  *
@@ -503,13 +519,11 @@ declare class TestDataService {
503
519
  */
504
520
  createPaymentMethodWithImage(overrides?: Partial<PaymentMethod>): Promise<PaymentMethod>;
505
521
  /**
506
- * Creates basic variant products based on property group.
522
+ * Creates a new basic shipping method with random delivery time.
507
523
  *
508
- * @param parentProduct Parent product of the variants
509
- * @param propertyGroups Property group collection which contain options
510
- * @param overrides - Specific data overrides that will be applied to the variant data struct.
524
+ * @param overrides - Specific data overrides that will be applied to the shipping method data struct.
511
525
  */
512
- createVariantProducts(parentProduct: Product, propertyGroups: PropertyGroup[], overrides?: Partial<Product>): Promise<Product[]>;
526
+ createBasicShippingMethod(overrides?: Partial<ShippingMethod>): Promise<ShippingMethod>;
513
527
  /**
514
528
  * Creates a shipping method with one randomly generated image.
515
529
  *
@@ -517,24 +531,31 @@ declare class TestDataService {
517
531
  */
518
532
  createShippingMethodWithImage(overrides?: Partial<ShippingMethod>): Promise<ShippingMethod>;
519
533
  /**
520
- * Creates a new basic shipping method with random delivery time.
534
+ * Creates a new basic rule with the condition cart amount >= 1.
521
535
  *
522
- * @param overrides - Specific data overrides that will be applied to the shipping method data struct.
536
+ * @param overrides - Specific data overrides that will be applied to the payment method data struct.
523
537
  */
524
- createBasicShippingMethod(overrides?: Partial<ShippingMethod>): Promise<ShippingMethod>;
538
+ createBasicRule(overrides?: Partial<Rule>, conditionType?: string, operator?: string, amount?: number): Promise<Rule>;
525
539
  /**
526
- * Function that generates combinations from n number of arrays
527
- * with m number of elements in them.
528
- * @param array
540
+ * Creates a new basic page layout.
541
+ *
542
+ * @param cmsPageType - The type of the cms page layout (page/landingpage/product_detail/product_list).
543
+ * @param overrides - Specific data overrides that will be applied to the cms page layout data struct.
529
544
  */
530
- combineAll: (array: Record<string, string>[][]) => Record<string, string>[][];
545
+ createBasicPageLayout(cmsPageType: string, overrides?: Partial<CmsPage>): Promise<CmsPage>;
531
546
  /**
532
- * Assigns a media resource to a payment method as a logo.
547
+ * Creates a random country
533
548
  *
534
- * @param paymentMethodId - The uuid of the payment method.
535
- * @param mediaId - The uuid of the media resource.
549
+ * @param overrides - Specific data overrides that will be applied to the country data struct.
536
550
  */
537
- assignPaymentMethodMedia(paymentMethodId: string, mediaId: string): Promise<any>;
551
+ createCountry(overrides?: Partial<Country>): Promise<Country>;
552
+ /**
553
+ * Creates a random currency with default rounding of 2 decimals
554
+ *
555
+ * @param roundingDecimals - Decimals of the rounding shown in Storefront, default value 2
556
+ * @param overrides - Specific data overrides that will be applied to the currency data struct.
557
+ */
558
+ createCurrency(overrides?: Partial<Currency$1>, roundingDecimals?: number): Promise<Currency$1>;
538
559
  /**
539
560
  * Assigns a media resource as the download of a digital product.
540
561
  *
@@ -550,19 +571,20 @@ declare class TestDataService {
550
571
  */
551
572
  assignProductMedia(productId: string, mediaId: string): Promise<any>;
552
573
  /**
553
- * Assigns a media resource to a manufacturer as a logo.
574
+ * Assigns a manufacturer to a product.
554
575
  *
576
+ * @param productId - The uuid of the product.
555
577
  * @param manufacturerId - The uuid of the manufacturer.
556
- * @param mediaId - The uuid of the media resource.
557
578
  */
558
- assignManufacturerMedia(manufacturerId: string, mediaId: string): Promise<any>;
579
+ assignProductManufacturer(productId: string, manufacturerId: string): Promise<void>;
559
580
  /**
560
- * Assigns a manufacturer to a product.
581
+ * Assigns a country to a currency with default roundings of 2.
561
582
  *
562
- * @param manufacturerId - The uuid of the manufacturer.
563
- * @param productId - The uuid of the product.
583
+ * @param currencyId - The uuid of currency.
584
+ * @param countryId - The uuid of country.
585
+ * @param roundingDecimals - The roundings of item and total values in storefront, default 2 decimals
564
586
  */
565
- assignManufacturerProduct(manufacturerId: string, productId: string): Promise<void>;
587
+ assignCurrencyCountryRounding(currencyId: string, countryId: string, roundingDecimals?: number): Promise<any>;
566
588
  /**
567
589
  * Assigns a product to a category.
568
590
  *
@@ -577,6 +599,50 @@ declare class TestDataService {
577
599
  * @param tagId - The uuid of the tag.
578
600
  */
579
601
  assignProductTag(productId: string, tagId: string): Promise<playwright_core.APIResponse>;
602
+ /**
603
+ * Assigns a media resource to a manufacturer as a logo.
604
+ *
605
+ * @param manufacturerId - The uuid of the manufacturer.
606
+ * @param mediaId - The uuid of the media resource.
607
+ */
608
+ assignManufacturerMedia(manufacturerId: string, mediaId: string): Promise<any>;
609
+ /**
610
+ * Assigns a manufacturer to a product.
611
+ *
612
+ * @deprecated - Use `assignProductManufacturer` instead.
613
+ *
614
+ * @param manufacturerId - The uuid of the manufacturer.
615
+ * @param productId - The uuid of the product.
616
+ */
617
+ assignManufacturerProduct(manufacturerId: string, productId: string): Promise<void>;
618
+ /**
619
+ * Assigns a currency to a sales channel.
620
+ *
621
+ * @param salesChannelId - The uuid of the sales channel.
622
+ * @param currencyId - The uuid of the currency.
623
+ */
624
+ assignSalesChannelCurrency(salesChannelId: string, currencyId: string): Promise<any>;
625
+ /**
626
+ * Assigns a country to a sales channel.
627
+ *
628
+ * @param salesChannelId - The uuid of the sales channel.
629
+ * @param countryId - The uuid of the country.
630
+ */
631
+ assignSalesChannelCountry(salesChannelId: string, countryId: string): Promise<any>;
632
+ /**
633
+ * Assigns a media resource to a payment method as a logo.
634
+ *
635
+ * @param paymentMethodId - The uuid of the payment method.
636
+ * @param mediaId - The uuid of the media resource.
637
+ */
638
+ assignPaymentMethodMedia(paymentMethodId: string, mediaId: string): Promise<any>;
639
+ /**
640
+ * Assigns a media resource to a shipping method as a logo.
641
+ *
642
+ * @param shippingMethodId - The uuid of the shipping method.
643
+ * @param mediaId - The uuid of the media resource.
644
+ */
645
+ assignShippingMethodMedia(shippingMethodId: string, mediaId: string): Promise<any>;
580
646
  /**
581
647
  * Retrieves a currency based on its ISO code.
582
648
  *
@@ -595,13 +661,6 @@ declare class TestDataService {
595
661
  * @param name - The name of the shipping method. Default is "Standard".
596
662
  */
597
663
  getShippingMethod(name?: string): Promise<ShippingMethod>;
598
- /**
599
- * Assigns a media resource to a shipping method as a logo.
600
- *
601
- * @param shippingMethodId - The uuid of the shipping method.
602
- * @param mediaId - The uuid of the media resource.
603
- */
604
- assignShippingMethodMedia(shippingMethodId: string, mediaId: string): Promise<any>;
605
664
  /**
606
665
  * Retrieves all delivery time resources.
607
666
  */
@@ -674,12 +733,28 @@ declare class TestDataService {
674
733
  * Will delete all entities created by the data service via sync API.
675
734
  */
676
735
  cleanUp(): Promise<playwright_core.APIResponse | null>;
736
+ isProduct(item: Product | Promotion): item is Product;
737
+ isPromotion(item: Product | Promotion): item is Promotion;
677
738
  /**
678
739
  * Convert a JS date object into a date-time compatible string.
679
740
  *
680
741
  * @param date - The JS date object from which the date-time should be retrieved.
681
742
  */
682
743
  convertDateTime(date: Date): string;
744
+ /**
745
+ * Function that generates combinations from n number of arrays
746
+ * with m number of elements in them.
747
+ * @param array
748
+ */
749
+ combineAll: (array: Record<string, string>[][]) => Record<string, string>[][];
750
+ /**
751
+ * Retrieves a country Id based on its iso2 code.
752
+ *
753
+ * @param iso2 - The iso2 code of the country, for example "DE".
754
+ */
755
+ getCountryId(iso2: string): Promise<Country>;
756
+ getCountryStruct(overrides?: Partial<Country>): Partial<Country>;
757
+ getCurrencyStruct(overrides: Partial<Currency$1> | undefined, roundingDecimals: number): Partial<Currency$1>;
683
758
  getBasicProductStruct(taxId?: string, currencyId?: string, overrides?: Partial<Product>): Partial<Product>;
684
759
  getBasicRuleStruct(overrides: Partial<Rule> | undefined, conditionType: string, operator: string, amount: number): Partial<Rule>;
685
760
  getProductPriceRangeStruct(currencyId: string, ruleId: string): Partial<Product>;
@@ -709,8 +784,6 @@ declare class TestDataService {
709
784
  deliveryTimeId: string;
710
785
  active: boolean;
711
786
  } & Partial<ShippingMethod>;
712
- isProduct(item: Product | Promotion): item is Product;
713
- isPromotion(item: Product | Promotion): item is Promotion;
714
787
  getBasicOrderStruct(lineItems: SimpleLineItem[], languageId: string, currency: Currency$1, paymentMethod: PaymentMethod, shippingMethod: ShippingMethod, orderState: StateMachineState, deliveryState: StateMachineState, transactionState: StateMachineState, customer: Customer, customerAddress: CustomerAddress, salesChannelId?: string, overrides?: Partial<Order>): Partial<Order>;
715
788
  getBasicProductLineItemStruct(lineItem: SimpleLineItem): {
716
789
  productId: string;
@@ -838,7 +911,10 @@ declare class Home implements PageObject {
838
911
  readonly page: Page;
839
912
  readonly productImages: Locator;
840
913
  readonly productListItems: Locator;
914
+ readonly languagesDropdown: Locator;
915
+ readonly currenciesDropdown: Locator;
841
916
  constructor(page: Page);
917
+ getListingItemByProductId(productId: string): Promise<Record<string, Locator>>;
842
918
  url(): string;
843
919
  }
844
920
 
@@ -907,6 +983,7 @@ declare class CheckoutConfirm implements PageObject {
907
983
  readonly termsAndConditionsCheckbox: Locator;
908
984
  readonly immediateAccessToDigitalProductCheckbox: Locator;
909
985
  readonly grandTotalPrice: Locator;
986
+ readonly taxPrice: Locator;
910
987
  readonly submitOrderButton: Locator;
911
988
  /**
912
989
  * Payment options
@@ -932,6 +1009,7 @@ declare class CheckoutFinish implements PageObject {
932
1009
  readonly headline: Locator;
933
1010
  readonly orderNumberText: Locator;
934
1011
  readonly grandTotalPrice: Locator;
1012
+ readonly taxPrice: Locator;
935
1013
  readonly cartLineItemImages: Locator;
936
1014
  private readonly orderNumberRegex;
937
1015
  constructor(page: Page);
@@ -1102,6 +1180,7 @@ declare class ProductDetail implements PageObject {
1102
1180
  * Tabs
1103
1181
  */
1104
1182
  readonly variantsTabLink: Locator;
1183
+ readonly specificationsTabLink: Locator;
1105
1184
  /**
1106
1185
  * Variants Generation
1107
1186
  */
@@ -1122,7 +1201,12 @@ declare class ProductDetail implements PageObject {
1122
1201
  readonly propertyOptionSizeSmall: Locator;
1123
1202
  readonly propertyOptionSizeMedium: Locator;
1124
1203
  readonly propertyOptionSizeLarge: Locator;
1204
+ /**
1205
+ * Cards
1206
+ */
1207
+ readonly customFieldCard: Locator;
1125
1208
  constructor(page: Page);
1209
+ getCustomFieldSetCardContentByName(customFieldSetName: string): Promise<Record<string, Locator>>;
1126
1210
  url(productId: string): string;
1127
1211
  }
1128
1212
 
@@ -1140,7 +1224,11 @@ declare class CustomerDetail implements PageObject {
1140
1224
  readonly editButton: Locator;
1141
1225
  readonly generalTab: Locator;
1142
1226
  readonly accountCard: Locator;
1227
+ readonly customFieldCard: Locator;
1228
+ readonly customFieldSetTabs: Locator;
1229
+ readonly customFieldSetTabCustomContent: Locator;
1143
1230
  constructor(page: Page);
1231
+ getCustomFieldSetCardContentByName(customFieldSetName: string): Promise<Record<string, Locator>>;
1144
1232
  url(customerId: string): string;
1145
1233
  }
1146
1234
 
@@ -1346,6 +1434,7 @@ declare class Categories implements PageObject {
1346
1434
  readonly categoryTypeSelectionList: Locator;
1347
1435
  readonly filtersResultPopoverItemList: Locator;
1348
1436
  readonly saveButton: Locator;
1437
+ readonly loadingSpinner: Locator;
1349
1438
  /**
1350
1439
  * Customisable link
1351
1440
  */
@@ -1356,7 +1445,10 @@ declare class Categories implements PageObject {
1356
1445
  readonly landingPageSelectionList: Locator;
1357
1446
  readonly filterResultPopoverTreeCheckboxItemList: Locator;
1358
1447
  readonly openInNewTabCheckbox: Locator;
1448
+ readonly popoverCategoryTree: Locator;
1359
1449
  constructor(page: Page);
1450
+ getLandingPageByName(landingPageName: string): Promise<Locator>;
1451
+ getPopOverCategoryByName(categoryName: string): Promise<Locator>;
1360
1452
  url(): string;
1361
1453
  }
1362
1454
 
@@ -1364,10 +1456,84 @@ declare class RuleDetail implements PageObject {
1364
1456
  readonly page: Page;
1365
1457
  readonly nameInput: Locator;
1366
1458
  readonly priorityInput: Locator;
1459
+ readonly conditionTypeSelectionInput: Locator;
1460
+ readonly conditionValueSelectionInput: Locator;
1461
+ readonly filtersResultPopoverSelectionList: Locator;
1367
1462
  constructor(page: Page);
1368
1463
  url(ruleId: string, tabName?: string): string;
1369
1464
  }
1370
1465
 
1466
+ declare class CustomFieldListing implements PageObject {
1467
+ readonly page: Page;
1468
+ readonly addNewSetButton: Locator;
1469
+ readonly customFieldRows: Locator;
1470
+ constructor(page: Page);
1471
+ getLineItemByCustomFieldSetName(customFieldSetName: string): Promise<Record<string, Locator>>;
1472
+ url(): string;
1473
+ }
1474
+
1475
+ declare class CustomFieldCreate implements PageObject {
1476
+ readonly page: Page;
1477
+ readonly saveButton: Locator;
1478
+ readonly cancelButton: Locator;
1479
+ readonly technicalNameInput: Locator;
1480
+ readonly positionInput: Locator;
1481
+ readonly labelEnglishGBInput: Locator;
1482
+ readonly assignToSelectionList: Locator;
1483
+ readonly resultAssignToPopoverItemList: Locator;
1484
+ constructor(page: Page);
1485
+ url(): string;
1486
+ }
1487
+
1488
+ declare class CustomFieldDetail extends CustomFieldCreate {
1489
+ readonly page: Page;
1490
+ readonly newCustomFieldButton: Locator;
1491
+ readonly customFieldEditDialog: Locator;
1492
+ readonly newCustomFieldDialog: Locator;
1493
+ readonly customFieldTechnicalNameInput: Locator;
1494
+ readonly customFieldPositionInput: Locator;
1495
+ readonly customFieldTypeSelectionList: Locator;
1496
+ readonly customFieldModifyByStoreApiCheckbox: Locator;
1497
+ readonly customFieldCancelButton: Locator;
1498
+ readonly customFieldAddButton: Locator;
1499
+ readonly customFieldEditApplyButton: Locator;
1500
+ readonly customFieldLabelEnglishGBInput: Locator;
1501
+ readonly customFieldPlaceholderEnglishGBInput: Locator;
1502
+ readonly customFieldHelpTextEnglishGBInput: Locator;
1503
+ readonly customFieldDeleteListButton: Locator;
1504
+ readonly customFieldDeleteDialog: Locator;
1505
+ readonly customFieldDeleteCancelButton: Locator;
1506
+ readonly customFieldDeleteButton: Locator;
1507
+ constructor(page: Page);
1508
+ getLineItemByCustomFieldName(customFieldName: string): Promise<Record<string, Locator>>;
1509
+ url(customFieldUuid?: string): string;
1510
+ }
1511
+
1512
+ declare class CategoryDetail implements PageObject {
1513
+ readonly page: Page;
1514
+ readonly saveButton: Locator;
1515
+ readonly cancelButton: Locator;
1516
+ readonly customFieldCard: Locator;
1517
+ readonly customFieldSetTabs: Locator;
1518
+ readonly customFieldSetTabCustomContent: Locator;
1519
+ constructor(page: Page);
1520
+ getCustomFieldSetCardContentByName(customFieldSetName: string): Promise<Record<string, Locator>>;
1521
+ url(categoryUuid: string): string;
1522
+ }
1523
+
1524
+ declare class RuleCreate implements PageObject {
1525
+ readonly page: Page;
1526
+ readonly nameInput: Locator;
1527
+ readonly priorityInput: Locator;
1528
+ readonly conditionTypeSelectionInput: Locator;
1529
+ readonly conditionValueSelectionInput: Locator;
1530
+ readonly filtersResultPopoverSelectionList: Locator;
1531
+ readonly saveButton: Locator;
1532
+ readonly cancelButton: Locator;
1533
+ constructor(page: Page);
1534
+ url(): string;
1535
+ }
1536
+
1371
1537
  interface AdministrationPageTypes {
1372
1538
  AdminProductDetail: ProductDetail;
1373
1539
  AdminOrderDetail: OrderDetail;
@@ -1380,9 +1546,14 @@ interface AdministrationPageTypes {
1380
1546
  AdminDashboard: Dashboard;
1381
1547
  AdminShippingListing: ShippingListing;
1382
1548
  AdminCategories: Categories;
1549
+ AdminCategoryDetail: CategoryDetail;
1383
1550
  AdminLandingPageCreate: LandingPageCreate;
1384
1551
  AdminLandingPageDetail: LandingPageDetail;
1385
1552
  AdminRuleDetail: RuleDetail;
1553
+ AdminRuleCreate: RuleCreate;
1554
+ AdminCustomFieldListing: CustomFieldListing;
1555
+ AdminCustomFieldCreate: CustomFieldCreate;
1556
+ AdminCustomFieldDetail: CustomFieldDetail;
1386
1557
  }
1387
1558
  declare const AdminPageObjects: {
1388
1559
  ProductDetail: typeof ProductDetail;
@@ -1396,9 +1567,14 @@ declare const AdminPageObjects: {
1396
1567
  DataSharing: typeof DataSharing;
1397
1568
  ShippingListing: typeof ShippingListing;
1398
1569
  Categories: typeof Categories;
1570
+ CategoryDetail: typeof CategoryDetail;
1399
1571
  LandingPageCreate: typeof LandingPageCreate;
1400
1572
  LandingPageDetail: typeof LandingPageDetail;
1401
1573
  RuleDetail: typeof RuleDetail;
1574
+ RuleCreate: typeof RuleCreate;
1575
+ CustomFieldListing: typeof CustomFieldListing;
1576
+ CustomFieldCreate: typeof CustomFieldCreate;
1577
+ CustomFieldDetail: typeof CustomFieldDetail;
1402
1578
  };
1403
1579
 
1404
1580
  interface DataFixtureTypes {
@@ -1493,6 +1669,10 @@ declare const test: _playwright_test.TestType<_playwright_test.PlaywrightTestArg
1493
1669
  Logout: Task;
1494
1670
  } & {
1495
1671
  Register: Task;
1672
+ } & {
1673
+ RegisterGuest: Task;
1674
+ } & {
1675
+ ChangeStorefrontCurrency: Task;
1496
1676
  } & {
1497
1677
  AddProductToCart: Task;
1498
1678
  } & {
@@ -1523,4 +1703,4 @@ declare const test: _playwright_test.TestType<_playwright_test.PlaywrightTestArg
1523
1703
  ValidateAccessibility: (pageName: string, assertViolations?: number | boolean | undefined, createReport?: boolean | undefined, ruleTags?: string[] | undefined, outputDir?: string | undefined) => () => Promise<axe_core.Result[]>;
1524
1704
  }, _playwright_test.PlaywrightWorkerArgs & _playwright_test.PlaywrightWorkerOptions & FixtureTypes>;
1525
1705
 
1526
- export { AdminPageObjects, type CalculatedTaxes, type Category$1 as Category, type CmsPage, type CreatedRecord, type Currency$1 as Currency, type Customer, type CustomerAddress, type DataServiceOptions, type DeliveryTime, type FixtureTypes, type Manufacturer, type Media, type Order, type OrderDelivery, type OrderLineItem, type OrderStatus, type PageObject, type PaymentMethod, type Price, type Product, type ProductPrice, type Promotion, type PromotionDiscount, type PropertyGroup, type PropertyGroupOption, type Rule, type SalesChannel, type Salutation, type ShippingMethod, type SimpleLineItem, type StateMachine, type StateMachineState, StorefrontPageObjects, type SyncApiOperation, type Tag, type Task, type TaxRules, TestDataService, createRandomImage, extractIdFromUrl, getCountryId, getCurrency, getDefaultShippingMethodId, getFlowId, getLanguageData, getMediaId, getOrderTransactionId, getPaymentMethodId, getPromotionWithDiscount, getSalutationId, getSnippetSetId, getStateMachineId, getStateMachineStateId, getTaxId, getThemeId, isSaaSInstance, isThemeCompiled, setOrderStatus, test };
1706
+ export { AdminPageObjects, type CalculatedTaxes, type Category$1 as Category, type CmsPage, type Country, type CreatedRecord, type Currency$1 as Currency, type Customer, type CustomerAddress, type DataServiceOptions, type DeliveryTime, type FixtureTypes, type Manufacturer, type Media, type Order, type OrderDelivery, type OrderLineItem, type OrderStatus, type PageObject, type PaymentMethod, type Price, type Product, type ProductPrice, type Promotion, type PromotionDiscount, type PropertyGroup, type PropertyGroupOption, type Rule, type SalesChannel, type Salutation, type ShippingMethod, type SimpleLineItem, type StateMachine, type StateMachineState, StorefrontPageObjects, type SyncApiOperation, type Tag, type Task, type TaxRules, TestDataService, createRandomImage, extractIdFromUrl, getCountryId, getCurrency, getDefaultShippingMethodId, getFlowId, getLanguageData, getMediaId, getOrderTransactionId, getPaymentMethodId, getPromotionWithDiscount, getSalutationId, getSnippetSetId, getStateMachineId, getStateMachineStateId, getTaxId, getThemeId, isSaaSInstance, isThemeCompiled, setOrderStatus, test };