Skip to content

Commit c303a47

Browse files
authored
Merge pull request #239 from magento-obsessive-owls/mftf-delivery
Mftf delivery
2 parents d04426e + ed1ba05 commit c303a47

File tree

61 files changed

+6271
-1430
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+6271
-1430
lines changed

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@
178178
<actionGroup name="validateBackgroundImageContainer">
179179
<arguments>
180180
<argument name="section"/>
181-
<argument name="pageNamePrefix" defaultValue="admin" type="string"/>
182181
<argument name="backgroundImage"/>
183182
<argument name="index" defaultValue="1" type="string"/>
184183
</arguments>
@@ -187,8 +186,7 @@
187186
<!-- Retrieve background image from computed styles -->
188187
<executeJS function="return window.getComputedStyle({{section.baseJS(index)}}).backgroundImage" stepKey="backgroundImageValue"/>
189188
<!-- Grab base URL -->
190-
<executeJS function="return '{{pageNamePrefix}}'" stepKey="pageNamePrefix"/>
191-
<grabFromCurrentUrl regex="/(^.+(?=\/$pageNamePrefix))/" stepKey="baseURL"/>
189+
<executeJS function="return window.location.origin" stepKey="baseURL"/>
192190
<!-- Convert all characters in string variables to regex friendly strings -->
193191
<executeJS function="return '{$baseURL}'.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\\\^\\$\|]/g, '\\\\$&amp;')" stepKey="regexBaseURL"/>
194192
<executeJS function="return '{{backgroundImage.path}}'.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\\\^\\$\|]/g, '\\\\$&amp;')" stepKey="regexFilePath"/>

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

+27-8
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,21 @@
1212
<arguments>
1313
<argument name="block" defaultValue=""/>
1414
</arguments>
15+
<waitForElementVisible selector="{{BlockOnForm.selectBlockBtn}}" stepKey="waitForSelectBlockBtn"/>
1516
<click selector="{{BlockOnForm.selectBlockBtn}}" stepKey="clickSelectBlockBtn"/>
17+
<waitForPageLoad stepKey="waitForGridSlideOut"/>
1618
<waitForElementVisible selector="{{BlockOnGrid.searchBox}}" stepKey="waitForBlockGrid" />
1719
<fillField selector="{{BlockOnGrid.searchBox}}" userInput="{{block.identifier}}" stepKey="enterBlockTitle"/>
18-
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear"/>
20+
<waitForPageLoad stepKey="waitForPageLoad"/>
1921
<click selector="{{BlockOnGrid.searchBtn}}" stepKey="clickSearchBtn"/>
20-
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear2"/>
22+
<waitForPageLoad stepKey="waitForPageLoad2"/>
2123
<waitForElementVisible selector="{{BlockOnGrid.selectBtn(block.identifier)}}" stepKey="waitForSearchResult"/>
2224
<click selector="{{BlockOnGrid.selectBtn(block.identifier)}}" stepKey="clickSelectBtn"/>
23-
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear3"/>
25+
<waitForPageLoad stepKey="waitForPageLoad3"/>
2426
<waitForElementVisible selector="{{BlockOnGrid.addSelectedBtn}}" stepKey="waitForAddSelected"/>
2527
<click selector="{{BlockOnGrid.addSelectedBtn}}" stepKey="clickAddSelected"/>
26-
<waitForPageLoad stepKey="waitForPageLoad"/>
28+
<waitForPageLoad stepKey="waitForPageLoad4"/>
29+
<waitForElementVisible selector="{{BlockOnForm.title(block.title)}}" stepKey="waitToSeeBlockTitle"/>
2730
</actionGroup>
2831
<actionGroup name="verifyBlockOnStage">
2932
<arguments>
@@ -44,6 +47,7 @@
4447
<argument name="minHeight"/>
4548
<argument name="padding"/>
4649
<argument name="index" defaultValue="1" type="string"/>
50+
<argument name="acceptableOffset" defaultValue="2" type="string"/>
4751
</arguments>
4852
<executeJS function="return document.querySelectorAll('{{block.baseCSS}} {{container.baseCSS}}')[{{index}}-1].clientHeight;" stepKey="containerHeight"/>
4953
<assertGreaterThanOrEqual stepKey="assertContainerHeightGreaterThanOrEqualMinHeight">
@@ -52,10 +56,25 @@
5256
</assertGreaterThanOrEqual>
5357
<executeJS function="return document.querySelectorAll('{{block.baseCSS}} {{container.baseCSS}}')[{{index}}-1].getBoundingClientRect().bottom-{{padding.paddingBottom}}" stepKey="containerBottomPositionMinusPadding"/>
5458
<executeJS function="return document.querySelectorAll('{{block.baseCSS}} {{content.baseCSS}}')[{{index}}-1].getBoundingClientRect().bottom" stepKey="contentBottomPosition"/>
55-
<executeJS function="return Math.round(({$containerBottomPositionMinusPadding}/{$contentBottomPosition})*100)/100" stepKey="bottomPositionRatio"/>
56-
<assertEquals stepKey="assertBottomPositionRatio">
57-
<expectedResult type="int">1</expectedResult>
58-
<actualResult type="variable">bottomPositionRatio</actualResult>
59+
<executeJS function="return Math.abs({$containerBottomPositionMinusPadding} - {$contentBottomPosition})" stepKey="bottomPositionDifference"/>
60+
<assertLessThanOrEqual stepKey="assertBottomPosition">
61+
<expectedResult type="int">{{acceptableOffset}}</expectedResult>
62+
<actualResult type="variable">bottomPositionDifference</actualResult>
63+
</assertLessThanOrEqual>
64+
</actionGroup>
65+
<actionGroup name="verifyVerticalAlignmentCenterInBlock">
66+
<arguments>
67+
<argument name="block" defaultValue="BlockOnStorefront"/>
68+
<argument name="container"/>
69+
<argument name="containerIndex" defaultValue="1" type="string"/>
70+
<argument name="content"/>
71+
<argument name="contentIndex" defaultValue="1" type="string"/>
72+
</arguments>
73+
<executeJS function="return document.querySelectorAll('{{block.baseCSS}} {{container.baseCSS}}')[{{containerIndex}}-1].clientHeight/2 + document.querySelectorAll('{{block.baseCSS}} {{container.baseCSS}}')[{{containerIndex}}-1].getBoundingClientRect().top" stepKey="containerCenter"/>
74+
<executeJS function="return document.querySelectorAll('{{block.baseCSS}} {{content.baseCSS}}')[{{contentIndex}}-1].clientHeight/2 + document.querySelectorAll('{{block.baseCSS}} {{content.baseCSS}}')[{{contentIndex}}-1].getBoundingClientRect().top" stepKey="contentCenter"/>
75+
<assertEquals stepKey="assertBottomPosition">
76+
<expectedResult type="variable">containerCenter</expectedResult>
77+
<actualResult type="variable">contentCenter</actualResult>
5978
</assertEquals>
6079
</actionGroup>
6180
<actionGroup name="verifyAlignmentRightInBlock">

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

+75-16
Original file line numberDiff line numberDiff line change
@@ -23,38 +23,38 @@
2323
<waitForElementVisible time="10" selector="{{PageBuilderContentTypeOptionsMenu.contentTypeOptionsMenuByIndex(contentType.role, contentTypeIndex)}}" stepKey="waitForOptions"/>
2424
<waitForElementVisible selector="{{ColumnOnBackend.columnMoveByIndex(contentTypeIndex)}}" stepKey="waitForMoveHandle"/>
2525
<dragAndDrop selector1="{{ColumnOnBackend.columnMoveByIndex(contentTypeIndex)}}" selector2="{{PageBuilderStage.contentTypeContainer(contentType.role, containerTargetIndex)}}" stepKey="moveContentTypeIntoContainer"/>
26-
<waitForPageLoad stepKey="waitForDragOperation" />
26+
<waitForPageLoad stepKey="waitForDragOperation"/>
2727
</actionGroup>
2828
<actionGroup name="openGridSizeForm">
2929
<arguments>
3030
<argument name="index" defaultValue="1" type="string"/>
3131
</arguments>
32-
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeButton(index)}}" stepKey="waitForGridSizeButtonVisible" />
33-
<click selector="{{ColumnOnBackend.gridSizeButton(index)}}" stepKey="clickGridSizeButton" />
34-
<waitForPageLoad stepKey="waitForAnimation" />
35-
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeInput(index)}}" stepKey="waitForGridVisible" />
32+
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeButton(index)}}" stepKey="waitForGridSizeButtonVisible"/>
33+
<click selector="{{ColumnOnBackend.gridSizeButton(index)}}" stepKey="clickGridSizeButton"/>
34+
<waitForPageLoad stepKey="waitForAnimation"/>
35+
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeInput(index)}}" stepKey="waitForGridVisible"/>
3636
</actionGroup>
3737
<actionGroup name="closeGridSizeForm">
3838
<arguments>
3939
<argument name="index" defaultValue="1" type="string"/>
4040
</arguments>
41-
<click selector="{{ColumnOnBackend.columnX('1')}}" stepKey="clickColumn" />
42-
<waitForPageLoad stepKey="waitForAnimation" />
43-
<waitForElementNotVisible selector="{{ColumnOnBackend.gridSizeInput(index)}}" stepKey="waitForGridNotVisible" />
41+
<click selector="{{ColumnOnBackend.columnX('1')}}" stepKey="clickColumn"/>
42+
<waitForPageLoad stepKey="waitForAnimation"/>
43+
<waitForElementNotVisible selector="{{ColumnOnBackend.gridSizeInput(index)}}" stepKey="waitForGridNotVisible"/>
4444
</actionGroup>
4545
<actionGroup name="updateGridSize">
4646
<arguments>
4747
<argument name="index" defaultValue="1" type="string"/>
4848
<argument name="gridSize" defaultValue="12" type="string"/>
4949
</arguments>
50-
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeButton(index)}}" stepKey="waitForGridSizeButtonVisible" />
51-
<click selector="{{ColumnOnBackend.gridSizeButton(index)}}" stepKey="clickGridSizeButton" />
52-
<waitForPageLoad stepKey="waitForAnimation" />
53-
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeInput(index)}}" stepKey="waitForGridVisible" />
50+
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeButton(index)}}" stepKey="waitForGridSizeButtonVisible"/>
51+
<click selector="{{ColumnOnBackend.gridSizeButton(index)}}" stepKey="clickGridSizeButton"/>
52+
<waitForPageLoad stepKey="waitForAnimation"/>
53+
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeInput(index)}}" stepKey="waitForGridVisible"/>
5454
<fillField selector="{{ColumnOnBackend.gridSizeInput(index)}}" userInput="{{gridSize}}" stepKey="enterGridSize"/>
5555
<pressKey selector="{{ColumnOnBackend.gridSizeInput(index)}}" parameterArray="['su',\Facebook\WebDriver\WebDriverKeys::ENTER]" stepKey="pressKeyEnter"/>
56-
<waitForPageLoad stepKey="waitForUpdate" />
57-
<waitForElementVisible selector="{{ColumnOnBackend.displayLabelGridSize(index, gridSize)}}" stepKey="validateGridSize" />
56+
<waitForPageLoad stepKey="waitForUpdate"/>
57+
<waitForElementVisible selector="{{ColumnOnBackend.displayLabelGridSize(index, gridSize)}}" stepKey="validateGridSize"/>
5858
</actionGroup>
5959
<actionGroup name="updateGridSizeInvalid">
6060
<arguments>
@@ -63,8 +63,67 @@
6363
<argument name="errorMessage"/>
6464
</arguments>
6565
<fillField selector="{{ColumnOnBackend.gridSizeInput(index)}}" userInput="{{gridSize}}" stepKey="enterGridSize"/>
66-
<click selector="{{ColumnOnBackend.columnX(index)}}" stepKey="clickColumn" />
67-
<waitForPageLoad stepKey="waitForAnimation" />
66+
<click selector="{{ColumnOnBackend.columnX(index)}}" stepKey="clickColumn"/>
67+
<waitForPageLoad stepKey="waitForAnimation"/>
6868
<waitForElementVisible selector="{{ColumnOnBackend.gridSizeError(index, errorMessage)}}" stepKey="verifyError"/>
6969
</actionGroup>
70+
<actionGroup name="validateColumnAppearanceFullHeight">
71+
<arguments>
72+
<argument name="section" defaultValue="ColumnOnBackend"/>
73+
<argument name="columnIndex" defaultValue="1" type="string"/>
74+
<argument name="columnGroupIndex" defaultValue="1" type="string"/>
75+
<argument name="acceptableOffset" defaultValue="2" type="string"/>
76+
</arguments>
77+
<comment userInput="validateColumnAppearanceFullHeight" stepKey="comment"/>
78+
<waitForElementVisible selector="{{section.columnGroup(columnGroupIndex)}}" stepKey="waitForColumnGroup"/>
79+
<waitForElementVisible selector="{{section.base(columnIndex)}}" stepKey="waitForColumn"/>
80+
<seeElement selector="{{section.appearance(columnIndex, PageBuilderColumnAppearanceProperty_FullHeight.value)}}" stepKey="seeColumnAppearance"/>
81+
<executeJS function="return document.querySelectorAll('{{section.allColumnGroups}}')[{{columnGroupIndex}}-1].clientHeight" stepKey="columnGroupHeight"/>
82+
<executeJS function="return document.querySelectorAll('{{section.baseCSS}}')[{{columnIndex}}-1].clientHeight" stepKey="individualColumnHeight"/>
83+
<executeJS function="return Math.round(Math.abs({$columnGroupHeight}-{$individualColumnHeight}))" stepKey="heightDifference"/>
84+
<assertLessThan stepKey="assertColumnHeightEqualToColumnGroupHeight">
85+
<expectedResult type="int">{{acceptableOffset}}</expectedResult>
86+
<actualResult type="variable">heightDifference</actualResult>
87+
</assertLessThan>
88+
</actionGroup>
89+
<actionGroup name="validateColumnAppearanceTopAligned">
90+
<arguments>
91+
<argument name="section" defaultValue="ColumnOnBackend"/>
92+
<argument name="height" defaultValue="PageBuilderMinHeightProperty_300"/>
93+
<argument name="columnIndex" defaultValue="1" type="string"/>
94+
<argument name="columnGroupIndex" defaultValue="1" type="string"/>
95+
<argument name="acceptableOffset" defaultValue="2" type="string"/>
96+
</arguments>
97+
<comment userInput="validateColumnAppearanceTopAligned" stepKey="comment"/>
98+
<waitForElementVisible selector="{{section.columnGroup(columnGroupIndex)}}" stepKey="waitForColumnGroup"/>
99+
<waitForElementVisible selector="{{section.base(columnIndex)}}" stepKey="waitForColumn"/>
100+
<seeElement selector="{{section.appearance(columnIndex, PageBuilderColumnAppearanceProperty_Top.value)}}" stepKey="seeColumnAppearance"/>
101+
<executeJS function="return document.querySelectorAll('{{section.baseCSS}}')[{{columnIndex}}-1].clientHeight" stepKey="individualColumnHeight"/>
102+
<executeJS function="return Math.round(Math.abs({$individualColumnHeight}-{{height.value}}))" stepKey="heightDifference"/>
103+
<!-- Validate height of column -->
104+
<assertLessThanOrEqual stepKey="assertContentHeightAcceptable">
105+
<expectedResult type="int">{{acceptableOffset}}</expectedResult>
106+
<actualResult type="variable">heightDifference</actualResult>
107+
</assertLessThanOrEqual>
108+
<executeJS function="return document.querySelectorAll('{{section.allColumnGroups}}')[{{columnGroupIndex}}-1].getBoundingClientRect().top" stepKey="topOfColumnGroup"/>
109+
<executeJS function="return document.querySelectorAll('{{section.baseCSS}}')[{{columnIndex}}-1].getBoundingClientRect().top" stepKey="topOfIndividualColumn"/>
110+
<executeJS function="return Math.round(Math.abs({$topOfColumnGroup}-{$topOfIndividualColumn}))" stepKey="topOfColumnDifference"/>
111+
<!-- Validate position of column -->
112+
<assertLessThan stepKey="assertTopOfColumnAcceptable">
113+
<expectedResult type="int">{{acceptableOffset}}</expectedResult>
114+
<actualResult type="variable">topOfColumnDifference</actualResult>
115+
</assertLessThan>
116+
</actionGroup>
117+
<actionGroup name="validateColumnAppearanceCenterAligned" extends="validateColumnAppearanceTopAligned">
118+
<comment userInput="validateColumnAppearanceCenterAligned" stepKey="comment"/>
119+
<seeElement selector="{{section.appearance(columnIndex, PageBuilderColumnAppearanceProperty_Center.value)}}" stepKey="seeColumnAppearance"/>
120+
<executeJS function="return Math.round(document.querySelectorAll('{{section.allColumnGroups}}')[{{columnGroupIndex}}-1].getBoundingClientRect().top + (document.querySelectorAll('{{section.allColumnGroups}}')[{{columnGroupIndex}}-1].clientHeight / 2))" stepKey="topOfColumnGroup"/>
121+
<executeJS function="return Math.round(document.querySelectorAll('{{section.baseCSS}}')[{{columnIndex}}-1].getBoundingClientRect().top + (document.querySelectorAll('{{section.baseCSS}}')[{{columnIndex}}-1].clientHeight / 2))" stepKey="topOfIndividualColumn"/>
122+
</actionGroup>
123+
<actionGroup name="validateColumnAppearanceBottomAligned" extends="validateColumnAppearanceTopAligned">
124+
<comment userInput="validateColumnAppearanceBottomAligned" stepKey="comment"/>
125+
<seeElement selector="{{section.appearance(columnIndex, PageBuilderColumnAppearanceProperty_Bottom.value)}}" stepKey="seeColumnAppearance"/>
126+
<executeJS function="return document.querySelectorAll('{{section.allColumnGroups}}')[{{columnGroupIndex}}-1].getBoundingClientRect().bottom" stepKey="topOfColumnGroup"/>
127+
<executeJS function="return document.querySelectorAll('{{section.baseCSS}}')[{{columnIndex}}-1].getBoundingClientRect().bottom" stepKey="topOfIndividualColumn"/>
128+
</actionGroup>
70129
</actionGroups>

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

+18
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,22 @@
5757
<waitForElementVisible selector="{{page.thickness(index, thickness.value)}}" stepKey="waitForThicknessVisible"/>
5858
<waitForElementVisible selector="{{page.noWidth(index)}}" stepKey="waitForWidthVisible"/>
5959
</actionGroup>
60+
<actionGroup name="validateDividerWidthPercentage">
61+
<arguments>
62+
<argument name="page"/>
63+
<argument name="dividerWidth" defaultValue="PageBuilderDividerLineWidth_Default"/>
64+
<argument name="padding" defaultValue="PageBuilderPaddingProperty10"/>
65+
<argument name="border" defaultValue="PageBuilderAdvancedBorderWidthProperty0"/>
66+
<argument name="index" defaultValue="1" type="string"/>
67+
<!-- expectedOffset is necessary because divider width is equal to (expected width) + (line thickness attribute*2) in admin when rendered through Block -->
68+
<argument name="expectedOffset" defaultValue="0" type="string"/>
69+
</arguments>
70+
<!-- Check width of line against width of container -->
71+
<executeJS function="return Math.round(((document.querySelectorAll('{{page.baseCSS}}')[{{index}}-1].getBoundingClientRect().width) - {{padding.paddingLeft}} - {{padding.paddingRight}} - {{border.value}}*2)*{{dividerWidth.decimalValue}})" stepKey="expectedWidth"/>
72+
<executeJS function="return Math.round((document.querySelectorAll('{{page.lineElementCSS}}')[{{index}}-1].getBoundingClientRect().width)-{{expectedOffset}})" stepKey="lineWidth"/>
73+
<assertLessThanOrEqual stepKey="assertLineWidth">
74+
<expectedResult type="variable">expectedWidth</expectedResult>
75+
<actualResult type="variable">lineWidth</actualResult>
76+
</assertLessThanOrEqual>
77+
</actionGroup>
6078
</actionGroups>

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
<actionGroup name="validateImage">
2929
<arguments>
3030
<argument name="section"/>
31-
<argument name="pageNamePrefix" defaultValue="admin" type="string"/>
3231
<argument name="image"/>
3332
<argument name="index" defaultValue="1" type="string"/>
3433
</arguments>
@@ -38,8 +37,7 @@
3837
<grabAttributeFrom selector="{{section.imageSourceByIndex(index, image.fileName)}}" userInput="src" stepKey="contentTypeSrc"/>
3938
<!-- Grab base URL -->
4039
<comment userInput="Grab base URL" stepKey="commentGrabBaseUrl"/>
41-
<executeJS function="return '{{pageNamePrefix}}'" stepKey="pageNamePrefix"/>
42-
<grabFromCurrentUrl regex="/(^.+(?=\/$pageNamePrefix))/" stepKey="baseURL"/>
40+
<executeJS function="return window.location.origin" stepKey="baseURL"/>
4341
<!-- Convert all characters in string variables to regex friendly strings -->
4442
<comment userInput="Convert all characters in string variables to regex friendly strings" stepKey="commentConvert"/>
4543
<executeJS function="return '{$baseURL}'.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\\\^\\$\|]/g, '\\\\$&amp;')" stepKey="regexBaseURL"/>

0 commit comments

Comments
 (0)