Skip to content

Commit 28ae9d7

Browse files
[Magento Community Engineering] Community Contributions - 2.4-develop
- merged latest code from mainline branch
2 parents f075ffb + 05b2748 commit 28ae9d7

File tree

28 files changed

+1868
-180
lines changed

28 files changed

+1868
-180
lines changed

app/code/Magento/Cms/Test/Mftf/Data/BlockData.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,11 @@
1515
<data key="content">sales25off everything!</data>
1616
<data key="is_active">0</data>
1717
</entity>
18+
<entity name="ActiveTestBlock" type="block">
19+
<data key="title" unique="suffix">Test Block</data>
20+
<data key="identifier" unique="suffix">ActiveTestBlock</data>
21+
<data key="store_id">All Store Views</data>
22+
<data key="content">Test Block content</data>
23+
<data key="is_active">1</data>
24+
</entity>
1825
</entities>
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="AdminUseQuickSearchInAdminDataGridsTest">
11+
<annotations>
12+
<features value="Cms"/>
13+
<stories value="Create CMS Page"/>
14+
<title value="[CMS Grids] Use quick search in Admin data grids"/>
15+
<description value="Verify that Merchant can use quick search in order to simplify the data grid filtering in Admin"/>
16+
<testCaseId value="MC-27559" />
17+
<severity value="MAJOR"/>
18+
<group value="cms"/>
19+
<group value="ui"/>
20+
</annotations>
21+
<before>
22+
<createData entity="simpleCmsPage" stepKey="createFirstCMSPage" />
23+
<createData entity="_newDefaultCmsPage" stepKey="createSecondCMSPage" />
24+
<createData entity="_emptyCmsPage" stepKey="createThirdCMSPage" />
25+
<createData entity="Sales25offBlock" stepKey="createFirstCmsBlock"/>
26+
<createData entity="ActiveTestBlock" stepKey="createSecondCmsBlock"/>
27+
<createData entity="_emptyCmsBlock" stepKey="createThirdCmsBlock"/>
28+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
29+
</before>
30+
<after>
31+
<deleteData createDataKey="createFirstCMSPage" stepKey="deleteFirstCMSPage" />
32+
<deleteData createDataKey="createSecondCMSPage" stepKey="deleteSecondCMSPage" />
33+
<deleteData createDataKey="createThirdCMSPage" stepKey="deleteThirdCMSPage" />
34+
<deleteData createDataKey="createFirstCmsBlock" stepKey="deleteFirstCmsBlock" />
35+
<deleteData createDataKey="createSecondCmsBlock" stepKey="deleteSecondCmsBlock" />
36+
<deleteData createDataKey="createThirdCmsBlock" stepKey="deleteThirdCmsBlock" />
37+
<actionGroup ref="AdminOpenCMSPagesGridActionGroup" stepKey="navigateToCMSPageGrid"/>
38+
<actionGroup ref="AdminGridFilterResetActionGroup" stepKey="clearCmsPagesGridFilters"/>
39+
<actionGroup ref="AdminOpenCmsBlocksGridActionGroup" stepKey="navigateToCmsBlockGrid"/>
40+
<actionGroup ref="AdminGridFilterResetActionGroup" stepKey="clearCmsBlockGridFilters"/>
41+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logoutFromAdmin"/>
42+
</after>
43+
<!--Go to "Cms Pages Grid" page and filter by title-->
44+
<actionGroup ref="AdminOpenCMSPagesGridActionGroup" stepKey="navigateToCmsPageGrid"/>
45+
<actionGroup ref="SearchAdminDataGridByKeywordActionGroup" stepKey="searchFirstCmsPage">
46+
<argument name="keyword" value="$createFirstCMSPage.title$"/>
47+
</actionGroup>
48+
<see userInput="$createFirstCMSPage.title$" selector="{{AdminGridRow.rowOne}}" stepKey="seeFirstCmsPageAfterFiltering"/>
49+
<actionGroup ref="AdminAssertNumberOfRecordsInUiGridActionGroup" stepKey="assertNumberOfRecordsInCmsPageGrid"/>
50+
<actionGroup ref="SearchAdminDataGridByKeywordActionGroup" stepKey="searchSecondCmsPage">
51+
<argument name="keyword" value="$createSecondCMSPage.title$"/>
52+
</actionGroup>
53+
<see userInput="$createSecondCMSPage.title$" selector="{{AdminGridRow.rowOne}}" stepKey="seeSecondCmsPageAfterFiltering"/>
54+
<actionGroup ref="AdminAssertNumberOfRecordsInUiGridActionGroup" stepKey="assertNumberOfRecordsAfterFilteringSecondCmsPage"/>
55+
<actionGroup ref="AdminGridFilterResetActionGroup" stepKey="clearGridFilters"/>
56+
<grabTextFrom selector="{{AdminGridHeaders.totalRecords}}" stepKey="grabTotalRecordsCmsPagesBeforeClickSearchButton"/>
57+
<click selector="{{AdminDataGridHeaderSection.submitSearch}}" stepKey="clickSearchMagnifierButton"/>
58+
<grabTextFrom selector="{{AdminGridHeaders.totalRecords}}" stepKey="grabTotalRecordsCmsPagesAfterClickSearchButton"/>
59+
<assertEquals stepKey="assertTotalRecordsCmsPages">
60+
<expectedResult type="string">$grabTotalRecordsCmsPagesBeforeClickSearchButton</expectedResult>
61+
<actualResult type="string">$grabTotalRecordsCmsPagesAfterClickSearchButton</actualResult>
62+
</assertEquals>
63+
<actionGroup ref="SearchAdminDataGridByKeywordActionGroup" stepKey="enterNonExistentEntityInQuickSearch">
64+
<argument name="keyword" value="TestQueryNonExistentEntity"/>
65+
</actionGroup>
66+
<dontSeeElement selector="{{AdminDataGridTableSection.rows}}" stepKey="dontSeeResultRows"/>
67+
<actionGroup ref="AdminAssertNumberOfRecordsInUiGridActionGroup" stepKey="assertNumberOfRecordsAfterFilteringNonExistentCmsPage">
68+
<argument name="number" value="0"/>
69+
</actionGroup>
70+
<actionGroup ref="SearchAdminDataGridByKeywordActionGroup" stepKey="searchThirdCmsPage">
71+
<argument name="keyword" value="$createThirdCMSPage.title$"/>
72+
</actionGroup>
73+
<see userInput="$createThirdCMSPage.title$" selector="{{AdminGridRow.rowOne}}" stepKey="seeThirdCmsPageAfterFiltering"/>
74+
<actionGroup ref="AdminAssertNumberOfRecordsInUiGridActionGroup" stepKey="assertNumberOfRecordsAfterFilteringThirdCmsPage"/>
75+
76+
<!--Go to "Cms Blocks Grid" page and filter by title-->
77+
<actionGroup ref="AdminOpenCmsBlocksGridActionGroup" stepKey="navigateToCmsBlockGrid"/>
78+
<actionGroup ref="SearchAdminDataGridByKeywordActionGroup" stepKey="searchFirstCmsBlock">
79+
<argument name="keyword" value="$createFirstCmsBlock.title$"/>
80+
</actionGroup>
81+
<see userInput="$createFirstCmsBlock.title$" selector="{{AdminGridRow.rowOne}}" stepKey="seeFirstCmsBlockAfterFiltering"/>
82+
<actionGroup ref="AdminAssertNumberOfRecordsInUiGridActionGroup" stepKey="assertNumberOfRecordsInBlockGrid"/>
83+
<actionGroup ref="SearchAdminDataGridByKeywordActionGroup" stepKey="searchSecondCmsBlock">
84+
<argument name="keyword" value="$createSecondCmsBlock.title$"/>
85+
</actionGroup>
86+
<see userInput="$createSecondCmsBlock.title$" selector="{{AdminGridRow.rowOne}}" stepKey="seeSecondCmsBlockAfterFiltering"/>
87+
<actionGroup ref="AdminAssertNumberOfRecordsInUiGridActionGroup" stepKey="assertNumberOfRecordsAfterFilteringSecondBlock"/>
88+
<actionGroup ref="AdminGridFilterResetActionGroup" stepKey="clearGridFiltersOnBlocksGridPage"/>
89+
<grabTextFrom selector="{{AdminGridHeaders.totalRecords}}" stepKey="grabTotalRecordsBlocksBeforeClickSearchButton"/>
90+
<click selector="{{AdminDataGridHeaderSection.submitSearch}}" stepKey="clickSearchMagnifierButtonOnBlocksGridPage"/>
91+
<grabTextFrom selector="{{AdminGridHeaders.totalRecords}}" stepKey="grabTotalRecordsBlocksAfterClickSearchButton"/>
92+
<assertEquals stepKey="assertTotalRecordsBlocks">
93+
<expectedResult type="string">$grabTotalRecordsBlocksBeforeClickSearchButton</expectedResult>
94+
<actualResult type="string">$grabTotalRecordsBlocksAfterClickSearchButton</actualResult>
95+
</assertEquals>
96+
<actionGroup ref="SearchAdminDataGridByKeywordActionGroup" stepKey="enterNonExistentEntityInQuickSearchOnBlocksGridPage">
97+
<argument name="keyword" value="TestQueryNonExistentEntity"/>
98+
</actionGroup>
99+
<dontSeeElement selector="{{AdminDataGridTableSection.rows}}" stepKey="dontSeeResultRowsOnBlocksGrid"/>
100+
<actionGroup ref="AdminAssertNumberOfRecordsInUiGridActionGroup" stepKey="assertNumberOfRecordsAfterFilteringNonExistentCmsBlock">
101+
<argument name="number" value="0"/>
102+
</actionGroup>
103+
<actionGroup ref="SearchAdminDataGridByKeywordActionGroup" stepKey="searchThirdCmsBlock">
104+
<argument name="keyword" value="$createThirdCmsBlock.title$"/>
105+
</actionGroup>
106+
<see userInput="$createThirdCmsBlock.title$" selector="{{AdminGridRow.rowOne}}" stepKey="seeThirdCmsBlockAfterFiltering"/>
107+
<actionGroup ref="AdminAssertNumberOfRecordsInUiGridActionGroup" stepKey="assertNumberOfRecordsAfterFilteringThirdBlock"/>
108+
</test>
109+
</tests>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AdminPayPalExpressCheckoutDisableActionGroup">
12+
<annotations>
13+
<description>Goes to the 'Configuration' page for 'Payment Methods'. Disables PayPal Express Checkout solution. Clicks on Save.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="countryCode" type="string" defaultValue="us"/>
17+
</arguments>
18+
<amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/>
19+
<waitForPageLoad stepKey="waitForPageLoad1"/>
20+
<click selector="{{PayPalExpressCheckoutConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalConfigureBtn"/>
21+
<waitForElementVisible selector="{{PayPalAdvancedSettingConfigSection.advancedSettingTab(countryCode)}}" stepKey="waitForAdvancedSettingTab"/>
22+
<selectOption selector="{{PayPalExpressCheckoutConfigSection.enableSolution(countryCode)}}" userInput="No" stepKey="enableSolution"/>
23+
<click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfig"/>
24+
<waitForPageLoad stepKey="waitForPageLoad2"/>
25+
</actionGroup>
26+
</actionGroups>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AdminPayPalExpressCheckoutEnableActionGroup">
12+
<annotations>
13+
<description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="credentials" defaultValue="SamplePaypalExpressConfig"/>
17+
<argument name="countryCode" type="string" defaultValue="us"/>
18+
</arguments>
19+
<amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/>
20+
<waitForPageLoad stepKey="waitForPageLoad1"/>
21+
<click selector="{{PayPalExpressCheckoutConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalConfigureBtn"/>
22+
<waitForElementVisible selector="{{PayPalAdvancedSettingConfigSection.advancedSettingTab(countryCode)}}" stepKey="waitForAdvancedSettingTab"/>
23+
<fillField selector ="{{PayPalExpressCheckoutConfigSection.email(countryCode)}}" userInput="{{credentials.paypal_express_email}}" stepKey="inputEmailAssociatedWithPayPalMerchantAccount"/>
24+
<selectOption selector ="{{PayPalExpressCheckoutConfigSection.apiMethod(countryCode)}}" userInput="API Signature" stepKey="inputAPIAuthenticationMethods"/>
25+
<fillField selector ="{{PayPalExpressCheckoutConfigSection.username(countryCode)}}" userInput="{{credentials.paypal_express_api_username}}" stepKey="inputAPIUsername"/>
26+
<fillField selector ="{{PayPalExpressCheckoutConfigSection.password(countryCode)}}" userInput="{{credentials.paypal_express_api_password}}" stepKey="inputAPIPassword"/>
27+
<fillField selector ="{{PayPalExpressCheckoutConfigSection.signature(countryCode)}}" userInput="{{credentials.paypal_express_api_signature}}" stepKey="inputAPISignature"/>
28+
<selectOption selector ="{{PayPalExpressCheckoutConfigSection.sandboxMode(countryCode)}}" userInput="Yes" stepKey="enableSandboxMode"/>
29+
<selectOption selector="{{PayPalExpressCheckoutConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/>
30+
<fillField selector ="{{PayPalExpressCheckoutConfigSection.merchantID(countryCode)}}" userInput="{{credentials.paypal_express_merchantID}}" stepKey="inputMerchantID"/>
31+
<click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfig"/>
32+
<waitForPageLoad stepKey="waitForPageLoad2"/>
33+
</actionGroup>
34+
</actionGroups>

app/code/Magento/Paypal/Test/Mftf/ActionGroup/SampleConfigPayPalExpressCheckoutActionGroup.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1010
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11-
<actionGroup name="SampleConfigPayPalExpressCheckoutActionGroup">
11+
<actionGroup name="SampleConfigPayPalExpressCheckoutActionGroup" deprecated="Use AdminPayPalExpressCheckoutEnableActionGroup instead">
1212
<annotations>
1313
<description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal credentials and other details. Clicks on Save.</description>
1414
</annotations>

app/code/Magento/Paypal/Test/Mftf/Test/AdminConfigPaymentsConflictResolutionForPayPalTest/AdminConfigPaymentsConflictResolutionForPayPalInUnitedKingdomTest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
</annotations>
2020
<before>
2121
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
22-
<actionGroup ref="SampleConfigPayPalExpressCheckoutActionGroup" stepKey="ConfigPayPalExpress">
22+
<actionGroup ref="AdminPayPalExpressCheckoutEnableActionGroup" stepKey="ConfigPayPalExpress">
2323
<argument name="credentials" value="SamplePaypalExpressConfig"/>
2424
</actionGroup>
2525
</before>

app/code/Magento/Shipping/view/adminhtml/templates/order/packaging/popup_content.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,8 @@
227227
<div class="grid_prepare admin__page-subsection"></div>
228228
</div>
229229
</section>
230-
<?= /* @noEscape */ $secureRenderer->renderStyleAsTag('display:none', '#package_template') ?>
231230
<div id="packages_content"></div>
231+
<?= /* @noEscape */ $secureRenderer->renderStyleAsTag('display:none', '#package_template') ?>
232232
<?php $scriptString = <<<script
233233
require(['jquery'], function($){
234234
$("div#packages_content").on('click', "button[data-action='package-save-items']",
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AdminAssertNumberOfRecordsInUiGridActionGroup">
12+
<annotations>
13+
<description>Validates that the Number of Records listed on the Ui grid page is present and correct.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="number" type="string" defaultValue="1"/>
17+
</arguments>
18+
<see userInput="{{number}} records found" selector="{{AdminGridHeaders.totalRecords}}" stepKey="seeRecords"/>
19+
</actionGroup>
20+
</actionGroups>

app/code/Magento/Ui/Test/Mftf/Section/AdminGridControlsSection/AdminGridHeadersSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@
1111
<element name="title" type="text" selector=".page-title-wrapper h1"/>
1212
<element name="headerByName" type="text" selector="//div[@data-role='grid-wrapper']//span[@class='data-grid-cell-content' and contains(text(), '{{var1}}')]/parent::*" parameterized="true"/>
1313
<element name="columnsNames" type="text" selector="[data-role='grid-wrapper'] .data-grid-th &gt; span"/>
14+
<element name="totalRecords" type="text" selector="div.admin__data-grid-header-row.row.row-gutter div.row div.admin__control-support-text"/>
1415
</section>
1516
</sections>

app/code/Magento/Ui/view/base/web/js/form/element/region.js

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,22 @@ define([
2323
}
2424
},
2525

26+
/**
27+
* {@inheritdoc}
28+
*/
29+
initialize: function () {
30+
var option;
31+
32+
this._super();
33+
34+
option = _.find(this.countryOptions, function (row) {
35+
return row['is_default'] === true;
36+
});
37+
this.hideRegion(option);
38+
39+
return this;
40+
},
41+
2642
/**
2743
* Method called every time country selector's value gets changed.
2844
* Updates all validations and requirements for certain country.
@@ -42,16 +58,9 @@ define([
4258
return;
4359
}
4460

45-
defaultPostCodeResolver.setUseDefaultPostCode(!option['is_zipcode_optional']);
46-
47-
if (option['is_region_visible'] === false) {
48-
// Hide select and corresponding text input field if region must not be shown for selected country.
49-
this.setVisible(false);
61+
this.hideRegion(option);
5062

51-
if (this.customEntry) { // eslint-disable-line max-depth
52-
this.toggleInput(false);
53-
}
54-
}
63+
defaultPostCodeResolver.setUseDefaultPostCode(!option['is_zipcode_optional']);
5564

5665
isRegionRequired = !this.skipValidation && !!option['is_region_required'];
5766

@@ -67,7 +76,24 @@ define([
6776
input.validation['required-entry'] = isRegionRequired;
6877
input.validation['validate-not-number-first'] = !this.options().length;
6978
}.bind(this));
79+
},
80+
81+
/**
82+
* Hide select and corresponding text input field if region must not be shown for selected country.
83+
*
84+
* @private
85+
* @param {Object}option
86+
*/
87+
hideRegion: function (option) {
88+
if (!option || option['is_region_visible'] !== false) {
89+
return;
90+
}
91+
92+
this.setVisible(false);
93+
94+
if (this.customEntry) {
95+
this.toggleInput(false);
96+
}
7097
}
7198
});
7299
});
73-

composer.lock

Lines changed: 6 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)