Skip to content

Commit 36755e5

Browse files
authored
MQE-507: [Action Groups] Strange behavior with argument replacement in selector
- Changed str_replace to preg_replace, regex disallows replacement when the argument is attached to another word (cases like categorySideButton versus category.name) - Added Verification test for useCase
1 parent c724e5d commit 36755e5

File tree

5 files changed

+24
-1
lines changed

5 files changed

+24
-1
lines changed

dev/tests/verification/Resources/ActionGroupFunctionalCest.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,4 +162,15 @@ class ActionGroupFunctionalCest
162162
$I->amOnPage("/Jane/Dane.html");
163163
}
164164

165+
/**
166+
* @Parameter(name = "AcceptanceTester", value="$I")
167+
* @param AcceptanceTester $I
168+
* @return void
169+
*/
170+
public function ArgumentWithSameNameAsElement(AcceptanceTester $I)
171+
{
172+
$I->seeElement("#element");
173+
$I->seeElement("#element .John");
174+
}
175+
165176
}

dev/tests/verification/TestModule/ActionGroup/FunctionalActionGroup.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,11 @@
3838
<see selector="{{SampleSection.oneParamElement(myArg.firstname)}}" mergeKey="see1"/>
3939
<amOnPage url="{{SamplePage.url(myArg.firstname,myArg.lastname)}}" mergeKey="amOnPage1"/>
4040
</actionGroup>
41+
<actionGroup name="FunctionalActionGroupWithTrickyArgument">
42+
<arguments>
43+
<argument name="simple" defaultValue="simpleData"/>
44+
</arguments>
45+
<seeElement mergeKey="see1" selector="{{SampleSection.simpleElement}}"/>
46+
<seeElement mergeKey="see2" selector="{{SampleSection.simpleElementOneParam(simple.firstname)}}"/>
47+
</actionGroup>
4148
</config>

dev/tests/verification/TestModule/Cest/ActionGroupFunctionalCest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,8 @@
6767
<argument name="myArg" value="DefaultPerson"/>
6868
</actionGroup>
6969
</test>
70+
<test name="ArgumentWithSameNameAsElement">
71+
<actionGroup ref="FunctionalActionGroupWithTrickyArgument" mergeKey="actionGroup1"/>
72+
</test>
7073
</cest>
7174
</config>

dev/tests/verification/TestModule/Section/SampleSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
xsi:noNamespaceSchemaLocation="../../../../../src/Magento/FunctionalTestingFramework/Page/etc/SectionObject.xsd">
1111
<section name="SampleSection">
1212
<element name="simpleElement" type="button" selector="#element"/>
13+
<element name="simpleElementOneParam" type="button" selector="#element .{{var1}}" parameterized="true"/>
1314
<element name="oneParamElement" type="button" selector="#element .{{var1}}" parameterized="true"/>
1415
<element name="twoParamElement" type="button" selector="#{{var1}} .{{var2}}" parameterized="true"/>
1516
<element name="threeParamElement" type="button" selector="#{{var1}}-{{var2}} .{{var3}}" parameterized="true"/>

src/Magento/FunctionalTestingFramework/Test/Objects/ActionGroupObject.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,8 @@ private function replaceAttributeArgumentInVariable(
217217
);
218218
}
219219

220-
return str_replace($variableName, $arguments[$variableName], $attributeValue);
220+
//replace argument ONLY when there is no letters attached before after (ex. category.name vs categoryTreeButton)
221+
return preg_replace("/(?<![\w]){$variableName}(?![(\w])/", $arguments[$variableName], $attributeValue);
221222
}
222223

223224
/**

0 commit comments

Comments
 (0)