Skip to content

Commit e18c162

Browse files
committed
MQE-238:[CAP] Add support for groups of actions (ex 'loginAsAdmin')
- create action group schema with shared action tags - update test schema to include actions tag - update object model for support of action groups and variable resolution
1 parent 11522e8 commit e18c162

22 files changed

+1229
-458
lines changed

etc/di.xml

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@
278278
</arguments>
279279
</virtualType>
280280

281-
<type name="Magento\AcceptanceTestFramework\Test\TestDataParser">
281+
<type name="Magento\AcceptanceTestFramework\Test\Parsers\TestDataParser">
282282
<arguments>
283283
<argument name="testData" xsi:type="object">Magento\AcceptanceTestFramework\Test\Config\Data</argument>
284284
</arguments>
@@ -288,4 +288,46 @@
288288
<argument name="reader" xsi:type="object">Magento\AcceptanceTestFramework\Config\Reader\TestData</argument>
289289
</arguments>
290290
</virtualType>
291+
292+
<!--Config for Action Group -->
293+
294+
<virtualType name="Magento\AcceptanceTestFramework\Config\Reader\ActionGroupData" type="Magento\AcceptanceTestFramework\Config\Reader\Filesystem">
295+
<arguments>
296+
<argument name="fileResolver" xsi:type="object">Magento\AcceptanceTestFramework\Config\FileResolver\Module</argument>
297+
<argument name="converter" xsi:type="object">Magento\AcceptanceTestFramework\Config\ActionGroupDataConverter</argument>
298+
<argument name="schemaLocator" xsi:type="object">Magento\AcceptanceTestFramework\Config\SchemaLocator\TestData</argument>
299+
<argument name="idAttributes" xsi:type="array">
300+
<item name="/config/actions" xsi:type="string">name</item>
301+
<item name="/config/actions/(acceptPopup|amOnPage|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
302+
</argument>
303+
<argument name="fileName" xsi:type="string">*-action_group.xml</argument>
304+
<argument name="defaultScope" xsi:type="string">Cest</argument>
305+
</arguments>
306+
</virtualType>
307+
308+
<virtualType name="Magento\AcceptanceTestFramework\Test\Config\Dom\ActionGroupArrayNodeConfig" type="Magento\AcceptanceTestFramework\Config\Dom\ArrayNodeConfig">
309+
<arguments>
310+
<argument name="assocArrayAttributes" xsi:type="array">
311+
<item name="/config/actions/(acceptPopup|amOnPage|appendField|assertArraySubset|attachFile|cancelPopup|checkOption|click|clickWithLeftButton|clickWithRightButton|closeTab|createData|deleteData|dontSee|dontSeeCheckboxIsChecked|dontSeeCookie|dontSeeCurrentUrlEquals|dontSeeCurrentUrlMatches|dontSeeElement|dontSeeElementInDOM|dontSeeInCurrentUrl|dontSeeInField|dontSeeInPageSource|dontSeeInSource|dontSeeInTitle|dontSeeLink|dontSeeOptionIsSelected|doubleClick|dragAndDrop|executeJS|fillField|formatMoney|grabAttributeFrom|grabCookie|grabFromCurrentUrl|grabMultiple|grabPageSource|grabTextFrom|grabValueFrom|loadSessionSnapshot|loginAsAdmin|makeScreenshot|maximizeWindow|moveBack|moveForward|moveMouseOver|openNewTab|pauseExecution|performOn|pressKey|reloadPage|resetCookie|resizeWindow|scrollTo|searchAndMultiSelectOption|see|seeCheckboxIsChecked|seeCookie|seeCurrentUrlEquals|seeCurrentUrlMatches|seeElement|seeElementInDOM|seeInCurrentUrl|seeInField|seeInFormFields|seeInPageSource|seeInPopup|seeInSource|seeInTitle|seeLink|seeNumberOfElements|seeOptionIsSelected|selectOption|setCookie|switchToIFrame|switchToNextTab|switchToPreviousTab|switchToWindow|typeInPopup|uncheckOption|unselectOption|wait|waitForAjaxLoad|waitForElement|waitForElementChange|waitForElementNotVisible|waitForElementVisible|waitForJS|waitForPageLoad|waitForText)" xsi:type="string">mergeKey</item>
312+
<item name="/config/actions" xsi:type="string">name</item>
313+
</argument>
314+
</arguments>
315+
</virtualType>
316+
317+
<virtualType name="Magento\AcceptanceTestFramework\Config\ActionGroupDataConverter" type="Magento\AcceptanceTestFramework\Test\Config\Converter\Dom\Flat">
318+
<arguments>
319+
<argument name="arrayNodeConfig" xsi:type="object">Magento\AcceptanceTestFramework\Test\Config\Dom\ActionGroupArrayNodeConfig</argument>
320+
</arguments>
321+
</virtualType>
322+
323+
<type name="Magento\AcceptanceTestFramework\Test\Parsers\ActionGroupDataParser">
324+
<arguments>
325+
<argument name="actionGroupData" xsi:type="object">Magento\AcceptanceTestFramework\Test\Config\ActionGroupData</argument>
326+
</arguments>
327+
</type>
328+
<virtualType name="Magento\AcceptanceTestFramework\Test\Config\ActionGroupData" type="Magento\AcceptanceTestFramework\Config\Data">
329+
<arguments>
330+
<argument name="reader" xsi:type="object">Magento\AcceptanceTestFramework\Config\Reader\ActionGroupData</argument>
331+
</arguments>
332+
</virtualType>
291333
</config>

src/Magento/AcceptanceTestFramework/DataGenerator/Handlers/DataObjectHandler.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class DataObjectHandler implements ObjectHandlerInterface
1919
* @var array $arrayData
2020
*/
2121
private $arrayData = [];
22+
2223
/**
2324
* @var array $data
2425
*/
@@ -49,6 +50,7 @@ class DataObjectHandler implements ObjectHandlerInterface
4950

5051
/**
5152
* Singleton method to retrieve instance of DataArrayProcessor
53+
*
5254
* @return DataObjectHandler
5355
* @throws \Exception
5456
*/

src/Magento/AcceptanceTestFramework/Page/Handlers/PageObjectHandler.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
use Magento\AcceptanceTestFramework\Page\Objects\PageObject;
1212
use Magento\AcceptanceTestFramework\XmlParser\PageParser;
1313

14+
/**
15+
* Class PageObjectHandler
16+
*/
1417
class PageObjectHandler implements ObjectHandlerInterface
1518
{
1619
const TYPE = 'page';
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\AcceptanceTestFramework\Test\Handlers;
7+
8+
use Magento\AcceptanceTestFramework\ObjectManager\ObjectHandlerInterface;
9+
use Magento\AcceptanceTestFramework\ObjectManagerFactory;
10+
use Magento\AcceptanceTestFramework\Test\Objects\ActionGroupObject;
11+
use Magento\AcceptanceTestFramework\Test\Objects\TestObject;
12+
use Magento\AcceptanceTestFramework\Test\Parsers\ActionGroupDataParser;
13+
use Magento\AcceptanceTestFramework\Test\Util\ActionGroupObjectExtractor;
14+
15+
/**
16+
* Class ActionGroupObjectHandler
17+
*/
18+
class ActionGroupObjectHandler implements ObjectHandlerInterface
19+
{
20+
const BEFORE_AFTER_ERROR_MSG = "Merge Error - Steps cannot have both before and after attributes.\tTestStep='%s'";
21+
const ACTION_GROUP_ROOT = 'config';
22+
const ACTION_GROUP = 'actions';
23+
24+
/**
25+
* Single instance of class var
26+
*
27+
* @var ActionGroupObjectHandler
28+
*/
29+
private static $ACTION_GROUP_OBJECT_HANDLER;
30+
31+
/**
32+
* Array of action groups indexed by name
33+
*
34+
* @var array
35+
*/
36+
private $actionGroups = [];
37+
38+
/**
39+
* Singleton getter for instance of ActionGroupObjectHandler
40+
*
41+
* @return ActionGroupObjectHandler
42+
*/
43+
public static function getInstance()
44+
{
45+
if (!self::$ACTION_GROUP_OBJECT_HANDLER) {
46+
self::$ACTION_GROUP_OBJECT_HANDLER = new ActionGroupObjectHandler();
47+
self::$ACTION_GROUP_OBJECT_HANDLER->initActionGroups();
48+
}
49+
50+
return self::$ACTION_GROUP_OBJECT_HANDLER;
51+
}
52+
53+
/**
54+
* ActionGroupObjectHandler constructor.
55+
*/
56+
private function __construct()
57+
{
58+
// private constructor
59+
}
60+
61+
/**
62+
* Function to return a single object by name
63+
*
64+
* @param string $actionGroupName
65+
* @return ActionGroupObject
66+
*/
67+
public function getObject($actionGroupName)
68+
{
69+
return $this->getAllObjects()[$actionGroupName];
70+
}
71+
72+
/**
73+
* Function to return all objects for which the handler is responsible
74+
*
75+
* @return array
76+
*/
77+
public function getAllObjects()
78+
{
79+
return $this->actionGroups;
80+
}
81+
82+
/**
83+
* Method which populates field array with objects from parsed action_group.xml
84+
*
85+
* @return void
86+
*/
87+
private function initActionGroups()
88+
{
89+
$actionGroupParser = ObjectManagerFactory::getObjectManager()->create(ActionGroupDataParser::class);
90+
$parsedActionGroups = $actionGroupParser->readActionGroupData();
91+
92+
$actionGroupObjectExtractor = new ActionGroupObjectExtractor();
93+
94+
foreach ($parsedActionGroups[ActionGroupObjectHandler::ACTION_GROUP_ROOT] as
95+
$actionGroupName => $actionGroupData) {
96+
if (!is_array($actionGroupData)) {
97+
continue;
98+
}
99+
100+
$this->actionGroups[$actionGroupName] =
101+
$actionGroupObjectExtractor->extractActionGroup($actionGroupData);
102+
}
103+
}
104+
}

0 commit comments

Comments
 (0)