@testomatio/reporter 0.6.0-beta.1 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.eslintrc.js CHANGED
@@ -11,7 +11,7 @@ module.exports = {
11
11
  SharedArrayBuffer: 'readonly',
12
12
  },
13
13
  parserOptions: {
14
- ecmaVersion: 2018,
14
+ ecmaVersion: 2020,
15
15
  },
16
16
  rules: {
17
17
  'max-len': ['error', { code: 120 }],
@@ -25,6 +25,7 @@ module.exports = {
25
25
  'no-use-before-define': 0,
26
26
  'object-curly-newline': 0,
27
27
  'consistent-return': 0,
28
+ 'no-await-in-loop': 0,
28
29
  'no-param-reassign': 0,
29
30
  'operator-linebreak': 0,
30
31
  'prefer-destructuring': 0,
@@ -15,7 +15,7 @@ jobs:
15
15
 
16
16
  strategy:
17
17
  matrix:
18
- node-version: [12.x, 14.x, 16.x]
18
+ node-version: [14.x, 16.x]
19
19
  # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
20
20
 
21
21
  steps:
package/Changelog.md CHANGED
@@ -1,3 +1,15 @@
1
+ # 0.6.2
2
+
3
+ * Added `--env-file` option to load env variables from env file
4
+
5
+ # 0.6.1
6
+
7
+ * Fixed creating RunGroup with JUnit reporter
8
+
9
+ # 0.6.0
10
+
11
+ * JUnit reporter support
12
+
1
13
  # 0.5.10
2
14
 
3
15
  * Fixed reporting Scenario Outline in Cypress-Cucumber
package/README.md CHANGED
@@ -54,6 +54,9 @@ TESTOMATIO={API_KEY} npx start-test-run -c 'npx codeceptjs run-workers 2'
54
54
 
55
55
  > Specify a command to run with `-c` option in `start-test-run`
56
56
 
57
+ Use `--env-file <envfile>` option to load environment variables from .env file. Inside env file TESTOMATIO credentials like `TESTOMATIO` api key or [S3 config](#attaching-test-artifacts) can be stored.
58
+
59
+
57
60
  ### Playwright
58
61
 
59
62
  Add a reporter to Playwright config:
@@ -207,13 +210,13 @@ TESTOMATIO={API_KEY} npx @testomatio/reporter -c 'npx wdio wdio.conf.js'
207
210
 
208
211
  ## JUnit Reports
209
212
 
213
+ > **Notice** JUnit reports are supported since 0.6.0
214
+
210
215
  Other frameworks and languages are supported via JUnit reports.
211
216
 
212
217
  JUnit XML format is standard among test runners on various platforms. Testomat.io can load XML reports from test runners and create tests in a project from it. If your framework is not supported yet, generate JUnit report and upload it into Testomat.io
213
218
 
214
- ```
215
- TESTOMATIO={API_KEY} npx @testomatio/reporter -c 'npx wdio wdio.conf.js'
216
- ```
219
+ Testomat.io will not only create a run report but also collect all information about tests, including source code, and create tests in a system as regular importer do. The only difference that normal process of Testomat.io import does not require executing tests on import, while importing via repoter requires to have tests executed and XML report provided.
217
220
 
218
221
  Tested Frameworks:
219
222
 
@@ -223,6 +226,119 @@ Tested Frameworks:
223
226
  * PHPUnit (PHP)
224
227
 
225
228
 
229
+ To import JUnit reports into Testomat.io **NodeJS >=14 is required**.
230
+
231
+ Package `@testomatio/reporter` should be installed:
232
+
233
+ ```
234
+ npm i @testomatio/reporter@latest
235
+ ```
236
+
237
+ For local development it is recommended to install @testomatio/reporter globally:
238
+
239
+ ```
240
+ npm i -g @testomatio/reporter@latest
241
+ ```
242
+
243
+ Run your test framework and generate a JUnit report.
244
+
245
+ Then import XML report into Testomat.io
246
+
247
+ ```
248
+ TESTOMATIO={API_KEY} npx report-xml "{pattern}" --lang={lang}
249
+ ```
250
+
251
+ * `pattern` - is a glob pattern to match all XML files from report. For instance, `"test/report/**.xml"` or just `report.xml`
252
+ * `--lang` option can be specified to identify source code of the project. Example: `--lang=Ruby` or `--lang=Java` or `--lang=Python`.
253
+ * `--java-tests` option is avaiable for Java projects, and can be set if path to tests is different then `src/test/java`. When this option is enable, `lang` option is automatically set to `java`
254
+ * `--env-file <envfile>` option to load environment variables from .env file. Inside env file TESTOMATIO credentials like `TESTOMATIO` api key or [S3 config](#attaching-test-artifacts) can be stored.
255
+
256
+
257
+ > *Notice:* All options from [Advanced Usage](#advanced-usage) are also available for JUnit reporter
258
+
259
+ Check the list of examples:
260
+
261
+ #### Example: Pytest
262
+
263
+ Run pytest tests and generate a report to `report.xml`:
264
+
265
+ ```
266
+ pytest --junit-xml report.xml
267
+ ```
268
+
269
+ Import report with this command
270
+
271
+ ```
272
+ TESTOMATIO={API_KEY} npx report-xml report.xml --lang=python
273
+ ```
274
+
275
+ #### Example: JUnit with Maven
276
+
277
+ Run tests via Maven, make sure JUnit report was configured in `pom.xml`.
278
+
279
+ ```
280
+ mvn clean test
281
+ ```
282
+
283
+ Import report with this command:
284
+
285
+ ```
286
+ TESTOMATIO={API_KEY} npx report-xml "target/surefire-reports/*.xml" --java-tests
287
+ ```
288
+
289
+ > You can specify `--java-test` option to set a path to tests if they are located in path other than `src/test/java`
290
+
291
+ #### Example: Ruby on Rails with Minitest
292
+
293
+ ```ruby
294
+ # test_helper.rb:
295
+
296
+ reporters = [Minitest::Reporters::DefaultReporter.new(color: true)]
297
+ # enable JUnit reporter
298
+ reporters << Minitest::Reporters::JUnitReporter.new
299
+
300
+ Minitest::Reporters.use! reporters
301
+ ```
302
+
303
+ Launch tests:
304
+
305
+ ```
306
+ rails test
307
+ ```
308
+
309
+ Import reports from `test/reports` directory:
310
+
311
+ ```
312
+ TESTOMATIO={API_KEY} npx report-xml "test/reports/*.xml" --lang ruby
313
+ ```
314
+
315
+ ### Artifacts
316
+
317
+ Screenshots or videos from tests are uploaded if a test contains output with a path to file of following format:
318
+
319
+ ```
320
+ file://path/to/screenshot.png
321
+ ```
322
+
323
+ For instance, inside Java test you can use `System.out.println` to print a path to file that should be uploaded as a screenshot.
324
+
325
+ ```java
326
+ System.out.println("file://" + pathToScreenshot);
327
+ ```
328
+
329
+ This will produce XML report which contains path to a file:
330
+
331
+ ```xml
332
+ <testcase>
333
+ <system-out><![CDATA[
334
+ file://path/to/scrrenshot.png
335
+ ]]></system-out>
336
+ </testcase>
337
+ ```
338
+
339
+ When uploaded XML report, all files from `file://` will be uploaded to corresponding tests.
340
+
341
+
226
342
  ## Advanced Usage
227
343
 
228
344
  ### Create Unmatched Tests
@@ -326,7 +442,14 @@ S3_FORCE_PATH_STYLE=true
326
442
 
327
443
  > It is important to add S3_FORCE_PATH_STYLE var for minio setup
328
444
 
329
- For local testing, it is recommended to store this configuration in `.env` file and load it with [dotenv](https://www.npmjs.com/package/dotenv) library.
445
+ For local testing, it is recommended to store configuration in `.env` file. If you load configuration from a test runner, use [dotenv](https://www.npmjs.com/package/dotenv) library to load it.
446
+
447
+ If you run a reporter via `start-test-run` or `report-xml` command use `--env-file` option to load variables from .env file:
448
+
449
+ ```
450
+ npx start-test-run --env-file .env
451
+ npx report-xml --env-file .env
452
+ ```
330
453
 
331
454
  On CI set environment variables in CI config.
332
455
 
@@ -29,7 +29,7 @@ const testomatioReporter = on => {
29
29
  const error = latestAttempt.error;
30
30
 
31
31
  let title = test.title.pop();
32
- let examples = title.match(/\(example (#\d+)\)/);
32
+ const examples = title.match(/\(example (#\d+)\)/);
33
33
  let example = null;
34
34
  if (examples && examples[1]) example = { example: examples[1] };
35
35
  title = title.replace(/\(example #\d+\)/, '').trim();
@@ -40,7 +40,7 @@ const testomatioReporter = on => {
40
40
  const suiteId = parseSuite(suiteTitle);
41
41
 
42
42
  if (error) {
43
- error.inspect = function() {
43
+ error.inspect = function() { // eslint-disable-line func-names
44
44
  if (this && this.codeFrame) {
45
45
  return this.codeFrame.frame;
46
46
  }
@@ -1,31 +1,32 @@
1
1
  #!/usr/bin/env node
2
2
  const program = require("commander");
3
- // const chalk = require("chalk");
3
+ const chalk = require("chalk");
4
4
  const glob = require('glob');
5
5
 
6
6
  const { APP_PREFIX } = require('../constants');
7
7
  const XmlReader = require("../xmlReader");
8
8
 
9
- // const apiKey = process.env['INPUT_TESTOMATIO-KEY'] || process.env.TESTOMATIO;
10
- // const title = process.env.TESTOMATIO_TITLE;
11
-
12
- // console.log(chalk.cyan.bold(` 🤩 xmlReader by Testomat.io v${version}`));
9
+ const { version } = require('../../package.json');
10
+ console.log(chalk.cyan.bold(` 🤩 Testomat.io XML Reporter v${version}`));
13
11
 
14
12
  program
15
13
  .arguments("<pattern>")
16
14
  .option("-d, --dir <dir>", "Project directory")
17
15
  .option("--java-tests [java-path]", "Load Java tests from path, by default: src/test/java")
18
16
  .option("--lang <lang>", "Language used (python, ruby, java)")
17
+ .option("--env-file <envfile>", "Load environment variables from env file")
19
18
  .action(async (pattern, opts) => {
20
19
  if (!pattern.endsWith('.xml')) {
21
20
  pattern += '.xml';
22
21
  }
23
22
  let { javaTests, lang } = opts;
23
+ if (opts.envFile) require('dotenv').config(opts.envFile);
24
24
  if (javaTests === true) javaTests = 'src/test/java';
25
+ lang = lang?.toLowerCase();
25
26
  const runReader = new XmlReader({ javaTests, lang });
26
27
  const files = glob.sync(pattern, { cwd: opts.dir || process.cwd() });
27
28
  if (!files.length) {
28
- console.log(APP_PREFIX,`Report can't be created. No XML files found 😥`);
29
+ console.log(APP_PREFIX, `Report can't be created. No XML files found 😥`);
29
30
  process.exitCode = 1;
30
31
  return;
31
32
  }
@@ -39,11 +40,11 @@ program
39
40
  await runReader.uploadData();
40
41
  } catch (err) {
41
42
  console.log(APP_PREFIX, 'Error updating status, skipping...', err);
43
+ process.exitCode = 1;
42
44
  }
43
45
  });
44
46
 
45
-
46
- if (process.argv.length < 1) {
47
+ if (process.argv.length < 3) {
47
48
  program.outputHelp();
48
49
  }
49
50
 
@@ -5,15 +5,22 @@ const chalk = require('chalk');
5
5
  const TestomatClient = require('../client');
6
6
  const { APP_PREFIX, FINISHED } = require('../constants');
7
7
 
8
- const apiKey = process.env['INPUT_TESTOMATIO-KEY'] || process.env.TESTOMATIO;
9
- const title = process.env.TESTOMATIO_TITLE;
8
+ const { version } = require('../../package.json');
9
+ console.log(chalk.cyan.bold(` 🤩 Testomat.io Reporter v${version}`));
10
+
10
11
 
11
12
  program
12
13
  .option('-c, --command <cmd>', 'Test runner command')
13
14
  .option('--launch', 'Start a new run and return its ID')
14
15
  .option('--finish', 'Finish Run by its ID')
16
+ .option("--env-file <envfile>", "Load environment variables from env file")
15
17
  .action(opts => {
18
+
16
19
  const { command, launch, finish } = opts;
20
+ if (opts.envFile) require('dotenv').config(opts.envFile);
21
+
22
+ const apiKey = process.env['INPUT_TESTOMATIO-KEY'] || process.env.TESTOMATIO;
23
+ const title = process.env.TESTOMATIO_TITLE;
17
24
 
18
25
  if (launch) {
19
26
  console.log('Starting a new Run on Testomat.io...');
@@ -45,6 +52,7 @@ program
45
52
 
46
53
  let exitCode = 0;
47
54
 
55
+ if (command) return;
48
56
  const testCmds = command.split(' ');
49
57
  console.log(APP_PREFIX, `🚀 Running`, chalk.green(command));
50
58
 
@@ -20,20 +20,20 @@ class JavaAdapter extends Adapter {
20
20
  }
21
21
 
22
22
  formatStack(t) {
23
- let stack = super.formatStack(t);
23
+ const stack = super.formatStack(t);
24
24
 
25
25
  const file = t.suite_title.split('.');
26
26
 
27
- const fileLine = `at .*${file[file.length - 1]}\.java\:(\\d+)`
27
+ const fileLine = `at .*${file[file.length - 1]}\.java:(\\d+)` // eslint-disable-line no-useless-escape
28
28
  const regexp = new RegExp(fileLine,"g")
29
29
  return stack.replace(regexp, `${this.opts.javaTests}${path.sep}${namespaceToFileName(t.suite_title)}:$1:`);
30
30
  }
31
31
  }
32
32
 
33
33
  function namespaceToFileName(fileName) {
34
- let fileParts = fileName.split('.')
34
+ const fileParts = fileName.split('.')
35
35
  fileParts[fileParts.length - 1] = fileParts[fileParts.length - 1]?.replace(/\$.*/, '')
36
- return fileParts.join(path.sep) + '.java';
36
+ return `${fileParts.join(path.sep) }.java`;
37
37
 
38
38
  }
39
39
 
@@ -1,6 +1,6 @@
1
1
  const path = require('path');
2
- const Adapter = require('./adapter');
3
2
  const fs = require('fs');
3
+ const Adapter = require('./adapter');
4
4
 
5
5
  class PythonAdapter extends Adapter {
6
6
 
@@ -27,11 +27,11 @@ class PythonAdapter extends Adapter {
27
27
  }
28
28
 
29
29
  function namespaceToFileName(fileName) {
30
- let fileParts = fileName.split('.')
30
+ const fileParts = fileName.split('.')
31
31
 
32
32
  while (fileParts.length > 0) {
33
- const file = fileParts.join(path.sep) + '.py';
34
- if (fs.existsSync(fileParts.join(path.sep) + '.py')) {
33
+ const file = `${fileParts.join(path.sep) }.py`;
34
+ if (fs.existsSync(`${fileParts.join(path.sep) }.py`)) {
35
35
  return file;
36
36
  }
37
37
  fileParts.pop();
@@ -1,12 +1,10 @@
1
- const path = require('path');
2
1
  const Adapter = require('./adapter');
3
- const fs = require('fs');
4
2
 
5
3
  class RubyAdapter extends Adapter {
6
4
 
7
5
  formatStack(t) {
8
6
  const stack = super.formatStack(t);
9
- return stack.replace(/\[(.*?\:.\d*)\]/g, '\n$1')
7
+ return stack.replace(/\[(.*?:.\d*)\]/g, '\n$1')
10
8
  }
11
9
  }
12
10
 
package/lib/util.js CHANGED
@@ -1,5 +1,3 @@
1
- const { fstat } = require('fs');
2
- const { includes, split } = require('lodash');
3
1
  const { URL } = require('url');
4
2
  const { sep } = require('path');
5
3
  const chalk = require('chalk');
@@ -69,8 +67,8 @@ const fetchSourceCodeFromStackTrace = (stack = '') => {
69
67
  .filter(l => isValid(l.split(':')[0]))
70
68
 
71
69
  // // filter out 3rd party libs
72
- .filter(l => !l.includes('vendor' + sep))
73
- .filter(l => !l.includes('node_modules' + sep))
70
+ .filter(l => !l.includes(`vendor${ sep}`))
71
+ .filter(l => !l.includes(`node_modules${ sep}`))
74
72
  .filter(l => fs.existsSync(l.split(':')[0]))
75
73
  .filter(l => fs.lstatSync(l.split(':')[0]).isFile())
76
74
 
@@ -99,7 +97,7 @@ const fetchSourceCode = (contents, opts = {}) => {
99
97
 
100
98
  // remove special chars from title
101
99
  if (!lineIndex && opts.title) {
102
- const title = opts.title.replace(/[\(\[\@].*/g, '')
100
+ const title = opts.title.replace(/[([@].*/g, '')
103
101
  lineIndex = lines.findIndex(l => l.includes(title))
104
102
  }
105
103
 
@@ -118,7 +116,7 @@ const fetchSourceCode = (contents, opts = {}) => {
118
116
  if (opts.lang === 'php' && lines[i].includes(' private function ')) break;
119
117
  if (opts.lang === 'php' && lines[i].includes(' protected function ')) break;
120
118
  if (opts.lang === 'php' && lines[i].includes(' public function ')) break;
121
- if (opts.lang === 'python' && lines[i].trim().match(/^\@\w+/)) break;
119
+ if (opts.lang === 'python' && lines[i].trim().match(/^@\w+/)) break;
122
120
  if (opts.lang === 'python' && lines[i].includes(' def ')) break;
123
121
  if (opts.lang === 'ruby' && lines[i].includes(' def ')) break;
124
122
  if (opts.lang === 'ruby' && lines[i].includes(' test ')) break;
@@ -129,7 +127,7 @@ const fetchSourceCode = (contents, opts = {}) => {
129
127
  if (opts.lang === 'ts' && lines[i].includes(' test(')) break;
130
128
  if (opts.lang === 'js' && lines[i].includes(' it(')) break;
131
129
  if (opts.lang === 'js' && lines[i].includes(' test(')) break;
132
- if (opts.lang === 'java' && lines[i].trim().match(/^\@\w+/)) break;
130
+ if (opts.lang === 'java' && lines[i].trim().match(/^@\w+/)) break;
133
131
  if (opts.lang === 'java' && lines[i].includes(' public void ')) break;
134
132
  if (opts.lang === 'java' && lines[i].includes(' class ')) break;
135
133
  }
package/lib/xmlReader.js CHANGED
@@ -52,7 +52,7 @@ class XmlReader {
52
52
  if (this.opts.javaTests || this.stats.language === 'java') {
53
53
  this.adapter = new JavaAdapter(this.opts);
54
54
  }
55
- if (this.stats.language == 'js') {
55
+ if (this.stats.language === 'js') {
56
56
  this.adapter = new JavaScriptAdapter(this.opts);
57
57
  }
58
58
  if (this.stats.language === 'python') {
@@ -76,7 +76,7 @@ class XmlReader {
76
76
  console.log(jsonResult)
77
77
  throw new Error("Format can't be parsed")
78
78
  }
79
- const { testsuite, name, tests, failures, errors, filepath } = jsonSuite;
79
+ const { testsuite, name, tests, failures, errors } = jsonSuite;
80
80
 
81
81
  const resultTests = processTestSuite(testsuite);
82
82
 
@@ -120,7 +120,7 @@ class XmlReader {
120
120
  fetchSourceCode() {
121
121
  this.tests.forEach(t => {
122
122
  try {
123
- let file = this.adapter.getFilePath(t)
123
+ const file = this.adapter.getFilePath(t)
124
124
  if (!file) return;
125
125
 
126
126
  if (!this.stats.language) {
@@ -135,7 +135,7 @@ class XmlReader {
135
135
  const contents = fs.readFileSync(file).toString();
136
136
  t.code = fetchSourceCode(contents, { ...t, lang: this.stats.language })
137
137
  } catch (err) {
138
- if (process.env['DEBUG']) {
138
+ if (process.env.DEBUG) {
139
139
  console.log(err)
140
140
  }
141
141
  }
@@ -173,20 +173,22 @@ class XmlReader {
173
173
  }
174
174
 
175
175
  formatStack(t) {
176
- let stack = this.adapter.formatStack(t);
176
+ const stack = this.adapter.formatStack(t);
177
177
 
178
178
  const sourcePart = fetchSourceCodeFromStackTrace(stack);
179
179
 
180
180
  if (!sourcePart) return stack;
181
181
 
182
- return `${stack}\n\n${chalk.bold.red('################[ Failure ]################')}\n${fetchSourceCodeFromStackTrace(stack)}`;
182
+ const separator = chalk.bold.red('################[ Failure ]################');
183
+
184
+ return `${stack}\n\n${separator}\n${fetchSourceCodeFromStackTrace(stack)}`;
183
185
  }
184
186
 
185
187
  async uploadArtifacts() {
186
188
  if (!this.runId) return;
187
- for (const t of this.tests.filter(t => !!t.stack)) {
188
- const files = fetchFilesFromStackTrace(t.stack);
189
- t.artifacts = await Promise.all(files.map(f => upload.uploadFileByPath(f, this.runId)));
189
+ for (const test of this.tests.filter(t => !!t.stack)) {
190
+ const files = fetchFilesFromStackTrace(test.stack);
191
+ test.artifacts = await Promise.all(files.map(f => upload.uploadFileByPath(f, this.runId)));
190
192
  }
191
193
  }
192
194
 
@@ -197,9 +199,11 @@ class XmlReader {
197
199
  api_key: this.requestParams.apiKey,
198
200
  title: this.requestParams.title,
199
201
  env: this.requestParams.env,
200
- group_title: this.requestParams.runGroup,
202
+ group_title: this.requestParams.group_title,
201
203
  };
202
204
 
205
+ if (process.env.DEBUG) console.log("Run", runParams);
206
+
203
207
  try {
204
208
  const resp = await this.axios.post(this.url, runParams, {
205
209
  maxContentLength: Infinity,
@@ -234,7 +238,7 @@ class XmlReader {
234
238
  this.formatErrors();
235
239
  this.formatTests();
236
240
 
237
- if (process.env['DEBUG']) {
241
+ if (process.env.DEBUG) {
238
242
  console.log({
239
243
  ...this.stats,
240
244
  tests: this.tests,
@@ -284,7 +288,7 @@ class XmlReader {
284
288
  if (!isValidUrl(this.requestParams.url)) {
285
289
  console.log(
286
290
  APP_PREFIX,
287
- chalk.red(`Error creating report on Testomat.io, report url '${TESTOMAT_URL}' is invalid`),
291
+ chalk.red(`Error creating report on Testomat.io, report url '${this.requestParams.url}' is invalid`),
288
292
  );
289
293
  return;
290
294
  }
@@ -302,7 +306,7 @@ function reduceTestCases(prev, item) {
302
306
  testCases = [testCases]
303
307
  }
304
308
  testCases.filter(t => !!t).forEach(testCaseItem => {
305
- let file = testCaseItem.file || item.filepath || '';
309
+ const file = testCaseItem.file || item.filepath || '';
306
310
 
307
311
  let stack = '';
308
312
  let message = '';
@@ -316,7 +320,7 @@ function reduceTestCases(prev, item) {
316
320
  if (!message) message = stack.trim().split('\n')[0];
317
321
 
318
322
  // prepend system output
319
- stack = `${testCaseItem['system-out'] || testCaseItem['log'] || ''}\n\n${stack}`.trim()
323
+ stack = `${testCaseItem['system-out'] || testCaseItem.log || ''}\n\n${stack}`.trim()
320
324
 
321
325
  prev.push({
322
326
  create: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testomatio/reporter",
3
- "version": "0.6.0-beta.1",
3
+ "version": "0.6.2",
4
4
  "description": "Testomatio Reporter Client",
5
5
  "main": "./lib/reporter.js",
6
6
  "repository": "git@github.com:testomatio/reporter.git",
@@ -12,6 +12,7 @@
12
12
  "callsite-record": "^4.1.4",
13
13
  "chalk": "^4.1.0",
14
14
  "commander": "^4.1.1",
15
+ "dotenv": "^16.0.1",
15
16
  "fast-xml-parser": "^4.0.8",
16
17
  "glob": "^8.0.3",
17
18
  "has-flag": "^5.0.1",
@@ -2,96 +2,96 @@
2
2
  <testsuites>
3
3
  <testsuite name="cli" tests="89" assertions="881" errors="0" failures="10" skipped="2" useless="0" time="20.333714">
4
4
 
5
- <testcase name="runCestWithTwoFailedTest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run cest with two failed test" time="0.119537" assertions="4"/>
6
- <testcase name="runHtml" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="execute tests with html output" time="0.116880" assertions="1"/>
7
- <testcase name="runTestWithArrayExamples" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with array examples" time="0.096469" assertions="4"/>
8
- <testcase name="throwErrorIfBootstrapNotFound" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="execute one test" time="0.078476" assertions="3"/>
9
- <testcase name="runOneFile" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="execute one test" time="0.082889" assertions="1"/>
10
- <testcase name="runOneGroupByAttr" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run one group by attr" time="0.105880" assertions="2"/>
11
- <testcase name="runOneGroupWithDataProviders" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run one group with data providers" time="0.107412" assertions="5"/>
12
- <testcase name="filterCestsByDataProviderNumber" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="filter cests by data provider number" time="0.087259" assertions="4"/>
13
- <testcase name="runGherkinTest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run gherkin test" time="0.107440" assertions="7"/>
14
- <testcase name="runTestWithSubSteps" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with sub steps" time="0.000815" assertions="0">
5
+ <testcase name="runCestWithTwoFailedTest" class="RunCest" file="tests/data/cli/RunCest.php" feature="run cest with two failed test" time="0.119537" assertions="4"/>
6
+ <testcase name="runHtml" class="RunCest" file="tests/data/cli/RunCest.php" feature="execute tests with html output" time="0.116880" assertions="1"/>
7
+ <testcase name="runTestWithArrayExamples" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with array examples" time="0.096469" assertions="4"/>
8
+ <testcase name="throwErrorIfBootstrapNotFound" class="RunCest" file="tests/data/cli/RunCest.php" feature="execute one test" time="0.078476" assertions="3"/>
9
+ <testcase name="runOneFile" class="RunCest" file="tests/data/cli/RunCest.php" feature="execute one test" time="0.082889" assertions="1"/>
10
+ <testcase name="runOneGroupByAttr" class="RunCest" file="tests/data/cli/RunCest.php" feature="run one group by attr" time="0.105880" assertions="2"/>
11
+ <testcase name="runOneGroupWithDataProviders" class="RunCest" file="tests/data/cli/RunCest.php" feature="run one group with data providers" time="0.107412" assertions="5"/>
12
+ <testcase name="filterCestsByDataProviderNumber" class="RunCest" file="tests/data/cli/RunCest.php" feature="filter cests by data provider number" time="0.087259" assertions="4"/>
13
+ <testcase name="runGherkinTest" class="RunCest" file="tests/data/cli/RunCest.php" feature="run gherkin test" time="0.107440" assertions="7"/>
14
+ <testcase name="runTestWithSubSteps" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with sub steps" time="0.000815" assertions="0">
15
15
  <skipped/>
16
16
  </testcase>
17
- <testcase name="runWithDepends" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run with depends" time="0.083950" assertions="1"/>
18
- <testcase name="runTestsByShards" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run tests by shards" time="0.273580" assertions="9"/>
19
- <testcase name="runErrorTest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run error test" time="0.098815" assertions="3"/>
20
- <testcase name="runOneFileWithColors" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="execute one test" time="0.084870" assertions="2"/>
21
- <testcase name="runTestsDoesntFail" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run tests doesnt fail" time="0.089660" assertions="1"/>
22
- <testcase name="filterCestsByExampleNumber" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="filter cests by example number" time="0.099362" assertions="5"/>
23
- <testcase name="runTestWithAnnotationExamples" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with annotation examples" time="0.082711" assertions="4"/>
24
- <testcase name="runDependentCest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run dependent cest" time="0.081131" assertions="1"/>
25
- <testcase name="runTestWithAnnotationDataprovider" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with annotation dataprovider" time="0.160254" assertions="1"/>
26
- <testcase name="runGherkinScenarioWithMultipleStepDefinitions" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run gherkin scenario with multiple step definitions" time="0.088234" assertions="4"/>
27
- <testcase name="runOneGroup" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run one group" time="0.076610" assertions="3"/>
28
- <testcase name="runTestsWithFilterDoesntFail" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run tests with filter doesnt fail" time="0.159520" assertions="2"/>
29
- <testcase name="runTestWithJsonExamples" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with json examples" time="0.082773" assertions="4"/>
30
- <testcase name="runWithBeforeAfter" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run with before after" time="0.078491" assertions="4"/>
31
- <testcase name="skipGroupOfCest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="skip group of cest" time="0.170683" assertions="5"/>
32
- <testcase name="testsWithConditionalFails" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="tests with conditional fails" time="0.097338" assertions="4"/>
33
- <testcase name="runWithUnitSkipped" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run with unit skipped" time="0.097461" assertions="1"/>
34
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoCommentStepsInARow&quot;" time="0.073369" assertions="2"/>
35
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoCommentStepsInARowViaPageObjectActor&quot;" time="0.072299" assertions="2"/>
36
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoCommentStepsWithOneSubStepInBetween&quot;" time="0.096977" assertions="2"/>
37
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:commentStepsWithDifferentSubStepsInBetweenAndAfter&quot;" time="0.076719" assertions="2"/>
38
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:differentSubSteps&quot;" time="0.075144" assertions="2"/>
39
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:commentStepsWithDifferentSubStepsOnceNestedInBetweenAndAfter&quot;" time="0.092805" assertions="2"/>
40
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:commentStepsWithDifferentSubStepsOnceNestedInBetweenAndAfter2&quot;" time="0.098153" assertions="2"/>
41
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:nestedSubStepFollowedByOtherSubStep&quot;" time="0.078239" assertions="2"/>
42
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:nestedSubStepFollowedByOtherSubStep2&quot;" time="0.095552" assertions="2"/>
43
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoIdentialSubStepsInARow&quot;" time="0.077251" assertions="2"/>
44
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoIdentialSubStepsInARowFollowedByAnotherSubStep&quot;" time="0.078100" assertions="2"/>
45
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoIdentialSubStepsWithAnotherSubStepInBetween&quot;" time="0.096649" assertions="2"/>
46
- <testcase name="runHtmlCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:subStepFollowedByTwoIdentialSubSteps&quot;" time="0.097845" assertions="2"/>
47
- <testcase name="runTestsWithSteps" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run tests with steps" time="0.097513" assertions="1"/>
48
- <testcase name="runWithDataprovider" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run with dataprovider" time="0.101674" assertions="1"/>
49
- <testcase name="runXmlReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="check xml reports" time="0.100334" assertions="5"/>
50
- <testcase name="runTestsWithGrep" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run tests with grep" time="0.177239" assertions="3"/>
51
- <testcase name="runHtmlWithPhpBrowserCheckReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="execute tests with PhpBrowser with html output and check html" time="0.282488" assertions="5"/>
52
- <testcase name="skipRunOneGroup" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="skip run one group" time="0.098319" assertions="3"/>
53
- <testcase name="runTestsWithFilter" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run tests with filter" time="0.086682" assertions="2"/>
54
- <testcase name="runGherkinScenarioOutline" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run gherkin scenario outline" time="0.103988" assertions="1"/>
55
- <testcase name="runTestsWithDependencyInjections" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run tests with dependency injections" time="0.080304" assertions="7"/>
56
- <testcase name="runWithExamples" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run with examples" time="0.100186" assertions="1"/>
57
- <testcase name="runPhpUnitXmlReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="check phpunit xml reports" time="0.101651" assertions="10"/>
58
- <testcase name="runInvalidDataProvider" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run invalid data provider" time="0.111115" assertions="4"/>
59
- <testcase name="runTestWithDataProviders" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with data providers" time="0.095058" assertions="5"/>
60
- <testcase name="runFailingGherkinTest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run failing gherkin test" time="0.076423" assertions="2"/>
61
- <testcase name="showSameOrderOfFilesOnSeed" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="show same order of files on seed" time="0.306368" assertions="3"/>
62
- <testcase name="runWithUnitIncomplete" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run with unit incomplete" time="0.097535" assertions="1"/>
63
- <testcase name="showSeedNumberOnShuffle" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="show seed number on shuffle" time="0.223366" assertions="2"/>
64
- <testcase name="filterTestsByDataProviderCaseNumber" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="filter tests by data provider case number" time="0.100420" assertions="5"/>
65
- <testcase name="runTwoSuites" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run two suites" time="0.098478" assertions="3"/>
66
- <testcase name="runCustomBootstrap" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="execute one test" time="0.095968" assertions="3"/>
67
- <testcase name="runOneTestFromCest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run one test from cest" time="0.073993" assertions="2"/>
68
- <testcase name="runTestWithFailedScenario" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with failed scenario" time="0.000200" assertions="0">
17
+ <testcase name="runWithDepends" class="RunCest" file="tests/data/cli/RunCest.php" feature="run with depends" time="0.083950" assertions="1"/>
18
+ <testcase name="runTestsByShards" class="RunCest" file="tests/data/cli/RunCest.php" feature="run tests by shards" time="0.273580" assertions="9"/>
19
+ <testcase name="runErrorTest" class="RunCest" file="tests/data/cli/RunCest.php" feature="run error test" time="0.098815" assertions="3"/>
20
+ <testcase name="runOneFileWithColors" class="RunCest" file="tests/data/cli/RunCest.php" feature="execute one test" time="0.084870" assertions="2"/>
21
+ <testcase name="runTestsDoesntFail" class="RunCest" file="tests/data/cli/RunCest.php" feature="run tests doesnt fail" time="0.089660" assertions="1"/>
22
+ <testcase name="filterCestsByExampleNumber" class="RunCest" file="tests/data/cli/RunCest.php" feature="filter cests by example number" time="0.099362" assertions="5"/>
23
+ <testcase name="runTestWithAnnotationExamples" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with annotation examples" time="0.082711" assertions="4"/>
24
+ <testcase name="runDependentCest" class="RunCest" file="tests/data/cli/RunCest.php" feature="run dependent cest" time="0.081131" assertions="1"/>
25
+ <testcase name="runTestWithAnnotationDataprovider" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with annotation dataprovider" time="0.160254" assertions="1"/>
26
+ <testcase name="runGherkinScenarioWithMultipleStepDefinitions" class="RunCest" file="tests/data/cli/RunCest.php" feature="run gherkin scenario with multiple step definitions" time="0.088234" assertions="4"/>
27
+ <testcase name="runOneGroup" class="RunCest" file="tests/data/cli/RunCest.php" feature="run one group" time="0.076610" assertions="3"/>
28
+ <testcase name="runTestsWithFilterDoesntFail" class="RunCest" file="tests/data/cli/RunCest.php" feature="run tests with filter doesnt fail" time="0.159520" assertions="2"/>
29
+ <testcase name="runTestWithJsonExamples" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with json examples" time="0.082773" assertions="4"/>
30
+ <testcase name="runWithBeforeAfter" class="RunCest" file="tests/data/cli/RunCest.php" feature="run with before after" time="0.078491" assertions="4"/>
31
+ <testcase name="skipGroupOfCest" class="RunCest" file="tests/data/cli/RunCest.php" feature="skip group of cest" time="0.170683" assertions="5"/>
32
+ <testcase name="testsWithConditionalFails" class="RunCest" file="tests/data/cli/RunCest.php" feature="tests with conditional fails" time="0.097338" assertions="4"/>
33
+ <testcase name="runWithUnitSkipped" class="RunCest" file="tests/data/cli/RunCest.php" feature="run with unit skipped" time="0.097461" assertions="1"/>
34
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoCommentStepsInARow&quot;" time="0.073369" assertions="2"/>
35
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoCommentStepsInARowViaPageObjectActor&quot;" time="0.072299" assertions="2"/>
36
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoCommentStepsWithOneSubStepInBetween&quot;" time="0.096977" assertions="2"/>
37
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:commentStepsWithDifferentSubStepsInBetweenAndAfter&quot;" time="0.076719" assertions="2"/>
38
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:differentSubSteps&quot;" time="0.075144" assertions="2"/>
39
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:commentStepsWithDifferentSubStepsOnceNestedInBetweenAndAfter&quot;" time="0.092805" assertions="2"/>
40
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:commentStepsWithDifferentSubStepsOnceNestedInBetweenAndAfter2&quot;" time="0.098153" assertions="2"/>
41
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:nestedSubStepFollowedByOtherSubStep&quot;" time="0.078239" assertions="2"/>
42
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:nestedSubStepFollowedByOtherSubStep2&quot;" time="0.095552" assertions="2"/>
43
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoIdentialSubStepsInARow&quot;" time="0.077251" assertions="2"/>
44
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoIdentialSubStepsInARowFollowedByAnotherSubStep&quot;" time="0.078100" assertions="2"/>
45
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:twoIdentialSubStepsWithAnotherSubStepInBetween&quot;" time="0.096649" assertions="2"/>
46
+ <testcase name="runHtmlCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="verify that all steps are rendered correctly in HTML report (' . $test . ') | &quot;CodeceptionIssue4413Cest:subStepFollowedByTwoIdentialSubSteps&quot;" time="0.097845" assertions="2"/>
47
+ <testcase name="runTestsWithSteps" class="RunCest" file="tests/data/cli/RunCest.php" feature="run tests with steps" time="0.097513" assertions="1"/>
48
+ <testcase name="runWithDataprovider" class="RunCest" file="tests/data/cli/RunCest.php" feature="run with dataprovider" time="0.101674" assertions="1"/>
49
+ <testcase name="runXmlReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="check xml reports" time="0.100334" assertions="5"/>
50
+ <testcase name="runTestsWithGrep" class="RunCest" file="tests/data/cli/RunCest.php" feature="run tests with grep" time="0.177239" assertions="3"/>
51
+ <testcase name="runHtmlWithPhpBrowserCheckReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="execute tests with PhpBrowser with html output and check html" time="0.282488" assertions="5"/>
52
+ <testcase name="skipRunOneGroup" class="RunCest" file="tests/data/cli/RunCest.php" feature="skip run one group" time="0.098319" assertions="3"/>
53
+ <testcase name="runTestsWithFilter" class="RunCest" file="tests/data/cli/RunCest.php" feature="run tests with filter" time="0.086682" assertions="2"/>
54
+ <testcase name="runGherkinScenarioOutline" class="RunCest" file="tests/data/cli/RunCest.php" feature="run gherkin scenario outline" time="0.103988" assertions="1"/>
55
+ <testcase name="runTestsWithDependencyInjections" class="RunCest" file="tests/data/cli/RunCest.php" feature="run tests with dependency injections" time="0.080304" assertions="7"/>
56
+ <testcase name="runWithExamples" class="RunCest" file="tests/data/cli/RunCest.php" feature="run with examples" time="0.100186" assertions="1"/>
57
+ <testcase name="runPhpUnitXmlReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="check phpunit xml reports" time="0.101651" assertions="10"/>
58
+ <testcase name="runInvalidDataProvider" class="RunCest" file="tests/data/cli/RunCest.php" feature="run invalid data provider" time="0.111115" assertions="4"/>
59
+ <testcase name="runTestWithDataProviders" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with data providers" time="0.095058" assertions="5"/>
60
+ <testcase name="runFailingGherkinTest" class="RunCest" file="tests/data/cli/RunCest.php" feature="run failing gherkin test" time="0.076423" assertions="2"/>
61
+ <testcase name="showSameOrderOfFilesOnSeed" class="RunCest" file="tests/data/cli/RunCest.php" feature="show same order of files on seed" time="0.306368" assertions="3"/>
62
+ <testcase name="runWithUnitIncomplete" class="RunCest" file="tests/data/cli/RunCest.php" feature="run with unit incomplete" time="0.097535" assertions="1"/>
63
+ <testcase name="showSeedNumberOnShuffle" class="RunCest" file="tests/data/cli/RunCest.php" feature="show seed number on shuffle" time="0.223366" assertions="2"/>
64
+ <testcase name="filterTestsByDataProviderCaseNumber" class="RunCest" file="tests/data/cli/RunCest.php" feature="filter tests by data provider case number" time="0.100420" assertions="5"/>
65
+ <testcase name="runTwoSuites" class="RunCest" file="tests/data/cli/RunCest.php" feature="run two suites" time="0.098478" assertions="3"/>
66
+ <testcase name="runCustomBootstrap" class="RunCest" file="tests/data/cli/RunCest.php" feature="execute one test" time="0.095968" assertions="3"/>
67
+ <testcase name="runOneTestFromCest" class="RunCest" file="tests/data/cli/RunCest.php" feature="run one test from cest" time="0.073993" assertions="2"/>
68
+ <testcase name="runTestWithFailedScenario" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with failed scenario" time="0.000200" assertions="0">
69
69
  <skipped/>
70
70
  </testcase>
71
- <testcase name="runPhpUnitXmlReportsInStrictMode" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="check phpunit xml in strict mode" time="0.080945" assertions="10"/>
72
- <testcase name="runBootstrapInGlobalConfig" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="execute one test" time="0.099138" assertions="3"/>
73
- <testcase name="reportersConfigurationSectionIsNotSupported" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="reporters configuration section is not supported" time="0.200293" assertions="3"/>
74
- <testcase name="runFailedTestAndCheckOutput" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run failed test and check output" time="0.092119" assertions="4"/>
75
- <testcase name="runTestWithFailFastDefault" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with fail fast default" time="0.193308" assertions="4"/>
76
- <testcase name="runTestWithComplexExample" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with complex example" time="0.084370" assertions="5"/>
77
- <testcase name="runTestWithAnnotationExamplesFromGroupFileTest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with annotation examples from group file test" time="0.091098" assertions="1"/>
78
- <testcase name="filterTestsByDataProviderCaseNumberRange" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="filter tests by data provider case number range" time="0.074344" assertions="5"/>
79
- <testcase name="runSuiteWhenNameMatchesExistingDirectory" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run suite when name matches existing directory" time="0.069087" assertions="1"/>
80
- <testcase name="runBootstrapInSuiteConfig" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="execute one test" time="0.080465" assertions="3"/>
81
- <testcase name="runOneTestFromUnit" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run one test from unit" time="0.083712" assertions="3"/>
82
- <testcase name="reportsCorrectFailedStep" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="reports correct failed step" time="0.083000" assertions="2"/>
83
- <testcase name="overrideModuleOptions" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="override module options" time="0.166803" assertions="2"/>
84
- <testcase name="runTestWithException" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with exception" time="0.087845" assertions="4"/>
85
- <testcase name="runWithCustomOutputPath" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run with custom output path" time="0.085757" assertions="7"/>
86
- <testcase name="filterTestsByDataProviderCaseName" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="filter tests by data provider case name" time="0.092092" assertions="5"/>
87
- <testcase name="filterTestsWithoutSpecifyingSuite" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="filter tests without specifying suite" time="0.075297" assertions="1"/>
88
- <testcase name="runXmlReportsInStrictMode" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="check xml in strict mode" time="0.084044" assertions="5"/>
89
- <testcase name="runCustomReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run custom report" time="0.080532" assertions="2"/>
90
- <testcase name="runDependentTest" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run dependent test" time="0.178287" assertions="2"/>
91
- <testcase name="runTestWithFailFastCustom" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with fail fast custom" time="0.168278" assertions="2"/>
92
- <testcase name="runTestWithCustomSetupMethod" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run test with custom setup method" time="0.083309" assertions="1"/>
93
- <testcase name="runCompactReport" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="run compact report" time="0.074003" assertions="1"/>
94
- <testcase name="skipSuites" class="RunCest" file="/home/davert/projects/Codeception/tests/cli/RunCest.php" feature="skip suites" time="0.064021" assertions="4"/>
71
+ <testcase name="runPhpUnitXmlReportsInStrictMode" class="RunCest" file="tests/data/cli/RunCest.php" feature="check phpunit xml in strict mode" time="0.080945" assertions="10"/>
72
+ <testcase name="runBootstrapInGlobalConfig" class="RunCest" file="tests/data/cli/RunCest.php" feature="execute one test" time="0.099138" assertions="3"/>
73
+ <testcase name="reportersConfigurationSectionIsNotSupported" class="RunCest" file="tests/data/cli/RunCest.php" feature="reporters configuration section is not supported" time="0.200293" assertions="3"/>
74
+ <testcase name="runFailedTestAndCheckOutput" class="RunCest" file="tests/data/cli/RunCest.php" feature="run failed test and check output" time="0.092119" assertions="4"/>
75
+ <testcase name="runTestWithFailFastDefault" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with fail fast default" time="0.193308" assertions="4"/>
76
+ <testcase name="runTestWithComplexExample" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with complex example" time="0.084370" assertions="5"/>
77
+ <testcase name="runTestWithAnnotationExamplesFromGroupFileTest" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with annotation examples from group file test" time="0.091098" assertions="1"/>
78
+ <testcase name="filterTestsByDataProviderCaseNumberRange" class="RunCest" file="tests/data/cli/RunCest.php" feature="filter tests by data provider case number range" time="0.074344" assertions="5"/>
79
+ <testcase name="runSuiteWhenNameMatchesExistingDirectory" class="RunCest" file="tests/data/cli/RunCest.php" feature="run suite when name matches existing directory" time="0.069087" assertions="1"/>
80
+ <testcase name="runBootstrapInSuiteConfig" class="RunCest" file="tests/data/cli/RunCest.php" feature="execute one test" time="0.080465" assertions="3"/>
81
+ <testcase name="runOneTestFromUnit" class="RunCest" file="tests/data/cli/RunCest.php" feature="run one test from unit" time="0.083712" assertions="3"/>
82
+ <testcase name="reportsCorrectFailedStep" class="RunCest" file="tests/data/cli/RunCest.php" feature="reports correct failed step" time="0.083000" assertions="2"/>
83
+ <testcase name="overrideModuleOptions" class="RunCest" file="tests/data/cli/RunCest.php" feature="override module options" time="0.166803" assertions="2"/>
84
+ <testcase name="runTestWithException" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with exception" time="0.087845" assertions="4"/>
85
+ <testcase name="runWithCustomOutputPath" class="RunCest" file="tests/data/cli/RunCest.php" feature="run with custom output path" time="0.085757" assertions="7"/>
86
+ <testcase name="filterTestsByDataProviderCaseName" class="RunCest" file="tests/data/cli/RunCest.php" feature="filter tests by data provider case name" time="0.092092" assertions="5"/>
87
+ <testcase name="filterTestsWithoutSpecifyingSuite" class="RunCest" file="tests/data/cli/RunCest.php" feature="filter tests without specifying suite" time="0.075297" assertions="1"/>
88
+ <testcase name="runXmlReportsInStrictMode" class="RunCest" file="tests/data/cli/RunCest.php" feature="check xml in strict mode" time="0.084044" assertions="5"/>
89
+ <testcase name="runCustomReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="run custom report" time="0.080532" assertions="2"/>
90
+ <testcase name="runDependentTest" class="RunCest" file="tests/data/cli/RunCest.php" feature="run dependent test" time="0.178287" assertions="2"/>
91
+ <testcase name="runTestWithFailFastCustom" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with fail fast custom" time="0.168278" assertions="2"/>
92
+ <testcase name="runTestWithCustomSetupMethod" class="RunCest" file="tests/data/cli/RunCest.php" feature="run test with custom setup method" time="0.083309" assertions="1"/>
93
+ <testcase name="runCompactReport" class="RunCest" file="tests/data/cli/RunCest.php" feature="run compact report" time="0.074003" assertions="1"/>
94
+ <testcase name="skipSuites" class="RunCest" file="tests/data/cli/RunCest.php" feature="skip suites" time="0.064021" assertions="4"/>
95
95
  <testcase name="runAllSnapshotTests" class="SnapshotCest" file="tests/data/cli/SnapshotCest.php" feature="run all snapshot tests" time="0.058300" assertions="1">
96
96
  <failure type="PHPUnit\Framework\AssertionFailedError">SnapshotCest: Run all snapshot tests
97
97
  Result code was 1.
@@ -147,4 +147,4 @@ tests/data/cli/SnapshotCest.php:92
147
147
  </failure>
148
148
  </testcase>
149
149
  </testsuite>
150
- </testsuites>
150
+ </testsuites>