Skip to content

Commit 7515d50

Browse files
committed
PB-365: Templates MFTF Test Coverage
- Adding ACL test coverage - Adding delete templates test - Adding grid data validation test
1 parent 11118a3 commit 7515d50

File tree

4 files changed

+663
-55
lines changed

4 files changed

+663
-55
lines changed

app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/TemplatesActionGroup.xml

Lines changed: 124 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@
1616
<see userInput="Save Content as Template" selector="{{PageBuilderSaveTemplateModal.title}}" stepKey="seeTitle"/>
1717
<waitForPageLoad stepKey="waitForPreviewLoad"/>
1818
</actionGroup>
19+
<actionGroup name="closePageBuilderSaveTemplateModal">
20+
<arguments>
21+
<argument name="baseContent" defaultValue="{{CmsNewPagePageActionsSection.saveAndContinueEdit}}" type="string"/>
22+
</arguments>
23+
<waitForPageLoad stepKey="waitForModalLoad"/>
24+
<waitForElementVisible selector="{{PageBuilderSaveTemplateModal.closeButton}}" stepKey="waitForCloseButton"/>
25+
<click selector="{{PageBuilderSaveTemplateModal.closeButton}}" stepKey="clickCloseButton"/>
26+
<waitForPageLoad stepKey="waitForModalClose"/>
27+
<waitForElementNotVisible time="5" selector="{{PageBuilderSaveTemplateModal.activeModal}}" stepKey="waitForModalNotVisible"/>
28+
<waitForElementVisible time="10" selector="{{baseContent}}" stepKey="waitForContentUnderModalVisible"/>
29+
</actionGroup>
1930
<actionGroup name="fillPageBuilderSaveTemplateForm">
2031
<arguments>
2132
<argument name="templateName" defaultValue="{{PageBuilderTemplateNameRandom.name}}" type="string"/>
@@ -27,32 +38,13 @@
2738
<waitForElement selector="{{PageBuilderSaveTemplateModal.createdForSelect}}" stepKey="waitForCreatedFor"/>
2839
<selectOption userInput="{{createdFor}}" selector="{{PageBuilderSaveTemplateModal.createdForSelect}}" stepKey="selectCreatedFor"/>
2940
</actionGroup>
30-
<actionGroup name="validatePageBuilderSaveTemplateModal">
31-
<waitForPageLoad stepKey="waitForModalLoad"/>
32-
<see userInput="Save Content as Template" selector="{{PageBuilderSaveTemplateModal.title}}" stepKey="seeTitle"/>
33-
<seeElement selector="{{PageBuilderSaveTemplateModal.closeButton}}" stepKey="seeCloseButton"/>
34-
<seeElement selector="{{PageBuilderSaveTemplateModal.previewImage}}" stepKey="seePreview"/>
35-
<!-- todo: validate preview image not error -->
36-
<seeElement selector="{{PageBuilderSaveTemplateModal.templateNameInput}}" stepKey="seeTemplateNameInput"/>
37-
<seeElement selector="{{PageBuilderSaveTemplateModal.createdForSelect}}" stepKey="seeCreatedForSelect"/>
38-
<see userInput="Created For is to help with filtering templates. This does not restrict where this template can be used." selector="{{PageBuilderSaveTemplateModal.createdForHelperText}}" stepKey="seeCreatedForHelperText"/>
39-
<seeElement selector="{{PageBuilderSaveTemplateModal.saveButton}}" stepKey="seeSaveButton"/>
40-
<seeElement selector="{{PageBuilderSaveTemplateModal.cancelButton}}" stepKey="seeCancelButton"/>
41-
</actionGroup>
4241
<actionGroup name="clickSaveOnPageBuilderSaveTemplateModal">
4342
<waitForPageLoad stepKey="waitForModalLoad"/>
4443
<waitForElement selector="{{PageBuilderSaveTemplateModal.saveButton}}" stepKey="waitForSaveButton"/>
4544
<click selector="{{PageBuilderSaveTemplateModal.saveButton}}" stepKey="clickSaveButton"/>
4645
<waitForPageLoad stepKey="waitForModalClose"/>
4746
<waitForElementVisible selector="{{PageBuilderSaveTemplateConfirmationModal.modal}}" stepKey="waitForConfirmationModal"/>
4847
</actionGroup>
49-
<actionGroup name="validatePageBuilderSaveTemplateConfirmationModal">
50-
<waitForPageLoad stepKey="waitForModalLoad"/>
51-
<seeElement selector="{{PageBuilderSaveTemplateConfirmationModal.title}}" stepKey="seeTitle"/>
52-
<seeElement selector="{{PageBuilderSaveTemplateConfirmationModal.closeButton}}" stepKey="seeCloseButton"/>
53-
<seeElement selector="{{PageBuilderSaveTemplateConfirmationModal.message}}" stepKey="seeMessage"/>
54-
<seeElement selector="{{PageBuilderSaveTemplateConfirmationModal.okButton}}" stepKey="seeOKButton"/>
55-
</actionGroup>
5648
<actionGroup name="savePageBuilderTemplate">
5749
<arguments>
5850
<argument name="baseContent" defaultValue="{{CmsNewPagePageActionsSection.saveAndContinueEdit}}" type="string"/>
@@ -67,16 +59,33 @@
6759
<waitForElementNotVisible time="5" selector="{{PageBuilderSaveTemplateConfirmationModal.modal}}" stepKey="waitForModalNotVisible"/>
6860
<waitForElementVisible time="10" selector="{{baseContent}}" stepKey="waitForContentUnderModalVisible"/>
6961
</actionGroup>
70-
<actionGroup name="closePageBuilderSaveTemplateModal">
71-
<arguments>
72-
<argument name="baseContent" defaultValue="{{CmsNewPagePageActionsSection.saveAndContinueEdit}}" type="string"/>
73-
</arguments>
62+
<actionGroup name="validatePageBuilderSaveTemplateModal">
7463
<waitForPageLoad stepKey="waitForModalLoad"/>
75-
<waitForElementVisible selector="{{PageBuilderSaveTemplateModal.closeButton}}" stepKey="waitForCloseButton"/>
76-
<click selector="{{PageBuilderSaveTemplateModal.closeButton}}" stepKey="clickCloseButton"/>
77-
<waitForPageLoad stepKey="waitForModalClose"/>
78-
<waitForElementNotVisible time="5" selector="{{PageBuilderSaveTemplateModal.activeModal}}" stepKey="waitForModalNotVisible"/>
79-
<waitForElementVisible time="10" selector="{{baseContent}}" stepKey="waitForContentUnderModalVisible"/>
64+
<see userInput="Save Content as Template" selector="{{PageBuilderSaveTemplateModal.title}}" stepKey="seeTitle"/>
65+
<seeElement selector="{{PageBuilderSaveTemplateModal.closeButton}}" stepKey="seeCloseButton"/>
66+
<seeElement selector="{{PageBuilderSaveTemplateModal.previewImage}}" stepKey="seePreview"/>
67+
<executeJS function="return document.evaluate(&quot;{{PageBuilderSaveTemplateModal.previewImage}}&quot;, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.naturalHeight" stepKey="screenshotNaturalHeight"/>
68+
<executeJS function="return document.evaluate(&quot;{{PageBuilderSaveTemplateModal.previewImage}}&quot;, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.naturalWidth" stepKey="screenshotNaturalWidth"/>
69+
<assertGreaterThan stepKey="assertNaturalHeightGreaterThanZero">
70+
<expectedResult type="int">0</expectedResult>
71+
<actualResult type="variable">screenshotNaturalHeight</actualResult>
72+
</assertGreaterThan>
73+
<assertGreaterThan stepKey="assertNaturalWidthGreaterThanZero">
74+
<expectedResult type="int">0</expectedResult>
75+
<actualResult type="variable">screenshotNaturalWidth</actualResult>
76+
</assertGreaterThan>
77+
<seeElement selector="{{PageBuilderSaveTemplateModal.templateNameInput}}" stepKey="seeTemplateNameInput"/>
78+
<seeElement selector="{{PageBuilderSaveTemplateModal.createdForSelect}}" stepKey="seeCreatedForSelect"/>
79+
<see userInput="Created For is to help with filtering templates. This does not restrict where this template can be used." selector="{{PageBuilderSaveTemplateModal.createdForHelperText}}" stepKey="seeCreatedForHelperText"/>
80+
<seeElement selector="{{PageBuilderSaveTemplateModal.saveButton}}" stepKey="seeSaveButton"/>
81+
<seeElement selector="{{PageBuilderSaveTemplateModal.cancelButton}}" stepKey="seeCancelButton"/>
82+
</actionGroup>
83+
<actionGroup name="validatePageBuilderSaveTemplateConfirmationModal">
84+
<waitForPageLoad stepKey="waitForModalLoad"/>
85+
<seeElement selector="{{PageBuilderSaveTemplateConfirmationModal.title}}" stepKey="seeTitle"/>
86+
<seeElement selector="{{PageBuilderSaveTemplateConfirmationModal.closeButton}}" stepKey="seeCloseButton"/>
87+
<seeElement selector="{{PageBuilderSaveTemplateConfirmationModal.message}}" stepKey="seeMessage"/>
88+
<seeElement selector="{{PageBuilderSaveTemplateConfirmationModal.okButton}}" stepKey="seeOKButton"/>
8089
</actionGroup>
8190
<actionGroup name="openPageBuilderApplyTemplateSlideOut">
8291
<waitForElementVisible selector="{{PageBuilderStage.applyTemplateButton}}" stepKey="waitForApplyTemplateButton"/>
@@ -86,6 +95,17 @@
8695
<see userInput="Apply Template" selector="{{PageBuilderApplyTemplateSlideOut.title}}" stepKey="seeTitle"/>
8796
<waitForPageLoad stepKey="waitForSlideOutForm"/>
8897
</actionGroup>
98+
<actionGroup name="closePageBuilderApplyTemplateSlideOut">
99+
<arguments>
100+
<argument name="baseContent" defaultValue="{{CmsNewPagePageActionsSection.saveAndContinueEdit}}" type="string"/>
101+
</arguments>
102+
<waitForPageLoad stepKey="waitForSlideOutLoad"/>
103+
<waitForElementVisible selector="{{PageBuilderApplyTemplateSlideOut.closeButton}}" stepKey="waitForCloseButton"/>
104+
<click selector="{{PageBuilderApplyTemplateSlideOut.closeButton}}" stepKey="clickCloseButton"/>
105+
<waitForPageLoad stepKey="waitForSlideOutClose"/>
106+
<waitForElementNotVisible time="5" selector="{{PageBuilderApplyTemplateSlideOut.slideOut}}" stepKey="waitForSlideOutNotVisible"/>
107+
<waitForElementVisible time="10" selector="{{baseContent}}" stepKey="waitForContentUnderSlideOutVisible"/>
108+
</actionGroup>
89109
<actionGroup name="clickApplyFromPageBuilderApplyTemplateSlideOut">
90110
<arguments>
91111
<argument name="templateIdentifier" defaultValue="{{PageBuilderTemplateNameRandom.name}}" type="string"/>
@@ -102,36 +122,29 @@
102122
<waitForElementNotVisible time="5" selector="{{PageBuilderApplyTemplateSlideOut.slideOut}}" stepKey="waitForSlideOutNotVisible" after="waitForPageLoad2"/>
103123
<waitForElementVisible time="10" selector="{{baseContent}}" stepKey="waitForContentUnderSlideOutVisible" after="waitForSlideOutNotVisible"/>
104124
</actionGroup>
105-
<actionGroup name="closePageBuilderApplyTemplateSlideOut">
106-
<arguments>
107-
<argument name="baseContent" defaultValue="{{CmsNewPagePageActionsSection.saveAndContinueEdit}}" type="string"/>
108-
</arguments>
109-
<waitForPageLoad stepKey="waitForSlideOutLoad"/>
110-
<waitForElementVisible selector="{{PageBuilderApplyTemplateSlideOut.closeButton}}" stepKey="waitForCloseButton"/>
111-
<click selector="{{PageBuilderApplyTemplateSlideOut.closeButton}}" stepKey="clickCloseButton"/>
112-
<waitForPageLoad stepKey="waitForSlideOutClose"/>
113-
<waitForElementNotVisible time="5" selector="{{PageBuilderApplyTemplateSlideOut.slideOut}}" stepKey="waitForSlideOutNotVisible"/>
114-
<waitForElementVisible time="10" selector="{{baseContent}}" stepKey="waitForContentUnderSlideOutVisible"/>
125+
<actionGroup name="verifyNoPageBuilderSaveOrApplyTemplateButtons">
126+
<waitForPageLoad stepKey="waitForPageLoad"/>
127+
<dontSeeElementInDOM selector="{{PageBuilderStage.saveAsTemplateButton}}" stepKey="dontSeeSaveAsTemplateButton"/>
128+
<dontSeeElementInDOM selector="{{PageBuilderStage.applyTemplateButton}}" stepKey="dontSeeApplyTemplateButton"/>
115129
</actionGroup>
116130
<actionGroup name="navigateToPageBuilderTemplatesGridPage">
117131
<amOnPage url="{{PageBuilderTemplatesGridPage.url}}" stepKey="goToPageBuilderTemplatesGridPage"/>
118132
<waitForPageLoad stepKey="waitForPageLoad"/>
119133
<waitForElementVisible selector="{{PageBuilderTemplatePageGrid.pageTitle}}" stepKey="waitForPageTitle"/>
120134
<see userInput="Templates" selector="{{PageBuilderTemplatePageGrid.pageTitle}}" stepKey="seePageTitle"/>
121135
</actionGroup>
122-
<actionGroup name="deletePageBuilderTemplate">
123-
<arguments>
124-
<argument name="templateIdentifier" defaultValue="{{PageBuilderTemplateNameRandom.name}}" type="string"/>
125-
</arguments>
136+
<actionGroup name="verifyCannotNavigateToPageBuilderTemplatesGridPage">
137+
<amOnPage url="{{PageBuilderTemplatesGridPage.url}}" stepKey="goToPageBuilderTemplatesGridPage"/>
126138
<waitForPageLoad stepKey="waitForPageLoad"/>
127-
<waitForElementVisible selector="{{PageBuilderTemplatePageGrid.deleteButton(templateIdentifier)}}" stepKey="waitForDeleteButton"/>
128-
<click selector="{{PageBuilderTemplatePageGrid.deleteButton(templateIdentifier)}}" stepKey="clickDeleteButton"/>
129-
<waitForPageLoad stepKey="waitForConfirmationModalLoad"/>
130-
<waitForElementVisible selector="{{PageBuilderDeleteTemplateConfirmationModal.modal}}" stepKey="waitForConfirmationModalVisible"/>
131-
<waitForElementVisible selector="{{PageBuilderDeleteTemplateConfirmationModal.okButton}}" stepKey="waitForConfirmationModalOKButton"/>
132-
<click selector="{{PageBuilderDeleteTemplateConfirmationModal.okButton}}" stepKey="clickConfirmationModalOKButton"/>
133-
<waitForPageLoad stepKey="waitForDelete"/>
134-
<see userInput="Template successfully deleted." stepKey="seeSuccessMessage"/>
139+
<waitForElementVisible selector="{{PageBuilderTemplatePageGrid.pageTitle}}" stepKey="waitForPageTitle"/>
140+
<see userInput="Magento Admin" selector="{{PageBuilderTemplatePageGrid.pageTitle}}" stepKey="seePageTitle"/>
141+
<see selector="{{AdminHeaderSection.pageHeading}}" userInput="Sorry, you need permissions to view this content." stepKey="seeErrorMessage"/>
142+
<waitForElementVisible selector="{{AdminMenuSection.content}}" stepKey="waitForContent"/>
143+
<click selector="{{AdminMenuSection.content}}" stepKey="clickContent"/>
144+
<waitForPageLoad stepKey="waitForMenu"/>
145+
<seeElement selector="{{AdminMenuSection.menuItem('magento-backend-content-elements')}}" stepKey="seeElementsSection"/>
146+
<see userInput="Pages" selector="{{AdminMenuSection.menuItem('magento-backend-content-elements')}}" stepKey="seeTemplates"/>
147+
<dontSee userInput="Templates" selector="{{AdminMenuSection.menuItem('magento-backend-content-elements')}}" stepKey="dontSeeTemplates"/>
135148
</actionGroup>
136149
<actionGroup name="filterPageBuilderTemplateGrid">
137150
<arguments>
@@ -153,6 +166,66 @@
153166
<waitForPageLoad stepKey="waitForClearFilters"/>
154167
<dontSeeElement selector="{{PageBuilderTemplateGridFilter.clearFilters}}" stepKey="dontSeeClearFilters"/>
155168
</actionGroup>
169+
<actionGroup name="validatePageBuilderTemplateDataInGrid">
170+
<arguments>
171+
<argument name="section" defaultValue="PageBuilderTemplatePageGrid"/>
172+
<argument name="templateName" defaultValue="{{PageBuilderTemplateNameRandom.name}}" type="string"/>
173+
<argument name="createdFor" defaultValue="{{PageBuilderTemplateCreatedFor.any}}" type="string"/>
174+
<argument name="createdDate" defaultValue="" type="string"/>
175+
<argument name="rowIndex" defaultValue="1" type="string"/>
176+
</arguments>
177+
<waitForPageLoad stepKey="waitForGridLoad"/>
178+
<grabTextFrom selector="{{section.templateId(rowIndex)}}" stepKey="grabTemplateId"/>
179+
<assertGreaterThan stepKey="assertGreaterThanZero">
180+
<expectedResult type="int">0</expectedResult>
181+
<actualResult type="variable">grabTemplateId</actualResult>
182+
</assertGreaterThan>
183+
<seeElement selector="{{section.image(rowIndex)}}" stepKey="seeImage"/>
184+
<executeJS function="return document.evaluate(&quot;{{section.image(rowIndex)}}&quot;, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.naturalHeight" stepKey="screenshotNaturalHeight"/>
185+
<executeJS function="return document.evaluate(&quot;{{section.image(rowIndex)}}&quot;, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.naturalWidth" stepKey="screenshotNaturalWidth"/>
186+
<assertGreaterThan stepKey="assertNaturalHeightGreaterThanZero">
187+
<expectedResult type="int">0</expectedResult>
188+
<actualResult type="variable">screenshotNaturalHeight</actualResult>
189+
</assertGreaterThan>
190+
<assertGreaterThan stepKey="assertNaturalWidthGreaterThanZero">
191+
<expectedResult type="int">0</expectedResult>
192+
<actualResult type="variable">screenshotNaturalWidth</actualResult>
193+
</assertGreaterThan>
194+
<see userInput="{{templateName}}" selector="{{section.templateName(rowIndex)}}" stepKey="seeTemplateName"/>
195+
<!-- <see userInput="{{createdFor}}" selector="{{section.createdFor(rowIndex)}}" stepKey="seeCreatedFor"/>-->
196+
<!-- <see userInput="{{createdDate}}" selector="{{section.createdDate(rowIndex)}}" stepKey="seeCreatedDate"/>-->
197+
</actionGroup>
198+
<actionGroup name="validatePageBuilderTemplateEmptyGrid">
199+
<arguments>
200+
<argument name="section" defaultValue="PageBuilderTemplatePageGrid"/>
201+
</arguments>
202+
<waitForPageLoad stepKey="waitForGridLoad"/>
203+
<waitForElementVisible selector="{{section.emptyGrid}}" stepKey="waitForEmptyGrid"/>
204+
<see userInput="We couldn't find any records." selector="{{section.emptyGrid}}" stepKey="seeEmptyGridMessage"/>
205+
</actionGroup>
206+
<actionGroup name="deletePageBuilderTemplate">
207+
<arguments>
208+
<argument name="templateIdentifier" defaultValue="{{PageBuilderTemplateNameRandom.name}}" type="string"/>
209+
</arguments>
210+
<waitForPageLoad stepKey="waitForPageLoad"/>
211+
<waitForElementVisible selector="{{PageBuilderTemplatePageGrid.deleteButton(templateIdentifier)}}" stepKey="waitForDeleteButton"/>
212+
<click selector="{{PageBuilderTemplatePageGrid.deleteButton(templateIdentifier)}}" stepKey="clickDeleteButton"/>
213+
<waitForPageLoad stepKey="waitForConfirmationModalLoad"/>
214+
<waitForElementVisible selector="{{PageBuilderDeleteTemplateConfirmationModal.modal}}" stepKey="waitForConfirmationModalVisible"/>
215+
<waitForElementVisible selector="{{PageBuilderDeleteTemplateConfirmationModal.okButton}}" stepKey="waitForConfirmationModalOKButton"/>
216+
<click selector="{{PageBuilderDeleteTemplateConfirmationModal.okButton}}" stepKey="clickConfirmationModalOKButton"/>
217+
<waitForPageLoad stepKey="waitForDelete"/>
218+
<see userInput="Template successfully deleted." stepKey="seeSuccessMessage"/>
219+
</actionGroup>
220+
<actionGroup name="verifyNoPageBuilderDeleteTemplateButton">
221+
<arguments>
222+
<argument name="templateIdentifier" defaultValue="{{PageBuilderTemplateNameRandom.name}}" type="string"/>
223+
</arguments>
224+
<waitForPageLoad stepKey="waitForPageLoad"/>
225+
<waitForElementVisible selector="{{PageBuilderTemplatePageGrid.templateName('1')}}" stepKey="waitForTemplateName"/>
226+
<see userInput="{{templateIdentifier}}" selector="{{PageBuilderTemplatePageGrid.templateName('1')}}" stepKey="seeTemplateName"/>
227+
<dontSeeElementInDOM selector="{{PageBuilderTemplatePageGrid.deleteButton(templateIdentifier)}}" stepKey="dontSeeDeleteTemplateButton"/>
228+
</actionGroup>
156229
<!-- todo: search by keyword in grid-->
157-
<!-- todo: actiongroup descriptions-->
230+
<!-- todo: actiongroup descriptions-->
158231
</actionGroups>

0 commit comments

Comments
 (0)