forked from magento/magento2-functional-testing-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RoboFile.php
190 lines (169 loc) · 5.7 KB
/
RoboFile.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
/** This is project's console commands configuration for Robo task runner.
*
* @codingStandardsIgnoreStart
* @see http://robo.li/
*/
class RoboFile extends \Robo\Tasks
{
use Robo\Task\Base\loadShortcuts;
/**
* Duplicate the Example configuration files used to customize the Project for customization.
*
* @return void
*/
function cloneFiles()
{
$this->_exec('cp -vn .env.example .env');
$this->_exec('cp -vf codeception.dist.yml codeception.yml');
$this->_exec('cp -vf dev' . DIRECTORY_SEPARATOR . 'tests'. DIRECTORY_SEPARATOR . 'functional' . DIRECTORY_SEPARATOR .'MFTF.suite.dist.yml dev' . DIRECTORY_SEPARATOR . 'tests'. DIRECTORY_SEPARATOR . 'functional' . DIRECTORY_SEPARATOR .'MFTF.suite.yml');
}
/**
* Duplicate the Example configuration files for the Project.
* Build the Codeception project.
*
* @return void
*/
function buildProject()
{
$this->cloneFiles();
$this->_exec('vendor'. DIRECTORY_SEPARATOR .'bin'. DIRECTORY_SEPARATOR .'codecept build');
}
/**
* Generate all Tests in PHP.
*
* @param array $opts
* @return void
*/
function generateTests($opts = ['config' => null, 'force' => true, 'nodes' => null])
{
$GLOBALS['GENERATE_TESTS'] = true;
if ($opts['force'])
{
$GLOBALS['FORCE_PHP_GENERATE'] = true;
}
require 'dev' . DIRECTORY_SEPARATOR . 'tests'. DIRECTORY_SEPARATOR . 'functional' . DIRECTORY_SEPARATOR . '_bootstrap.php';
\Magento\FunctionalTestingFramework\Util\TestGenerator::getInstance()->createAllTestFiles($opts['config'], $opts['nodes']);
$this->say("Generate Tests Command Run");
}
/**
* Generate a suite based on name(s) passed in as args.
*
* @param array $args
* @throws Exception
* @return void
*/
function generateSuite(array $args)
{
if (empty($args)) {
throw new Exception("Please provide suite name(s) after generate:suite command");
}
require 'dev' . DIRECTORY_SEPARATOR . 'tests'. DIRECTORY_SEPARATOR . 'functional' . DIRECTORY_SEPARATOR . '_bootstrap.php';
$sg = \Magento\FunctionalTestingFramework\Suite\SuiteGenerator::getInstance();
foreach ($args as $arg) {
$sg->generateSuite($arg);
}
}
/**
* Run all Functional tests.
*
* @return void
*/
function functional()
{
$this->_exec('.' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'codecept run functional --skip-group skip');
}
/**
* Run all Tests with the specified @group tag, excluding @group 'skip'.
*
* @param string $args
* @return void
*/
function group($args = '')
{
$this->taskExec('.' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'codecept run --verbose --steps --skip-group skip --group')->args($args)->run();
}
/**
* Run all Functional tests located under the Directory Path provided.
*
* @param string $args
* @return void
*/
function folder($args = '')
{
$this->taskExec('.' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'codecept run ')->args($args)->run();
}
/**
* Run all Tests marked with the @group tag 'example'.
*
* @return void
*/
function example()
{
$this->_exec('.' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'codecept run --group example --skip-group skip');
}
/**
* Generate the HTML for the Allure report based on the Test XML output - Allure v1.4.X
*
* @return \Robo\Result
*/
function allure1Generate()
{
return $this->_exec('allure generate tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-results'. DIRECTORY_SEPARATOR .' -o tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-report'. DIRECTORY_SEPARATOR .'');
}
/**
* Generate the HTML for the Allure report based on the Test XML output - Allure v2.3.X
*
* @return \Robo\Result
*/
function allure2Generate()
{
return $this->_exec('allure generate tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-results'. DIRECTORY_SEPARATOR .' --output tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-report'. DIRECTORY_SEPARATOR .' --clean');
}
/**
* Open the HTML Allure report - Allure v1.4.X
*
* @return void
*/
function allure1Open()
{
$this->_exec('allure report open --report-dir tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-report'. DIRECTORY_SEPARATOR .'');
}
/**
* Open the HTML Allure report - Allure v2.3.X
*
* @return void
*/
function allure2Open()
{
$this->_exec('allure open --port 0 tests'. DIRECTORY_SEPARATOR .'_output'. DIRECTORY_SEPARATOR .'allure-report'. DIRECTORY_SEPARATOR .'');
}
/**
* Generate and open the HTML Allure report - Allure v1.4.X
*
* @return void
*/
function allure1Report()
{
$result1 = $this->allure1Generate();
if ($result1->wasSuccessful()) {
$this->allure1Open();
}
}
/**
* Generate and open the HTML Allure report - Allure v2.3.X
*
* @return void
*/
function allure2Report()
{
$result1 = $this->allure2Generate();
if ($result1->wasSuccessful()) {
$this->allure2Open();
}
}
}