Skip to content

Test fails with plugin stepByStepReport applied on step in function BeforeSuite #2337

@mirao

Description

@mirao

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
        }
    },
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions