Skip to content

Commit ed03615

Browse files
committed
MQE-433: Create merge step/action-group verification tests
- add new verification tests around action-group - edit action group arg in unit test for failure - add verification tests around merge of xml
1 parent fb88f3a commit ed03615

31 files changed

+576
-86
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/Test/Util/ActionMergeUtilTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class ActionMergeUtilTest extends TestCase
3030
*/
3131
public static function setUpBeforeClass()
3232
{
33-
self::$MERGE_UTIL = new ActionMergeUtil();
33+
self::$MERGE_UTIL = new ActionMergeUtil("actionMergeUtilTest", "TestCase");
3434
}
3535

3636
/**
@@ -149,7 +149,7 @@ public function testResolveActionStepEntityData()
149149

150150
$this->assertEquals($userinputValue, $actions[$actionName]->getCustomActionAttributes()[$userInputKey]);
151151

152-
$mergeUtil = new ActionMergeUtil();
152+
$mergeUtil = new ActionMergeUtil("test", "TestCase");
153153
$resolvedActions = $mergeUtil->resolveActionSteps($actions);
154154

155155
$this->assertEquals($dataFieldValue, $resolvedActions[$actionName]->getCustomActionAttributes()[$userInputKey]);
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
<?php
2+
namespace Magento\AcceptanceTest\_generated\Backend;
3+
4+
use Magento\FunctionalTestingFramework\AcceptanceTester;
5+
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\DataObjectHandler;
6+
use Magento\FunctionalTestingFramework\DataGenerator\Persist\DataPersistenceHandler;
7+
use Magento\FunctionalTestingFramework\DataGenerator\Objects\EntityDataObject;
8+
use Yandex\Allure\Adapter\Annotation\Features;
9+
use Yandex\Allure\Adapter\Annotation\Stories;
10+
use Yandex\Allure\Adapter\Annotation\Title;
11+
use Yandex\Allure\Adapter\Annotation\Description;
12+
use Yandex\Allure\Adapter\Annotation\Parameter;
13+
use Yandex\Allure\Adapter\Annotation\Severity;
14+
use Yandex\Allure\Adapter\Model\SeverityLevel;
15+
use Yandex\Allure\Adapter\Annotation\TestCaseId;
16+
17+
/**
18+
* @Severity(level = SeverityLevel::CRITICAL)
19+
* @Title("Title")
20+
* @group functional
21+
* @Features({"Action Group Functional Cest"})
22+
* @Stories({"MQE-433"})
23+
*/
24+
class ActionGroupFunctionalCest
25+
{
26+
/**
27+
* @var DataPersistenceHandler $createPersonParam;
28+
*/
29+
protected $createPersonParam;
30+
31+
public function _before(AcceptanceTester $I)
32+
{
33+
$I->amGoingTo("create entity that has the mergeKey: createPersonParam");
34+
$replacementPerson = DataObjectHandler::getInstance()->getObject("replacementPerson");
35+
$this->createPersonParam = new DataPersistenceHandler($replacementPerson);
36+
$this->createPersonParam->createEntity();
37+
}
38+
39+
/**
40+
* @Parameter(name = "AcceptanceTester", value="$I")
41+
* @param AcceptanceTester $I
42+
* @return void
43+
*/
44+
public function BasicActionGroupTest(AcceptanceTester $I)
45+
{
46+
$I->amOnPage("/someUrl");
47+
$I->fillField("#foo", "myData1");
48+
$I->fillField("#bar", "myData2");
49+
$I->click("loginButton");
50+
}
51+
52+
/**
53+
* @Parameter(name = "AcceptanceTester", value="$I")
54+
* @param AcceptanceTester $I
55+
* @return void
56+
*/
57+
public function ActionGroupWithDataTest(AcceptanceTester $I)
58+
{
59+
$I->amOnPage("/someUrl");
60+
$I->amOnPage("/Jane/Dane.html");
61+
$I->fillField("#foo", "Jane");
62+
$I->fillField("#bar", "Dane");
63+
$I->searchAndMultiSelectOption("#foo", ["Jane", "Dane"]);
64+
$I->see("#element .Jane");
65+
$I->click("loginButton");
66+
}
67+
68+
/**
69+
* @Parameter(name = "AcceptanceTester", value="$I")
70+
* @param AcceptanceTester $I
71+
* @return void
72+
*/
73+
public function ActionGroupWithDataOverrideTest(AcceptanceTester $I)
74+
{
75+
$I->amOnPage("/someUrl");
76+
$I->amOnPage("/John/Doe.html");
77+
$I->fillField("#foo", "John");
78+
$I->fillField("#bar", "Doe");
79+
$I->searchAndMultiSelectOption("#foo", ["John", "Doe"]);
80+
$I->see("#element .John");
81+
$I->click("loginButton");
82+
}
83+
84+
/**
85+
* @Parameter(name = "AcceptanceTester", value="$I")
86+
* @param AcceptanceTester $I
87+
* @return void
88+
*/
89+
public function ActionGroupWithNoDefaultTest(AcceptanceTester $I)
90+
{
91+
$I->amOnPage("/someUrl");
92+
$I->fillField("#foo", "Jane");
93+
$I->fillField("#bar", "Dane");
94+
$I->see("#Jane .Dane");
95+
$I->click("loginButton");
96+
}
97+
98+
/**
99+
* @Parameter(name = "AcceptanceTester", value="$I")
100+
* @param AcceptanceTester $I
101+
* @return void
102+
*/
103+
public function ActionGroupWithPersistedData(AcceptanceTester $I)
104+
{
105+
$I->amGoingTo("create entity that has the mergeKey: createPerson");
106+
$defaultPerson = DataObjectHandler::getInstance()->getObject("defaultPerson");
107+
$createPerson = new DataPersistenceHandler($defaultPerson);
108+
$createPerson->createEntity();
109+
$I->amOnPage("/" . $createPerson->getCreatedDataByName('firstname') . "/" . $createPerson->getCreatedDataByName('lastname') . ".html");
110+
$I->fillField("#foo", $createPerson->getCreatedDataByName('firstname'));
111+
$I->fillField("#bar", $createPerson->getCreatedDataByName('lastname'));
112+
$I->searchAndMultiSelectOption("#foo", [$createPerson->getCreatedDataByName('firstname') . "", "" . $createPerson->getCreatedDataByName('lastname')]);
113+
$I->see("#element ." . $createPerson->getCreatedDataByName('firstname'));
114+
}
115+
116+
/**
117+
* @Parameter(name = "AcceptanceTester", value="$I")
118+
* @param AcceptanceTester $I
119+
* @return void
120+
*/
121+
public function ActionGroupWithTopLevelPersistedData(AcceptanceTester $I)
122+
{
123+
$I->amOnPage("/" . $this->createPersonParam->getCreatedDataByName('firstname') . "/" . $this->createPersonParam->getCreatedDataByName('lastname') . ".html");
124+
$I->fillField("#foo", $this->createPersonParam->getCreatedDataByName('firstname'));
125+
$I->fillField("#bar", $this->createPersonParam->getCreatedDataByName('lastname'));
126+
$I->searchAndMultiSelectOption("#foo", [$this->createPersonParam->getCreatedDataByName('firstname') . "", "" . $this->createPersonParam->getCreatedDataByName('lastname')]);
127+
$I->see("#element ." . $this->createPersonParam->getCreatedDataByName('firstname'));
128+
}
129+
130+
/**
131+
* @Parameter(name = "AcceptanceTester", value="$I")
132+
* @param AcceptanceTester $I
133+
* @return void
134+
*/
135+
public function MultipleActionGroupsTest(AcceptanceTester $I)
136+
{
137+
$I->amOnPage("/someUrl");
138+
$I->amOnPage("/Jane/Dane.html");
139+
$I->fillField("#foo", "Jane");
140+
$I->fillField("#bar", "Dane");
141+
$I->searchAndMultiSelectOption("#foo", ["Jane", "Dane"]);
142+
$I->see("#element .Jane");
143+
$I->click("loginButton");
144+
$I->amOnPage("/John/Doe.html");
145+
$I->fillField("#foo", "John");
146+
$I->fillField("#bar", "Doe");
147+
$I->searchAndMultiSelectOption("#foo", ["John", "Doe"]);
148+
$I->see("#element .John");
149+
}
150+
151+
/**
152+
* @Parameter(name = "AcceptanceTester", value="$I")
153+
* @param AcceptanceTester $I
154+
* @return void
155+
*/
156+
public function MergedActionGroupTest(AcceptanceTester $I)
157+
{
158+
$I->see("#element .Jane");
159+
$I->see(".merge .Jane");
160+
$I->click(".merge .Dane");
161+
$I->amOnPage("/Jane/Dane.html");
162+
}
163+
164+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?php
2+
namespace Magento\AcceptanceTest\_generated\Backend;
3+
4+
use Magento\FunctionalTestingFramework\AcceptanceTester;
5+
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\DataObjectHandler;
6+
use Magento\FunctionalTestingFramework\DataGenerator\Persist\DataPersistenceHandler;
7+
use Magento\FunctionalTestingFramework\DataGenerator\Objects\EntityDataObject;
8+
use Yandex\Allure\Adapter\Annotation\Features;
9+
use Yandex\Allure\Adapter\Annotation\Stories;
10+
use Yandex\Allure\Adapter\Annotation\Title;
11+
use Yandex\Allure\Adapter\Annotation\Description;
12+
use Yandex\Allure\Adapter\Annotation\Parameter;
13+
use Yandex\Allure\Adapter\Annotation\Severity;
14+
use Yandex\Allure\Adapter\Model\SeverityLevel;
15+
use Yandex\Allure\Adapter\Annotation\TestCaseId;
16+
17+
/**
18+
* @Severity(level = SeverityLevel::CRITICAL)
19+
* @Title("Title")
20+
* @group mergeTest
21+
* @Features({"Merge Functional Cest"})
22+
* @Stories({"MQE-433"})
23+
*/
24+
class MergeFunctionalCest
25+
{
26+
public function _before(AcceptanceTester $I)
27+
{
28+
$I->amOnPage("/beforeUrl");
29+
$I->see("#before2");
30+
}
31+
32+
public function _after(AcceptanceTester $I)
33+
{
34+
$I->amOnPage("/afterUrl1");
35+
}
36+
37+
/**
38+
* @Parameter(name = "AcceptanceTester", value="$I")
39+
* @param AcceptanceTester $I
40+
* @return void
41+
*/
42+
public function BasicMergeTest(AcceptanceTester $I)
43+
{
44+
$I->amOnPage("/step1");
45+
$I->click("#step2");
46+
$I->fillField("#username", "step3");
47+
$I->click("#step4");
48+
$I->fillField("#password", "step5");
49+
$I->click("#step6Merged");
50+
$I->click("#element .Jane .step7Merge");
51+
$I->amOnPage("/Jane/Dane.html");
52+
$I->fillField("#foo", "Jane");
53+
$I->fillField("#bar", "Dane");
54+
$I->searchAndMultiSelectOption("#foo", ["Jane", "Dane"]);
55+
$I->see("#element .Jane");
56+
}
57+
58+
/**
59+
* @Parameter(name = "AcceptanceTester", value="$I")
60+
* @param AcceptanceTester $I
61+
* @return void
62+
*/
63+
public function MergedReferencesTest(AcceptanceTester $I)
64+
{
65+
$I->fillField("#merge", "merged");
66+
$I->fillField("#newElement", "newField");
67+
}
68+
69+
}

dev/tests/verification/Resources/ParameterArrayCest.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class ParameterArrayCest
3333
$I->searchAndMultiSelectOption("#selector", [msq("simpleParamData")."prename"]);
3434
$I->searchAndMultiSelectOption("#selector", ["postname".msq("simpleParamData")]);
3535
$I->searchAndMultiSelectOption("#selector", [$simpleDataKey->getCreatedDataByName('name')]);
36-
$I->searchAndMultiSelectOption("#selector", ["name", $simpleDataKey->getCreatedDataByName('name')]);
36+
$I->searchAndMultiSelectOption("#selector", ["name", "" . $simpleDataKey->getCreatedDataByName('name')]);
3737
$I->searchAndMultiSelectOption("#selector", ['someKey' => $simpleDataKey->getCreatedDataByName('name')]);
3838
$I->searchAndMultiSelectOption("#selector", ['someKey' => "name"]);
3939
$I->searchAndMultiSelectOption("#selector", ['someKey' => msq("simpleParamData")."prename"]);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="../../../../../src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd">
11+
<actionGroup name="functionalActionGroup">
12+
<fillField selector="#foo" userInput="myData1" mergeKey="fillField1"/>
13+
<fillField selector="#bar" userInput="myData2" mergeKey="fillField2"/>
14+
</actionGroup>
15+
<actionGroup name="functionalActionGroupWithData">
16+
<arguments>
17+
<argument name="person" defaultValue="defaultPerson"/>
18+
</arguments>
19+
<amOnPage url="{{SamplePage.url(person.firstname,person.lastname)}}" mergeKey="amOnPage1"/>
20+
<fillField selector="#foo" userInput="{{person.firstname}}" mergeKey="fillField1"/>
21+
<fillField selector="#bar" userInput="{{person.lastname}}" mergeKey="fillField2"/>
22+
<searchAndMultiSelectOption selector="#foo" parameterArray="[{{person.firstname}}, {{person.lastname}}]" mergeKey="multi1"/>
23+
<see selector="{{SampleSection.oneParamElement(person.firstname)}}" mergeKey="see1"/>
24+
</actionGroup>
25+
<actionGroup name="functionalActionGroupNoDefault">
26+
<arguments>
27+
<argument name="person"/>
28+
</arguments>
29+
<fillField selector="#foo" userInput="{{person.firstname}}" mergeKey="fillField1"/>
30+
<fillField selector="#bar" userInput="{{person.lastname}}" mergeKey="fillField2"/>
31+
<see selector="{{SampleSection.twoParamElement(person.firstname,person.lastname)}}" mergeKey="see2"/>
32+
</actionGroup>
33+
<actionGroup name="functionalActionGroupForMerge">
34+
<arguments>
35+
<argument name="myArg"/>
36+
</arguments>
37+
<fillField mergeKey="deleteMe" userInput="Please delete me" selector="#delete" />
38+
<see selector="{{SampleSection.oneParamElement(myArg.firstname)}}" mergeKey="see1"/>
39+
<amOnPage url="{{SamplePage.url(myArg.firstname,myArg.lastname)}}" mergeKey="amOnPage1"/>
40+
</actionGroup>
41+
</config>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="../../../../../src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd">
11+
<actionGroup name="functionalActionGroupForMerge">
12+
<see mergeKey="myMergedSeeElement" selector=".merge .{{myArg.firstname}}" before="see1"/>
13+
<click mergeKey="myMergedClick" selector=".merge .{{myArg.lastname}}" after="amOnPage1"/>
14+
<fillField mergeKey="deleteMe" remove="true"/>
15+
</actionGroup>
16+
</config>

dev/tests/verification/TestModule/ActionObject/placeholder.txt

Whitespace-only changes.
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
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+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="../../../../../src/Magento/FunctionalTestingFramework/Test/etc/testSchema.xsd">
11+
<cest name="ActionGroupFunctionalCest">
12+
<annotations>
13+
<severity value="CRITICAL"/>
14+
<title value="A Functional Cest"/>
15+
<group value="functional"/>
16+
<features value="Action Group Functional Cest"/>
17+
<stories value="MQE-433"/>
18+
</annotations>
19+
<before>
20+
<createData entity="replacementPerson" mergeKey="createPersonParam"/>
21+
</before>
22+
<test name="BasicActionGroupTest">
23+
<amOnPage mergeKey="step1" url="/someUrl"/>
24+
<actionGroup ref="functionalActionGroup" mergeKey="actionGroup1"/>
25+
<click mergeKey="step6" selector="loginButton"/>
26+
</test>
27+
<test name="ActionGroupWithDataTest">
28+
<amOnPage mergeKey="step1" url="/someUrl"/>
29+
<actionGroup ref="functionalActionGroupWithData" mergeKey="actionGroupWithData1"/>
30+
<click mergeKey="step6" selector="loginButton"/>
31+
</test>
32+
<test name="ActionGroupWithDataOverrideTest">
33+
<amOnPage mergeKey="step1" url="/someUrl"/>
34+
<actionGroup ref="functionalActionGroupWithData" mergeKey="actionGroupWithDataOverride1">
35+
<argument name="person" value="replacementPerson"/>
36+
</actionGroup>
37+
<click mergeKey="step6" selector="loginButton"/>
38+
</test>
39+
<test name="ActionGroupWithNoDefaultTest">
40+
<amOnPage mergeKey="step1" url="/someUrl"/>
41+
<actionGroup ref="functionalActionGroupNoDefault" mergeKey="actionGroupWithDataOverride1">
42+
<argument name="person" value="defaultPerson"/>
43+
</actionGroup>
44+
<click mergeKey="step6" selector="loginButton"/>
45+
</test>
46+
<test name="ActionGroupWithPersistedData">
47+
<createData entity="defaultPerson" mergeKey="createPerson"/>
48+
<actionGroup ref="functionalActionGroupWithData" mergeKey="actionGroupWithPersistedData1">
49+
<argument name="person" value="$createPerson$"/>
50+
</actionGroup>
51+
</test>
52+
<test name="ActionGroupWithTopLevelPersistedData">
53+
<actionGroup ref="functionalActionGroupWithData" mergeKey="actionGroupWithPersistedData1">
54+
<argument name="person" value="$$createPersonParam$$"/>
55+
</actionGroup>
56+
</test>
57+
<test name="MultipleActionGroupsTest">
58+
<amOnPage mergeKey="step1" url="/someUrl"/>
59+
<actionGroup ref="functionalActionGroupWithData" mergeKey="actionGroup1"/>
60+
<click mergeKey="step6" selector="loginButton"/>
61+
<actionGroup ref="functionalActionGroupWithData" mergeKey="actionGroupWithDataOverride2">
62+
<argument name="person" value="replacementPerson"/>
63+
</actionGroup>
64+
</test>
65+
<test name="MergedActionGroupTest">
66+
<actionGroup ref="functionalActionGroupForMerge" mergeKey="actionGroupForMerge">
67+
<argument name="myArg" value="defaultPerson"/>
68+
</actionGroup>
69+
</test>
70+
</cest>
71+
</config>

0 commit comments

Comments
 (0)