Skip to content

Commit 16e6fda

Browse files
committed
REFACTOR: Extract Action Groups to separate files (according to MFTF best practices)
1 parent c7ca62e commit 16e6fda

6 files changed

+144
-94
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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="AdminCreateDynamicBlocksRotatorWidgetActionGroup" extends="AdminCreateWidgetActionGroup">
12+
<annotations>
13+
<description>EXTENDS: AdminCreateWidgetActionGroup. Creates a Dynamic Block Rotate Widget.</description>
14+
</annotations>
15+
16+
<selectOption selector="{{AdminNewWidgetSection.displayMode}}" userInput="{{widget.display_mode}}" stepKey="selectDisplayMode"/>
17+
<selectOption selector="{{AdminNewWidgetSection.restrictTypes}}" userInput="{{widget.restrict_type}}" stepKey="selectRestrictType"/>
18+
<click selector="{{AdminNewWidgetSection.saveAndContinue}}" stepKey="clickSaveWidget"/>
19+
<see selector="{{AdminMessagesSection.success}}" userInput="The widget instance has been saved" stepKey="seeSuccess"/>
20+
</actionGroup>
21+
</actionGroups>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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="AdminCreateProductLinkWidgetActionGroup" extends="AdminCreateWidgetActionGroup">
12+
<annotations>
13+
<description>EXTENDS: AdminCreateWidgetActionGroup. Creates a Product List Widget using the provided Product. Validates that the Success Message is present and correct.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="product"/>
17+
</arguments>
18+
19+
<selectOption selector="{{AdminNewWidgetSection.selectTemplate}}" userInput="{{widget.template}}" after="waitForPageLoad" stepKey="setTemplate"/>
20+
<waitForAjaxLoad after="setTemplate" stepKey="waitForPageLoad2"/>
21+
<click selector="{{AdminNewWidgetSection.selectProduct}}" after="clickWidgetOptions" stepKey="clickSelectProduct"/>
22+
<fillField selector="{{AdminNewWidgetSelectProductPopupSection.filterBySku}}" userInput="{{product.sku}}" after="clickSelectProduct" stepKey="fillProductNameInFilter"/>
23+
<click selector="{{AdminDataGridHeaderSection.applyFilters}}" after="fillProductNameInFilter" stepKey="applyFilter"/>
24+
<click selector="{{AdminNewWidgetSelectProductPopupSection.firstRow}}" after="applyFilter" stepKey="selectProduct"/>
25+
<click selector="{{AdminMainActionsSection.save}}" stepKey="clickSaveWidget"/>
26+
<see selector="{{AdminMessagesSection.success}}" userInput="The widget instance has been saved" stepKey="seeSuccess"/>
27+
</actionGroup>
28+
</actionGroups>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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="AdminCreateProductsListWidgetActionGroup" extends="AdminCreateWidgetActionGroup">
12+
<annotations>
13+
<description>EXTENDS: AdminCreateWidgetActionGroup. Creates a Product List Widget. Validates that the Success Message is present and correct.</description>
14+
</annotations>
15+
16+
<click selector="{{AdminNewWidgetSection.addNewCondition}}" stepKey="clickAddNewCondition"/>
17+
<selectOption selector="{{AdminNewWidgetSection.selectCondition}}" userInput="{{widget.condition}}" stepKey="selectCondition"/>
18+
<waitForElement selector="{{AdminNewWidgetSection.ruleParameter}}" stepKey="waitRuleParameter"/>
19+
<click selector="{{AdminNewWidgetSection.ruleParameter}}" stepKey="clickRuleParameter"/>
20+
<click selector="{{AdminNewWidgetSection.openChooser}}" stepKey="clickChooser"/>
21+
<waitForAjaxLoad stepKey="waitForAjaxLoad"/>
22+
<click selector="{{AdminNewWidgetSection.selectAll}}" stepKey="clickSelectAll"/>
23+
<click selector="{{AdminNewWidgetSection.applyParameter}}" stepKey="clickApplyRuleParameter"/>
24+
<click selector="{{AdminMainActionsSection.save}}" stepKey="clickSaveWidget"/>
25+
<see selector="{{AdminMessagesSection.success}}" userInput="The widget instance has been saved" stepKey="seeSuccess"/>
26+
</actionGroup>
27+
</actionGroups>

app/code/Magento/Widget/Test/Mftf/ActionGroup/AdminCreateWidgetActionGroup.xml

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -30,98 +30,4 @@
3030
<scrollToTopOfPage stepKey="scrollToTopOfPage"/>
3131
<click selector="{{AdminNewWidgetSection.widgetOptions}}" stepKey="clickWidgetOptions"/>
3232
</actionGroup>
33-
<actionGroup name="AdminFillSpecificPageWidgetMainFieldsActionGroup">
34-
<annotations>
35-
<description>Fill widget main fields and widget layout by index for specified page DisplayOn option</description>
36-
</annotations>
37-
<arguments>
38-
<argument name="widget" type="entity" defaultValue="ProductsListWidget"/>
39-
<argument name="index" type="string" defaultValue="0"/>
40-
</arguments>
41-
<selectOption selector="{{AdminNewWidgetSection.widgetType}}" userInput="{{widget.type}}" stepKey="setWidgetType"/>
42-
<selectOption selector="{{AdminNewWidgetSection.widgetDesignTheme}}" userInput="{{widget.design_theme}}" stepKey="setWidgetDesignTheme"/>
43-
<click selector="{{AdminNewWidgetSection.continue}}" stepKey="clickContinue"/>
44-
<fillField selector="{{AdminNewWidgetSection.widgetTitle}}" userInput="{{widget.name}}" stepKey="fillTitle"/>
45-
<selectOption selector="{{AdminNewWidgetSection.widgetStoreIds}}" parameterArray="{{widget.store_ids}}" stepKey="setWidgetStoreIds"/>
46-
<fillField selector="{{AdminNewWidgetSection.widgetSortOrder}}" userInput="{{widget.sort_order}}" stepKey="fillSortOrder"/>
47-
<click selector="{{AdminNewWidgetSection.addLayoutUpdate}}" stepKey="clickAddLayoutUpdate"/>
48-
<waitForElementVisible selector="{{AdminNewWidgetSection.selectDisplayOn}}" stepKey="waitForSelectElement"/>
49-
<selectOption selector="{{AdminNewWidgetSection.displayOnByIndex(index)}}" userInput="{{widget.display_on}}" stepKey="setDisplayOn"/>
50-
<waitForPageLoad stepKey="waitForDisplayOnChangesApplied"/>
51-
<selectOption selector="{{AdminNewWidgetSection.layoutByIndex(index)}}" userInput="{{widget.page}}" stepKey="selectPage"/>
52-
<selectOption selector="{{AdminNewWidgetSection.templateByIndex(index)}}" userInput="{{widget.template}}" stepKey="selectTemplate"/>
53-
<scrollTo selector="{{AdminNewWidgetSection.containerByIndex(index)}}" stepKey="scrollToSelectContainerElement"/>
54-
<waitForPageLoad stepKey="waitForScroll"/>
55-
<selectOption selector="{{AdminNewWidgetSection.containerByIndex(index)}}" userInput="{{widget.container}}" stepKey="setContainer"/>
56-
<waitForPageLoad stepKey="waitForContainerChangesApplied"/>
57-
</actionGroup>
58-
<!--Create Product List Widget-->
59-
<actionGroup name="AdminCreateProductsListWidgetActionGroup" extends="AdminCreateWidgetActionGroup">
60-
<annotations>
61-
<description>EXTENDS: AdminCreateWidgetActionGroup. Creates a Product List Widget. Validates that the Success Message is present and correct.</description>
62-
</annotations>
63-
64-
<click selector="{{AdminNewWidgetSection.addNewCondition}}" stepKey="clickAddNewCondition"/>
65-
<selectOption selector="{{AdminNewWidgetSection.selectCondition}}" userInput="{{widget.condition}}" stepKey="selectCondition"/>
66-
<waitForElement selector="{{AdminNewWidgetSection.ruleParameter}}" stepKey="waitRuleParameter"/>
67-
<click selector="{{AdminNewWidgetSection.ruleParameter}}" stepKey="clickRuleParameter"/>
68-
<click selector="{{AdminNewWidgetSection.openChooser}}" stepKey="clickChooser"/>
69-
<waitForAjaxLoad stepKey="waitForAjaxLoad"/>
70-
<click selector="{{AdminNewWidgetSection.selectAll}}" stepKey="clickSelectAll"/>
71-
<click selector="{{AdminNewWidgetSection.applyParameter}}" stepKey="clickApplyRuleParameter"/>
72-
<click selector="{{AdminMainActionsSection.save}}" stepKey="clickSaveWidget"/>
73-
<see selector="{{AdminMessagesSection.success}}" userInput="The widget instance has been saved" stepKey="seeSuccess"/>
74-
</actionGroup>
75-
76-
<!--Create Dynamic Block Rotate Widget-->
77-
<actionGroup name="AdminCreateDynamicBlocksRotatorWidgetActionGroup" extends="AdminCreateWidgetActionGroup">
78-
<annotations>
79-
<description>EXTENDS: AdminCreateWidgetActionGroup. Creates a Dynamic Block Rotate Widget.</description>
80-
</annotations>
81-
82-
<selectOption selector="{{AdminNewWidgetSection.displayMode}}" userInput="{{widget.display_mode}}" stepKey="selectDisplayMode"/>
83-
<selectOption selector="{{AdminNewWidgetSection.restrictTypes}}" userInput="{{widget.restrict_type}}" stepKey="selectRestrictType"/>
84-
<click selector="{{AdminNewWidgetSection.saveAndContinue}}" stepKey="clickSaveWidget"/>
85-
<see selector="{{AdminMessagesSection.success}}" userInput="The widget instance has been saved" stepKey="seeSuccess"/>
86-
</actionGroup>
87-
88-
<actionGroup name="AdminDeleteWidgetActionGroup">
89-
<annotations>
90-
<description>Goes to the Admin Widget grid page. Deletes the provided Widget. Validates that the Success Message is present and correct.</description>
91-
</annotations>
92-
<arguments>
93-
<argument name="widget"/>
94-
</arguments>
95-
96-
<amOnPage url="{{AdminWidgetsPage.url}}" stepKey="amOnAdmin"/>
97-
<waitForPageLoad stepKey="waitWidgetsLoad"/>
98-
<conditionalClick selector="{{AdminDataGridHeaderSection.clearFilters}}" dependentSelector="{{AdminDataGridHeaderSection.clearFilters}}" visible="true" stepKey="clearExistingFilters"/>
99-
<fillField selector="{{AdminWidgetsSection.widgetTitleSearch}}" userInput="{{widget.name}}" stepKey="fillTitle"/>
100-
<click selector="{{AdminWidgetsSection.searchButton}}" stepKey="clickContinue"/>
101-
<click selector="{{AdminWidgetsSection.searchResult}}" stepKey="clickSearchResult"/>
102-
<waitForPageLoad stepKey="waitForResultLoad"/>
103-
<click selector="{{AdminMainActionsSection.delete}}" stepKey="clickDelete"/>
104-
<waitForAjaxLoad stepKey="waitForAjaxLoad"/>
105-
<click selector="{{AdminConfirmationModalSection.ok}}" stepKey="confirmDelete"/>
106-
<waitForPageLoad stepKey="waitForDeleteLoad"/>
107-
<see selector="{{AdminMessagesSection.success}}" userInput="The widget instance has been deleted" stepKey="seeSuccess"/>
108-
</actionGroup>
109-
110-
<actionGroup name="AdminCreateProductLinkWidgetActionGroup" extends="AdminCreateWidgetActionGroup">
111-
<annotations>
112-
<description>EXTENDS: AdminCreateWidgetActionGroup. Creates a Product List Widget using the provided Product. Validates that the Success Message is present and correct.</description>
113-
</annotations>
114-
<arguments>
115-
<argument name="product"/>
116-
</arguments>
117-
118-
<selectOption selector="{{AdminNewWidgetSection.selectTemplate}}" userInput="{{widget.template}}" after="waitForPageLoad" stepKey="setTemplate"/>
119-
<waitForAjaxLoad after="setTemplate" stepKey="waitForPageLoad2"/>
120-
<click selector="{{AdminNewWidgetSection.selectProduct}}" after="clickWidgetOptions" stepKey="clickSelectProduct"/>
121-
<fillField selector="{{AdminNewWidgetSelectProductPopupSection.filterBySku}}" userInput="{{product.sku}}" after="clickSelectProduct" stepKey="fillProductNameInFilter"/>
122-
<click selector="{{AdminDataGridHeaderSection.applyFilters}}" after="fillProductNameInFilter" stepKey="applyFilter"/>
123-
<click selector="{{AdminNewWidgetSelectProductPopupSection.firstRow}}" after="applyFilter" stepKey="selectProduct"/>
124-
<click selector="{{AdminMainActionsSection.save}}" stepKey="clickSaveWidget"/>
125-
<see selector="{{AdminMessagesSection.success}}" userInput="The widget instance has been saved" stepKey="seeSuccess"/>
126-
</actionGroup>
12733
</actionGroups>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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="AdminDeleteWidgetActionGroup">
12+
<annotations>
13+
<description>Goes to the Admin Widget grid page. Deletes the provided Widget. Validates that the Success Message is present and correct.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="widget"/>
17+
</arguments>
18+
19+
<amOnPage url="{{AdminWidgetsPage.url}}" stepKey="amOnAdmin"/>
20+
<waitForPageLoad stepKey="waitWidgetsLoad"/>
21+
<conditionalClick selector="{{AdminDataGridHeaderSection.clearFilters}}" dependentSelector="{{AdminDataGridHeaderSection.clearFilters}}" visible="true" stepKey="clearExistingFilters"/>
22+
<fillField selector="{{AdminWidgetsSection.widgetTitleSearch}}" userInput="{{widget.name}}" stepKey="fillTitle"/>
23+
<click selector="{{AdminWidgetsSection.searchButton}}" stepKey="clickContinue"/>
24+
<click selector="{{AdminWidgetsSection.searchResult}}" stepKey="clickSearchResult"/>
25+
<waitForPageLoad stepKey="waitForResultLoad"/>
26+
<click selector="{{AdminMainActionsSection.delete}}" stepKey="clickDelete"/>
27+
<waitForAjaxLoad stepKey="waitForAjaxLoad"/>
28+
<click selector="{{AdminConfirmationModalSection.ok}}" stepKey="confirmDelete"/>
29+
<waitForPageLoad stepKey="waitForDeleteLoad"/>
30+
<see selector="{{AdminMessagesSection.success}}" userInput="The widget instance has been deleted" stepKey="seeSuccess"/>
31+
</actionGroup>
32+
</actionGroups>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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="AdminFillSpecificPageWidgetMainFieldsActionGroup">
12+
<annotations>
13+
<description>Fill widget main fields and widget layout by index for specified page DisplayOn option</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="widget" type="entity" defaultValue="ProductsListWidget"/>
17+
<argument name="index" type="string" defaultValue="0"/>
18+
</arguments>
19+
<selectOption selector="{{AdminNewWidgetSection.widgetType}}" userInput="{{widget.type}}" stepKey="setWidgetType"/>
20+
<selectOption selector="{{AdminNewWidgetSection.widgetDesignTheme}}" userInput="{{widget.design_theme}}" stepKey="setWidgetDesignTheme"/>
21+
<click selector="{{AdminNewWidgetSection.continue}}" stepKey="clickContinue"/>
22+
<fillField selector="{{AdminNewWidgetSection.widgetTitle}}" userInput="{{widget.name}}" stepKey="fillTitle"/>
23+
<selectOption selector="{{AdminNewWidgetSection.widgetStoreIds}}" parameterArray="{{widget.store_ids}}" stepKey="setWidgetStoreIds"/>
24+
<fillField selector="{{AdminNewWidgetSection.widgetSortOrder}}" userInput="{{widget.sort_order}}" stepKey="fillSortOrder"/>
25+
<click selector="{{AdminNewWidgetSection.addLayoutUpdate}}" stepKey="clickAddLayoutUpdate"/>
26+
<waitForElementVisible selector="{{AdminNewWidgetSection.selectDisplayOn}}" stepKey="waitForSelectElement"/>
27+
<selectOption selector="{{AdminNewWidgetSection.displayOnByIndex(index)}}" userInput="{{widget.display_on}}" stepKey="setDisplayOn"/>
28+
<waitForPageLoad stepKey="waitForDisplayOnChangesApplied"/>
29+
<selectOption selector="{{AdminNewWidgetSection.layoutByIndex(index)}}" userInput="{{widget.page}}" stepKey="selectPage"/>
30+
<selectOption selector="{{AdminNewWidgetSection.templateByIndex(index)}}" userInput="{{widget.template}}" stepKey="selectTemplate"/>
31+
<scrollTo selector="{{AdminNewWidgetSection.containerByIndex(index)}}" stepKey="scrollToSelectContainerElement"/>
32+
<waitForPageLoad stepKey="waitForScroll"/>
33+
<selectOption selector="{{AdminNewWidgetSection.containerByIndex(index)}}" userInput="{{widget.container}}" stepKey="setContainer"/>
34+
<waitForPageLoad stepKey="waitForContainerChangesApplied"/>
35+
</actionGroup>
36+
</actionGroups>

0 commit comments

Comments
 (0)