diff --git a/features/product/managing_products/editing_product.feature b/features/product/managing_products/editing_product.feature index ef6503a5951..cd1ed6ffcdb 100644 --- a/features/product/managing_products/editing_product.feature +++ b/features/product/managing_products/editing_product.feature @@ -22,6 +22,15 @@ Feature: Editing a product Then I should be notified that it has been successfully edited And this product name should be "7 Wonders" + @ui + Scenario: Renaming a simple product does not change its variant name + Given this product only variant was renamed to "Dice Brewing: The Game" + And I want to modify this product + When I rename it to "7 Wonders" in "English (United States)" + And I save my changes + And I want to view all variants of this product + Then the first variant in the list should have name "Dice Brewing: The Game" + @ui Scenario: Changing a simple product price Given I want to modify the "Dice Brewing" product diff --git a/src/Sylius/Behat/Context/Setup/ProductContext.php b/src/Sylius/Behat/Context/Setup/ProductContext.php index 7cb9a4edb18..ff8061e48be 100644 --- a/src/Sylius/Behat/Context/Setup/ProductContext.php +++ b/src/Sylius/Behat/Context/Setup/ProductContext.php @@ -463,6 +463,20 @@ public function theProductHasVariantPricedAtIdentifiedBy( $this->createProductVariant($product, $productVariantName, $price, $code, $this->sharedStorage->get('channel')); } + /** + * @Given /^(this product) only variant was renamed to "([^"]+)"$/ + */ + public function productOnlyVariantWasRenamed(ProductInterface $product, $variantName) + { + Assert::true($product->isSimple()); + + /** @var ProductVariantInterface $productVariant */ + $productVariant = $product->getVariants()->first(); + $productVariant->setName($variantName); + + $this->objectManager->flush(); + } + /** * @Given /^there is product "([^"]+)" available in ((?:this|that|"[^"]+") channel)$/ * @Given /^the store has a product "([^"]+)" available in ("([^"]+)" channel)$/ diff --git a/src/Sylius/Behat/Context/Ui/Admin/BrowsingProductVariantsContext.php b/src/Sylius/Behat/Context/Ui/Admin/BrowsingProductVariantsContext.php new file mode 100644 index 00000000000..24c34d74580 --- /dev/null +++ b/src/Sylius/Behat/Context/Ui/Admin/BrowsingProductVariantsContext.php @@ -0,0 +1,287 @@ + + */ +final class BrowsingProductVariantsContext implements Context +{ + /** + * @var IndexPageInterface + */ + private $indexPage; + + /** + * @var ProductVariantResolverInterface + */ + private $defaultProductVariantResolver; + + /** + * @param IndexPageInterface $indexPage + * @param ProductVariantResolverInterface $defaultProductVariantResolver + */ + public function __construct( + IndexPageInterface $indexPage, + ProductVariantResolverInterface $defaultProductVariantResolver + ) { + $this->indexPage = $indexPage; + $this->defaultProductVariantResolver = $defaultProductVariantResolver; + } + + /** + * @When I start sorting variants by :field + */ + public function iSortProductsBy($field) + { + $this->indexPage->sortBy($field); + } + + /** + * @Then the :productVariantCode variant of the :product product should appear in the store + */ + public function theProductVariantShouldAppearInTheShop($productVariantCode, ProductInterface $product) + { + $this->indexPage->open(['productId' => $product->getId()]); + + Assert::true($this->indexPage->isSingleResourceOnPage(['code' => $productVariantCode])); + } + + /** + * @Then the :productVariantCode variant of the :product product should not appear in the store + */ + public function theProductVariantShouldNotAppearInTheShop($productVariantCode, ProductInterface $product) + { + $this->indexPage->open(['productId' => $product->getId()]); + + Assert::false($this->indexPage->isSingleResourceOnPage(['code' => $productVariantCode])); + } + + /** + * @Then the :product product should have no variants + */ + public function theProductShouldHaveNoVariants(ProductInterface $product) + { + $this->indexPage->open(['productId' => $product->getId()]); + + $this->assertNumberOfVariantsOnProductPage(0); + } + + /** + * @Then the :product product should have only one variant + */ + public function theProductShouldHaveOnlyOneVariant(ProductInterface $product) + { + $this->indexPage->open(['productId' => $product->getId()]); + + $this->assertNumberOfVariantsOnProductPage(1); + } + + /** + * @When /^I (?:|want to )view all variants of (this product)$/ + * @When /^I view(?:| all) variants of the (product "[^"]+")$/ + */ + public function iWantToViewAllVariantsOfThisProduct(ProductInterface $product) + { + $this->indexPage->open(['productId' => $product->getId()]); + } + + /** + * @Then I should see :numberOfProductVariants variants in the list + * @Then I should see :numberOfProductVariants variant in the list + * @Then I should not see any variants in the list + */ + public function iShouldSeeProductVariantsInTheList($numberOfProductVariants = 0) + { + Assert::same($this->indexPage->countItems(), (int) $numberOfProductVariants); + } + + /** + * @Then /^(this variant) should not exist in the product catalog$/ + */ + public function productVariantShouldNotExist(ProductVariantInterface $productVariant) + { + $this->indexPage->open(['productId' => $productVariant->getProduct()->getId()]); + + Assert::false($this->indexPage->isSingleResourceOnPage(['name' => $productVariant->getName()])); + } + + /** + * @Then /^(this variant) should still exist in the product catalog$/ + */ + public function productShouldExistInTheProductCatalog(ProductVariantInterface $productVariant) + { + $this->theProductVariantShouldAppearInTheShop($productVariant->getCode(), $productVariant->getProduct()); + } + + /** + * @Then /^the variant "([^"]+)" should have (\d+) items on hand$/ + */ + public function thisVariantShouldHaveItemsOnHand($productVariantName, $quantity) + { + Assert::true($this->indexPage->isSingleResourceWithSpecificElementOnPage( + ['name' => $productVariantName], + sprintf('td > div.ui.label:contains("%s")', $quantity) + )); + } + + /** + * @Then /^the "([^"]+)" variant of ("[^"]+" product) should have (\d+) items on hand$/ + */ + public function theVariantOfProductShouldHaveItemsOnHand($productVariantName, ProductInterface $product, $quantity) + { + $this->indexPage->open(['productId' => $product->getId()]); + + Assert::true($this->indexPage->isSingleResourceWithSpecificElementOnPage( + ['name' => $productVariantName], + sprintf('td > div.ui.label:contains("%s")', $quantity) + )); + } + + /** + * @Then /^I should see that the ("([^"]+)" variant) is not tracked$/ + */ + public function iShouldSeeThatIsNotTracked(ProductVariantInterface $productVariant) + { + Assert::true($this->indexPage->isSingleResourceOnPage([ + 'name' => $productVariant->getName(), + 'inventory' => 'Not tracked', + ])); + } + + /** + * @Then /^I should see that the ("[^"]+" variant) has zero on hand quantity$/ + */ + public function iShouldSeeThatTheVariantHasZeroOnHandQuantity(ProductVariantInterface $productVariant) + { + Assert::true($this->indexPage->isSingleResourceOnPage([ + 'name' => $productVariant->getName(), + 'inventory' => '0 Available on hand', + ])); + } + + /** + * @Then /^(\d+) units of (this product) should be on hold$/ + */ + public function unitsOfThisProductShouldBeOnHold($quantity, ProductInterface $product) + { + /** @var ProductVariantInterface $variant */ + $variant = $this->defaultProductVariantResolver->getVariant($product); + + $this->assertOnHoldQuantityOfVariant($quantity, $variant); + } + + /** + * @Then /^(\d+) units of (this product) should be on hand$/ + */ + public function unitsOfThisProductShouldBeOnHand($quantity, ProductInterface $product) + { + /** @var ProductVariantInterface $variant */ + $variant = $this->defaultProductVariantResolver->getVariant($product); + + Assert::same($this->indexPage->getOnHandQuantityFor($variant), (int) $quantity); + } + + /** + * @Then /^there should be no units of (this product) on hold$/ + */ + public function thereShouldBeNoUnitsOfThisProductOnHold(ProductInterface $product) + { + /** @var ProductVariantInterface $variant */ + $variant = $this->defaultProductVariantResolver->getVariant($product); + + $this->assertOnHoldQuantityOfVariant(0, $variant); + } + + /** + * @Then the :variant variant should have :amount items on hold + */ + public function thisVariantShouldHaveItemsOnHold(ProductVariantInterface $variant, $amount) + { + $this->assertOnHoldQuantityOfVariant((int) $amount, $variant); + } + + /** + * @Then the :variant variant of :product product should have :amount items on hold + */ + public function theVariantOfProductShouldHaveItemsOnHold(ProductVariantInterface $variant, ProductInterface $product, $amount) + { + $this->indexPage->open(['productId' => $product->getId()]); + + $this->assertOnHoldQuantityOfVariant((int) $amount, $variant); + } + + /** + * @Then the first variant in the list should have :field :value + */ + public function theFirstVariantInTheListShouldHave($field, $value) + { + Assert::same($this->indexPage->getColumnFields($field)[0], $value); + } + + /** + * @Then the last variant in the list should have :field :value + */ + public function theLastVariantInTheListShouldHave($field, $value) + { + $values = $this->indexPage->getColumnFields($field); + + Assert::same(end($values), $value); + } + + /** + * @Then /^(this variant) should have a (\d+) item currently in stock$/ + */ + public function thisVariantShouldHaveAItemCurrentlyInStock(ProductVariantInterface $productVariant, $amountInStock) + { + $this->indexPage->open(['productId' => $productVariant->getProduct()->getId()]); + + Assert::same($this->indexPage->getOnHandQuantityFor($productVariant), (int) $amountInStock); + } + + /** + * @param int $expectedAmount + * @param ProductVariantInterface $variant + * + * @throws \InvalidArgumentException + */ + private function assertOnHoldQuantityOfVariant($expectedAmount, $variant) + { + $actualAmount = $this->indexPage->getOnHoldQuantityFor($variant); + + Assert::same( + $actualAmount, + (int) $expectedAmount, + sprintf( + 'Unexpected on hold quantity for "%s" variant. It should be "%s" but is "%s"', + $variant->getName(), + $expectedAmount, + $actualAmount + ) + ); + } + + /** + * @param int $amount + */ + private function assertNumberOfVariantsOnProductPage($amount) + { + Assert::same((int) $this->indexPage->countItems(), $amount, 'Product has %d variants, but should have %d'); + } +} diff --git a/src/Sylius/Behat/Context/Ui/Admin/ManagingProductVariantsContext.php b/src/Sylius/Behat/Context/Ui/Admin/ManagingProductVariantsContext.php index 539c66f9cd9..24a40313136 100644 --- a/src/Sylius/Behat/Context/Ui/Admin/ManagingProductVariantsContext.php +++ b/src/Sylius/Behat/Context/Ui/Admin/ManagingProductVariantsContext.php @@ -22,7 +22,6 @@ use Sylius\Behat\Service\SharedStorageInterface; use Sylius\Component\Core\Model\ProductInterface; use Sylius\Component\Core\Model\ProductVariantInterface; -use Sylius\Component\Product\Resolver\ProductVariantResolverInterface; use Webmozart\Assert\Assert; /** @@ -36,11 +35,6 @@ final class ManagingProductVariantsContext implements Context */ private $sharedStorage; - /** - * @var ProductVariantResolverInterface - */ - private $defaultProductVariantResolver; - /** * @var CreatePageInterface */ @@ -73,7 +67,6 @@ final class ManagingProductVariantsContext implements Context /** * @param SharedStorageInterface $sharedStorage - * @param ProductVariantResolverInterface $defaultProductVariantResolver * @param CreatePageInterface $createPage * @param IndexPageInterface $indexPage * @param UpdatePageInterface $updatePage @@ -83,7 +76,6 @@ final class ManagingProductVariantsContext implements Context */ public function __construct( SharedStorageInterface $sharedStorage, - ProductVariantResolverInterface $defaultProductVariantResolver, CreatePageInterface $createPage, IndexPageInterface $indexPage, UpdatePageInterface $updatePage, @@ -92,7 +84,6 @@ public function __construct( NotificationCheckerInterface $notificationChecker ) { $this->sharedStorage = $sharedStorage; - $this->defaultProductVariantResolver = $defaultProductVariantResolver; $this->createPage = $createPage; $this->indexPage = $indexPage; $this->updatePage = $updatePage; @@ -208,14 +199,6 @@ public function iSetItsOptionAs($optionName, $optionValue) $this->createPage->selectOption($optionName, $optionValue); } - /** - * @When I start sorting variants by :field - */ - public function iSortProductsBy($field) - { - $this->indexPage->sortBy($field); - } - /** * @When I set the position of :name to :position */ @@ -232,42 +215,6 @@ public function iSaveMyNewConfiguration() $this->indexPage->savePositions(); } - /** - * @Then the :productVariantCode variant of the :product product should appear in the store - */ - public function theProductVariantShouldAppearInTheShop($productVariantCode, ProductInterface $product) - { - $this->iWantToViewAllVariantsOfThisProduct($product); - - Assert::true($this->indexPage->isSingleResourceOnPage(['code' => $productVariantCode])); - } - - /** - * @Then the :productVariantCode variant of the :product product should not appear in the store - */ - public function theProductVariantShouldNotAppearInTheShop($productVariantCode, ProductInterface $product) - { - $this->iWantToViewAllVariantsOfThisProduct($product); - - Assert::false($this->indexPage->isSingleResourceOnPage(['code' => $productVariantCode])); - } - - /** - * @Then the :product product should have no variants - */ - public function theProductShouldHaveNoVariants(ProductInterface $product) - { - $this->assertNumberOfVariantsOnProductPage($product, 0); - } - - /** - * @Then the :product product should have only one variant - */ - public function theProductShouldHaveOnlyOneVariant(ProductInterface $product) - { - $this->assertNumberOfVariantsOnProductPage($product, 1); - } - /** * @Then /^the (variant with code "[^"]+") should be priced at (?:€|£|\$)([^"]+) for channel "([^"]+)"$/ */ @@ -301,46 +248,17 @@ public function theVariantWithCodeShouldHaveAnOriginalPriceOfForChannel(ProductV ); } - /** - * @When /^I (?:|want to )view all variants of (this product)$/ - * @When /^I view(?:| all) variants of the (product "[^"]+")$/ - */ - public function iWantToViewAllVariantsOfThisProduct(ProductInterface $product) - { - $this->indexPage->open(['productId' => $product->getId()]); - } - - /** - * @Then I should see :numberOfProductVariants variants in the list - * @Then I should see :numberOfProductVariants variant in the list - * @Then I should not see any variants in the list - */ - public function iShouldSeeProductVariantsInTheList($numberOfProductVariants = 0) - { - Assert::same($this->indexPage->countItems(), (int) $numberOfProductVariants); - } - /** * @When /^I delete the ("[^"]+" variant of product "[^"]+")$/ * @When /^I try to delete the ("[^"]+" variant of product "[^"]+")$/ */ public function iDeleteTheVariantOfProduct(ProductVariantInterface $productVariant) { - $this->iWantToViewAllVariantsOfThisProduct($productVariant->getProduct()); + $this->indexPage->open(['productId' => $productVariant->getProduct()->getId()]); $this->indexPage->deleteResourceOnPage(['code' => $productVariant->getCode()]); } - /** - * @Then /^(this variant) should not exist in the product catalog$/ - */ - public function productVariantShouldNotExist(ProductVariantInterface $productVariant) - { - $this->iWantToViewAllVariantsOfThisProduct($productVariant->getProduct()); - - Assert::false($this->indexPage->isSingleResourceOnPage(['name' => $productVariant->getName()])); - } - /** * @Then I should be notified that this variant is in use and cannot be deleted */ @@ -352,14 +270,6 @@ public function iShouldBeNotifiedOfFailure() ); } - /** - * @Then /^(this variant) should still exist in the product catalog$/ - */ - public function productShouldExistInTheProductCatalog(ProductVariantInterface $productVariant) - { - $this->theProductVariantShouldAppearInTheShop($productVariant->getCode(), $productVariant->getProduct()); - } - /** * @When /^I want to modify the ("[^"]+" product variant)$/ */ @@ -494,30 +404,6 @@ public function iRemoveItsNameFromTranslation() $this->updatePage->nameIt(''); } - /** - * @Then /^the variant "([^"]+)" should have (\d+) items on hand$/ - */ - public function thisVariantShouldHaveItemsOnHand($productVariantName, $quantity) - { - Assert::true($this->indexPage->isSingleResourceWithSpecificElementOnPage( - ['name' => $productVariantName], - sprintf('td > div.ui.label:contains("%s")', $quantity) - )); - } - - /** - * @Then /^the "([^"]+)" variant of ("[^"]+" product) should have (\d+) items on hand$/ - */ - public function theVariantOfProductShouldHaveItemsOnHand($productVariantName, ProductInterface $product, $quantity) - { - $this->indexPage->open(['productId' => $product->getId()]); - - Assert::true($this->indexPage->isSingleResourceWithSpecificElementOnPage( - ['name' => $productVariantName], - sprintf('td > div.ui.label:contains("%s")', $quantity) - )); - } - /** * @Then /^inventory of (this variant) should not be tracked$/ */ @@ -538,97 +424,6 @@ public function thisProductVariantShouldBeTracked(ProductVariantInterface $produ Assert::true($this->updatePage->isTracked()); } - /** - * @Then /^I should see that the ("([^"]+)" variant) is not tracked$/ - */ - public function iShouldSeeThatIsNotTracked(ProductVariantInterface $productVariant) - { - Assert::true($this->indexPage->isSingleResourceOnPage([ - 'name' => $productVariant->getName(), - 'inventory' => 'Not tracked', - ])); - } - - /** - * @Then /^I should see that the ("[^"]+" variant) has zero on hand quantity$/ - */ - public function iShouldSeeThatTheVariantHasZeroOnHandQuantity(ProductVariantInterface $productVariant) - { - Assert::true($this->indexPage->isSingleResourceOnPage([ - 'name' => $productVariant->getName(), - 'inventory' => '0 Available on hand', - ])); - } - - /** - * @Then /^(\d+) units of (this product) should be on hold$/ - */ - public function unitsOfThisProductShouldBeOnHold($quantity, ProductInterface $product) - { - /** @var ProductVariantInterface $variant */ - $variant = $this->defaultProductVariantResolver->getVariant($product); - - $this->assertOnHoldQuantityOfVariant($quantity, $variant); - } - - /** - * @Then /^(\d+) units of (this product) should be on hand$/ - */ - public function unitsOfThisProductShouldBeOnHand($quantity, ProductInterface $product) - { - /** @var ProductVariantInterface $variant */ - $variant = $this->defaultProductVariantResolver->getVariant($product); - - Assert::same($this->indexPage->getOnHandQuantityFor($variant), (int) $quantity); - } - - /** - * @Then /^there should be no units of (this product) on hold$/ - */ - public function thereShouldBeNoUnitsOfThisProductOnHold(ProductInterface $product) - { - /** @var ProductVariantInterface $variant */ - $variant = $this->defaultProductVariantResolver->getVariant($product); - - $this->assertOnHoldQuantityOfVariant(0, $variant); - } - - /** - * @Then the :variant variant should have :amount items on hold - */ - public function thisVariantShouldHaveItemsOnHold(ProductVariantInterface $variant, $amount) - { - $this->assertOnHoldQuantityOfVariant((int) $amount, $variant); - } - - /** - * @Then the :variant variant of :product product should have :amount items on hold - */ - public function theVariantOfProductShouldHaveItemsOnHold(ProductVariantInterface $variant, ProductInterface $product, $amount) - { - $this->indexPage->open(['productId' => $product->getId()]); - - $this->assertOnHoldQuantityOfVariant((int) $amount, $variant); - } - - /** - * @Then the first variant in the list should have :field :value - */ - public function theFirstVariantInTheListShouldHave($field, $value) - { - Assert::same($this->indexPage->getColumnFields($field)[0], $value); - } - - /** - * @Then the last variant in the list should have :field :value - */ - public function theLastVariantInTheListShouldHave($field, $value) - { - $values = $this->indexPage->getColumnFields($field); - - Assert::same(end($values), $value); - } - /** * @When /^I want to generate new variants for (this product)$/ */ @@ -711,16 +506,6 @@ public function iChangeItsQuantityOfInventoryTo($amount) $this->updatePage->specifyCurrentStock($amount); } - /** - * @Then /^(this variant) should have a (\d+) item currently in stock$/ - */ - public function thisVariantShouldHaveAItemCurrentlyInStock(ProductVariantInterface $productVariant, $amountInStock) - { - $this->indexPage->open(['productId' => $productVariant->getProduct()->getId()]); - - Assert::same($this->indexPage->getOnHandQuantityFor($productVariant), (int) $amountInStock); - } - /** * @Then I should be notified that on hand quantity must be greater than the number of on hold units */ @@ -743,37 +528,4 @@ private function assertValidationMessage($element, $message) Assert::same($currentPage->getValidationMessage($element), $message); } - - /** - * @param int $expectedAmount - * @param ProductVariantInterface $variant - * - * @throws \InvalidArgumentException - */ - private function assertOnHoldQuantityOfVariant($expectedAmount, $variant) - { - $actualAmount = $this->indexPage->getOnHoldQuantityFor($variant); - - Assert::same( - $actualAmount, - (int) $expectedAmount, - sprintf( - 'Unexpected on hold quantity for "%s" variant. It should be "%s" but is "%s"', - $variant->getName(), - $expectedAmount, - $actualAmount - ) - ); - } - - /** - * @param ProductInterface $product - * @param int $amount - */ - private function assertNumberOfVariantsOnProductPage(ProductInterface $product, $amount) - { - $this->iWantToViewAllVariantsOfThisProduct($product); - - Assert::same((int) $this->indexPage->countItems(), $amount, 'Product has %d variants, but should have %d'); - } } diff --git a/src/Sylius/Behat/Resources/config/services/contexts/ui.xml b/src/Sylius/Behat/Resources/config/services/contexts/ui.xml index 1e0261a0094..7c9cd9c62bd 100644 --- a/src/Sylius/Behat/Resources/config/services/contexts/ui.xml +++ b/src/Sylius/Behat/Resources/config/services/contexts/ui.xml @@ -169,7 +169,6 @@ - @@ -179,6 +178,12 @@ + + + + + + diff --git a/src/Sylius/Behat/Resources/config/suites/ui/inventory/checkout_inventory.yml b/src/Sylius/Behat/Resources/config/suites/ui/inventory/checkout_inventory.yml index 865467f3737..11bda658d8e 100644 --- a/src/Sylius/Behat/Resources/config/suites/ui/inventory/checkout_inventory.yml +++ b/src/Sylius/Behat/Resources/config/suites/ui/inventory/checkout_inventory.yml @@ -25,6 +25,7 @@ default: - sylius.behat.context.transform.shared_storage - sylius.behat.context.transform.shipping_method + - sylius.behat.context.ui.admin.browsing_product_variants - sylius.behat.context.ui.admin.managing_product_variants - sylius.behat.context.ui.shop.cart - sylius.behat.context.ui.shop.checkout diff --git a/src/Sylius/Behat/Resources/config/suites/ui/inventory/managing_inventory.yml b/src/Sylius/Behat/Resources/config/suites/ui/inventory/managing_inventory.yml index 5a6b47a4635..a6e623a6623 100644 --- a/src/Sylius/Behat/Resources/config/suites/ui/inventory/managing_inventory.yml +++ b/src/Sylius/Behat/Resources/config/suites/ui/inventory/managing_inventory.yml @@ -27,6 +27,7 @@ default: - sylius.behat.context.transform.shared_storage - sylius.behat.context.transform.shipping_method + - sylius.behat.context.ui.admin.browsing_product_variants - sylius.behat.context.ui.admin.managing_inventory - sylius.behat.context.ui.admin.managing_product_variants - sylius.behat.context.ui.admin.notification diff --git a/src/Sylius/Behat/Resources/config/suites/ui/product/managing_product_variants.yml b/src/Sylius/Behat/Resources/config/suites/ui/product/managing_product_variants.yml index b61fe267fe4..8a70b6448fe 100644 --- a/src/Sylius/Behat/Resources/config/suites/ui/product/managing_product_variants.yml +++ b/src/Sylius/Behat/Resources/config/suites/ui/product/managing_product_variants.yml @@ -32,6 +32,7 @@ default: - sylius.behat.context.setup.product - sylius.behat.context.setup.admin_security + - sylius.behat.context.ui.admin.browsing_product_variants - sylius.behat.context.ui.admin.managing_product_variants - sylius.behat.context.ui.admin.notification filters: diff --git a/src/Sylius/Behat/Resources/config/suites/ui/product/managing_products.yml b/src/Sylius/Behat/Resources/config/suites/ui/product/managing_products.yml index de40798b320..5784c0c6bc1 100644 --- a/src/Sylius/Behat/Resources/config/suites/ui/product/managing_products.yml +++ b/src/Sylius/Behat/Resources/config/suites/ui/product/managing_products.yml @@ -40,6 +40,7 @@ default: - sylius.behat.context.setup.taxonomy - sylius.behat.context.setup.zone + - sylius.behat.context.ui.admin.browsing_product_variants - sylius.behat.context.ui.admin.managing_products - sylius.behat.context.ui.admin.notification - sylius.behat.context.ui.shop.locale