What are you trying to achieve?
The plugin stepByStepReport works if you enable it in config file. Test shouldn't fail.
What do you get instead?
$ npx codeceptjs run Concepts_test.js --verbose
...
Context: BeforeSuite
I get random string "ATConceptNew"
[1] Error | TypeError: Cannot read property 'toString' of undefined
Emitted | step.failed (I get random string "ATConceptNew")
Emitted | step.finish (I get random string "ATConceptNew")
[1] Error | TypeError: Cannot read property 'toString' of undefined
[1] Starting <teardown> session
Emitted | test.failed ([object Object])
Error processing test.failed event:
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
at validateString (internal/validators.js:125:11)
at Object.join (path.js:1147:7)
at persist (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/plugin/stepByStepReport.js:182:24)
at EventEmitter.event.dispatcher.on (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/plugin/stepByStepReport.js:109:5)
at EventEmitter.emit (events.js:203:15)
at EventEmitter.emit (domain.js:448:20)
at Object.emit (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/event.js:115:28)
at errHandler (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/scenario.js:101:13)
at recorder.catch (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/scenario.js:132:11)
at promise.catch (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/recorder.js:227:9)
[1] <teardown> Stopping recording promises
Provide test source code if related
BeforeSuite(async () => {
addedConceptName = await I.getRandomString("ATConceptNew");
renamedConceptName = await I.getRandomString("ATConceptRenamed");
});
helper's method:
/**
* Generate random string with prefix
* @return {Promise<string>}
*/
getRandomString(prefix = "") {
return prefix + Math.random().toString().substring(2);
}
Note that if you disable the plugin in config, the test works well.
Details
- CodeceptJS version: 2.6.1
- NodeJS Version: 10.18.1
- Operating System: Ubuntu 20.04
- webdriverio 6.0.15
- Configuration file:
...
plugins: {
screenshotOnFail: {
enabled: true,
uniqueScreenshotNames: true,
},
"stepByStepReport": {
"enabled": true,
},
autoDelay: {
enabled: true,
delayBefore: 500
}
},
...
What are you trying to achieve?
The plugin
stepByStepReportworks if you enable it in config file. Test shouldn't fail.What do you get instead?
$ npx codeceptjs run Concepts_test.js --verbose
... Context: BeforeSuite I get random string "ATConceptNew" [1] Error | TypeError: Cannot read property 'toString' of undefined Emitted | step.failed (I get random string "ATConceptNew") Emitted | step.finish (I get random string "ATConceptNew") [1] Error | TypeError: Cannot read property 'toString' of undefined [1] Starting <teardown> session Emitted | test.failed ([object Object]) Error processing test.failed event: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined at validateString (internal/validators.js:125:11) at Object.join (path.js:1147:7) at persist (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/plugin/stepByStepReport.js:182:24) at EventEmitter.event.dispatcher.on (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/plugin/stepByStepReport.js:109:5) at EventEmitter.emit (events.js:203:15) at EventEmitter.emit (domain.js:448:20) at Object.emit (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/event.js:115:28) at errHandler (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/scenario.js:101:13) at recorder.catch (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/scenario.js:132:11) at promise.catch (/home/mirao/workspace/codeceptjs/node_modules/codeceptjs/lib/recorder.js:227:9) [1] <teardown> Stopping recording promiseshelper's method:
Note that if you disable the plugin in config, the test works well.
Details
... plugins: { screenshotOnFail: { enabled: true, uniqueScreenshotNames: true, }, "stepByStepReport": { "enabled": true, }, autoDelay: { enabled: true, delayBefore: 500 } }, ...