Skip to content

Commit eaa1d0e

Browse files
authored
Merge branch 'develop' into db_contributions
2 parents f03a564 + 958e9c3 commit eaa1d0e

Some content is hidden

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

46 files changed

+1078
-109
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ codeception.yml
1515
dev/tests/functional/MFTF.suite.yml
1616
dev/tests/functional/_output
1717
dev/mftf.log
18-
dev/tests/mftf.log
18+
dev/tests/mftf.log
19+
dev/tests/docs/*

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,32 @@
11
Magento Functional Testing Framework Changelog
22
================================================
33

4+
2.4.0
5+
-----
6+
### Enhancements
7+
* Maintainability
8+
* Added new `mftf static-checks` command to run new static checks against the attached test codebase
9+
* See DevDocs for details
10+
* Added new `mftf generate:docs` command that generates documentation about attached test codebase
11+
* See DevDocs for details
12+
* Traceability
13+
* Allure reports for tests now contain collapsible sections for `actionGroup`s used in execution.
14+
15+
### Fixes
16+
* Fixed an issue where `magentoCli` would treat `argument="0"` as a null value.
17+
* Fixed an issue where `amOnPage` and `waitForPwaElementVisible` would not utilize the `timeout` attribute correctly when MagentoPwaWebDriver is enabled.
18+
* Fixed an issue where invalid XML characters would cause Allure to throw an exception without a resulting report.
19+
* Fixed `codeception.dist.yml` configuration for keeping previous test run results.
20+
* PHP Notices are no longer thrown when XML is missing non-necessary attributes.
21+
* Removed unusable `fillSecretField` action from schema.
22+
23+
### GitHub Issues/Pull requests:
24+
* [#338](https://github.com/magento/magento2-functional-testing-framework/pull/338) -- Return exit codes of process started by 'run:test', 'run:group' or 'run:failed' command
25+
* [#333](https://github.com/magento/magento2-functional-testing-framework/pull/333) -- Added Nginx specific settings to getting started doc
26+
* [#332](https://github.com/magento/magento2-functional-testing-framework/pull/332) -- executeInSelenium action does not generate proper code
27+
* [#318](https://github.com/magento/magento2-functional-testing-framework/pull/318) -- Reduce cyclomatic complexity in Problem Methods
28+
* [#287](https://github.com/magento/magento2-functional-testing-framework/pull/287) -- Update requirements to include php7.3 support
29+
430
2.3.14
531
-----
632
### Enhancements

bin/mftf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ try {
2929
try {
3030
$application = new Symfony\Component\Console\Application();
3131
$application->setName('Magento Functional Testing Framework CLI');
32-
$application->setVersion('2.3.14');
32+
$application->setVersion('2.4.0');
3333
/** @var \Magento\FunctionalTestingFramework\Console\CommandListInterface $commandList */
3434
$commandList = new \Magento\FunctionalTestingFramework\Console\CommandList;
3535
foreach ($commandList->getCommands() as $command) {

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "magento/magento2-functional-testing-framework",
33
"description": "Magento2 Functional Testing Framework",
44
"type": "library",
5-
"version": "2.3.14",
5+
"version": "2.4.0",
66
"license": "AGPL-3.0",
77
"keywords": ["magento", "automation", "functional", "testing"],
88
"config": {

composer.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dev/tests/_bootstrap.php

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
true,
3333
\Magento\FunctionalTestingFramework\Config\MftfApplicationConfig::UNIT_TEST_PHASE,
3434
true,
35-
false
35+
\Magento\FunctionalTestingFramework\Config\MftfApplicationConfig::LEVEL_NONE
3636
);
3737

3838
// Load needed framework env params
@@ -60,6 +60,28 @@
6060
defined('TESTS_BP') || define('TESTS_BP', __DIR__);
6161
defined('TESTS_MODULE_PATH') || define('TESTS_MODULE_PATH', TESTS_BP . $RELATIVE_TESTS_MODULE_PATH);
6262
defined('MAGENTO_BP') || define('MAGENTO_BP', __DIR__);
63+
define('DOCS_OUTPUT_DIR',
64+
FW_BP .
65+
DIRECTORY_SEPARATOR .
66+
"dev" .
67+
DIRECTORY_SEPARATOR .
68+
"tests" .
69+
DIRECTORY_SEPARATOR .
70+
"unit" .
71+
DIRECTORY_SEPARATOR .
72+
"_output"
73+
);
74+
define('RESOURCE_DIR',
75+
FW_BP .
76+
DIRECTORY_SEPARATOR .
77+
"dev" .
78+
DIRECTORY_SEPARATOR .
79+
"tests" .
80+
DIRECTORY_SEPARATOR .
81+
"unit" .
82+
DIRECTORY_SEPARATOR .
83+
"Resources"
84+
);
6385

6486
$utilDir = DIRECTORY_SEPARATOR . 'Util'. DIRECTORY_SEPARATOR . '*.php';
6587

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 tests\unit\Magento\FunctionalTestFramework\Test\Util;
7+
8+
use AspectMock\Test as AspectMock;
9+
use Magento\FunctionalTestingFramework\Test\Util\ActionGroupAnnotationExtractor;
10+
use PHPUnit\Framework\TestCase;
11+
use tests\unit\Util\TestLoggingUtil;
12+
13+
class ActionGroupAnnotationExtractorTest extends TestCase
14+
{
15+
/**
16+
* Before test functionality
17+
* @return void
18+
*/
19+
public function setUp()
20+
{
21+
TestLoggingUtil::getInstance()->setMockLoggingUtil();
22+
}
23+
24+
/**
25+
* Annotation extractor takes in raw array and condenses it to expected format
26+
*
27+
* @throws \Exception
28+
*/
29+
public function testActionGroupExtractAnnotations()
30+
{
31+
// Test Data
32+
$actionGroupAnnotations = [
33+
"nodeName" => "annotations",
34+
"description" => [
35+
"nodeName" => "description",
36+
"value" => "someDescription"
37+
],
38+
"page" => [
39+
"nodeName" => "page",
40+
"value" => "somePage"
41+
]
42+
];
43+
// Perform Test
44+
$extractor = new ActionGroupAnnotationExtractor();
45+
$returnedAnnotations = $extractor->extractAnnotations($actionGroupAnnotations, "fileName");
46+
47+
// Asserts
48+
49+
$this->assertEquals("somePage", $returnedAnnotations['page']);
50+
$this->assertEquals("someDescription", $returnedAnnotations['description']);
51+
}
52+
53+
/**
54+
* Annotation extractor should throw warning when required annotations are missing
55+
*
56+
* @throws \Exception
57+
*/
58+
public function testActionGroupMissingAnnotations()
59+
{
60+
// Action Group Data, missing page and description
61+
$testAnnotations = [];
62+
// Perform Test
63+
$extractor = new ActionGroupAnnotationExtractor();
64+
AspectMock::double($extractor, ['isCommandDefined' => true]);
65+
$extractor->extractAnnotations($testAnnotations, "fileName");
66+
67+
// Asserts
68+
TestLoggingUtil::getInstance()->validateMockLogStatement(
69+
'warning',
70+
'DEPRECATION: Action Group File fileName is missing required annotations.',
71+
[
72+
'actionGroup' => 'fileName',
73+
'missingAnnotations' => "description, page"
74+
]
75+
);
76+
}
77+
78+
/**
79+
* Annotation extractor should not throw warning when required
80+
* annotations are missing if command is not generate:docs
81+
*
82+
* @throws \Exception
83+
*/
84+
public function testActionGroupMissingAnnotationsNoWarning()
85+
{
86+
// Action Group Data, missing page and description
87+
$testAnnotations = [];
88+
// Perform Test
89+
$extractor = new ActionGroupAnnotationExtractor();
90+
$extractor->extractAnnotations($testAnnotations, "fileName");
91+
92+
// Asserts
93+
TestLoggingUtil::getInstance()->validateMockLogEmpty();
94+
}
95+
96+
/**
97+
* After class functionality
98+
* @return void
99+
*/
100+
public static function tearDownAfterClass()
101+
{
102+
TestLoggingUtil::getInstance()->clearMockLoggingUtil();
103+
}
104+
}
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Tests\unit\Magento\FunctionalTestFramework\Test\Handlers;
8+
9+
use Magento\FunctionalTestingFramework\Exceptions\TestFrameworkException;
10+
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
11+
use Magento\FunctionalTestingFramework\Util\DocGenerator;
12+
use tests\unit\Util\ActionGroupObjectBuilder;
13+
14+
class DocGeneratorTest extends MagentoTestCase
15+
{
16+
const DOC_FILENAME = "documentation";
17+
18+
/**
19+
* Basic test to check creation of documentation
20+
*
21+
* @throws \Exception
22+
*/
23+
public function testBasicCreateDocumentation()
24+
{
25+
$annotations = [
26+
"page" => "somePage",
27+
"description" => "someDescription"
28+
];
29+
$actionGroupUnderTest = (new ActionGroupObjectBuilder())
30+
->withAnnotations($annotations)
31+
->withFilename("filename")
32+
->build();
33+
$docGenerator = new DocGenerator();
34+
$docGenerator->createDocumentation(
35+
[$actionGroupUnderTest->getName() => $actionGroupUnderTest],
36+
DOCS_OUTPUT_DIR,
37+
true
38+
);
39+
40+
$docFile = DOCS_OUTPUT_DIR . DIRECTORY_SEPARATOR . self::DOC_FILENAME . ".md";
41+
42+
$this->assertTrue(file_exists($docFile));
43+
44+
$this->assertFileEquals(
45+
RESOURCE_DIR . DIRECTORY_SEPARATOR . "basicDocumentation.txt",
46+
$docFile
47+
);
48+
}
49+
50+
/**
51+
* Test to check creation of documentation when overwriting previous
52+
*
53+
* @throws \Exception
54+
*/
55+
public function testCreateDocumentationWithOverwrite()
56+
{
57+
$annotations = [
58+
"page" => "somePage",
59+
"description" => "someDescription"
60+
];
61+
$actionGroupUnderTest = (new ActionGroupObjectBuilder())
62+
->withAnnotations($annotations)
63+
->withFilename("filename")
64+
->build();
65+
$docGenerator = new DocGenerator();
66+
$docGenerator->createDocumentation(
67+
[$actionGroupUnderTest->getName() => $actionGroupUnderTest],
68+
DOCS_OUTPUT_DIR,
69+
true
70+
);
71+
72+
$annotations = [
73+
"page" => "alteredPage",
74+
"description" => "alteredDescription"
75+
];
76+
$actionGroupUnderTest = (new ActionGroupObjectBuilder())
77+
->withAnnotations($annotations)
78+
->withFilename("filename")
79+
->build();
80+
$docGenerator = new DocGenerator();
81+
$docGenerator->createDocumentation(
82+
[$actionGroupUnderTest->getName() => $actionGroupUnderTest],
83+
DOCS_OUTPUT_DIR,
84+
true
85+
);
86+
87+
$docFile = DOCS_OUTPUT_DIR . DIRECTORY_SEPARATOR . self::DOC_FILENAME . ".md";
88+
89+
$this->assertTrue(file_exists($docFile));
90+
91+
$this->assertFileEquals(
92+
RESOURCE_DIR . DIRECTORY_SEPARATOR . "alteredDocumentation.txt",
93+
$docFile
94+
);
95+
}
96+
97+
/**
98+
* Test for existing documentation without clean
99+
*
100+
* @throws \Exception
101+
*/
102+
public function testCreateDocumentationNotCleanException()
103+
{
104+
$annotations = [
105+
"page" => "somePage",
106+
"description" => "someDescription"
107+
];
108+
$actionGroupUnderTest = (new ActionGroupObjectBuilder())
109+
->withAnnotations($annotations)
110+
->withFilename("filename")
111+
->build();
112+
$docGenerator = new DocGenerator();
113+
$docGenerator->createDocumentation(
114+
[$actionGroupUnderTest->getName() => $actionGroupUnderTest],
115+
DOCS_OUTPUT_DIR,
116+
true
117+
);
118+
119+
$docFile = DOCS_OUTPUT_DIR . DIRECTORY_SEPARATOR . self::DOC_FILENAME . ".md";
120+
121+
$this->expectException(TestFrameworkException::class);
122+
$this->expectExceptionMessage("$docFile already exists, please add --clean if you want to overwrite it.");
123+
124+
$docGenerator = new DocGenerator();
125+
$docGenerator->createDocumentation(
126+
[$actionGroupUnderTest->getName() => $actionGroupUnderTest],
127+
DOCS_OUTPUT_DIR,
128+
false
129+
);
130+
}
131+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#Action Group Information
2+
This documentation contains a list of all action groups on the pages on which they start
3+
4+
##List of Pages
5+
- [ alteredPage ](#alteredPage)
6+
---
7+
<a name="alteredPage"></a>
8+
##alteredPage
9+
10+
###testActionGroupObject
11+
alteredDescription
12+
13+
Located in:
14+
15+
- filename
16+
***
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#Action Group Information
2+
This documentation contains a list of all action groups on the pages on which they start
3+
4+
##List of Pages
5+
- [ somePage ](#somePage)
6+
---
7+
<a name="somePage"></a>
8+
##somePage
9+
10+
###testActionGroupObject
11+
someDescription
12+
13+
Located in:
14+
15+
- filename
16+
***

0 commit comments

Comments
 (0)