Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix issue when can't remove layout update after add during new widget creation #29991

Merged
merged 20 commits into from Dec 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
7d6f8bb
Fixed issue when using dynamic elements
Sep 11, 2020
1f0fe69
Updated code for validate empty nodeList and covered MFTF
Sep 12, 2020
87be948
Converted TEST into automic groups for reusable actions
Oct 21, 2020
9f9d2cb
Fixed issue when using dynamic elements
Sep 11, 2020
89d3814
Updated code for validate empty nodeList and covered MFTF
Sep 12, 2020
08ca835
Converted TEST into automic groups for reusable actions
Oct 21, 2020
788c26c
Added event prevent code
Oct 26, 2020
357896a
Merge branch 'fixed-issue-29936' of https://github.com/saphaljha/mage…
Oct 26, 2020
04eaa23
Merge remote-tracking branch 'upstream/2.4-develop' into 2.4-develop
Nov 7, 2020
dc957fb
Merge remote-tracking branch 'upstream/2.4-develop' into 2.4-develop
Nov 11, 2020
28d724d
Merge remote-tracking branch 'upstream/2.4-develop' into 2.4-develop
Nov 19, 2020
2baf801
Fixed issue when using dynamic elements
Sep 11, 2020
bedee3d
Updated code for validate empty nodeList and covered MFTF
Sep 12, 2020
e03e17e
Converted TEST into automic groups for reusable actions
Oct 21, 2020
0fee9a1
Fixed issue when using dynamic elements
Sep 11, 2020
20275ce
Updated code for validate empty nodeList and covered MFTF
Sep 12, 2020
a1f731f
Converted TEST into automic groups for reusable actions
Oct 21, 2020
7b37def
Merge branch 'fixed-issue-29936' of https://github.com/saphaljha/mage…
Nov 20, 2020
e11e0a7
Merge branch '2.4-develop' into fixed-issue-29936
engcom-Charlie Nov 30, 2020
901daf6
remove preventDefault()
engcom-Charlie Dec 1, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<actionGroups
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
<actionGroup name="AdminCreateWidgetWthoutLayoutActionGroup">
<annotations>
<description>Goes to the Admin Widget creation page without saving it</description>
</annotations>
<arguments>
<argument name="widget"/>
</arguments>
<amOnPage url="{{AdminNewWidgetPage.url}}" stepKey="amOnAdminNewWidgetPage"/>
<selectOption selector="{{AdminNewWidgetSection.widgetType}}" userInput="{{widget.type}}" stepKey="setWidgetType"/>
<selectOption selector="{{AdminNewWidgetSection.widgetDesignTheme}}" userInput="{{widget.design_theme}}" stepKey="setWidgetDesignTheme"/>
<click selector="{{AdminNewWidgetSection.continue}}" stepKey="clickContinue"/>
<fillField selector="{{AdminNewWidgetSection.widgetTitle}}" userInput="{{widget.name}}" stepKey="fillTitle"/>
<selectOption selector="{{AdminNewWidgetSection.widgetStoreIds}}" userInput="{{widget.store_ids[0]}}" stepKey="setWidgetStoreIds"/>
<click selector="{{AdminNewWidgetSection.addLayoutUpdate}}" stepKey="clickAddLayoutUpdate"/>
</actionGroup>
</actionGroups>
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<actionGroups
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
<actionGroup name="AdminWidgetAddLayoutUpdateActionGroup">
<annotations>
<description>Add layouts during widgets creation</description>
</annotations>
<waitForAjaxLoad stepKey="waitForLoad"/>
<click selector="{{AdminNewWidgetSection.addLayoutUpdate}}" stepKey="clickAddLayoutUpdate"/>
</actionGroup>
</actionGroups>
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<actionGroups
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
<actionGroup name="AdminWidgetDeleteLayoutUpdateActionGroup">
<annotations>
<description>Delete layouts during widgets creation</description>
</annotations>
<click selector="{{AdminNewWidgetSection.deleteWidgetLayoutAction}}" stepKey="clickFirstDeleteButton"/>
</actionGroup>
</actionGroups>
Expand Up @@ -52,6 +52,8 @@
<element name="displayPageControl" type="select" selector="[name='parameters[show_pager]']"/>
<element name="numberOfProductsToDisplay" type="input" selector="[name='parameters[products_count]']"/>
<element name="cacheLifetime" type="input" selector="[name='parameters[cache_lifetime]']"/>
<element name="deleteWidgetLayoutAction" type="button" selector="#page_group_container > div:first-of-type > div.fieldset-wrapper-title > div > .action-default.action-delete"/>
<element name="CountDeleteButtons" type="button" selector="#page_group_container > .fieldset-wrapper.page_group_container > div.fieldset-wrapper-title > div > .action-default.action-delete"/>
</section>
</sections>

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
<test name="AdminWidgetAddAndDeleteMultipleLayoutSectionsTest">
<annotations>
<features value="Widget"/>
<stories value="Add and Delete multiple layouts when creating a Widget"/>
<title value="Add and Delete multiple layouts"/>
<description value="Admin should be able to Add and Delete multiple layouts"/>
<severity value="CRITICAL"/>
<group value="Widget"/>
</annotations>
<before>
<actionGroup ref="AdminLoginActionGroup" stepKey="LoginAsAdmin"/>
</before>
<after>
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
</after>
<actionGroup ref="AdminNavigateMenuActionGroup" stepKey="navigateToContentWidgetsPageFirst">
<argument name="menuUiId" value="{{AdminMenuContent.dataUiId}}"/>
<argument name="submenuUiId" value="{{AdminMenuContentElementsWidgets.dataUiId}}"/>
</actionGroup>
<actionGroup ref="AdminAssertPageTitleActionGroup" stepKey="seePageTitleFirst">
<argument name="title" value="{{AdminMenuContentElementsWidgets.pageTitle}}"/>
</actionGroup>
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear1"/>
<actionGroup ref="AdminCreateWidgetWthoutLayoutActionGroup" stepKey="addWidgetForTest">
<argument name="widget" value="ProductsListWidget"/>
</actionGroup>
<actionGroup ref="AdminWidgetAddLayoutUpdateActionGroup" stepKey="AddSecondLayout"/>
<actionGroup ref="AdminWidgetAddLayoutUpdateActionGroup" stepKey="AddThirdLayout"/>
<seeNumberOfElements userInput="3" selector="{{AdminNewWidgetSection.CountDeleteButtons}}" stepKey="seeThreeDeleteButtons"/>
<actionGroup ref="AdminWidgetDeleteLayoutUpdateActionGroup" stepKey="DeleteFirstLayoutForWidget"></actionGroup>
<seeNumberOfElements userInput="2" selector="{{AdminNewWidgetSection.CountDeleteButtons}}" stepKey="seeTwoDeleteButtons"/>
<actionGroup ref="AdminWidgetDeleteLayoutUpdateActionGroup" stepKey="DeleteSecondLayoutForWidget"></actionGroup>
<seeNumberOfElements userInput="1" selector="{{AdminNewWidgetSection.CountDeleteButtons}}" stepKey="seeOneDeleteButtons"/>
<actionGroup ref="AdminWidgetDeleteLayoutUpdateActionGroup" stepKey="DeleteThirdLayoutForWidget"></actionGroup>
<seeNumberOfElements userInput="0" selector="{{AdminNewWidgetSection.CountDeleteButtons}}" stepKey="seeZeroDeleteButtons"/>
</test>
</tests>
31 changes: 17 additions & 14 deletions lib/internal/Magento/Framework/View/Helper/SecureHtmlRenderer.php
Expand Up @@ -8,7 +8,6 @@

namespace Magento\Framework\View\Helper;

use Magento\Framework\Api\SimpleDataObjectConverter;
use Magento\Framework\Math\Random;
use Magento\Framework\View\Helper\SecureHtmlRender\EventHandlerData;
use Magento\Framework\View\Helper\SecureHtmlRender\HtmlRenderer;
Expand Down Expand Up @@ -105,23 +104,27 @@ public function renderEventListenerAsTag(
}

$random = $this->random->getRandomString(10);
$listenerFunction = 'eventListener' .$random;
$elementName = 'listenedElement' .$random;
$listenerFunction = 'eventListener' . $random;
$elementName = 'listenedElement' . $random;
$script = <<<script
function {$listenerFunction} () {
{$attributeJavascript};
}
var {$elementName} = document.querySelector("{$elementSelector}");
if ({$elementName}) {
{$elementName}.{$eventName} = function (event) {
var targetElement = {$elementName};
if (event && event.target) {
targetElement = event.target;
var {$elementName}Array = document.querySelectorAll("{$elementSelector}");
if({$elementName}Array.length !== 'undefined'){
{$elementName}Array.forEach(function(element) {
if (element) {
element.{$eventName} = function (event) {
var targetElement = element;
if (event && event.target) {
targetElement = event.target;
}
{$listenerFunction}.apply(targetElement);
};
}
{$listenerFunction}.apply(targetElement);
}
});
}
script;
script;

return $this->renderTag('script', ['type' => 'text/javascript'], $script, false);
}
Expand All @@ -140,7 +143,7 @@ public function renderStyleAsTag(string $style, string $selector): string
throw new \InvalidArgumentException('Invalid style data given');
}

$elementVariable = 'elem' .$this->random->getRandomString(8);
$elementVariable = 'elem' . $this->random->getRandomString(8);
/** @var string[] $styles */
$stylesAssignments = '';
foreach ($stylePairs as $stylePair) {
Expand All @@ -162,7 +165,7 @@ public function renderStyleAsTag(string $style, string $selector): string
'script',
['type' => 'text/javascript'],
"var $elementVariable = document.querySelector('$selector');\n"
."if ($elementVariable) {\n{$stylesAssignments}}",
. "if ($elementVariable) {\n{$stylesAssignments}}",
false
);
}
Expand Down