Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b13be94

Browse files
committed
Rework shop product indexPage
1 parent 5e38e8a commit b13be94

7 files changed

Lines changed: 35 additions & 25 deletions

File tree

src/Sylius/Behat/Page/Shop/Product/IndexPage.php

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,31 +24,31 @@ public function getRouteName(): string
2424

2525
public function countProductsItems(): int
2626
{
27-
$productsList = $this->getDocument()->find('css', '#products');
27+
$productsList = $this->getElement('products');
2828

29-
$products = $productsList->findAll('css', '.card');
29+
$products = $productsList->findAll('css', '[data-test-product]');
3030

3131
return count($products);
3232
}
3333

3434
public function getFirstProductNameFromList(): string
3535
{
36-
$productsList = $this->getDocument()->find('css', '#products');
36+
$productsList = $this->getElement('products');
3737

38-
return $productsList->find('css', '.card:first-child .content > a')->getText();
38+
return $productsList->find('css', '[data-test-product]:first-child [data-test-product-content] > a')->getText();
3939
}
4040

4141
public function getLastProductNameFromList(): string
4242
{
43-
$productsList = $this->getDocument()->find('css', '#products');
43+
$productsList = $this->getElement('products');
4444

45-
return $productsList->find('css', '.card:last-child .content > a')->getText();
45+
return $productsList->find('css', '[data-test-product]:last-child [data-test-product-content] > a')->getText();
4646
}
4747

4848
public function search(string $name): void
4949
{
5050
$this->getDocument()->fillField('criteria_search_value', $name);
51-
$this->getDocument()->pressButton('Search');
51+
$this->getDocument()->find('css', '[data-test-search]')->submit();
5252
}
5353

5454
public function sort(string $orderNumber): void
@@ -58,35 +58,37 @@ public function sort(string $orderNumber): void
5858

5959
public function clearFilter(): void
6060
{
61-
$this->getDocument()->clickLink('Clear');
61+
$this->getElement('clear')->click();
6262
}
6363

6464
public function isProductOnList(string $productName): bool
6565
{
66-
return null !== $this->getDocument()->find('css', sprintf('.sylius-product-name:contains("%s")', $productName));
66+
$element = $this->getDocument()->find('css', sprintf('[data-test-product-name="%s"]', $productName));
67+
68+
return ($element !== null) ? true : false;
6769
}
6870

6971
public function isEmpty(): bool
7072
{
71-
return false !== strpos($this->getDocument()->find('css', '.message')->getText(), 'There are no results to display');
73+
return false !== strpos($this->getDocument()->find('css', '[data-test-flash-message]')->getText(), 'There are no results to display');
7274
}
7375

7476
public function getProductPrice(string $productName): string
7577
{
76-
$container = $this->getDocument()->find('css', sprintf('.sylius-product-name:contains("%s")', $productName))->getParent();
78+
$element = $this->getDocument()->find('css', sprintf('[data-test-product-name="%s"]', $productName));
7779

78-
return $container->find('css', '.sylius-product-price')->getText();
80+
return $element->getParent()->find('css', '[data-test-product-price]')->getText();
7981
}
8082

8183
public function isProductOnPageWithName(string $name): bool
8284
{
83-
return null !== $this->getDocument()->find('css', sprintf('.content > a:contains("%s")', $name));
85+
return null !== $this->getDocument()->find('css', sprintf('[data-test-product-name="%s"]', $name));
8486
}
8587

8688
public function hasProductsInOrder(array $productNames): bool
8789
{
88-
$productsList = $this->getDocument()->find('css', '#products');
89-
$products = $productsList->findAll('css', '.card .content > .sylius-product-name');
90+
$productsList = $this->getElement('products');
91+
$products = $productsList->findAll('css', '[data-test-product-content] > [data-test-product-name]');
9092

9193
foreach ($productNames as $key => $value) {
9294
if ($products[$key]->getText() !== $value) {
@@ -96,4 +98,12 @@ public function hasProductsInOrder(array $productNames): bool
9698

9799
return true;
98100
}
101+
102+
protected function getDefinedElements(): array
103+
{
104+
return array_merge(parent::getDefinedElements(), [
105+
'clear' => '[data-test-clear]',
106+
'products' => '[data-test-products]',
107+
]);
108+
}
99109
}

src/Sylius/Bundle/ShopBundle/Resources/views/Product/Index/_main.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
{{ sonata_block_render_event('sylius.shop.product.index.before_list', {'products': resources.data}) }}
1616

1717
{% if resources.data|length > 0 %}
18-
<div class="ui three cards" id="products">
18+
<div class="ui three cards" id="products" {{ sylius_test_html_attribute('products') }}>
1919
{% for product in resources.data %}
2020
{% include '@SyliusShop/Product/_box.html.twig' %}
2121
{% endfor %}

src/Sylius/Bundle/ShopBundle/Resources/views/Product/Index/_search.html.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
</div>
99
<div class="right aligned column" id="searchbarButtons">
1010
<div class="ui buttons">
11-
<button type="submit" class="ui primary icon labeled button"><i class="search icon"></i> {{ 'sylius.ui.search'|trans }}</button>
12-
<a href="{{ path('sylius_shop_product_index', {'slug': app.request.attributes.get('slug')}) }}" class="ui negative icon labeled button">
11+
<button type="submit" class="ui primary icon labeled button" {{ sylius_test_html_attribute('search') }}><i class="search icon"></i> {{ 'sylius.ui.search'|trans }}</button>
12+
<a href="{{ path('sylius_shop_product_index', {'slug': app.request.attributes.get('slug')}) }}" class="ui negative icon labeled button" {{ sylius_test_html_attribute('clear') }}>
1313
<i class="cancel icon"></i> {{ 'sylius.ui.clear'|trans }}
1414
</a>
1515
</div>

src/Sylius/Bundle/ShopBundle/Resources/views/Product/_box.html.twig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
{{ sonata_block_render_event('sylius.shop.product.index.before_box', {'product': product}) }}
44

5-
<div class="ui fluid card">
5+
<div class="ui fluid card" {{ sylius_test_html_attribute('product') }}>
66
<a href="{{ path('sylius_shop_product_show', {'slug': product.slug, '_locale': product.translation.locale}) }}" class="blurring dimmable image">
77
<div class="ui dimmer">
88
<div class="content">
@@ -13,10 +13,10 @@
1313
</div>
1414
{% include '@SyliusShop/Product/_mainImage.html.twig' with {'product': product} %}
1515
</a>
16-
<div class="content">
17-
<a href="{{ path('sylius_shop_product_show', {'slug': product.slug, '_locale': product.translation.locale}) }}" class="header sylius-product-name">{{ product.name }}</a>
16+
<div class="content" {{ sylius_test_html_attribute('product-content') }}>
17+
<a href="{{ path('sylius_shop_product_show', {'slug': product.slug, '_locale': product.translation.locale}) }}" class="header sylius-product-name" {{ sylius_test_html_attribute('product-name', product.name) }}>{{ product.name }}</a>
1818
{% if not product.variants.empty() %}
19-
<div class="sylius-product-price">{{ money.calculatePrice(product|sylius_resolve_variant) }}</div>
19+
<div class="sylius-product-price" {{ sylius_test_html_attribute('product-price') }}>{{ money.calculatePrice(product|sylius_resolve_variant) }}</div>
2020
{% endif %}
2121
</div>
2222
</div>

src/Sylius/Bundle/ShopBundle/Resources/views/Product/_info.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{% include '@SyliusShop/Product/_mainImage.html.twig' with {'product': product, 'filter': 'sylius_shop_product_tiny_thumbnail'} %}
88
{% endif %}
99
<div class="content">
10-
<div class="sylius-product-name">{{ item.productName }}</div>
10+
<div class="sylius-product-name" {{ sylius_test_html_attribute('product-name', item.productName) }}>{{ item.productName }}</div>
1111
<span class="sub header sylius-product-variant-code">
1212
{{ variant.code }}
1313
</span>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<div id="average-rating" class="ui star large rating" data-rating="{{ product.averageRating|round }}" data-max-rating="5" data-average-rating="{{ product.averageRating|round(2) }}" style="pointer-events: none;"></div>
1+
<div id="average-rating" class="ui star large rating" data-rating="{{ product.averageRating|round }}" data-max-rating="5" data-average-rating="{{ product.averageRating|round(2) }}" style="pointer-events: none;" {{ sylius_test_html_attribute('average-rating', product.averageRating|round(2)) }}></div>

src/Sylius/Bundle/ShopBundle/Resources/views/ProductReview/_single.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div class="comment">
1+
<div class="comment" {{ sylius_test_html_attribute('comment', review.comment) }}>
22
<div class="content">
33
<a class="author">{{ review.author.firstName }}</a>
44
<div class="metadata">

0 commit comments

Comments
 (0)