mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-14 17:10:53 +00:00
Merge branch '2.0' into symfony-7
* 2.0: (212 commits) Change application's version to v1.13.4-dev Generate changelog for v1.13.3 Change application's version to v1.13.3 Change application's version to v1.12.19-dev Generate changelog for v1.12.18 Change application's version to v1.12.18 [CS][DX] Refactor Minor fixes after PR review Fix products grid for mobile [Admin][Taxon][Behat] Separate TreeElement from CreatePage [Admin][Taxon] Split tree to more hooks Fix phpstan [Admin][Taxon] Enable behat tests [Admin][Taxon] Remove old script [Admin] Taxon index Update PR template [Documentation] Update Sylius 1.12 version on the release cycle page Add upmerge from 2.0 to symfony-7 branch Minor changes Skip not working api scenarios ...
This commit is contained in:
commit
777d6d354c
653 changed files with 7597 additions and 4225 deletions
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
4
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
|
@ -1,6 +1,6 @@
|
|||
| Q | A
|
||||
|-----------------|-----
|
||||
| Branch? | 1.12, 1.13, 1.14 or 2.0 <!-- see the comment below -->
|
||||
| Branch? | 1.13, 1.14 or 2.0 <!-- see the comment below -->
|
||||
| Bug fix? | no/yes
|
||||
| New feature? | no/yes
|
||||
| BC breaks? | no/yes
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
| License | MIT
|
||||
|
||||
<!--
|
||||
- Bug fixes must be submitted against the 1.12 or 1.13 branches
|
||||
- Bug fixes must be submitted against the 1.13 branch
|
||||
- Features and deprecations must be submitted against the 1.14 branch
|
||||
- Features, removing deprecations and BC breaks must be submitted against the 2.0 branch
|
||||
- Make sure that the correct base branch is set
|
||||
|
|
|
|||
3
.github/workflows/ci_e2e-mysql.yaml
vendored
3
.github/workflows/ci_e2e-mysql.yaml
vendored
|
|
@ -180,7 +180,7 @@ jobs:
|
|||
run: composer require --no-update --no-scripts --no-interaction "twig/twig:${{ matrix.twig }}"
|
||||
|
||||
- name: Build application
|
||||
uses: SyliusLabs/BuildTestAppAction@v2.2
|
||||
uses: SyliusLabs/BuildTestAppAction@v2.2.1
|
||||
with:
|
||||
build_type: "sylius"
|
||||
cache_key: "${{ github.run_id }}-${{ runner.os }}-${{ hashFiles('composer.json') }}-symfony-${{ matrix.symfony }}-api-platform-${{ matrix.api-platform }}"
|
||||
|
|
@ -192,6 +192,7 @@ jobs:
|
|||
php_version: ${{ matrix.php }}
|
||||
symfony_version: ${{ matrix.symfony }}
|
||||
node_version: "20.x"
|
||||
chrome_version: stable
|
||||
|
||||
- name: Install Behat driver
|
||||
run: vendor/bin/bdi detect drivers
|
||||
|
|
|
|||
7
.github/workflows/upmerge_pr.yaml
vendored
7
.github/workflows/upmerge_pr.yaml
vendored
|
|
@ -31,10 +31,13 @@ jobs:
|
|||
target_branch: "2.0"
|
||||
-
|
||||
base_branch: "2.0"
|
||||
target_branch: "bootstrap-admin-panel"
|
||||
target_branch: "api-platform-3"
|
||||
-
|
||||
base_branch: "2.0"
|
||||
target_branch: "api-platform-3"
|
||||
target_branch: "bootstrap-shop"
|
||||
-
|
||||
base_branch: "2.0"
|
||||
target_branch: "symfony-7"
|
||||
|
||||
steps:
|
||||
-
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<h1 align="center">
|
||||
<a href="https://sylius.com/github-readme/link/" target="_blank">
|
||||
<img src="https://sylius.com/assets/github-readme.png?course" />
|
||||
<img src="https://sylius.com/assets/github-readme.png?cloud" />
|
||||
</a>
|
||||
</h1>
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,9 @@ By default, the database connection is pre-configured to work with a following M
|
|||
|
||||
.. note::
|
||||
|
||||
You might also use any other RDBMS (like PostgreSQL), but our database migrations support MySQL only.
|
||||
You might also use any other RDBMS (like PostgreSQL).
|
||||
|
||||
The Sylius Database Schema is available `here <https://drawsql.app/templates/sylius>`_.
|
||||
|
||||
NPM Package Manager
|
||||
-------------------
|
||||
|
|
|
|||
|
|
@ -1,384 +1,28 @@
|
|||
|
||||
.. rst-class:: plus-doc
|
||||
|
||||
Sylius Plus Installation
|
||||
========================
|
||||
|
||||
Sylius Plus is an advanced extension to Sylius applications that adds new features and experience.
|
||||
As it is a private package it cannot be installed by every Sylius user, but only by those having the license.
|
||||
Sylius Plus is a licensed, modular set of advanced extensions to Sylius applications that add new features and experience.
|
||||
As these are private packages they cannot be installed by every Sylius user, but only by those having the license.
|
||||
|
||||
Installing Sylius Plus as a plugin to a Sylius application
|
||||
----------------------------------------------------------
|
||||
Installing Sylius Plus modules as plugins to a Sylius application
|
||||
-----------------------------------------------------------------
|
||||
|
||||
**Important Requirements**
|
||||
Sylius Plus consists of modules in a flexible licensing model, where you can choose the features you need. `Read more! <https://sylius.com/plus/?utm_source=docs>`_
|
||||
|
||||
+---------------+-----------------------+
|
||||
| PHP | ^8.0 |
|
||||
+---------------+-----------------------+
|
||||
| sylius/sylius | ~1.11.2 || ~1.12.0 |
|
||||
+---------------+-----------------------+
|
||||
| Symfony | ^5.4 || ^6.0 |
|
||||
+---------------+-----------------------+
|
||||
All the modules can be installed independently, they also work smoothly together in any combination. Due to that each module
|
||||
has its own installation instruction.
|
||||
|
||||
**0.** Prepare project:
|
||||
1. Purchase a license for the selected Sylius Plus modules.
|
||||
|
||||
.. tip::
|
||||
2. Receive a Private Packagist access token and a personalised space on packagist.com with a list of purchased packages.
|
||||
|
||||
If it is a new project you are initiating, then first install Sylius-Standard in **version ^1.11 or ^1.12** according to
|
||||
:doc:`these instructions </book/installation/installation>`.
|
||||
3. Access the installation instructions of Plus modules in their READMEs available through Private Packagist.
|
||||
|
||||
If you're installing Plus package to an existing project, then make sure you're upgraded to ``sylius/sylius ^1.11`` or ``sylius/sylius ^1.12``.
|
||||
4. Follow the installation instructions of each module in any order.
|
||||
|
||||
**1.** Configure access to the private Packagist package in composer by using the Access Token you have been given with your license.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
composer config --global --auth http-basic.sylius.repo.packagist.com token YOUR_TOKEN
|
||||
|
||||
**2.** Configure the repository with Sylius Plus for your organisation, require it and then run ``composer update``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
composer config repositories.plus composer https://sylius.repo.packagist.com/ShortNameOfYourOrganization/
|
||||
composer require "sylius/plus:^1.0.0@beta" --no-update
|
||||
composer update --no-scripts
|
||||
composer sync-recipes
|
||||
|
||||
**3.** Configure Sylius Plus in ``config/bundles.php``:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
// config/bundles.php
|
||||
|
||||
return [
|
||||
//...
|
||||
Sylius\Plus\SyliusPlusPlugin::class => ['all' => true],
|
||||
];
|
||||
|
||||
**4.** Import Sylius Plus configuration files:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# config/packages/_sylius.yaml
|
||||
imports:
|
||||
# ...
|
||||
- { resource: "@SyliusPlusPlugin/Resources/config/config.yaml" }
|
||||
|
||||
.. warning::
|
||||
|
||||
Make sure you are importing Sylius Plus configuration as the last resource. You can encounter problems with customization when it is not the last imported resource. Especially when Invoicing Plugin or Refund Plugin is installed.
|
||||
|
||||
**5.** Configure Shop, Admin and Admin API routing:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# config/routes/sylius_shop.yaml
|
||||
# ...
|
||||
|
||||
sylius_plus_shop:
|
||||
resource: "@SyliusPlusPlugin/Resources/config/shop_routing.yaml"
|
||||
prefix: /{_locale}
|
||||
requirements:
|
||||
_locale: ^[a-z]{2}(?:_[A-Z]{2})?$
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# config/routes/sylius_admin.yaml:
|
||||
# ...
|
||||
|
||||
sylius_plus_admin:
|
||||
resource: "@SyliusPlusPlugin/Resources/config/admin_routing.yaml"
|
||||
prefix: /admin
|
||||
|
||||
.. warning:: Skip `sylius_plus_shop` if you are not using SyliusShopBundle
|
||||
and `sylius_plus_admin` if you are not using SyliusAdminBundle.
|
||||
|
||||
**6.** Update security providers in ``config/packages/security.yaml``:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# config/packages/security.yaml
|
||||
providers:
|
||||
# ...
|
||||
sylius_shop_user_provider:
|
||||
id: Sylius\Plus\CustomerPools\Infrastructure\Provider\UsernameAndCustomerPoolProvider
|
||||
sylius_api_shop_user_provider:
|
||||
id: Sylius\Plus\CustomerPools\Infrastructure\Provider\UsernameAndCustomerPoolProvider
|
||||
|
||||
**7.** Add traits that enhance Sylius models:
|
||||
|
||||
* AdminUser
|
||||
* Channel
|
||||
* Customer
|
||||
* Order
|
||||
* ProductVariant
|
||||
* Shipment
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
// src/Entity/User/AdminUser.php
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Entity\User;
|
||||
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Sylius\Component\Core\Model\AdminUser as BaseAdminUser;
|
||||
use Sylius\Component\Core\Model\AdminUserInterface;
|
||||
use Sylius\Plus\ChannelAdmin\Domain\Model\AdminChannelAwareTrait;
|
||||
use Sylius\Plus\Entity\LastLoginIpAwareInterface;
|
||||
use Sylius\Plus\Entity\LastLoginIpAwareTrait;
|
||||
use Sylius\Plus\Rbac\Domain\Model\AdminUserInterface as RbacAdminUserInterface;
|
||||
use Sylius\Plus\Rbac\Domain\Model\RoleableTrait;
|
||||
use Sylius\Plus\Rbac\Domain\Model\ToggleablePermissionCheckerTrait;
|
||||
|
||||
/**
|
||||
* @ORM\Entity
|
||||
* @ORM\Table(name="sylius_admin_user")
|
||||
*/
|
||||
class AdminUser extends BaseAdminUser implements AdminUserInterface, RbacAdminUserInterface, LastLoginIpAwareInterface
|
||||
{
|
||||
use AdminChannelAwareTrait;
|
||||
use LastLoginIpAwareTrait;
|
||||
use RoleableTrait;
|
||||
use ToggleablePermissionCheckerTrait;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->rolesResources = new ArrayCollection();
|
||||
}
|
||||
}
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
// src/Entity/Channel/Channel.php
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Entity\Channel;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Sylius\Component\Core\Model\Channel as BaseChannel;
|
||||
use Sylius\Component\Core\Model\ChannelInterface;
|
||||
use Sylius\Plus\BusinessUnits\Domain\Model\BusinessUnitAwareTrait;
|
||||
use Sylius\Plus\BusinessUnits\Domain\Model\ChannelInterface as BusinessUnitsChannelInterface;
|
||||
use Sylius\Plus\CustomerPools\Domain\Model\ChannelInterface as CustomerPoolsChannelInterface;
|
||||
use Sylius\Plus\CustomerPools\Domain\Model\CustomerPoolAwareTrait;
|
||||
use Sylius\Plus\Returns\Domain\Model\ChannelInterface as ReturnsChannelInterface;
|
||||
use Sylius\Plus\Returns\Domain\Model\ReturnRequestsAllowedAwareTrait;
|
||||
|
||||
/**
|
||||
* @ORM\Entity
|
||||
* @ORM\Table(name="sylius_channel")
|
||||
*/
|
||||
class Channel extends BaseChannel implements ChannelInterface, ReturnsChannelInterface, BusinessUnitsChannelInterface, CustomerPoolsChannelInterface
|
||||
{
|
||||
use BusinessUnitAwareTrait;
|
||||
use CustomerPoolAwareTrait;
|
||||
use ReturnRequestsAllowedAwareTrait;
|
||||
}
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
// src/Entity/Customer/Customer.php
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Entity\Customer;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Sylius\Component\Core\Model\Customer as BaseCustomer;
|
||||
use Sylius\Component\Core\Model\CustomerInterface;
|
||||
use Sylius\Plus\CustomerPools\Domain\Model\CustomerInterface as CustomerPoolsCustomerInterface;
|
||||
use Sylius\Plus\CustomerPools\Domain\Model\CustomerPoolAwareTrait;
|
||||
use Sylius\Plus\Loyalty\Domain\Model\CustomerInterface as LoyaltyCustomerInterface;
|
||||
use Sylius\Plus\Loyalty\Domain\Model\LoyaltyAwareTrait;
|
||||
|
||||
/**
|
||||
* @ORM\Entity
|
||||
* @ORM\Table(name="sylius_customer")
|
||||
*/
|
||||
class Customer extends BaseCustomer implements CustomerInterface, CustomerPoolsCustomerInterface, LoyaltyCustomerInterface
|
||||
{
|
||||
use CustomerPoolAwareTrait;
|
||||
use LoyaltyAwareTrait;
|
||||
}
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
// src/Entity/Order/Order.php
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Entity\Order;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Sylius\Component\Core\Model\Order as BaseOrder;
|
||||
use Sylius\Component\Core\Model\OrderInterface;
|
||||
use Sylius\Plus\Returns\Domain\Model\OrderInterface as ReturnsOrderInterface;
|
||||
use Sylius\Plus\Returns\Domain\Model\ReturnRequestAwareTrait;
|
||||
|
||||
/**
|
||||
* @ORM\Entity
|
||||
* @ORM\Table(name="sylius_order")
|
||||
*/
|
||||
class Order extends BaseOrder implements OrderInterface, ReturnsOrderInterface
|
||||
{
|
||||
use ReturnRequestAwareTrait;
|
||||
}
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
// src/Entity/Product/ProductVariant.php
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Entity\Product;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Sylius\Component\Core\Model\ProductVariant as BaseProductVariant;
|
||||
use Sylius\Component\Core\Model\ProductVariantInterface;
|
||||
use Sylius\Component\Product\Model\ProductVariantTranslationInterface;
|
||||
use Sylius\Plus\Inventory\Domain\Model\InventorySourceStocksAwareTrait;
|
||||
use Sylius\Plus\Inventory\Domain\Model\ProductVariantInterface as InventoryProductVariantInterface;
|
||||
|
||||
/**
|
||||
* @ORM\Entity()
|
||||
* @ORM\Table(name="sylius_product_variant")
|
||||
*/
|
||||
class ProductVariant extends BaseProductVariant implements ProductVariantInterface, InventoryProductVariantInterface
|
||||
{
|
||||
use InventorySourceStocksAwareTrait {
|
||||
__construct as private initializeProductVariantTrait;
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->initializeProductVariantTrait();
|
||||
}
|
||||
|
||||
protected function createTranslation(): ProductVariantTranslationInterface
|
||||
{
|
||||
return new ProductVariantTranslation();
|
||||
}
|
||||
}
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
// src/Entity/Shipping/Shipment.php
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Entity\Shipping;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Sylius\Component\Core\Model\Shipment as BaseShipment;
|
||||
use Sylius\Component\Core\Model\ShipmentInterface;
|
||||
use Sylius\Plus\Inventory\Domain\Model\InventorySourceAwareTrait;
|
||||
use Sylius\Plus\Inventory\Domain\Model\ShipmentInterface as InventoryShipmentInterface;
|
||||
|
||||
/**
|
||||
* @ORM\Entity()
|
||||
* @ORM\Table(name="sylius_shipment")
|
||||
*/
|
||||
class Shipment extends BaseShipment implements ShipmentInterface, InventoryShipmentInterface
|
||||
{
|
||||
use InventorySourceAwareTrait;
|
||||
}
|
||||
|
||||
**8.** Install wkhtmltopdf binary:
|
||||
|
||||
Default configuration assumes enabled PDF file generator. If you don't want to use that feature change your app configuration:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# config/packages/sylius_plus.yaml
|
||||
sylius_plus:
|
||||
pdf_generator:
|
||||
enabled: false
|
||||
|
||||
.. warning::
|
||||
|
||||
Sylius Plus uses both the Sylius Invoicing and Sylius Refund plugins which have their own configuration for disabling PDF Generator.
|
||||
|
||||
|
||||
Check if you have wkhtmltopdf binary.
|
||||
If not, you can download it `here <https://wkhtmltopdf.org/downloads.html>`_.
|
||||
|
||||
By default wkhtmltopdf is installed in ``/usr/local/bin/wkhtmltopdf`` directory.
|
||||
|
||||
.. tip::
|
||||
|
||||
If you not sure if you have already installed wkhtmltopdf and where it is located, write the following command in the terminal:
|
||||
``which wkhtmltopdf``
|
||||
|
||||
In case wkhtmltopdf is not located in ``/usr/local/bin/wkhtmltopdf``, add the following snippet at the end of
|
||||
your application's ``.env`` file:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
###> knplabs/knp-snappy-bundle ###
|
||||
WKHTMLTOPDF_PATH=/your-path
|
||||
###< knplabs/knp-snappy-bundle ###
|
||||
|
||||
**9.** Update the database using migrations:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
bin/console doctrine:migrations:migrate
|
||||
|
||||
**10.** Install Sylius with Sylius Plus fixtures:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
bin/console sylius:install -s plus
|
||||
|
||||
.. tip::
|
||||
|
||||
If you want to completely (re)install the application, you can run this command with the no interaction flag ``-n``.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
bin/console sylius:install -s plus -n
|
||||
|
||||
**11.** Install JS libraries using Yarn:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
yarn install
|
||||
yarn build
|
||||
bin/console assets:install --ansi
|
||||
|
||||
**12.** Rebuild cache for proper display of all translations:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
bin/console cache:clear
|
||||
bin/console cache:warmup
|
||||
|
||||
**13.** For more details check the installation guides for all plugins installed as dependencies with Sylius Plus.
|
||||
|
||||
* `Sylius/InvoicingPlugin <https://github.com/Sylius/InvoicingPlugin/blob/master/README.md#installation>`_
|
||||
* `Sylius/RefundPlugin <https://github.com/Sylius/RefundPlugin/blob/master/README.md#installation>`_
|
||||
|
||||
**Phew! That's all, you can now run the application just like you usually do with Sylius (using Symfony Server for example).**
|
||||
|
||||
Upgrading Sylius Plus
|
||||
---------------------
|
||||
|
||||
To upgrade Sylius Plus in an existing application, please follow upgrade instructions from
|
||||
`Sylius/PlusInformationCenter <https://github.com/Sylius/PlusInformationCenter>`_ repository.
|
||||
5. Having all modules installed your Sylius project is ready and enhanced with tailored Sylius Plus features!
|
||||
|
||||
.. image:: ../../_images/sylius_plus/banner.png
|
||||
:align: center
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@
|
|||
Upgrading Sylius Plus
|
||||
=====================
|
||||
|
||||
Sylius regularly releases new versions, usually every two weeks.
|
||||
Sylius regularly releases new versions of Sylius Plus modules.
|
||||
Each release comes with an ``UPGRADE.md`` file, which is meant to help in the upgrading process.
|
||||
|
||||
1. **Update the Sylius Plus version constraint by modifying the ``composer.json`` file:**
|
||||
1. **Update the version constraint of your Sylius Plus modules by modifying the ``composer.json`` file:**
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
{
|
||||
"require": {
|
||||
"sylius/plus": "^1.0.0@beta"
|
||||
"sylius/plus-marketplace-suite-plugin": "^2.6"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -20,17 +20,17 @@ Each release comes with an ``UPGRADE.md`` file, which is meant to help in the up
|
|||
|
||||
.. code-block:: bash
|
||||
|
||||
composer update sylius/plus --with-all-dependencies
|
||||
composer update sylius/plus-marketplace-suite-plugin --with-all-dependencies
|
||||
|
||||
If this does not help, it is a matter of debugging the conflicting versions and working out how your ``composer.json``
|
||||
should look after the upgrade.
|
||||
You can check what version of Sylius is installed by running ``composer show sylius/plus`` command.
|
||||
You can check what version is installed by running ``composer show sylius/plus-marketplace-suite-plugin`` command.
|
||||
|
||||
3. **Follow the instructions found in the ``UPGRADE.md`` file for a given minor release.**
|
||||
|
||||
.. note::
|
||||
|
||||
As Sylius Plus is a private repository its README files (and CHANGELOG) have been exposed in a separate public
|
||||
As Sylius Plus modules are private repositories their UPGRADE files (and CHANGELOGs) have been exposed in a separate public
|
||||
repository which can be found here: `<https://github.com/Sylius/PlusInformationCenter>`_
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -67,13 +67,13 @@ Planned releases
|
|||
Supported versions
|
||||
------------------
|
||||
|
||||
+---------+--------------------+--------------------+--------------------+-----------------------+
|
||||
| Version | Release date | End of maintenance | End of life | Status |
|
||||
+=========+====================+====================+====================+=======================+
|
||||
| 1.13 | Apr 23, 2024 | Oct 23, 2024 | Apr 23, 2025 | Fully supported |
|
||||
+---------+--------------------+--------------------+--------------------+-----------------------+
|
||||
| 1.12 | Oct 31, 2022 | Jun 30, 2024 | Dec 31, 2024 | Fully supported |
|
||||
+---------+--------------------+--------------------+--------------------+-----------------------+
|
||||
+---------+--------------------+--------------------+--------------------+---------------------+
|
||||
| Version | Release date | End of maintenance | End of life | Status |
|
||||
+=========+====================+====================+====================+=====================+
|
||||
| 1.13 | Apr 23, 2024 | Oct 23, 2024 | Apr 23, 2025 | Fully supported |
|
||||
+---------+--------------------+--------------------+--------------------+---------------------+
|
||||
| 1.12 | Oct 31, 2022 | Jun 30, 2024 | Dec 31, 2024 | Security fixes only |
|
||||
+---------+--------------------+--------------------+--------------------+---------------------+
|
||||
|
||||
Unsupported versions
|
||||
--------------------
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ Sylius can create or even reset the database/schema for you, simply call:
|
|||
|
||||
The command will check if your database schema exists. If yes, you may decide to recreate it from scratch, otherwise Sylius will take care of this automatically.
|
||||
It also allows you to load sample data.
|
||||
You can review the Sylius Database Schema `here <https://drawsql.app/templates/sylius>`_.
|
||||
|
||||
Loading sample data
|
||||
-------------------
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ So the crons section may look like below:
|
|||
cmd: "php bin/console sylius:promotion:generate-coupons"
|
||||
remove-expired-carts:
|
||||
spec: "0 2 * * *"
|
||||
cmd: "php bin/console sylius:cancel-unpaid-orders"
|
||||
cmd: "php bin/console sylius:remove-expired-carts"
|
||||
|
||||
|
||||
The frequency of running these commands depends on your business requirements.
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ If all is well the output should look like:
|
|||
|
||||
.. tip::
|
||||
|
||||
In some cases you will see an error stating that the there is something wrong with the resource configuration:
|
||||
In some cases you will see an error stating that there is something wrong with the resource configuration:
|
||||
``Unrecognized option "classes" under...``
|
||||
When this happens, please refer to :ref:`resource-configuration`.
|
||||
|
||||
|
|
@ -406,3 +406,8 @@ Which we strongly recommend over updating the schema.
|
|||
you'll need to update its form type. Check how to do it :doc:`here </customization/form>`.
|
||||
|
||||
.. include:: /customization/plugins.rst
|
||||
|
||||
Learn more
|
||||
----------
|
||||
|
||||
* `Sylius Database Schema <https://drawsql.app/templates/sylius>`_
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ Customizing Repositories
|
|||
|
||||
.. warning::
|
||||
In **Sylius** we are using both default Doctrine repositories and the custom ones.
|
||||
Often you will be needing to add your very own methods to them. You need to check before which repository is your resource using.
|
||||
Often you will need to add your very own methods to them. You need to check before which repository is your resource using.
|
||||
|
||||
Why would you customize a Repository?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ Feature: Adding a new channel with menu taxon
|
|||
And the store classifies its products as "Clothes" and "Guns"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Adding a new channel with menu taxon
|
||||
When I want to create a new channel
|
||||
And I specify its code as "MOBILE"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Browsing channels
|
|||
And the store operates on another channel named "Mobile Channel"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@api @todo @ui
|
||||
@api @ui
|
||||
Scenario: Browsing defined channels
|
||||
When I want to browse channels
|
||||
Then I should see 2 channels in the list
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Deleting a channel
|
|||
And the store operates on another channel named "Mobile Store"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@api @todo @ui
|
||||
@api @@ui
|
||||
Scenario: Deleted channel should disappear from the registry
|
||||
When I delete channel "Web Store"
|
||||
Then I should be notified that it has been successfully deleted
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Feature: Deleting multiple channels
|
|||
And the store operates on another channel named "DE Store"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @mink:chromedriver @no-api
|
||||
@@ui @mink:chromedriver @no-api
|
||||
Scenario: Deleting multiple channels at once
|
||||
When I browse channels
|
||||
And I check the "PL Store" channel
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Not being able to delete a last available channel
|
|||
Given the store operates on a channel named "Web Store"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@api @todo @ui
|
||||
@api @@ui
|
||||
Scenario: Preventing from deleting only channel
|
||||
When I delete channel "Web Store"
|
||||
Then I should be notified that it cannot be deleted
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Managing themes per channel
|
|||
And the store has "maverick/meerkat" theme
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @no-api
|
||||
Scenario: None of the themes are used by default
|
||||
When I create a new channel "Poland"
|
||||
Then that channel should not use any theme
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Feature: Browsing orders
|
|||
And the customer chose "Free" shipping method to "United States" with "Cash on Delivery" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Seeing a new order in the list
|
||||
When I browse orders
|
||||
Then I should see a single order from customer "john.doe@gmail.com"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Feature: Seeing the currency in which all orders have been placed
|
|||
And there is a customer "Satin" identified by an email "satin@teamlucifer.com" and a password "pswd"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Seeing an order placed in the base currency
|
||||
Given there is a customer "lucy@teamlucifer.com" that placed an order "#00000666"
|
||||
And the customer bought a single "Angel T-Shirt"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Feature: Seeing order's payment amount including all fees
|
|||
And the customer chose "DHL" shipping method to "United States" with "Cash on Delivery" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Seeing total payment
|
||||
When I view the summary of the order "#00000666"
|
||||
Then it should have 2 items
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Feature: Seeing orders' total in their currency
|
|||
And there is a customer account "customer@example.com" identified by "sylius"
|
||||
And I am logged in as "customer@example.com"
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: List of orders from only one channel
|
||||
Given I changed my current channel to "United States"
|
||||
And I have product "Angel T-Shirt" in the cart
|
||||
|
|
@ -26,7 +26,7 @@ Feature: Seeing orders' total in their currency
|
|||
And I confirm my order
|
||||
Then the administrator should see the order with total "$20.00" in order list
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: List of orders from different channels
|
||||
Given I changed my current channel to "United States"
|
||||
And I have product "Angel T-Shirt" in the cart
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Feature: Sequential order number generation
|
|||
And the customer chose "Free" shipping method to "United States" with "Offline" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Verifying that orders has correct numbers
|
||||
When I browse orders
|
||||
Then I should see an order with "#000000001" number
|
||||
|
|
|
|||
|
|
@ -20,13 +20,13 @@ Feature: Sorting orders by their number
|
|||
And the customer chose "Free" shipping method to "United States" with "Offline" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Orders are sorted by descending numbers by default
|
||||
When I browse orders
|
||||
Then I should see an order with "#000000001" number
|
||||
But the first order should have number "#000000003"
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Changing the number sorting order
|
||||
Given I am browsing orders
|
||||
When I switch the way orders are sorted by number
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Feature: Filtering orders by a channel
|
|||
And this customer has also placed an order "#00000003" on a channel "Web-US"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by a chosen channel
|
||||
When I browse orders
|
||||
And I choose "Web-EU" as a channel filter
|
||||
|
|
@ -23,7 +23,7 @@ Feature: Filtering orders by a channel
|
|||
And I should see an order with "#00000002" number
|
||||
But I should not see an order with "#00000003" number
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by an another channel
|
||||
When I browse orders
|
||||
And I choose "Web-US" as a channel filter
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
@managing_orders
|
||||
Feature: Filtering orders by a customer
|
||||
In order to quickly find orders placed by a specific customer
|
||||
As an Administrator
|
||||
I want to be able to filter orders on the list
|
||||
|
||||
Background:
|
||||
Given the store operates on a single channel in "United States"
|
||||
And the store has customer "Bob Ross" with email "ross@bob.com"
|
||||
And this customer has placed an order "#00000001" at "2016-12-04 08:00"
|
||||
And the store has customer "Lirael Abhorsen" with email "lirael@abhorsen.com"
|
||||
And this customer has also placed an order "#00000002" at "2016-12-05 09:00"
|
||||
And the store has customer "Ghastly Bespoke" with email "ghastly@suits.com"
|
||||
And this customer has also placed an order "#00000003" at "2016-12-06 10:00"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@api-todo @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by a customer
|
||||
When I browse orders
|
||||
And I filter by customer "Lirael Abhorsen"
|
||||
Then I should see a single order in the list
|
||||
And I should see an order with "#00000002" number
|
||||
|
||||
@api-todo @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by another customer
|
||||
When I browse orders
|
||||
And I filter by customer "Ghastly"
|
||||
Then I should see a single order in the list
|
||||
And I should see an order with "#00000003" number
|
||||
|
|
@ -12,7 +12,7 @@ Feature: Filtering orders
|
|||
And this customer has also placed an order "#00000003" at "2016-12-06 10:00"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders by date from
|
||||
When I browse orders
|
||||
And I specify filter date from as "2016-12-05 08:30"
|
||||
|
|
@ -22,7 +22,7 @@ Feature: Filtering orders
|
|||
And I should see an order with "#00000003" number
|
||||
But I should not see an order with "#00000001" number
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders by date to
|
||||
When I browse orders
|
||||
And I specify filter date to as "2016-12-05 09:30"
|
||||
|
|
@ -32,7 +32,7 @@ Feature: Filtering orders
|
|||
And I should see an order with "#00000002" number
|
||||
But I should not see an order with "#00000003" number
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders by date from to
|
||||
When I browse orders
|
||||
And I specify filter date from as "2016-12-05 08:30"
|
||||
|
|
@ -43,7 +43,7 @@ Feature: Filtering orders
|
|||
But I should not see an order with "#00000001" number
|
||||
And I should not see an order with "#00000003" number
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders by date from without time
|
||||
When I browse orders
|
||||
And I specify filter date from as "2016-12-05"
|
||||
|
|
@ -54,7 +54,7 @@ Feature: Filtering orders
|
|||
And I should see an order with "#00000003" number
|
||||
But I should not see an order with "#00000001" number
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders placed at midnight or just before midnight
|
||||
Given this customer has placed an order "#00000004" at "2016-12-10 00:00"
|
||||
And this customer has also placed an order "#00000005" at "2016-12-11 23:59"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Feature: Filtering orders by products
|
|||
And the customer chose "Free" shipping method to "United States" with "Offline" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api @javascript
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by product
|
||||
When I browse orders
|
||||
And I filter by product "Galaxy T-Shirt"
|
||||
|
|
@ -25,7 +25,7 @@ Feature: Filtering orders by products
|
|||
And I should see an order with "#0000001" number
|
||||
And I should see an order with "#0000003" number
|
||||
|
||||
@todo @ui @api @mink:chromedriver
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by multiple products
|
||||
When I browse orders
|
||||
And I filter by products "Galaxy T-Shirt" and "Space Dress"
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ Feature: Filtering orders by a shipping method
|
|||
And the customer chose "DHL" shipping method to "United States" with "Offline" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by DHL shipping method
|
||||
When I browse orders
|
||||
And I choose "DHL" as a shipping method filter
|
||||
|
|
@ -32,7 +32,7 @@ Feature: Filtering orders by a shipping method
|
|||
And I should see an order with "#000001338" number
|
||||
And I should not see an order with "#000001337" number
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by an another shipping method
|
||||
When I browse orders
|
||||
And I choose "Free" as a shipping method filter
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@ Feature: Filtering orders by total in different currencies
|
|||
And I am logged in as an administrator
|
||||
And I am browsing orders
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders by currency alone
|
||||
When I choose "British Pound" as the filter currency
|
||||
And I filter
|
||||
Then I should see 3 orders in the list
|
||||
But I should not see any orders with currency "USD"
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders with total greater than specified amount
|
||||
When I choose "US Dollar" as the filter currency
|
||||
And I specify filter total being greater than 100
|
||||
|
|
@ -36,7 +36,7 @@ Feature: Filtering orders by total in different currencies
|
|||
But I should not see an order with "#00000001" number
|
||||
And I should not see any orders with currency "GBP"
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders with total less than specified amount
|
||||
When I choose "US Dollar" as the filter currency
|
||||
And I specify filter total being less than 200
|
||||
|
|
@ -47,7 +47,7 @@ Feature: Filtering orders by total in different currencies
|
|||
But I should not see an order with "#00000002" number
|
||||
And I should not see any orders with currency "GBP"
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering order with total from a specified range
|
||||
When I choose "British Pound" as the filter currency
|
||||
And I specify filter total being greater than 150.50
|
||||
|
|
@ -59,7 +59,7 @@ Feature: Filtering orders by total in different currencies
|
|||
And I should not see an order with "#00000006" number
|
||||
And I should not see any orders with currency "USD"
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering orders by total in given range but with no currency provided
|
||||
When I specify filter total being greater than 150
|
||||
And I specify filter total being less than 200
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ Feature: Filtering orders by variants
|
|||
And the customer chose "Free" shipping method to "United States" with "Offline" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api @javascript
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by variant
|
||||
When I browse orders
|
||||
And I filter by variant "Sundress"
|
||||
|
|
@ -34,7 +34,7 @@ Feature: Filtering orders by variants
|
|||
And I should see an order with "#0000002" number
|
||||
And I should see an order with "#0000003" number
|
||||
|
||||
@todo @ui @api @mink:chromedriver
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by multiple variants of the same product
|
||||
When I browse orders
|
||||
And I filter by variants "Nebula Top" and "Neutron Sleeveless"
|
||||
|
|
@ -42,7 +42,7 @@ Feature: Filtering orders by variants
|
|||
And I should see an order with "#0000001" number
|
||||
And I should see an order with "#0000002" number
|
||||
|
||||
@todo @ui @api @javascript
|
||||
@api @ui @mink:chromedriver
|
||||
Scenario: Filtering orders by multiple variants of different products
|
||||
When I browse orders
|
||||
And I filter by variants "Neutron Sleeveless" and "Sundress"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Feature: Limiting the number of orders
|
|||
And the customer chose "Free" shipping method to "United States" with "Offline" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@api
|
||||
@api @no-ui
|
||||
Scenario: Limiting the number of orders
|
||||
When I browse orders
|
||||
And I limit number of items to 1
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Deleting payment methods
|
|||
Given the store has a payment method "Offline" with a code "Offline"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Deleted payment method should disappear from the registry
|
||||
When I delete the "Offline" payment method
|
||||
Then I should be notified that it has been successfully deleted
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Feature: Prevent deletion of used payment method
|
|||
And the customer chose "DHL Express" shipping method to "United States" with "Cash on Delivery" payment
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Being unable to delete a payment method which is in use
|
||||
When I try to delete the "Cash on Delivery" payment method
|
||||
Then I should be notified that it is in use
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Feature: Placing an order as impersonated shop users
|
|||
And there is a customer "Tanith Low" identified by an email "tanith.low@london.uk" and a password "tanithlow"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui
|
||||
@ui
|
||||
Scenario: Placing an order as an impersonated shop user
|
||||
When I view details of the customer "tanith.low@london.uk"
|
||||
And I impersonate them
|
||||
|
|
@ -24,7 +24,7 @@ Feature: Placing an order as impersonated shop users
|
|||
And I browse orders of a customer "tanith.low@london.uk"
|
||||
Then I should see a single order in the list
|
||||
|
||||
@todo @ui
|
||||
@ui
|
||||
Scenario: Placing an order as an impersonated shop user when the shop user was already logged
|
||||
When I sign in with email "john.doe@london.uk" and password "johndoe"
|
||||
And I view details of the customer "tanith.low@london.uk"
|
||||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new product association type
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@ui @api
|
||||
@api @ui
|
||||
Scenario: Adding a new product association type
|
||||
When I want to create a new product association type
|
||||
And I specify its code as "cross_sell"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Browsing product association types
|
|||
And the store has also a product association type "Up sell"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Browsing product association types in the store
|
||||
When I want to browse product association types
|
||||
Then I should see 2 product association types in the list
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Feature: Deleting multiple product association types
|
|||
And the store has also a product association type "Accessories"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @mink:chromedriver @no-api
|
||||
@no-api @ui @mink:chromedriver
|
||||
Scenario: Deleting multiple product association types at once
|
||||
When I browse product association types
|
||||
And I check the "Cross sell" product association type
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Deleting product association types
|
|||
Given the store has a product association type "Cross sell"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@ui @api
|
||||
@api @ui
|
||||
Scenario: Deleting a product association type
|
||||
When I delete the "Cross sell" product association type
|
||||
Then I should be notified that it has been successfully deleted
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Editing a product association type
|
|||
And the store has a product association type "Cross sell"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@ui @api
|
||||
@api @ui
|
||||
Scenario: Changing a name of an existing product association type
|
||||
When I want to modify the "Cross sell" product association type
|
||||
And I rename it to "Up sell" in "English (United States)"
|
||||
|
|
@ -17,7 +17,7 @@ Feature: Editing a product association type
|
|||
Then I should be notified that it has been successfully edited
|
||||
And this product association type name should be "Up sell"
|
||||
|
||||
@ui @api
|
||||
@api @ui
|
||||
Scenario: Seeing a disabled code field while editing a product association type
|
||||
When I want to modify the "Cross sell" product association type
|
||||
Then I should not be able to edit its code
|
||||
|
|
|
|||
|
|
@ -9,14 +9,14 @@ Feature: Filtering product association types
|
|||
And the store has also a product association type "Up sell" with a code "up_sell"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering product association types by name
|
||||
When I want to browse product association types
|
||||
And I filter product association types with name containing "Up"
|
||||
Then I should see only one product association type in the list
|
||||
And I should see the product association type "Up sell" in the list
|
||||
|
||||
@todo @ui @api
|
||||
@api @ui
|
||||
Scenario: Filtering product association types by code
|
||||
When I want to browse product association types
|
||||
And I filter product association types with code containing "cross"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Product association type unique code validation
|
|||
And the store has a product association type "Cross sell" with a code "cross_sell"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@ui @api
|
||||
@api @ui
|
||||
Scenario: Trying to add a new product association type with a taken code
|
||||
When I want to create a new product association type
|
||||
And I specify its code as "cross_sell"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Product association type validation
|
|||
And the store has a product association type "Cross sell"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@ui @api
|
||||
@api @ui
|
||||
Scenario: Trying to add a new product association type without specifying its code
|
||||
When I want to create a new product association type
|
||||
And I name it "Up sell" in "English (United States)"
|
||||
|
|
@ -18,7 +18,7 @@ Feature: Product association type validation
|
|||
Then I should be notified that code is required
|
||||
And the product association type with name "Up sell" should not be added
|
||||
|
||||
@ui @api
|
||||
@api @ui
|
||||
Scenario: Trying to add a new product association type without specifying its name
|
||||
When I want to create a new product association type
|
||||
And I specify its code as "up_sell"
|
||||
|
|
@ -27,7 +27,7 @@ Feature: Product association type validation
|
|||
Then I should be notified that name is required
|
||||
And the product association type with code "up_sell" should not be added
|
||||
|
||||
@ui @api
|
||||
@api @ui
|
||||
Scenario: Trying to remove name from an existing product association type
|
||||
When I want to modify the "Cross sell" product association type
|
||||
And I remove its name from "English (United States)" translation
|
||||
|
|
@ -35,7 +35,7 @@ Feature: Product association type validation
|
|||
Then I should be notified that name is required
|
||||
And this product association type should still be named "Cross sell"
|
||||
|
||||
@no-ui @api
|
||||
@api @no-ui
|
||||
Scenario: Trying to add product association type translation in unexisting locale
|
||||
When I want to modify the "Cross sell" product association type
|
||||
And I name it "Vente croisée" in "French (France)"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
@managing_product_association_types
|
||||
Feature: Sorting product association types
|
||||
In order to change the order of product association types
|
||||
As an Administrator
|
||||
I want to be able to sort product association types on the list
|
||||
|
||||
Background:
|
||||
Given the store has a product association type "Cross sell" with a code "cross_sell"
|
||||
And the store has also a product association type "Up sell" with a code "up_sell"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo-api @ui
|
||||
Scenario: Product associations can be sorted by code in ascending order
|
||||
Given I am browsing product association types
|
||||
When I sort the product associations ascending by code
|
||||
Then I should see 2 product association types in the list
|
||||
And the first product association on the list should have code "cross_sell"
|
||||
And the last product association on the list should have code "up_sell"
|
||||
|
||||
@todo-api @ui
|
||||
Scenario: Product associations can be sorted by code in descending order
|
||||
Given I am browsing product association types
|
||||
When I sort the product associations descending by code
|
||||
Then I should see 2 product association types in the list
|
||||
And the first product association on the list should have code "up_sell"
|
||||
And the last product association on the list should have code "cross_sell"
|
||||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new checkbox product attribute
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Adding a new checkbox product attribute
|
||||
When I want to create a new checkbox product attribute
|
||||
And I specify its code as "t_shirt_with_cotton"
|
||||
|
|
@ -17,7 +17,7 @@ Feature: Adding a new checkbox product attribute
|
|||
Then I should be notified that it has been successfully created
|
||||
And the checkbox attribute "T-Shirt with cotton" should appear in the store
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @no-api
|
||||
Scenario: Seeing disabled type field while adding a checkbox product attribute
|
||||
When I want to create a new checkbox product attribute
|
||||
Then the type field should be disabled
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new float product attribute
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Adding a new float product attribute
|
||||
When I want to create a new float product attribute
|
||||
And I specify its code as "display_size"
|
||||
|
|
@ -17,7 +17,7 @@ Feature: Adding a new float product attribute
|
|||
Then I should be notified that it has been successfully created
|
||||
And the float attribute "Display Size" should appear in the store
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @no-api
|
||||
Scenario: Seeing disabled type field while adding a float product attribute
|
||||
When I want to create a new float product attribute
|
||||
Then the type field should be disabled
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new integer product attribute
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Adding a new integer product attribute
|
||||
When I want to create a new integer product attribute
|
||||
And I specify its code as "book_pages"
|
||||
|
|
@ -17,7 +17,7 @@ Feature: Adding a new integer product attribute
|
|||
Then I should be notified that it has been successfully created
|
||||
And the integer attribute "Book pages" should appear in the store
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @no-api
|
||||
Scenario: Seeing disabled type field while adding a integer product attribute
|
||||
When I want to create a new integer product attribute
|
||||
Then the type field should be disabled
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new non-translatable product attribute
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Adding a new non-translatable product attribute
|
||||
When I want to create a new integer product attribute
|
||||
And I specify its code as "damage"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new percent product attribute
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Adding a new percent product attribute
|
||||
When I want to create a new percent product attribute
|
||||
And I specify its code as "t_shirt_cotton_content"
|
||||
|
|
@ -17,7 +17,7 @@ Feature: Adding a new percent product attribute
|
|||
Then I should be notified that it has been successfully created
|
||||
And the percent attribute "T-Shirt cotton content" should appear in the store
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @no-api
|
||||
Scenario: Seeing disabled type field while adding a percent product attribute
|
||||
When I want to create a new percent product attribute
|
||||
Then the type field should be disabled
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new select product attribute
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Adding a new select product attribute
|
||||
When I want to create a new select product attribute
|
||||
And I specify its code as "mug_material"
|
||||
|
|
@ -18,7 +18,7 @@ Feature: Adding a new select product attribute
|
|||
Then I should be notified that it has been successfully created
|
||||
And the select attribute "Mug material" should appear in the store
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Adding multiple select product attribute
|
||||
When I want to create a new select product attribute
|
||||
And I specify its code as "mug_material"
|
||||
|
|
@ -30,7 +30,7 @@ Feature: Adding a new select product attribute
|
|||
Then I should be notified that it has been successfully created
|
||||
And the select attribute "Mug material" should appear in the store
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @no-api
|
||||
Scenario: Seeing disabled type field while adding a select product attribute
|
||||
When I want to create a new select product attribute
|
||||
Then the type field should be disabled
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new text product attribute
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Adding a new text product attribute
|
||||
When I want to create a new text product attribute
|
||||
And I specify its code as "t_shirt_brand"
|
||||
|
|
@ -17,7 +17,7 @@ Feature: Adding a new text product attribute
|
|||
Then I should be notified that it has been successfully created
|
||||
And the text attribute "T-Shirt brand" should appear in the store
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @no-api
|
||||
Scenario: Seeing disabled type field while adding text a product attribute
|
||||
When I want to create a new text product attribute
|
||||
Then the type field should be disabled
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new textarea product attribute
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Adding a new textarea product attribute
|
||||
When I want to create a new textarea product attribute
|
||||
And I specify its code as "t_shirt_details"
|
||||
|
|
@ -17,7 +17,7 @@ Feature: Adding a new textarea product attribute
|
|||
Then I should be notified that it has been successfully created
|
||||
And the textarea attribute "T-Shirt details" should appear in the store
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @no-api
|
||||
Scenario: Seeing disabled type field while adding a textarea product attribute
|
||||
When I want to create a new textarea product attribute
|
||||
Then the type field should be disabled
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Feature: Browsing product attributes
|
|||
And the store has a integer product attribute "Book pages" with code "book_pages"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Browsing all product attributes in store
|
||||
When I want to see all product attributes in store
|
||||
Then I should see 3 product attributes in the list
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Feature: Deleting multiple product attributes
|
|||
And the store has a integer product attribute "Pages"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @mink:chromedriver @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Deleting multiple product attributes at once
|
||||
When I browse product attributes
|
||||
And I check the "Publisher" product attribute
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@ Feature: Deleting a product attribute
|
|||
Given I am logged in as an administrator
|
||||
And the store has a product "44 Magnum"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to delete an attribute from the registry when a product uses it
|
||||
Given this product has a text attribute "Gun caliber" with value "11 mm"
|
||||
When I delete this product attribute
|
||||
Then I should be notified that it is in use
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Deleting a text product attribute when it's not used
|
||||
Given the store has a text product attribute "Gun caliber"
|
||||
When I delete this product attribute
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Editing a select product attribute
|
|||
And the store has a select product attribute "T-Shirt material" with value "Banana skin"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Editing a select product attribute name
|
||||
When I want to edit this product attribute
|
||||
And I change its name to "T-Shirt material" in "English (United States)"
|
||||
|
|
@ -17,7 +17,7 @@ Feature: Editing a select product attribute
|
|||
Then I should be notified that it has been successfully edited
|
||||
And the select attribute "T-Shirt material" should appear in the store
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Editing a select product attribute value
|
||||
When I want to edit this product attribute
|
||||
And I change its value "Banana skin" to "Orange skin"
|
||||
|
|
@ -25,7 +25,7 @@ Feature: Editing a select product attribute
|
|||
Then I should be notified that it has been successfully edited
|
||||
And this product attribute should have value "Orange skin"
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Adding a new value to an existing select product attribute
|
||||
When I want to edit this product attribute
|
||||
And I add value "Orange skin" in "English (United States)"
|
||||
|
|
@ -33,7 +33,7 @@ Feature: Editing a select product attribute
|
|||
Then I should be notified that it has been successfully edited
|
||||
And this product attribute should have value "Orange skin"
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Deleting a value from an existing select product attribute
|
||||
When I want to edit this product attribute
|
||||
And I delete value "Banana skin"
|
||||
|
|
@ -41,12 +41,12 @@ Feature: Editing a select product attribute
|
|||
Then I should be notified that it has been successfully edited
|
||||
And this product attribute should not have value "Banana skin"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Being unable to change code of an existing product attribute
|
||||
When I want to edit this product attribute
|
||||
Then I should not be able to edit its code
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Being unable to change type of an existing product attribute
|
||||
When I want to edit this product attribute
|
||||
Then I should not be able to edit its type
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Editing a text product attribute
|
|||
And the store has a text product attribute "T-Shirt cotton brand" with code "t_shirt_brand"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Editing product attribute name
|
||||
When I want to edit this product attribute
|
||||
And I change its name to "T-Shirt material" in "English (United States)"
|
||||
|
|
@ -17,12 +17,12 @@ Feature: Editing a text product attribute
|
|||
Then I should be notified that it has been successfully edited
|
||||
And the text attribute "T-Shirt material" should appear in the store
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Being unable to change code of an existing product attribute
|
||||
When I want to edit this product attribute
|
||||
Then I should not be able to edit its code
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Being unable to change type of an existing product attribute
|
||||
When I want to edit this product attribute
|
||||
Then I should not be able to edit its type
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
@managing_product_attributes
|
||||
Feature: Filtering product attributes
|
||||
In order to quickly find specific product attributes
|
||||
As an Administrator
|
||||
I want to filter product attributes by various criteria
|
||||
|
||||
Background:
|
||||
Given the store has a text product attribute "T-Shirt brand" with code "t_shirt_brand_abc"
|
||||
And the store has a checkbox product attribute "T-Shirt with cotton" with code "t_shirt_with_cotton_xyz"
|
||||
And this product attribute is not translatable
|
||||
And the store has a integer product attribute "Book pages" with code "book_pages_xyz"
|
||||
And I am logged in as an administrator
|
||||
And I am browsing product attributes
|
||||
|
||||
@todo-api @ui
|
||||
Scenario: Filtering product attributes by code
|
||||
When I search by "xyz" code
|
||||
Then I should see 2 product attributes in the list
|
||||
And I should see the product attribute "T-Shirt with cotton" in the list
|
||||
And I should also see the product attribute "Book pages" in the list
|
||||
|
||||
@todo-api @ui
|
||||
Scenario: Filtering product attributes by name
|
||||
When I search by "T-Shirt" name
|
||||
Then I should see 2 product attributes in the list
|
||||
And I should see the product attribute "T-Shirt brand" in the list
|
||||
And I should also see the product attribute "T-Shirt with cotton" in the list
|
||||
|
||||
@todo-api @ui
|
||||
Scenario: Filtering product attributes by type
|
||||
When I choose "checkbox" in the type filter
|
||||
And I filter
|
||||
Then I should see a single product attribute in the list
|
||||
And I should see the product attribute "T-Shirt with cotton" in the list
|
||||
|
||||
@todo-api @ui
|
||||
Scenario: Filtering product attributes by multiple types
|
||||
When I choose "text" and "integer" in the type filter
|
||||
And I filter
|
||||
Then I should see 2 product attributes in the list
|
||||
And I should see the product attribute "T-Shirt brand" in the list
|
||||
And I should also see the product attribute "Book pages" in the list
|
||||
|
||||
@todo-api @ui
|
||||
Scenario: Filtering translatable product attributes
|
||||
When I choose "Yes" in the translatable filter
|
||||
And I filter
|
||||
Then I should see 2 product attributes in the list
|
||||
And I should see the product attribute "T-Shirt brand" in the list
|
||||
And I should see the product attribute "Book pages" in the list
|
||||
|
||||
@todo-api @ui
|
||||
Scenario: Filtering non-translatable product attributes
|
||||
When I choose "No" in the translatable filter
|
||||
And I filter
|
||||
Then I should see a single product attribute in the list
|
||||
And I should see the product attribute "T-Shirt with cotton" in the list
|
||||
|
|
@ -8,7 +8,7 @@ Feature: Product attribute unique code validation
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to add a new product attribute with taken code
|
||||
Given the store has a text product attribute "T-Shirt cotton material" with code "t_shirt_material"
|
||||
When I want to create a new text product attribute
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Seeing correct select attribute values in different locale than default
|
|||
Given the store is available in "French (France)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @javascript @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Seeing correct attribute values in different locale than default one
|
||||
When I want to create a new select product attribute
|
||||
And I specify its code as "mug_material"
|
||||
|
|
@ -16,4 +16,5 @@ Feature: Seeing correct select attribute values in different locale than default
|
|||
And I add value "Banana Skin" in "French (France)"
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
And I should see the value "Banana Skin"
|
||||
And I should see the value "Banana Skin" in "French (France)" locale
|
||||
And I should not see the value "Banana Skin" in "English (United States)" locale
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Select product attribute validation
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @mink:chromedriver @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Trying to add a new select product attribute with wrong max entries value
|
||||
When I want to create a new select product attribute
|
||||
And I name it "Mug material" in "English (United States)"
|
||||
|
|
@ -22,7 +22,7 @@ Feature: Select product attribute validation
|
|||
Then I should be notified that max entries value must be greater or equal to the min entries value
|
||||
And the attribute with code "mug_material" should not appear in the store
|
||||
|
||||
@todo @ui @mink:chromedriver @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Trying to add a new select product attribute with wrong min entries value
|
||||
When I want to create a new select product attribute
|
||||
And I name it "Mug material" in "English (United States)"
|
||||
|
|
@ -36,7 +36,7 @@ Feature: Select product attribute validation
|
|||
Then I should be notified that min entries value must be lower or equal to the number of added choices
|
||||
And the attribute with code "mug_material" should not appear in the store
|
||||
|
||||
@todo @ui @mink:chromedriver @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Trying to add a new select product attribute with specified entries values but without multiple option
|
||||
When I want to create a new select product attribute
|
||||
And I name it "Mug material" in "English (United States)"
|
||||
|
|
|
|||
|
|
@ -10,21 +10,21 @@ Feature: Sorting listed product attributes by position
|
|||
And the store has a integer product attribute "Book pages" at position 0
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Product attributes are sorted by position in ascending order by default
|
||||
When I want to see all product attributes in store
|
||||
Then I should see 3 product attributes in the list
|
||||
And the first product attribute on the list should have name "Book pages"
|
||||
And the last product attribute on the list should have name "T-Shirt with cotton"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Product attribute added at no position gets put at the bottom of the list
|
||||
Given the store has also a text product attribute "Drive type"
|
||||
When I want to see all product attributes in store
|
||||
Then I should see 4 product attributes in the list
|
||||
And the last product attribute on the list should have name "Drive type"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Product attribute added at position 0 is added as the first one
|
||||
Given the store has also a text product attribute "Drive type" at position 0
|
||||
When I want to see all product attributes in store
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ Feature: Text product attribute validation
|
|||
And I save my changes
|
||||
Then I should be notified that the locale is not available
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to add a new text product attribute without name
|
||||
When I want to create a new text product attribute
|
||||
And I specify its code as "t_shirt_with_cotton"
|
||||
|
|
@ -25,7 +25,7 @@ Feature: Text product attribute validation
|
|||
Then I should be notified that name is required
|
||||
And the attribute with code "t_shirt_with_cotton" should not appear in the store
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to add a new text product attribute without code
|
||||
When I want to create a new text product attribute
|
||||
And I name it "T-Shirt brand" in "English (United States)"
|
||||
|
|
@ -34,7 +34,7 @@ Feature: Text product attribute validation
|
|||
Then I should be notified that code is required
|
||||
And the attribute with name "T-Shirt brand" should not appear in the store
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to remove name for existing text product attribute
|
||||
Given the store has a text product attribute "T-Shirt cotton brand"
|
||||
When I want to edit this product attribute
|
||||
|
|
@ -43,7 +43,7 @@ Feature: Text product attribute validation
|
|||
Then I should be notified that name is required
|
||||
And the text attribute "T-Shirt cotton brand" should still be in the store
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to add a new text product attribute with wrong configuration
|
||||
When I want to create a new text product attribute
|
||||
And I name it "T-Shirt brand" in "English (United States)"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Adding a new product option
|
|||
Given the store is available in "English (United States)"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @mink:chromedriver @api
|
||||
@ui @javascript @api
|
||||
Scenario: Adding a new product option with two required option values
|
||||
When I want to create a new product option
|
||||
And I name it "T-Shirt size" in "English (United States)"
|
||||
|
|
@ -21,7 +21,7 @@ Feature: Adding a new product option
|
|||
And product option "T-Shirt size" should have the "S" option value
|
||||
And product option "T-Shirt size" should have the "M" option value
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Adding a new product option without any option values
|
||||
When I want to create a new product option
|
||||
And I name it "T-Shirt size" in "English (United States)"
|
||||
|
|
@ -31,7 +31,7 @@ Feature: Adding a new product option
|
|||
Then I should be notified that it has been successfully created
|
||||
And the product option "T-Shirt size" should appear in the registry
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @javascript @api
|
||||
Scenario: Adding a new product option with one option value
|
||||
When I want to create a new product option
|
||||
And I name it "T-Shirt size" in "English (United States)"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Feature: Browsing product options
|
|||
As an Administrator
|
||||
I want to be able to browse product options
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Browsing defined product options
|
||||
Given I am logged in as an administrator
|
||||
And the store has a product option "T-Shirt size" with a code "t_shirt_size"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Feature: Deleting multiple product options
|
|||
And the store has also a product option "T-Shirt brand"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @mink:chromedriver @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Deleting multiple product options at once
|
||||
When I browse product options
|
||||
And I check the "T-Shirt size" product option
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Editing product options
|
|||
And the store has a product option "T-Shirt size" with a code "t_shirt_size"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Renaming the product option
|
||||
Given this product option has the "S" option value with code "t_shirt_size_s"
|
||||
And this product option has also the "M" option value with code "t_shirt_size_m"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
@managing_product_options
|
||||
Feature: Filtering product options
|
||||
In order to quickly find specific product options
|
||||
As an Administrator
|
||||
I want to filter product options by name and code
|
||||
|
||||
Background:
|
||||
Given the store has a product option "T-Shirt size" with a code "t_shirt_size_abc"
|
||||
And the store has a product option "T-Shirt color" with a code "t_shirt_color_xyz"
|
||||
And the store has a product option "Jeans size" with a code "jeans_size_xyz"
|
||||
And I am logged in as an administrator
|
||||
And I am browsing product options
|
||||
|
||||
@ui @todo-api
|
||||
Scenario: Filtering product options by name
|
||||
When I search for product options with "T-Shirt"
|
||||
Then I should see 2 product options in the list
|
||||
And the product option "T-Shirt size" should be in the registry
|
||||
And the product option "T-Shirt color" should be in the registry
|
||||
|
||||
@ui @todo-api
|
||||
Scenario: Filtering product options by code
|
||||
When I search for product options with "xyz"
|
||||
Then I should see 2 product options in the list
|
||||
And the product option "T-Shirt color" should be in the registry
|
||||
And the product option "Jeans size" should be in the registry
|
||||
|
|
@ -11,7 +11,7 @@ Feature: Managing option values of a product option
|
|||
And this product option has also the "M" option value with code "OV2"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @mink:chromedriver @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Adding an option value to an existing product option
|
||||
When I want to modify the "T-Shirt size" product option
|
||||
And I add the "L" option value identified by "OV3"
|
||||
|
|
@ -19,7 +19,7 @@ Feature: Managing option values of a product option
|
|||
Then I should be notified that it has been successfully edited
|
||||
And this product option should have the "L" option value
|
||||
|
||||
@todo @ui @javascript @todo
|
||||
@ui @javascript @todo
|
||||
Scenario: Removing an option value from an existing product option
|
||||
Given this product option has also the "L" option value with code "OV3"
|
||||
When I want to modify the "T-Shirt size" product option
|
||||
|
|
@ -28,7 +28,7 @@ Feature: Managing option values of a product option
|
|||
Then I should be notified that it has been successfully edited
|
||||
And this product option should not have the "L" option value
|
||||
|
||||
@todo @ui @javascript @todo
|
||||
@ui @javascript @todo
|
||||
Scenario: Removing and adding a new option value to an existing product option
|
||||
When I want to modify the "T-Shirt size" product option
|
||||
And I delete the "M" option value of this product option
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Product option unique code validation
|
|||
And the store has a product option "T-Shirt size" with a code "t_shirt_size"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to add product option with a taken code
|
||||
When I want to create a new product option
|
||||
And I name it "T-Shirt color" in "English (United States)"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Feature: Product option validation
|
|||
And the store has a product option "T-Shirt color" with a code "t_shirt_color"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to add a new product option without specifying its code
|
||||
When I want to create a new product option
|
||||
And I name it "T-Shirt size" in "English (United States)"
|
||||
|
|
@ -25,7 +25,7 @@ Feature: Product option validation
|
|||
And I try to save my changes
|
||||
Then I should be notified that the locale is not available
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to add a new product option with a too long code
|
||||
When I want to create a new product option
|
||||
And I name it "T-Shirt size" in "English (United States)"
|
||||
|
|
@ -33,7 +33,7 @@ Feature: Product option validation
|
|||
And I try to add it
|
||||
Then I should be notified that code is too long
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to add a new product option without specifying its name
|
||||
When I want to create a new product option
|
||||
And I specify its code as "t_shirt_size"
|
||||
|
|
@ -42,7 +42,7 @@ Feature: Product option validation
|
|||
Then I should be notified that name is required
|
||||
And the product option with code "t_shirt_size" should not be added
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Trying to remove name from an existing product option
|
||||
When I want to modify the "T-Shirt color" product option
|
||||
And I remove its name from "English (United States)" translation
|
||||
|
|
|
|||
|
|
@ -10,20 +10,20 @@ Feature: Sorting listed product options by position
|
|||
And the store has also a product option "Mug type" at position 1
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Product options are sorted by position in ascending order by default
|
||||
When I browse product options
|
||||
Then I should see 3 product options in the list
|
||||
And the first product option in the list should have name "Mug size"
|
||||
And the last product option in the list should have name "Mug color"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Product option added at no position is added as the last one
|
||||
Given the store has a product option "Mug shape"
|
||||
When I browse product options
|
||||
Then the last product option in the list should have name "Mug shape"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Product option added at position 0 is added as the first one
|
||||
Given the store has a product option "Mug shape" at position 0
|
||||
When I browse product options
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Feature: Adding a new product
|
|||
Scenario: Adding a new simple product with price
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "BOARD_DICE_BREWING"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I set its price to "$10.00" for "United States" channel
|
||||
And I add it
|
||||
|
|
@ -24,7 +24,7 @@ Feature: Adding a new product
|
|||
Scenario: Adding a new simple product with discounted price
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "BOARD_DICE_BREWING"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I set its price to "$10.00" for "United States" channel
|
||||
And I set its original price to "$20.00" for "United States" channel
|
||||
|
|
@ -36,7 +36,7 @@ Feature: Adding a new product
|
|||
Scenario: Adding a new simple free product
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "BOARD_DICE_BREWING"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I set its price to "$0.00" for "United States" channel
|
||||
And I add it
|
||||
|
|
@ -47,7 +47,7 @@ Feature: Adding a new product
|
|||
Scenario: Adding a new simple product with specific shipping category
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "BOARD_DICE_BREWING"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I set its price to "$10.00" for "United States" channel
|
||||
And I set its shipping category as "Standard"
|
||||
|
|
@ -59,7 +59,7 @@ Feature: Adding a new product
|
|||
Scenario: Adding a new simple product without shipping required
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "BOARD_DICE_BREWING"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I set its price to "$10.00" for "United States" channel
|
||||
And I do not want to have shipping required for this product
|
||||
|
|
@ -72,7 +72,7 @@ Feature: Adding a new product
|
|||
Scenario: Adding a new configurable product without options
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "WHISKEY_GENTLEMEN"
|
||||
And I name it "Gentleman Jack" in "English (United States)"
|
||||
And I name it "Gentleman Jack" in "English (United States)" locale
|
||||
And I set its slug to "gentleman-jack"
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
|
|
@ -85,7 +85,7 @@ Feature: Adding a new product
|
|||
And this product option has also the "0.5" option value with code "bottle_size_small"
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "WHISKEY_GENTLEMEN"
|
||||
And I name it "Gentleman Jack" in "English (United States)"
|
||||
And I name it "Gentleman Jack" in "English (United States)" locale
|
||||
And I set its slug to "gentleman-jack"
|
||||
And I add the "Bottle size" option to it
|
||||
And I add it
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
@managing_products
|
||||
Feature: Adding a product attribute without providing any value
|
||||
In order to avoid mistakes while adding a product attribute
|
||||
As an Administrator
|
||||
I want to be informed when I try to add an empty product attribute
|
||||
|
||||
Background:
|
||||
Given the store operates on a single channel in "United States"
|
||||
And the locale "French (France)" is enabled
|
||||
And the store also operates in "French (France)" locale
|
||||
And the store has text product attribute "Color"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Adding a product attribute without providing any value
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "Jeans"
|
||||
And I name it "Colored jeans" in "English (United States)" locale
|
||||
And I add the "Color" attribute
|
||||
And I try to add it
|
||||
Then I should be notified that the "Color" attribute value for "English (United States)" is required
|
||||
|
|
@ -14,7 +14,7 @@ Feature: Adding a new product with associations
|
|||
Scenario: Adding a new product with associations
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "lg_g3"
|
||||
And I name it "LG G3" in "English (United States)"
|
||||
And I name it "LG G3" in "English (United States)" locale
|
||||
And I set its slug to "lg-g3"
|
||||
And I set its price to "$400.00" for "United States" channel
|
||||
And I associate as "Accessories" the "LG headphones" and "LG earphones" products
|
||||
|
|
@ -29,7 +29,7 @@ Feature: Adding a new product with associations
|
|||
Scenario: Adding a new product with associations after changing associated items
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "lg_g3"
|
||||
And I name it "LG G3" in "English (United States)"
|
||||
And I name it "LG G3" in "English (United States)" locale
|
||||
And I set its slug to "lg-g3"
|
||||
And I set its price to "$400.00" for "United States" channel
|
||||
And I associate as "Accessories" the "LG headphones" and "LG earphones" products
|
||||
|
|
@ -45,7 +45,7 @@ Feature: Adding a new product with associations
|
|||
Given the store has 123 product association type
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "lg_g3"
|
||||
And I name it "LG G3" in "English (United States)"
|
||||
And I name it "LG G3" in "English (United States)" locale
|
||||
And I set its slug to "lg-g3"
|
||||
And I set its price to "$400.00" for "United States" channel
|
||||
And I associate as 123 the "LG headphones" and "LG earphones" products
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ Feature: Adding a new product with images
|
|||
Scenario: Adding a new simple product with a single image
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "LAMBORGHINI_GALLARDO"
|
||||
And I name it "Lamborghini Gallardo Model" in "English (United States)"
|
||||
And I set its slug to "lamborghini-gallardo-model" in "English (United States)"
|
||||
And I name it "Lamborghini Gallardo Model" in "English (United States)" locale
|
||||
And I set its slug to "lamborghini-gallardo-model" in "English (United States)" locale
|
||||
And I set its price to "$100.00" for "United States" channel
|
||||
And I attach the "lamborghini.jpg" image with "banner" type
|
||||
And I add it
|
||||
|
|
@ -24,8 +24,8 @@ Feature: Adding a new product with images
|
|||
Scenario: Adding a new simple product with multiple images
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "LAMBORGHINI_GALLARDO"
|
||||
And I name it "Lamborghini Gallardo Model" in "English (United States)"
|
||||
And I set its slug to "lamborghini-gallardo-model" in "English (United States)"
|
||||
And I name it "Lamborghini Gallardo Model" in "English (United States)" locale
|
||||
And I set its slug to "lamborghini-gallardo-model" in "English (United States)" locale
|
||||
And I set its price to "$100.00" for "United States" channel
|
||||
And I attach the "lamborghini.jpg" image with "banner" type
|
||||
And I attach the "lamborghini.jpg" image with "thumbnail" type
|
||||
|
|
@ -41,8 +41,8 @@ Feature: Adding a new product with images
|
|||
And this product option has also the "1:18" option value with code "model_scale_big"
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "LAMBORGHINI_GALLARDO"
|
||||
And I name it "Lamborghini Gallardo Model" in "English (United States)"
|
||||
And I set its slug to "lamborghini-gallardo-model" in "English (United States)"
|
||||
And I name it "Lamborghini Gallardo Model" in "English (United States)" locale
|
||||
And I set its slug to "lamborghini-gallardo-model" in "English (United States)" locale
|
||||
And I add the "Model scale" option to it
|
||||
And I attach the "lamborghini.jpg" image with "banner" type
|
||||
And I add it
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
@managing_products
|
||||
Feature: Checking taxons of a product
|
||||
In order to specify in which taxons a product is available
|
||||
As an Administrator
|
||||
I want to be able to check all or uncheck all taxons of a product
|
||||
|
||||
Background:
|
||||
Given the store operates on a single channel in "United States"
|
||||
And the store classifies its products as "Clothes" and "T-Shirts"
|
||||
And the store has a "Shirt" configurable product
|
||||
And the store has a "T-Shirt" configurable product
|
||||
And the product "T-Shirt" belongs to taxon "Clothes"
|
||||
And the product "T-Shirt" belongs to taxon "T-Shirts"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@ui @no-api @mink:chromedriver
|
||||
Scenario: Checking all taxons
|
||||
When I want to modify the "Shirt" product
|
||||
And I check all taxons
|
||||
And I save my changes
|
||||
Then the product "Shirt" should have the "Clothes" taxon
|
||||
And the product "Shirt" should have the "T-Shirts" taxon
|
||||
|
||||
@ui @no-api @mink:chromedriver
|
||||
Scenario: Unchecking all taxons
|
||||
When I want to modify the "T-Shirt" product
|
||||
And I uncheck all taxons
|
||||
And I save my changes
|
||||
Then the product "Shirt" should not have the "Clothes" taxon
|
||||
And the product "Shirt" should not have the "T-Shirts" taxon
|
||||
|
||||
@ui @no-api @mink:chromedriver
|
||||
Scenario: Checking all filtered taxons
|
||||
When I want to modify the "Shirt" product
|
||||
And I filter taxons by "T-Shirts"
|
||||
And I check all taxons
|
||||
And I save my changes
|
||||
Then the product "Shirt" should have the "T-Shirts" taxon
|
||||
But the product "Shirt" should not have the "Clothes" taxon
|
||||
|
||||
@ui @no-api @mink:chromedriver
|
||||
Scenario: Unchecking all filtered taxons
|
||||
When I want to modify the "T-Shirt" product
|
||||
And I filter taxons by "T-Shirts"
|
||||
And I uncheck all taxons
|
||||
And I save my changes
|
||||
Then the product "Shirt" should not have the "T-Shirts" taxon
|
||||
But the product "Shirt" should have the "Clothes" taxon
|
||||
|
|
@ -17,16 +17,16 @@ Feature: Editing a product
|
|||
@ui @no-api
|
||||
Scenario: Renaming a simple product
|
||||
When I want to modify the "Dice Brewing" product
|
||||
And I rename it to "7 Wonders" in "English (United States)"
|
||||
And I rename it to "7 Wonders" in "English (United States)" locale
|
||||
And I save my changes
|
||||
Then I should be notified that it has been successfully edited
|
||||
And this product name should be "7 Wonders"
|
||||
And this product name should be "7 Wonders" in "English (United States)" locale
|
||||
|
||||
@ui @no-api
|
||||
Scenario: Renaming a simple product does not change its variant name
|
||||
Given this product only variant was renamed to "Dice Brewing: The Game"
|
||||
When I want to modify this product
|
||||
And I rename it to "7 Wonders" in "English (United States)"
|
||||
And I rename it to "7 Wonders" in "English (United States)" locale
|
||||
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"
|
||||
|
|
@ -53,10 +53,10 @@ Feature: Editing a product
|
|||
Scenario: Renaming a configurable product
|
||||
Given the store has a "Wyborowa Vodka" configurable product
|
||||
When I want to modify this product
|
||||
And I rename it to "Sobieski Vodka" in "English (United States)"
|
||||
And I rename it to "Sobieski Vodka" in "English (United States)" locale
|
||||
And I save my changes
|
||||
Then I should be notified that it has been successfully edited
|
||||
And this product name should be "Sobieski Vodka"
|
||||
And this product name should be "Sobieski Vodka" in "English (United States)" locale
|
||||
|
||||
@ui @api
|
||||
Scenario: Renaming a configurable product with option
|
||||
|
|
@ -64,10 +64,10 @@ Feature: Editing a product
|
|||
And the store has a product option "Bottle size" with a code "bottle_size"
|
||||
And this product has this product option
|
||||
When I want to modify this product
|
||||
And I rename it to "Sobieski Vodka" in "English (United States)"
|
||||
And I rename it to "Sobieski Vodka" in "English (United States)" locale
|
||||
And I save my changes
|
||||
Then I should be notified that it has been successfully edited
|
||||
And this product name should be "Sobieski Vodka"
|
||||
And this product name should be "Sobieski Vodka" in "English (United States)" locale
|
||||
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Changing options of configurable product without any variant defined
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ Feature: Editing product's slug
|
|||
Scenario: Creating a product with an autogenerated slug
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "BOARD_MANSION_OF_MADNESS"
|
||||
And I name it "Mansion of Madness" in "English (United States)"
|
||||
And I generate its slug in "English (United States)"
|
||||
And I name it "Mansion of Madness" in "English (United States)" locale
|
||||
And I generate its slug in "English (United States)" locale
|
||||
And I add it
|
||||
Then the slug of the "Mansion of Madness" product should be "mansion-of-madness"
|
||||
|
||||
|
|
@ -21,8 +21,8 @@ Feature: Editing product's slug
|
|||
Scenario: Creating a product with a custom slug
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "BOARD_MANSION_OF_MADNESS"
|
||||
And I name it "Mansion of Madness" in "English (United States)"
|
||||
And I set its slug to "mom-board-game" in "English (United States)"
|
||||
And I name it "Mansion of Madness" in "English (United States)" locale
|
||||
And I set its slug to "mom-board-game" in "English (United States)" locale
|
||||
And I add it
|
||||
Then the slug of the "Mansion of Madness" product should be "mom-board-game"
|
||||
|
||||
|
|
@ -30,6 +30,6 @@ Feature: Editing product's slug
|
|||
Scenario: Prevent from editing a slug while changing a product name
|
||||
Given the store has a product "Mansion of Madness"
|
||||
When I want to modify this product
|
||||
And I rename it to "Mansion of Madness: Second Edition" in "English (United States)"
|
||||
And I rename it to "Mansion of Madness: Second Edition" in "English (United States)" locale
|
||||
And I save my changes
|
||||
Then the slug of the "Mansion of Madness: Second Edition" product should still be "mansion-of-madness"
|
||||
|
|
|
|||
|
|
@ -14,10 +14,10 @@ Feature: Editing product's slug in multiple locales
|
|||
Scenario: Creating a product with custom slugs
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "PUG_PUGGINTON_PLUSHIE"
|
||||
And I name it "Pug Pugginton Plushie" in "English (United States)"
|
||||
And I set its slug to "sir-pugginton" in "English (United States)"
|
||||
And I name it "Pluszak Mops Mopsiński" in "Polish (Poland)"
|
||||
And I set its slug to "pan-mopsinski" in "Polish (Poland)"
|
||||
And I name it "Pug Pugginton Plushie" in "English (United States)" locale
|
||||
And I set its slug to "sir-pugginton" in "English (United States)" locale
|
||||
And I name it "Pluszak Mops Mopsiński" in "Polish (Poland)" locale
|
||||
And I set its slug to "pan-mopsinski" in "Polish (Poland)" locale
|
||||
And I add it
|
||||
Then the slug of the "Pug Pugginton Plushie" product should be "sir-pugginton" in the "English (United States)" locale
|
||||
And the slug of the "Pug Pugginton Plushie" product should be "pan-mopsinski" in the "Polish (Poland)" locale
|
||||
|
|
@ -26,10 +26,10 @@ Feature: Editing product's slug in multiple locales
|
|||
Scenario: Creating a product with autogenerated slugs
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "PUG_PUGGINTON_PLUSHIE"
|
||||
And I name it "Pug Pugginton Plushie" in "English (United States)"
|
||||
And I generate its slug in "English (United States)"
|
||||
And I name it "Pluszak Mops Mopsiński" in "Polish (Poland)"
|
||||
And I generate its slug in "Polish (Poland)"
|
||||
And I name it "Pug Pugginton Plushie" in "English (United States)" locale
|
||||
And I generate its slug in "English (United States)" locale
|
||||
And I name it "Pluszak Mops Mopsiński" in "Polish (Poland)" locale
|
||||
And I generate its slug in "Polish (Poland)" locale
|
||||
And I add it
|
||||
Then the slug of the "Pug Pugginton Plushie" product should be "pug-pugginton-plushie" in the "English (United States)" locale
|
||||
And the slug of the "Pug Pugginton Plushie" product should be "pluszak-mops-mopsinski" in the "Polish (Poland)" locale
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
@managing_products
|
||||
Feature: Filtering product taxons
|
||||
In order to quickly find taxons
|
||||
As an Administrator
|
||||
I want to search for a specific taxon
|
||||
|
||||
Background:
|
||||
Given the store operates on a single channel in "United States"
|
||||
And the store classifies its products as "Clothes" and "T-Shirts"
|
||||
And the store has a "Shirt" configurable product
|
||||
And I am logged in as an administrator
|
||||
|
||||
@ui @no-api @mink:chromedriver
|
||||
Scenario: Filtering product taxons
|
||||
When I want to modify the "Shirt" product
|
||||
And I filter taxons by "T-Shirts"
|
||||
Then I should see the "T-Shirts" taxon
|
||||
But I should not see the "Clothes" taxon
|
||||
|
|
@ -13,7 +13,7 @@ Feature: Adding a new product with a date attribute
|
|||
Scenario: Adding a date attribute to a product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "mug"
|
||||
And I name it "Mug" in "English (United States)"
|
||||
And I name it "Mug" in "English (United States)" locale
|
||||
And I set its non-translatable "Manufactured" attribute to "2023-10-10"
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
|
|
@ -24,7 +24,7 @@ Feature: Adding a new product with a date attribute
|
|||
Scenario: Trying to add an invalid date attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set the invalid integer value of the non-translatable "Manufactured" attribute to 10
|
||||
And I try to add it
|
||||
Then I should be notified that the value of the "Manufactured" attribute has invalid type
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Feature: Adding a new product with a datetime attribute
|
|||
Scenario: Adding a datetime attribute to a product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "mug"
|
||||
And I name it "Mug" in "English (United States)"
|
||||
And I name it "Mug" in "English (United States)" locale
|
||||
And I set its non-translatable "Manufactured" attribute to "2023-10-10 10:20:30"
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
|
|
@ -24,7 +24,7 @@ Feature: Adding a new product with a datetime attribute
|
|||
Scenario: Trying to add an invalid datetime attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set the invalid integer value of the non-translatable "Manufactured" attribute to 10
|
||||
And I try to add it
|
||||
Then I should be notified that the value of the "Manufactured" attribute has invalid type
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Feature: Adding a new product with a float attribute
|
|||
Scenario: Adding a float attribute to a product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "display_size"
|
||||
And I name it "Smartphone" in "English (United States)"
|
||||
And I name it "Smartphone" in "English (United States)" locale
|
||||
And I set its slug to "smartphone"
|
||||
And I add the "Display Size" attribute to it
|
||||
And I set its non-translatable "Display Size" attribute to 12.5
|
||||
|
|
@ -26,7 +26,7 @@ Feature: Adding a new product with a float attribute
|
|||
Scenario: Trying to add an invalid float attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum"
|
||||
And I set the invalid string value of the non-translatable "Display Size" attribute to "12.5"
|
||||
And I try to add it
|
||||
|
|
|
|||
|
|
@ -14,10 +14,10 @@ Feature: Adding a new product with an integer attribute
|
|||
Scenario: Adding an integer attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum"
|
||||
And I add the "Production year" attribute to it
|
||||
And I set the "Production year" attribute value to 1955 in "English (United States)"
|
||||
And I set the "Production year" attribute value to 1955 in "English (United States)" locale
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
And the product "44 Magnum" should appear in the store
|
||||
|
|
@ -27,7 +27,7 @@ Feature: Adding a new product with an integer attribute
|
|||
Scenario: Adding an integer non-translatable attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum"
|
||||
And I add the "Weight" attribute to it
|
||||
And I set its non-translatable "Weight" attribute to 10
|
||||
|
|
@ -40,7 +40,7 @@ Feature: Adding a new product with an integer attribute
|
|||
Scenario: Trying to add an invalid integer attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set the invalid string value of the non-translatable "Weight" attribute to "ten"
|
||||
And I try to add it
|
||||
Then I should be notified that the value of the "Weight" attribute has invalid type
|
||||
|
|
|
|||
|
|
@ -14,10 +14,10 @@ Feature: Adding a new product with a percent attribute
|
|||
Scenario: Adding a percent attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum"
|
||||
And I add the "Awesomeness rating" attribute to it
|
||||
And I set the "Awesomeness rating" attribute value to 80 in "English (United States)"
|
||||
And I set the "Awesomeness rating" attribute value to 80 in "English (United States)" locale
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
And the product "44 Magnum" should appear in the store
|
||||
|
|
@ -27,8 +27,8 @@ Feature: Adding a new product with a percent attribute
|
|||
Scenario: Adding a non-translatable percent attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I set its slug to "44-magnum"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum" in "English (United States)" locale
|
||||
And I add the "Accuracy" attribute to it
|
||||
And I set its non-translatable "Accuracy" attribute to 95
|
||||
And I add it
|
||||
|
|
@ -40,8 +40,8 @@ Feature: Adding a new product with a percent attribute
|
|||
Scenario: Trying to add an invalid percent attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I set its slug to "44-magnum"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum" in "English (United States)" locale
|
||||
And I set the invalid string value of the non-translatable "Accuracy" attribute to "ninety"
|
||||
And I try to add it
|
||||
Then I should be notified that the value of the "Accuracy" attribute has invalid type
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Feature: Adding a new product with a select attribute
|
|||
Scenario: Adding a product with a select attribute with choices in different locales
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "mug"
|
||||
And I name it "PHP Mug" in "English (United States)"
|
||||
And I name it "PHP Mug" in "English (United States)" locale
|
||||
And I set its slug to "php-mug"
|
||||
And I add the "Mug material" attribute
|
||||
And I select "Ceramic" value for the "Mug material" attribute
|
||||
|
|
@ -26,7 +26,7 @@ Feature: Adding a new product with a select attribute
|
|||
Scenario: Trying to add an invalid select attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "mug"
|
||||
And I name it "PHP Mug" in "English (United States)"
|
||||
And I name it "PHP Mug" in "English (United States)" locale
|
||||
And I set its slug to "php-mug"
|
||||
And I add the "Mug material" attribute
|
||||
And I set the invalid string value of the non-translatable "Mug material" attribute to "ceramic"
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@ Feature: Adding a new product with text attribute
|
|||
Scenario: Adding a text attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum"
|
||||
And I add the "Gun caliber" attribute
|
||||
And I set the "Gun caliber" attribute value to "11 mm" in "English (United States)"
|
||||
And I set the "Gun caliber" attribute value to "11 mm" in "English (United States)" locale
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
And the product "44 Magnum" should appear in the store
|
||||
|
|
@ -28,7 +28,7 @@ Feature: Adding a new product with text attribute
|
|||
Scenario: Adding a non-translatable text attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum"
|
||||
And I add the "Author" attribute to it
|
||||
And I set its non-translatable "Author" attribute to "Colt"
|
||||
|
|
@ -41,12 +41,12 @@ Feature: Adding a new product with text attribute
|
|||
Scenario: Adding and removing text attributes on product create page
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum"
|
||||
And I add the "Gun caliber" attribute
|
||||
And I set the "Gun caliber" attribute value to "11 mm" in "English (United States)"
|
||||
And I set the "Gun caliber" attribute value to "11 mm" in "English (United States)" locale
|
||||
And I add the "Overall length" attribute
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)"
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)" locale
|
||||
And I remove its "Gun caliber" attribute
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
|
|
@ -58,7 +58,7 @@ Feature: Adding a new product with text attribute
|
|||
Scenario: Trying to add an invalid text attribute to product
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "44_MAGNUM"
|
||||
And I name it "44 Magnum" in "English (United States)"
|
||||
And I name it "44 Magnum" in "English (United States)" locale
|
||||
And I set its slug to "44-magnum"
|
||||
And I set the invalid integer value of the non-translatable "Author" attribute to 5
|
||||
And I try to add it
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ Feature: Adding select attributes in different locales to a product
|
|||
Scenario: Adding a product with a select attribute with choices in different locales
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "mug"
|
||||
And I name it "PHP Mug" in "English (United States)"
|
||||
And I name it "PHP Mug" in "English (United States)" locale
|
||||
And I set its slug to "php-mug"
|
||||
And I add the "Mug material" attribute
|
||||
And I select "Ceramic" value in "English (United States)" for the "Mug material" attribute
|
||||
|
|
@ -26,5 +26,5 @@ Feature: Adding select attributes in different locales to a product
|
|||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
And the product "PHP Mug" should appear in the store
|
||||
And select attribute "Mug material" of product "PHP Mug" should be "Ceramic" in "English (United States)"
|
||||
And select attribute "Mug material" of product "PHP Mug" should be "Ceramika" in "Polish (Poland)"
|
||||
And select attribute "Mug material" of product "PHP Mug" should be "Ceramic" in "English (United States)" locale
|
||||
And select attribute "Mug material" of product "PHP Mug" should be "Ceramika" in "Polish (Poland)" locale
|
||||
|
|
|
|||
|
|
@ -16,24 +16,24 @@ Feature: Adding text attributes in different locales to a product
|
|||
Scenario: Adding a product with a text attribute in different locales
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "mug"
|
||||
And I name it "PHP Mug" in "English (United States)"
|
||||
And I name it "PHP Mug" in "English (United States)" locale
|
||||
And I set its slug to "php-mug"
|
||||
And I add the "Mug material" attribute
|
||||
And I set the "Mug material" attribute value to "Wood" in "English (United States)"
|
||||
And I set the "Mug material" attribute value to "Drewno" in "Polish (Poland)"
|
||||
And I set the "Mug material" attribute value to "Wood" in "English (United States)" locale
|
||||
And I set the "Mug material" attribute value to "Drewno" in "Polish (Poland)" locale
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
And the product "PHP Mug" should appear in the store
|
||||
And attribute "Mug material" of product "PHP Mug" should be "Wood" in "English (United States)"
|
||||
And attribute "Mug material" of product "PHP Mug" should be "Drewno" in "Polish (Poland)"
|
||||
And attribute "Mug material" of product "PHP Mug" should be "Wood" in "English (United States)" locale
|
||||
And attribute "Mug material" of product "PHP Mug" should be "Drewno" in "Polish (Poland)" locale
|
||||
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Adding a text attribute in different locales to an existing product
|
||||
When I want to modify the "Symfony Mug" product
|
||||
And I add the "Mug material" attribute
|
||||
And I set the "Mug material" attribute value to "Wood" in "English (United States)"
|
||||
And I set the "Mug material" attribute value to "Drewno" in "Polish (Poland)"
|
||||
And I set the "Mug material" attribute value to "Wood" in "English (United States)" locale
|
||||
And I set the "Mug material" attribute value to "Drewno" in "Polish (Poland)" locale
|
||||
And I save my changes
|
||||
Then I should be notified that it has been successfully edited
|
||||
And attribute "Mug material" of product "Symfony Mug" should be "Wood" in "English (United States)"
|
||||
And attribute "Mug material" of product "Symfony Mug" should be "Drewno" in "Polish (Poland)"
|
||||
And attribute "Mug material" of product "Symfony Mug" should be "Wood" in "English (United States)" locale
|
||||
And attribute "Mug material" of product "Symfony Mug" should be "Drewno" in "Polish (Poland)" locale
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ Feature: Adding attributes to an existing product
|
|||
Scenario: Adding a text attribute to an existing product
|
||||
When I want to modify the "44 Magnum" product
|
||||
And I add the "Overall length" attribute to it
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)"
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)" locale
|
||||
And I save my changes
|
||||
Then I should be notified that it has been successfully edited
|
||||
And attribute "Overall length" of product "44 Magnum" should be "30.5 cm"
|
||||
|
|
@ -24,7 +24,7 @@ Feature: Adding attributes to an existing product
|
|||
Given this product has a text attribute "Gun caliber" with value "11 mm" in "English (United States)" locale
|
||||
When I want to modify the "44 Magnum" product
|
||||
And I add the "Overall length" attribute to it
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)"
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)" locale
|
||||
And I save my changes
|
||||
Then I should be notified that it has been successfully edited
|
||||
And attribute "Gun caliber" of product "44 Magnum" should be "11 mm"
|
||||
|
|
@ -34,7 +34,7 @@ Feature: Adding attributes to an existing product
|
|||
Scenario: Adding and removing text attributes on product update page
|
||||
When I want to modify the "44 Magnum" product
|
||||
And I add the "Overall length" attribute to it
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)"
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)" locale
|
||||
And I remove its "Overall length" attribute
|
||||
And I save my changes
|
||||
Then I should be notified that it has been successfully edited
|
||||
|
|
@ -45,7 +45,7 @@ Feature: Adding attributes to an existing product
|
|||
Given this product has a text attribute "Gun caliber" with value "11 mm" in "English (United States)" locale
|
||||
When I want to modify the "44 Magnum" product
|
||||
And I add the "Overall length" attribute to it
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)"
|
||||
And I set the "Overall length" attribute value to "30.5 cm" in "English (United States)" locale
|
||||
And I save my changes
|
||||
And I remove its "Gun caliber" attribute
|
||||
And I save my changes
|
||||
|
|
|
|||
|
|
@ -12,16 +12,22 @@ Feature: Modifying taxons assigned to an existing product
|
|||
And the product "T-Shirt" belongs to taxon "Clothes"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Modifying taxons assigned to a product
|
||||
When I change that the "T-Shirt" product does not belong to the "Clothes" taxon
|
||||
When I want to modify the "T-Shirt" product
|
||||
And I change that the "T-Shirt" product does not belong to the "Clothes" taxon
|
||||
And I add "T-Shirts" taxon to the "T-Shirt" product
|
||||
And I save my changes
|
||||
Then the product "T-Shirt" should have the "T-Shirts" taxon
|
||||
And the product "T-Shirt" should not have the "Clothes" taxon
|
||||
|
||||
@todo @ui @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Adding taxons to product
|
||||
When I add "Clothes" taxon to the "Shirt" product
|
||||
When I want to modify the "Shirt" product
|
||||
And I add "Clothes" taxon to the "Shirt" product
|
||||
And I save my changes
|
||||
Then the product "Shirt" should have the "Clothes" taxon
|
||||
And the product "Shirt" should not have the "T-Shirts" taxon
|
||||
|
||||
@api @no-ui
|
||||
Scenario: Being prevented from adding the same taxon twice
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Feature: Preventing a potential XSS attack while adding a new product
|
|||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Preventing a potential XSS attack while adding new product
|
||||
When I want to create a new simple product
|
||||
Then I should be able to name it "No XSS" in "English (United States)"
|
||||
Then I should be able to name it "No XSS" in "English (United States)" locale
|
||||
|
||||
@todo @ui @javascript @no-api
|
||||
Scenario: Preventing a potential XSS attack while choosing main taxon for a new product
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ Feature: Products validation
|
|||
@ui @no-api
|
||||
Scenario: Adding a new simple product without specifying its code
|
||||
When I want to create a new simple product
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its price to "$10.00" for "Web" channel
|
||||
And I try to add it
|
||||
Then I should be notified that code is required
|
||||
|
|
@ -25,7 +25,7 @@ Feature: Products validation
|
|||
@no-ui @api
|
||||
Scenario: Trying to add product translation in unexisting locale
|
||||
When I want to modify the "Symfony Mug" product
|
||||
And I name it "Symfony tasse" in "French (France)"
|
||||
And I name it "Symfony tasse" in "French (France)" locale
|
||||
And I try to save my changes
|
||||
Then I should be notified that the locale is not available
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ Feature: Products validation
|
|||
Given the store has a product "7 Wonders" with code "AWESOME_GAME"
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "AWESOME_GAME"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I set its price to "$10.00" for "Web" channel
|
||||
And I try to add it
|
||||
|
|
@ -47,7 +47,7 @@ Feature: Products validation
|
|||
And this product has "7 Wonders: Cities" variant priced at "$30.00" identified by "AWESOME_GAME"
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "AWESOME_GAME"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I set its price to "$10.00" for "Web" channel
|
||||
And I try to add it
|
||||
|
|
@ -58,7 +58,7 @@ Feature: Products validation
|
|||
Scenario: Adding a new simple product without specifying its slug
|
||||
When I want to create a new simple product
|
||||
And I specify its code as "BOARD_DICE_BREWING"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its price to "$10.00" for "Web" channel
|
||||
And I try to add it
|
||||
Then I should be notified that slug is required
|
||||
|
|
@ -82,7 +82,7 @@ Feature: Products validation
|
|||
And I make it available in channel "Web"
|
||||
And I make it available in channel "Web-GB"
|
||||
And I set its price to "$10.00" for "Web" channel
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I try to add it
|
||||
Then I should be notified that price must be defined for every channel
|
||||
|
|
@ -91,7 +91,7 @@ Feature: Products validation
|
|||
@ui @api
|
||||
Scenario: Adding a new configurable product without specifying its code
|
||||
When I want to create a new configurable product
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I try to add it
|
||||
Then I should be notified that code is required
|
||||
And product with name "Dice Brewing" should not be added
|
||||
|
|
@ -99,7 +99,7 @@ Feature: Products validation
|
|||
@ui @api
|
||||
Scenario: Adding a new configurable product with too long code
|
||||
When I want to create a new configurable product
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I specify a too long code
|
||||
And I try to add it
|
||||
Then I should be notified that code is too long
|
||||
|
|
@ -109,7 +109,7 @@ Feature: Products validation
|
|||
Given the store has a product "7 Wonders" with code "AWESOME_GAME"
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "AWESOME_GAME"
|
||||
And I name it "Dice Brewing" in "English (United States)"
|
||||
And I name it "Dice Brewing" in "English (United States)" locale
|
||||
And I set its slug to "dice-brewing"
|
||||
And I try to add it
|
||||
Then I should be notified that code has to be unique
|
||||
|
|
@ -165,46 +165,50 @@ Feature: Products validation
|
|||
Given the store has a "7 Wonders" configurable product with "7-wonders" slug
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "7-WONDERS-BABEL"
|
||||
And I name it "7 Wonders Babel" in "English (United States)"
|
||||
And I set its slug to "7-wonders" in "English (United States)"
|
||||
And I name it "7 Wonders Babel" in "English (United States)" locale
|
||||
And I set its slug to "7-wonders" in "English (United States)" locale
|
||||
And I try to add it
|
||||
Then I should be notified that slug has to be unique
|
||||
And product with code "7-WONDERS-BABEL" should not be added
|
||||
|
||||
@todo @ui @mink:chromedriver @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Trying to add a new product with a text attribute without specifying its value in default locale
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "X-18-MUG"
|
||||
And I name it "PHP Mug" in "English (United States)"
|
||||
And I set its "Mug material" attribute to "Drewno" in "Polish (Poland)"
|
||||
But I do not set its "Mug material" attribute in "English (United States)"
|
||||
And I name it "PHP Mug" in "English (United States)" locale
|
||||
And I add the "Mug material" attribute
|
||||
And I set its "Mug material" attribute to "Drewno" in "Polish (Poland)" locale
|
||||
But I do not set its "Mug material" attribute in "English (United States)" locale
|
||||
And I add it
|
||||
Then I should be notified that I have to define the "Mug material" attribute in "English (United States)"
|
||||
Then I should be notified that I have to define the "Mug material" attribute in "English (United States)" locale
|
||||
And product with code "X-18-MUG" should not be added
|
||||
|
||||
@todo @ui @mink:chromedriver @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Trying to add a new product with a text attribute without specifying its value in additional locale with proper length
|
||||
When I want to create a new configurable product
|
||||
And I specify its code as "X-18-MUG"
|
||||
And I name it "PHP Mug" in "English (United States)"
|
||||
And I set its "Mug material" attribute to "Dr" in "Polish (Poland)"
|
||||
And I set its "Mug material" attribute to "Wood" in "English (United States)"
|
||||
And I name it "PHP Mug" in "English (United States)" locale
|
||||
And I add the "Mug material" attribute
|
||||
And I set its "Mug material" attribute to "Dr" in "Polish (Poland)" locale
|
||||
And I set its "Mug material" attribute to "Wood" in "English (United States)" locale
|
||||
And I add it
|
||||
Then I should be notified that the "Mug material" attribute in "Polish (Poland)" should be longer than 3
|
||||
Then I should be notified that the "Mug material" attribute in "Polish (Poland)" locale should be longer than 3
|
||||
And product with code "X-18-MUG" should not be added
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Trying to add a text attribute in different locales to an existing product without specifying its value in default locale
|
||||
When I want to modify the "Symfony Mug" product
|
||||
And I set its "Mug material" attribute to "Drewno" in "Polish (Poland)"
|
||||
But I do not set its "Mug material" attribute in "English (United States)"
|
||||
And I add the "Mug material" attribute
|
||||
And I set its "Mug material" attribute to "Drewno" in "Polish (Poland)" locale
|
||||
But I do not set its "Mug material" attribute in "English (United States)" locale
|
||||
And I save my changes
|
||||
Then I should be notified that I have to define the "Mug material" attribute in "English (United States)"
|
||||
Then I should be notified that I have to define the "Mug material" attribute in "English (United States)" locale
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Trying to add a text attribute in different locales to an existing product without specifying its value in additional locale with proper length
|
||||
When I want to modify the "Symfony Mug" product
|
||||
And I set its "Mug material" attribute to "Dr" in "Polish (Poland)"
|
||||
And I set its "Mug material" attribute to "Wood" in "English (United States)"
|
||||
And I add the "Mug material" attribute
|
||||
And I set its "Mug material" attribute to "Dr" in "Polish (Poland)" locale
|
||||
And I set its "Mug material" attribute to "Wood" in "English (United States)" locale
|
||||
And I save my changes
|
||||
Then I should be notified that the "Mug material" attribute in "Polish (Poland)" should be longer than 3
|
||||
Then I should be notified that the "Mug material" attribute in "Polish (Poland)" locale should be longer than 3
|
||||
|
|
|
|||
|
|
@ -8,27 +8,26 @@ Feature: Select taxon for a new product
|
|||
Given the store operates on a single channel in "United States"
|
||||
And the store classifies its products as "T-Shirts", "Accessories", "Funny" and "Sad"
|
||||
And I am logged in as an administrator
|
||||
And I am using "English (United Kingdom)" locale for my panel
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Specifying main taxon for configurable product
|
||||
When I want to create a new configurable product
|
||||
And I choose main taxon "Sad"
|
||||
And I name it "Gentleman Jack" in "English (United States)"
|
||||
And I specify its code as "WHISKEY_GENTLEMEN"
|
||||
And I set its slug to "whiskey/gentleman-jack" in "English (United States)"
|
||||
And I choose main taxon "Sad"
|
||||
And I name it "Gentleman Jack" in "English (United States)" locale
|
||||
And I set its slug to "whiskey/gentleman-jack" in "English (United States)" locale
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
And main taxon of product "Gentleman Jack" should be "Sad"
|
||||
|
||||
@todo @ui @javascript @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Specifying main taxon for simple product
|
||||
When I want to create a new simple product
|
||||
And I choose main taxon "Sad"
|
||||
And I name it "Mansion of Madness" in "English (United States)"
|
||||
And I specify its code as "BOARD_MANSION_OF_MADNESS"
|
||||
And I choose main taxon "Sad"
|
||||
And I name it "Mansion of Madness" in "English (United States)" locale
|
||||
And I set its price to "$100.00" for "United States" channel
|
||||
And I set its slug to "mom-board-game" in "English (United States)"
|
||||
And I set its slug to "mom-board-game" in "English (United States)" locale
|
||||
And I add it
|
||||
Then I should be notified that it has been successfully created
|
||||
And main taxon of product "Mansion of Madness" should be "Sad"
|
||||
|
|
|
|||
|
|
@ -10,9 +10,8 @@ Feature: Select taxon for an existing product
|
|||
And the store has a "T-Shirt Banana" configurable product
|
||||
And the store has a product "T-Shirt Batman"
|
||||
And I am logged in as an administrator
|
||||
And I am using "English (United Kingdom)" locale for my panel
|
||||
|
||||
@todo @ui @javascript @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Specifying main taxon for configurable product
|
||||
When I want to modify the "T-Shirt Banana" product
|
||||
And I choose main taxon "T-Shirts"
|
||||
|
|
@ -20,7 +19,7 @@ Feature: Select taxon for an existing product
|
|||
Then I should be notified that it has been successfully edited
|
||||
And main taxon of product "T-Shirt Banana" should be "T-Shirts"
|
||||
|
||||
@todo @ui @javascript @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Specifying main taxon for simple product
|
||||
When I want to modify the "T-Shirt Batman" product
|
||||
And I choose main taxon "Sad"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ Feature: Selecting main taxon for product in different locales
|
|||
And the store has a product "T-Shirt Batman"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @javascript @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Choosing only taxons from the Polish locale
|
||||
Given I am using "Polish (Poland)" locale for my panel
|
||||
When I want to choose main taxon for product "T-Shirt Batman"
|
||||
|
|
@ -25,7 +25,7 @@ Feature: Selecting main taxon for product in different locales
|
|||
And I should be able to choose taxon "Woman-T-Shirts_PL" from the list
|
||||
And I should not be able to choose taxon "Woman-T-Shirts_UA" from the list
|
||||
|
||||
@todo @ui @javascript @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Choosing only taxons from the French locale
|
||||
Given I am using "French (France)" locale for my panel
|
||||
When I want to choose main taxon for product "T-Shirt Batman"
|
||||
|
|
@ -33,7 +33,7 @@ Feature: Selecting main taxon for product in different locales
|
|||
And I should be able to choose taxon "Woman-T-Shirts_FR" from the list
|
||||
And I should not be able to choose taxon "Woman-T-Shirts_UA" from the list
|
||||
|
||||
@todo @ui @javascript @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Choosing only taxons from the German locale
|
||||
Given I am using "German (Germany)" locale for my panel
|
||||
When I want to choose main taxon for product "T-Shirt Batman"
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ Feature: Sorting listed products from a taxon by position
|
|||
And the store has a product "Ultimate Pug" in the "Soft Toys" taxon at 19th position
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Setting two products to position -1 on the non-last page
|
||||
When I am browsing the 1st page of products from "Soft Toys" taxon
|
||||
And I set the position of "Old pug" to "-1"
|
||||
|
|
@ -39,7 +39,7 @@ Feature: Sorting listed products from a taxon by position
|
|||
Then the one before last product on the list should have name "Old pug" with position 18
|
||||
And the last product on the list should have name "Young pug" with position 19
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Setting two products to position -1 on the last page
|
||||
When I am browsing the 2nd page of products from "Soft Toys" taxon
|
||||
And I set the position of "Pug XL" to "-1"
|
||||
|
|
@ -48,7 +48,7 @@ Feature: Sorting listed products from a taxon by position
|
|||
Then the one before last product on the list should have name "Pug XL" with position 18
|
||||
And the last product on the list should have name "Pug XS" with position 19
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Setting two products to the already occupied position on the other page
|
||||
When I am browsing the 1st page of products from "Soft Toys" taxon
|
||||
And I set the position of "Old pug" to "15"
|
||||
|
|
@ -64,7 +64,7 @@ Feature: Sorting listed products from a taxon by position
|
|||
And the 7th product on this page should be named "Pug Master"
|
||||
And this product should be at position 16
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Setting two products to the already occupied position on the same page
|
||||
When I am browsing the 2nd page of products from "Soft Toys" taxon
|
||||
And I set the position of "Puglet" to "15"
|
||||
|
|
@ -80,7 +80,7 @@ Feature: Sorting listed products from a taxon by position
|
|||
And the 7th product on this page should be named "Pug Master"
|
||||
And this product should be at position 16
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Setting two products to the positions overflowing the max available position on the non-last page
|
||||
When I am browsing the 1st page of products from "Soft Toys" taxon
|
||||
And I set the position of "Old pug" to "25"
|
||||
|
|
@ -90,7 +90,7 @@ Feature: Sorting listed products from a taxon by position
|
|||
Then the one before last product on the list should have name "Old pug" with position 18
|
||||
And the last product on the list should have name "Young pug" with position 19
|
||||
|
||||
@todo @ui @no-api
|
||||
@ui @mink:chromedriver @no-api
|
||||
Scenario: Setting two products to the positions overflowing the max available position on the last page
|
||||
When I am browsing the 2nd page of products from "Soft Toys" taxon
|
||||
And I set the position of "Puglet" to "25"
|
||||
|
|
@ -100,14 +100,14 @@ Feature: Sorting listed products from a taxon by position
|
|||
Then the one before last product on the list should have name "Puglet" with position 18
|
||||
And the last product on the list should have name "Pug XL" with position 19
|
||||
|
||||
@todo @ui @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: New product is added as last one
|
||||
Given I added a product "Big pug"
|
||||
And I assigned this product to "Soft Toys" taxon
|
||||
When I am browsing the 3rd page of products from "Soft Toys" taxon
|
||||
Then the last product on the list within this taxon should have name "Big pug"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Product with position 0 is set as the first one
|
||||
When I am browsing products from "Soft Toys" taxon
|
||||
And I set the position of "Young pug" to 0
|
||||
|
|
@ -115,20 +115,20 @@ Feature: Sorting listed products from a taxon by position
|
|||
And I go to the 1st page of products from "Soft Toys" taxon
|
||||
Then the first product on the list within this taxon should have name "Young pug"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Being unable to use a non-numeric string as a product position
|
||||
Given I am browsing products from "Soft Toys" taxon
|
||||
When I set the position of "Young pug" to "test"
|
||||
And I save my new configuration
|
||||
Then I should be notified that the position "test" is invalid
|
||||
|
||||
@todo @ui @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Sort products in descending order
|
||||
When I am browsing products from "Soft Toys" taxon
|
||||
And I sort this taxon's products "descending" by "position"
|
||||
Then the first product on the list within this taxon should have name "Ultimate Pug"
|
||||
|
||||
@todo @ui @api
|
||||
@ui @mink:chromedriver @api
|
||||
Scenario: Products are sorted by position in ascending order by default
|
||||
When I am browsing products from "Soft Toys" taxon
|
||||
Then the first product on the list within this taxon should have name "Old pug"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Feature: Viewing product's non translatable attributes on edit page
|
|||
And this product has non-translatable percent attribute "crit chance" with value 10%
|
||||
And I am logged in as an administrator
|
||||
|
||||
@todo @ui @api
|
||||
@ui @api
|
||||
Scenario: Viewing product's attributes defined in different locales
|
||||
When I modify the "Iron Pickaxe" product
|
||||
And I should see non-translatable attribute "crit chance" with value 10%
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Feature: Seeing the correct catalog price history after creating a product varia
|
|||
Given the store operates on a single channel in "United States"
|
||||
And I am logged in as an administrator
|
||||
|
||||
@api @todo @ui
|
||||
@api @ui
|
||||
Scenario: Seeing historical product variant prices after the product variant has been created without any promotion applied
|
||||
Given the store has a "Wyborowa Vodka" configurable product
|
||||
When I want to create a new variant of this product
|
||||
|
|
@ -20,7 +20,7 @@ Feature: Seeing the correct catalog price history after creating a product varia
|
|||
Then I should see a single log entry in the catalog price history
|
||||
And there should be a log entry with the "$20.00" selling price, "$25.00" original price and datetime of the price change
|
||||
|
||||
@api @todo @ui
|
||||
@api @ui
|
||||
Scenario: Seeing historical product variant prices after the product variant has been created without original price and any promotion applied
|
||||
Given the store has a "Wyborowa Vodka" configurable product
|
||||
When I want to create a new variant of this product
|
||||
|
|
@ -31,7 +31,7 @@ Feature: Seeing the correct catalog price history after creating a product varia
|
|||
Then I should see a single log entry in the catalog price history
|
||||
And there should be a log entry with the "$20.00" selling price, no original price and datetime of the price change
|
||||
|
||||
@api @todo @ui
|
||||
@api @ui
|
||||
Scenario: Seeing historical product variant prices after the product variant has been created with catalog promotions applied
|
||||
Given the store has a "Wyborowa Vodka" configurable product
|
||||
And there is a catalog promotion "Christmas sale" that reduces price by "50%" and applies on "Wyborowa Vodka" product
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue