Skip to content

Commit 816a859

Browse files
Merge pull request #285 from magento-cia/pre-release-develop-sync-12122023
Pre release develop sync 12122023
2 parents 59b0e7e + 1dc0fdf commit 816a859

File tree

25 files changed

+1073
-86
lines changed

25 files changed

+1073
-86
lines changed

.github/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ For more detailed information on contribution please read our [beginners guide](
2121
1. PRs which include bug fixes must be accompanied with a step-by-step description of how to reproduce the bug.
2222
1. PRs which include new logic or new features must be submitted along with:
2323
* Unit/integration test coverage
24-
* Proposed [documentation](https://devdocs.magento.com) updates. Documentation contributions can be submitted via the [devdocs GitHub](https://github.com/magento/devdocs).
24+
* Proposed [documentation](https://developer.adobe.com/commerce) updates. Use feedback buttons __Edit in GitHub__ and __Log an issue__ at the top of a relevant topic.
2525
1. For larger features or changes, please [open an issue](https://github.com/magento/magento2-page-builder/issues) to discuss the proposed changes prior to development. This may prevent duplicate or unnecessary effort and allow other contributors to provide input.
2626

2727
## Contribution process
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ImageAddImageContentTypeToCMSPageTest
2+
ImageAddImageIntoPageBuilderStageTest
3+
ImageInvalidFileTypeValidationTest
4+
ImageRemoveImageFromStageTest
5+
PageBuilderCreateTemplateOnCMSBlockForPageAndApplyTemplateToCatalogCategory
6+
PageBuilderDeleteTemplate
7+
PageBuilderVerifySaveContentAsTemplateModalAndApplyTemplateSlideOut
8+
CanAddVideoToColumnTest
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderImageTest/AwsS3ImageAddImageContentTypeToCMSPageTest.xml"
3+
contains entity references that violate dependency constraints:
4+
5+
ImageAddImageContentTypeToCMSPageTest from module(s): magento/module-page-builder
6+
7+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderImageTest/AwsS3ImageAddImageIntoPageBuilderStageTest.xml"
8+
contains entity references that violate dependency constraints:
9+
10+
ImageAddImageIntoPageBuilderStageTest from module(s): magento/module-page-builder
11+
12+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderImageTest/AwsS3ImageInvalidFileTypeValidationTest.xml"
13+
contains entity references that violate dependency constraints:
14+
15+
ImageInvalidFileTypeValidationTest from module(s): magento/module-page-builder
16+
17+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderImageTest/AwsS3ImageRemoveImageFromStageTest.xml"
18+
contains entity references that violate dependency constraints:
19+
20+
ImageRemoveImageFromStageTest from module(s): magento/module-page-builder
21+
22+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderTemplateTests/AwsS3PageBuilderCreateTemplateOnCMSBlockForPageAndApplyTemplateToCatalogCategory.xml"
23+
contains entity references that violate dependency constraints:
24+
25+
PageBuilderCreateTemplateOnCMSBlockForPageAndApplyTemplateToCatalogCategory from module(s): magento/module-page-builder
26+
27+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderTemplateTests/AwsS3PageBuilderDeleteTemplate.xml"
28+
contains entity references that violate dependency constraints:
29+
30+
PageBuilderDeleteTemplate from module(s): magento/module-page-builder
31+
32+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderTemplateTests/AwsS3PageBuilderVerifySaveContentAsTemplateModalAndApplyTemplateSlideOut.xml"
33+
contains entity references that violate dependency constraints:
34+
35+
PageBuilderVerifySaveContentAsTemplateModalAndApplyTemplateSlideOut from module(s): magento/module-banner-page-builder, magento/module-page-builder
36+
37+
File "/var/www/html/app/code/Magento/AwsS3PageBuilder/Test/Mftf/Test/AdminPageBuilderVideoTest/AwsS3CanAddVideoToColumnTest.xml"
38+
contains entity references that violate dependency constraints:
39+
40+
CanAddVideoToColumnTest from module(s): magento/module-page-builder

app/code/Magento/PageBuilder/Model/Catalog/ProductTotals.php

Lines changed: 84 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
use Magento\Catalog\Model\ResourceModel\Product\Collection;
1515
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
1616
use Magento\CatalogWidget\Model\Rule;
17+
use Magento\Framework\App\ObjectManager;
18+
use Magento\Framework\App\ResourceConnection;
19+
use Magento\Framework\EntityManager\MetadataPool;
1720
use Magento\Framework\Exception\LocalizedException;
1821
use Magento\Framework\Exception\NoSuchEntityException;
1922
use Magento\Rule\Model\Condition\Combine;
@@ -53,25 +56,41 @@ class ProductTotals
5356
*/
5457
private $categoryRepository;
5558

59+
/**
60+
* @var MetadataPool
61+
*/
62+
private MetadataPool $metadataPool;
63+
64+
/**
65+
* @var ResourceConnection
66+
*/
67+
private ResourceConnection $resource;
68+
5669
/**
5770
* @param CollectionFactory $productCollectionFactory
5871
* @param Builder $sqlBuilder
5972
* @param Rule $rule
6073
* @param Conditions $conditionsHelper
6174
* @param CategoryRepositoryInterface $categoryRepository
75+
* @param MetadataPool|null $metadataPool
76+
* @param ResourceConnection|null $resource
6277
*/
6378
public function __construct(
6479
CollectionFactory $productCollectionFactory,
6580
Builder $sqlBuilder,
6681
Rule $rule,
6782
Conditions $conditionsHelper,
68-
CategoryRepositoryInterface $categoryRepository
83+
CategoryRepositoryInterface $categoryRepository,
84+
?MetadataPool $metadataPool = null,
85+
?ResourceConnection $resource = null
6986
) {
7087
$this->productCollectionFactory = $productCollectionFactory;
7188
$this->sqlBuilder = $sqlBuilder;
7289
$this->rule = $rule;
7390
$this->conditionsHelper = $conditionsHelper;
7491
$this->categoryRepository = $categoryRepository;
92+
$this->metadataPool = $metadataPool ?: ObjectManager::getInstance()->get(MetadataPool::class);
93+
$this->resource = $resource ?: ObjectManager::getInstance()->get(ResourceConnection::class);
7594
}
7695

7796
/**
@@ -159,37 +178,85 @@ private function getProductCollection(string $conditions, bool $usePriceIndex =
159178
return $collection;
160179
}
161180

181+
/**
182+
* Get parent products that don't have stand-alone properties (e.g. price or special price)
183+
*
184+
* @param Collection $collection
185+
* @return Collection|null
186+
* @throws \Exception
187+
*/
188+
private function getParentProductsCollection(Collection $collection): ?Collection
189+
{
190+
$parentProducts = $this->productCollectionFactory->create();
191+
$linkField = $this->metadataPool->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class)
192+
->getLinkField();
193+
$connection = $this->resource->getConnection();
194+
$productIds = $connection->fetchCol(
195+
$connection
196+
->select()
197+
->from(['e' => $collection->getTable('catalog_product_entity')], ['link_table.parent_id'])
198+
->joinInner(
199+
['link_table' => $collection->getTable('catalog_product_super_link')],
200+
'link_table.product_id = e.' . $linkField,
201+
[]
202+
)
203+
->where('link_table.product_id IN (?)', $collection->getAllIds())
204+
);
205+
if ($productIds) {
206+
$parentProducts->addIdFilter($productIds);
207+
return $parentProducts;
208+
}
209+
210+
return null;
211+
}
212+
162213
/**
163214
* Retrieve count of all enabled products
164215
*
165216
* @param string $conditions
166217
* @return int number of enabled products
218+
* @throws LocalizedException
219+
* @throws \Exception
167220
*/
168221
private function getEnabledCount(string $conditions): int
169222
{
170223
$collection = $this->getProductCollection($conditions, true);
171224
$collection->addAttributeToFilter('status', Status::STATUS_ENABLED);
172-
return $collection->getSize();
225+
$count = $collection->getSize();
226+
if ($collection->getSize() && $parentProducts = $this->getParentProductsCollection($collection)) {
227+
$parentProducts->addAttributeToFilter('status', Status::STATUS_ENABLED);
228+
$count += $parentProducts->getSize();
229+
}
230+
231+
return $count;
173232
}
174233

175234
/**
176235
* Retrieve count of all disabled products
177236
*
178237
* @param string $conditions
179238
* @return int number of disabled products
239+
* @throws \Exception
180240
*/
181241
private function getDisabledCount(string $conditions): int
182242
{
183243
$collection = $this->getProductCollection($conditions, false);
184244
$collection->addAttributeToFilter('status', Status::STATUS_DISABLED);
185-
return $collection->getSize();
245+
$count = $collection->getSize();
246+
if ($count && $parentProducts = $this->getParentProductsCollection($collection)) {
247+
$parentProducts->addAttributeToFilter('status', Status::STATUS_DISABLED);
248+
$count += $parentProducts->getSize();
249+
}
250+
251+
return $count;
186252
}
187253

188254
/**
189255
* Retrieve count of all not visible individually products
190256
*
191257
* @param string $conditions
192258
* @return int number of products not visible individually
259+
* @throws \Exception
193260
*/
194261
private function getNotVisibleCount(string $conditions): int
195262
{
@@ -202,7 +269,20 @@ private function getNotVisibleCount(string $conditions): int
202269
Visibility::VISIBILITY_IN_SEARCH
203270
]
204271
);
205-
return $collection->getSize();
272+
$count = $collection->getSize();
273+
if ($count && $parentProducts = $this->getParentProductsCollection($collection)) {
274+
$parentProducts->addAttributeToFilter('status', Status::STATUS_ENABLED);
275+
$parentProducts->addAttributeToFilter(
276+
'visibility',
277+
[
278+
Visibility::VISIBILITY_NOT_VISIBLE,
279+
Visibility::VISIBILITY_IN_SEARCH
280+
]
281+
);
282+
$count += $parentProducts->getSize();
283+
}
284+
285+
return $count;
206286
}
207287

208288
/**

app/code/Magento/PageBuilder/Test/Mftf/Data/BackgroundFormData.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -200,18 +200,18 @@
200200
<data key="section">background</data>
201201
<data key="fieldName">background_color</data>
202202
<data key="value">#804042</data>
203-
<data key="rgb">rgb(128, 64, 64)</data>
204-
<data key="hex">#804040</data>
203+
<data key="rgb">rgb(126, 63, 63)</data>
204+
<data key="hex">#7e3f3f</data>
205205
</entity>
206206
<entity name="PageBuilderBackgroundColor_CenterColorHueSlider" type="pagebuilder_background_color_property">
207207
<data key="name">Background Color</data>
208208
<data key="section">background</data>
209209
<data key="fieldName">background_color</data>
210210
<data key="value">#40807f</data>
211-
<data key="rgb">rgb(64, 128, 127)</data>
212-
<data key="hex">#40807f</data>
211+
<data key="rgb">rgb(63, 123, 126)</data>
212+
<data key="hex">#3f7b7e</data>
213213
<data key="rgbaCenterOfLightDarkSlider">rgba(64, 128, 127, 0.5)</data>
214-
<data key="rgbaCenterOfLightDarkSliderRegex">^rgba\(64,\s*128,\s*127,\s*0.49(\d+)\)</data>
214+
<data key="rgbaCenterOfLightDarkSliderRegex">^rgba\(63,\s*123,\s*126,\s*0.49(\d+)\)</data>
215215
</entity>
216216
<entity name="PageBuilderBackgroundColor_Invalid" type="pagebuilder_background_color_property">
217217
<data key="name">Background Color</data>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderTextSection/TextOnConfigurationSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<element name="tinyMCEWidgetBtn" type="text" selector="#pagebuilder_text_form_content_magentowidget"/>
2020
<!-- WYSIWYG Disabled -->
2121
<element name="textArea" type="text" selector="#pagebuilder_text_form_content"/>
22+
<element name="textAreaError" type="text" selector="//*[@id='pagebuilder_text_form_content']//ancestor::*[contains(@class,'admin__field-wide')]/*[contains(@class,'admin__field-error')]"/>
2223
<element name="textAreaId" type="text" selector="pagebuilder_text_form_content"/>
2324
<element name="insertWidgetButton" type="text" selector="//button[contains(@class,'action-add-widget')][.='Insert Widget...']"/>
2425
<element name="insertImageButton" type="text" selector="//button[contains(@class,'action-add-image')][.='Insert Image...']" timeout="10"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderTextSection/TextOnStageSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<element name="widgetPlaceholderJS" type="text" selector="(document.querySelectorAll('div.pagebuilder-text')[{{indexOfText}} - 1]).querySelector('.magento-placeholder.magento-widget')" parameterized="true"/>
2727
<element name="placeholder" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]//div[contains(@class, 'placeholder-text') and text()='Edit Text']" parameterized="true"/>
2828
<element name="textArea" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg}}]//textarea[contains(@class,'inline-wysiwyg-textarea')]" parameterized="true"/>
29+
<element name="textAreaForExecuteJS" type="text" selector="(//div[contains(@class,&quot;pagebuilder-text&quot;)])[{{arg}}]//textarea[contains(@class,&quot;inline-wysiwyg-textarea&quot;)]" parameterized="true"/>
2930
<element name="textareaPlaceholder" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]//textarea[contains(@class, 'inline-wysiwyg-textarea') and contains(@placeholder,'Edit Text')]" parameterized="true"/>
3031
<element name="textPlaceholder" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg}}]//*[contains(@class, 'placeholder-text') and text()='Edit Text']" parameterized="true"/>
3132
<element name="tinymce" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg}}]//div[contains(@class, 'inline-wysiwyg')]" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminCMSPagePageBuilderTest/PageBuilderCMSPageContentValidationTest.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,17 @@
7979
<argument name="text" value="\u{1F600}"/>
8080
</actionGroup>
8181

82+
<click selector="{{EditPanelForm.editFormSave}}" stepKey="savePageBuilderTextContentType"/>
83+
<waitForElementVisible selector="{{TextOnConfiguration.textAreaError}}" stepKey="waitForPageBuilderTextContentTypeError"/>
84+
<grabTextFrom selector="{{TextOnConfiguration.textAreaError}}" stepKey="grabTextFromPageBuilderTextContentTypeError"/>
85+
<assertStringContainsString stepKey="assertErrorMessageForPageBuilderTextContentType">
86+
<expectedResult type="string">Please remove invalid characters</expectedResult>
87+
<actualResult type="variable">grabTextFromPageBuilderTextContentTypeError</actualResult>
88+
</assertStringContainsString>
89+
<actionGroup ref="removeTextFromHtmlCodeWYSIWYGActionGroup" stepKey="removeTheInvalidCharacterFromPageBuilderTextContentType">
90+
<argument name="selector" value="//textarea[@id=&quot;{{TextOnConfiguration.textAreaId}}&quot;][1]"/>
91+
<argument name="text" value="\u{1F600}"/>
92+
</actionGroup>
8293
<actionGroup ref="saveEditPanelSettingsFullScreen" stepKey="saveTextEditPanelSettings"/>
8394

8495
<!-- Validate Stage -->
@@ -90,6 +101,16 @@
90101
<expectedResult type="string">{{PageBuilderHtmlPropertyButton.value}}</expectedResult>
91102
<actualResult type="variable">actualTextFromHtmlCode</actualResult>
92103
</assertStringContainsString>
104+
105+
<!-- Add the invalid character in the text element on stage -->
106+
<click selector="{{TextOnStage.textareaPlaceholder('1')}}" stepKey="focusOnEditorArea"/>
107+
<actionGroup ref="addTextToHtmlCodeWYSIWYGActionGroup" stepKey="enterWrongTextContentOnStage">
108+
<argument name="selector" value="{{TextOnStage.textAreaForExecuteJS('1')}}"/>
109+
<argument name="text" value="\u{1F600}"/>
110+
</actionGroup>
111+
<!-- Trigger keyup to dispatch changes -->
112+
<pressKey selector="{{TextOnStage.textareaPlaceholder('1')}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::END]" stepKey="pressEndKey"/>
113+
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="lostFocusFromTextarea"/>
93114
<actionGroup ref="exitPageBuilderFullScreen" stepKey="exitPageBuilderFullScreen"/>
94115

95116
<!-- Cannot save invalid text-->

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminCMSPagePageBuilderTest/PageBuilderCMSPageCreateCMSPageFullWidthLayoutTest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<group value="pagebuilder-cms-page"/>
2222
<group value="pr_exclude"/>
2323
<group value="cloud"/>
24+
<skip><issueId value="AC-10534"/></skip>
2425
</annotations>
2526
<before>
2627
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminCatalogProductPageBuilderTest/PageBuilderCatalogProductProductFullWidthValidateAttributeOrderTest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
<waitForPageLoad stepKey="waitForAttributeSetGrid"/>
129129
<click selector="{{AdminProductAttributeSetGridSection.AttributeSetName('Default')}}" stepKey="navigateToDefaultAttributeSet"/>
130130
<waitForPageLoad stepKey="waitForAttributeSetEditPage"/>
131-
<dragAndDrop selector1="{{AdminProductAttributeSetSection.attribute($$createPageBuilderAttribute1.attribute_code$$)}}" selector2="{{AdminProductAttributeSetSection.attribute('weight')}}" stepKey="dragFirstAttributeToWeight"/>
131+
<dragAndDrop selector1="{{AdminProductAttributeSetSection.attribute($$createPageBuilderAttribute1.attribute_code$$)}}" selector2="{{AdminProductAttributeSetSection.attribute('price')}}" stepKey="dragFirstAttributeToWeight"/>
132132
<waitForPageLoad stepKey="waitForDragAndDrop"/>
133133
<dragAndDrop selector1="{{AdminProductAttributeSetSection.attribute($$createPageBuilderAttribute2.attribute_code$$)}}" selector2="{{AdminProductAttributeSetSection.attribute('status')}}" stepKey="dragSecondAttributeToStatus"/>
134134
<waitForPageLoad stepKey="waitForDragAndDrop2"/>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBannerCollageRightAppearanceTest/BannerCollageRightButtonOnHoverTest.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
<group value="pagebuilder"/>
2020
<group value="pagebuilder-banner"/>
2121
<group value="pagebuilder-bannerCollageRight"/>
22-
<skip>
23-
<issueId value="ACQE-3837">Skipped</issueId>
24-
</skip>
2522
</annotations>
2623
<before>
2724
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
@@ -88,7 +85,6 @@
8885
</actionGroup>
8986
<seeElementInDOM selector="{{BannerOnFrontend.button('1')}}" stepKey="seeButtonInDOMStorefront"/>
9087
<dontSeeElement selector="{{BannerOnFrontend.button('1')}}" stepKey="dontSeeButtonStorefront"/>
91-
<!-- -->
9288
<moveMouseOver selector="//a[@class='logo']" stepKey="moveMouseOverBannerStageOutside"/>
9389
<wait time="5" stepKey="pauseAfterIconHover"/>
9490
<moveMouseOver selector="{{BannerOnFrontend.base('1')}}" stepKey="moveMouseOverBannerStorefront"/>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderCommonTest/EditPanelColorPickerWindowFunctionalityTest.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
<group value="pagebuilder"/>
2020
<group value="pagebuilder-common"/>
2121
<group value="pagebuilder-banner"/>
22-
<skip>
23-
<issueId value="ACQE-3836">Skipped</issueId>
24-
</skip>
2522
</annotations>
2623
<before>
2724
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderProductsCommonTest/AdminPageBuilderProductsConfigurationValidateProductTotalsTest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@
159159
<argument name="property" value="PageBuilderProductsSortByNewestTop"/>
160160
</actionGroup>
161161
<actionGroup ref="validateProductTotals" stepKey="validateTotalProductsOnEditPanel5">
162-
<argument name="productsTotals" value="of 1 total"/>
162+
<argument name="productsTotals" value="of 7 total"/>
163163
</actionGroup>
164164
<actionGroup ref="saveEditPanelSettings" stepKey="saveEditPanel5"/>
165165
<actionGroup ref="validateProductCountInProducts" stepKey="validateTotalProductsOnStage5">

0 commit comments

Comments
 (0)