Skip to content

Commit 4044dc2

Browse files
author
Michael Logvin
committed
Merge pull request #44 from magento-firedrakes/MAGETWO-32081
[Firedrakes] MTF Refactoring
2 parents 32e3715 + c95234e commit 4044dc2

File tree

300 files changed

+1149
-1085
lines changed

Some content is hidden

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

300 files changed

+1149
-1085
lines changed

dev/tests/functional/composer.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
{
22
"require": {
3-
"magento/mtf": "1.0.0-rc12",
3+
"magento/mtf": "1.0.0-rc13",
44
"php": ">=5.4.0",
55
"phpunit/phpunit": "4.1.0",
66
"phpunit/phpunit-selenium": ">=1.2",
77
"netwing/selenium-server-standalone": ">=2.35"
88
},
9+
"suggest": {
10+
"facebook/webdriver": "dev-master"
11+
},
912
"autoload": {
1013
"psr-4": {
1114
"Mtf\\": ["lib/Mtf/", "generated/Mtf/", "testsuites/Mtf/"],

dev/tests/functional/lib/Mtf/Client/Driver/Selenium/Element/OptgroupselectElement.php

Lines changed: 0 additions & 56 deletions
This file was deleted.

dev/tests/functional/lib/Mtf/Client/Driver/Selenium/Element/ConditionsElement.php renamed to dev/tests/functional/lib/Mtf/Client/Element/ConditionsElement.php

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44
* See COPYING.txt for license details.
55
*/
66

7-
namespace Mtf\Client\Driver\Selenium\Element;
7+
namespace Mtf\Client\Element;
88

9-
use Mtf\Client\Driver\Selenium\Element as AbstractElement;
10-
use Mtf\Client\Element;
11-
use Mtf\Client\Element\Locator;
129
use Mtf\ObjectManager;
10+
use Mtf\Client\Locator;
11+
use Mtf\Client\ElementInterface;
1312

1413
/**
1514
* Class ConditionsElement
@@ -37,7 +36,7 @@
3736
*
3837
* @SuppressWarnings(PHPMD.TooManyFields)
3938
*/
40-
class ConditionsElement extends AbstractElement
39+
class ConditionsElement extends SimpleElement
4140
{
4241
/**
4342
* Main condition
@@ -86,7 +85,7 @@ class ConditionsElement extends AbstractElement
8685
*
8786
* @var string
8887
*/
89-
protected $created = './/preceding-sibling::li[1]';
88+
protected $created = './ul/li[span[contains(@class,"rule-param-new-child")]]/preceding-sibling::li[1]';
9089

9190
/**
9291
* Children condition
@@ -100,7 +99,7 @@ class ConditionsElement extends AbstractElement
10099
*
101100
* @var string
102101
*/
103-
protected $param = './span[@class="rule-param"]/span/*[substring(@id,(string-length(@id)-%d+1))="%s"]/../..';
102+
protected $param = './span[span[*[substring(@id,(string-length(@id)-%d+1))="%s"]]]';
104103

105104
/**
106105
* Key of last find param
@@ -187,19 +186,19 @@ public function setValue($value)
187186
* Add condition combination
188187
*
189188
* @param string $condition
190-
* @param Element $context
191-
* @return Element
189+
* @param ElementInterface $context
190+
* @return ElementInterface
192191
*/
193-
protected function addConditionsCombination($condition, Element $context)
192+
protected function addConditionsCombination($condition, ElementInterface $context)
194193
{
195194
$condition = $this->parseCondition($condition);
196195
$newCondition = $context->find($this->newCondition, Locator::SELECTOR_XPATH);
197196
$newCondition->find($this->addNew, Locator::SELECTOR_XPATH)->click();
198197
$typeNewCondition = $newCondition->find($this->typeNew, Locator::SELECTOR_XPATH, 'select');
199198
$typeNewCondition->setValue($condition['type']);
200-
$this->ruleParamWait();
201199

202-
$createdCondition = $newCondition->find($this->created, Locator::SELECTOR_XPATH);
200+
$createdCondition = $context->find($this->created, Locator::SELECTOR_XPATH);
201+
$this->waitForCondition($createdCondition);
203202
if (!empty($condition['rules'])) {
204203
$this->fillCondition($condition['rules'], $createdCondition);
205204
}
@@ -210,10 +209,10 @@ protected function addConditionsCombination($condition, Element $context)
210209
* Add conditions
211210
*
212211
* @param array $conditions
213-
* @param Element $context
212+
* @param ElementInterface $context
214213
* @return void
215214
*/
216-
protected function addMultipleCondition(array $conditions, Element $context)
215+
protected function addMultipleCondition(array $conditions, ElementInterface $context)
217216
{
218217
foreach ($conditions as $key => $condition) {
219218
$elementContext = is_numeric($key) ? $context : $this->addConditionsCombination($key, $context);
@@ -229,10 +228,10 @@ protected function addMultipleCondition(array $conditions, Element $context)
229228
* Add single Condition
230229
*
231230
* @param string $condition
232-
* @param Element $context
231+
* @param ElementInterface $context
233232
* @return void
234233
*/
235-
protected function addSingleCondition($condition, Element $context)
234+
protected function addSingleCondition($condition, ElementInterface $context)
236235
{
237236
$condition = $this->parseCondition($condition);
238237

@@ -246,24 +245,24 @@ function () use ($newCondition, $typeNew) {
246245
}
247246
);
248247
$newCondition->find($this->typeNew, Locator::SELECTOR_XPATH, 'select')->setValue($condition['type']);
249-
$this->ruleParamWait();
250-
251-
$createdCondition = $newCondition->find($this->created, Locator::SELECTOR_XPATH);
248+
$createdCondition = $context->find($this->created, Locator::SELECTOR_XPATH);
249+
$this->waitForCondition($createdCondition);
252250
$this->fillCondition($condition['rules'], $createdCondition);
253251
}
254252

255253
/**
256254
* Fill single condition
257255
*
258256
* @param array $rules
259-
* @param Element $element
257+
* @param ElementInterface $element
260258
* @return void
261259
* @throws \Exception
262260
*/
263-
protected function fillCondition(array $rules, Element $element)
261+
protected function fillCondition(array $rules, ElementInterface $element)
264262
{
265263
$this->resetKeyParam();
266264
foreach ($rules as $rule) {
265+
/** @var ElementInterface $param */
267266
$param = $this->findNextParam($element);
268267
$param->find('a')->click();
269268

@@ -287,13 +286,13 @@ function () use ($param, $input) {
287286
return $element->isVisible() ? true : null;
288287
}
289288
);
290-
$value = $param->find('select', Locator::SELECTOR_CSS, 'select');
289+
$value = $param->find('select', Locator::SELECTOR_TAG_NAME, 'select');
291290
if ($value->isVisible()) {
292291
$value->setValue($rule);
293292
$this->click();
294293
continue;
295294
}
296-
$value = $param->find('input');
295+
$value = $param->find('input', Locator::SELECTOR_TAG_NAME);
297296
if ($value->isVisible()) {
298297
$value->setValue($rule);
299298

@@ -356,11 +355,11 @@ protected function parseCondition($condition)
356355
/**
357356
* Find next param of condition for fill
358357
*
359-
* @param Element $context
360-
* @return Element
358+
* @param ElementInterface $context
359+
* @return ElementInterface
361360
* @throws \Exception
362361
*/
363-
protected function findNextParam(Element $context)
362+
protected function findNextParam(ElementInterface $context)
364363
{
365364
do {
366365
if (!isset($this->mapParams[$this->findKeyParam])) {
@@ -389,14 +388,11 @@ protected function resetKeyParam()
389388
*
390389
* @return void
391390
*/
392-
protected function ruleParamWait()
391+
protected function waitForCondition(ElementInterface $element)
393392
{
394-
$browser = $this;
395-
$ruleParamWait = $this->ruleParamWait;
396-
$browser->waitUntil(
397-
function () use ($browser, $ruleParamWait) {
398-
$element = $browser->find($ruleParamWait, Locator::SELECTOR_XPATH);
399-
return $element->isVisible() ? null : true;
393+
$this->waitUntil(
394+
function () use ($element) {
395+
return $element->getAttribute('class') == 'rule-param-wait' ? null : true;
400396
}
401397
);
402398
}

dev/tests/functional/lib/Mtf/Client/Driver/Selenium/Element/DatepickerElement.php renamed to dev/tests/functional/lib/Mtf/Client/Element/DatepickerElement.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
* See COPYING.txt for license details.
55
*/
66

7-
namespace Mtf\Client\Driver\Selenium\Element;
7+
namespace Mtf\Client\Element;
88

9-
use Mtf\Client\Driver\Selenium\Element;
10-
use Mtf\Client\Element\Locator;
9+
use Mtf\Client\Locator;
1110

1211
/**
1312
* General class for datepicker elements.
1413
*/
15-
class DatepickerElement extends Element
14+
class DatepickerElement extends SimpleElement
1615
{
1716
/**
1817
* DatePicker button.

dev/tests/functional/lib/Mtf/Client/Driver/Selenium/Element/GlobalsearchElement.php renamed to dev/tests/functional/lib/Mtf/Client/Element/GlobalsearchElement.php

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,21 @@
44
* See COPYING.txt for license details.
55
*/
66

7-
namespace Mtf\Client\Driver\Selenium\Element;
7+
namespace Mtf\Client\Element;
88

9-
use Mtf\Client\Element\Locator;
10-
use Mtf\Client\Driver\Selenium\Element;
9+
use Mtf\Client\Locator;
10+
use Mtf\Client\ElementInterface;
1111

1212
/**
1313
* Typified element class for global search element.
1414
*/
15-
class GlobalsearchElement extends Element
15+
class GlobalsearchElement extends SimpleElement
1616
{
17+
/**
18+
* "Backspace" key code.
19+
*/
20+
const BACKSPACE = "\xEE\x80\x83";
21+
1722
/**
1823
* Search icon selector.
1924
*
@@ -49,11 +54,6 @@ class GlobalsearchElement extends Element
4954
*/
5055
protected $resultItem = 'li';
5156

52-
/**
53-
* "Backspace" key code.
54-
*/
55-
const BACKSPACE = "\xEE\x80\x83";
56-
5757
/**
5858
* Set value.
5959
*
@@ -62,7 +62,7 @@ class GlobalsearchElement extends Element
6262
*/
6363
public function setValue($value)
6464
{
65-
$this->_eventManager->dispatchEvent(['set_value'], [__METHOD__, $this->getAbsoluteSelector()]);
65+
$this->eventManager->dispatchEvent(['set_value'], [__METHOD__, $this->getAbsoluteSelector()]);
6666

6767
$this->waitInitElement();
6868

@@ -71,7 +71,7 @@ public function setValue($value)
7171
}
7272
$this->selectWindow();
7373
$this->clear();
74-
$this->find($this->searchInput)->_getWrappedElement()->value($value);
74+
$this->find($this->searchInput)->setValue($value);
7575
$this->selectWindow();
7676

7777
$this->waitResult();
@@ -86,7 +86,7 @@ protected function clear()
8686
{
8787
$element = $this->find($this->searchInput);
8888
while ('' != $element->getValue()) {
89-
$element->keys([self::BACKSPACE]);
89+
$element->setValue([self::BACKSPACE]);
9090
}
9191
}
9292

@@ -97,8 +97,7 @@ protected function clear()
9797
*/
9898
protected function selectWindow()
9999
{
100-
$windowHandles = $this->_driver->windowHandles();
101-
$this->_driver->window(end($windowHandles));
100+
$this->driver->closeWindow();
102101
}
103102

104103
/**
@@ -109,10 +108,10 @@ protected function selectWindow()
109108
*/
110109
protected function waitInitElement()
111110
{
112-
$browser = clone $this;
113111
$selector = $this->initializedSuggest;
114112

115-
$browser->waitUntil(
113+
$browser = $this->driver;
114+
$this->driver->waitUntil(
116115
function () use ($browser, $selector) {
117116
return $browser->find($selector, Locator::SELECTOR_XPATH)->isVisible() ? true : null;
118117
}
@@ -126,10 +125,10 @@ function () use ($browser, $selector) {
126125
*/
127126
public function waitResult()
128127
{
129-
$browser = clone $this;
130128
$selector = $this->searchResult;
129+
$browser = $this->driver;
131130

132-
$browser->waitUntil(
131+
$this->driver->waitUntil(
133132
function () use ($browser, $selector) {
134133
if ($browser->find($selector)->isVisible()) {
135134
return true;
@@ -174,12 +173,12 @@ public function isExistValueInSearchResult($value)
174173
*/
175174
protected function getSearchResults()
176175
{
177-
/** @var Element $searchResult */
176+
/** @var ElementInterface $searchResult */
178177
$searchResult = $this->find($this->searchResult);
179-
$resultItems = $searchResult->find($this->resultItem)->getElements();
178+
$resultItems = $searchResult->getElements($this->resultItem);
180179
$resultArray = [];
181180

182-
/** @var Element $resultItem */
181+
/** @var ElementInterface $resultItem */
183182
foreach ($resultItems as $resultItem) {
184183
$resultItemLink = $resultItem->find('a');
185184
$resultText = $resultItemLink->isVisible()

0 commit comments

Comments
 (0)