allure-framework / allure-js

Allure integrations for JavaScript test frameworks
https://allurereport.org/
Apache License 2.0
226 stars 120 forks source link

allure-cucumberjs v3.0.0 not compatible with @cucumber/cucumber v11.0.1? #1143

Open harmin-parra opened 1 week ago

harmin-parra commented 1 week ago

Describe the bug Install

allure-cucumberjs@3.0.0
@cucumber/cucumber@11.0.1

Create cucumber.js file with content:

const path = require("path");

module.exports = {
  default: {
    format: [path.resolve(__dirname, "reporter.js")],
  },
};

Create report.js file with content: (according to https://allurereport.org/docs/cucumberjs/)

const { CucumberJSAllureFormatter, AllureRuntime } = require("allure-cucumberjs");
const path = require("path");

class Reporter extends CucumberJSAllureFormatter {
  constructor(options) {
    super(
      options,
      new AllureRuntime({
        resultsDir: path.resolve(__dirname, "allure-results"),
      }),
      {},
    );
  }
}

module.exports = Reporter;

Execute tests

Result:

Error: Failed to import formatter /home/hpr/gitlab/tests-nodejs/reporter.js
    at importCode (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/formatter/import_code.js:21:15)
    at async resolveImplementation (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/formatter/resolve_implementation.js:15:26)
    at async initializeFormatter (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/api/formatters.js:18:32)
    at async initializeFormatters (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/api/formatters.js:43:5)
    at async runCucumber (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/api/run_cucumber.js:65:31)
    at async Cli.run (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/cli/index.js:56:29)
    at async Object.run [as default] (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/cli/run.js:29:18) {
  [cause]: TypeError: Class extends value undefined is not a constructor or null
      at Object.<anonymous> (/home/hpr/gitlab/tests-nodejs/reporter.js:4:24)
      at Module._compile (node:internal/modules/cjs/loader:1356:14)
      at Module._extensions..js (node:internal/modules/cjs/loader:1414:10)
      at Module.load (node:internal/modules/cjs/loader:1197:32)
      at Module._load (node:internal/modules/cjs/loader:1013:12)
      at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:202:29)
      at ModuleJob.run (node:internal/modules/esm/module_job:195:25)
      at async ModuleLoader.import (node:internal/modules/esm/loader:336:24)
      at async importModuleDynamicallyWrapper (node:internal/vm/module:429:15)
      at async importCode (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/formatter/import_code.js:18:16)
}

Replace report.js file with content : (according to https://github.com/allure-framework/allure-js/blob/main/packages/allure-cucumberjs/README.md)

const AllureCucumberReporter = require("allure-cucumberjs/reporter");

module.exports = AllureCucumberReporter;

Execute tests

Result:

TypeError: this.supportCodeLibrary.World is not a constructor
    at TestCaseRunner.resetTestProgressData (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/runtime/test_case_runner.js:84:22)
    at new TestCaseRunner (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/runtime/test_case_runner.js:81:14)
    at Worker.runTestCase (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/runtime/worker.js:36:32)
    at InProcessAdapter.run (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/runtime/serial/adapter.js:14:47)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Coordinator.run (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/runtime/coordinator.js:31:25)
    at async runCucumber (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/api/run_cucumber.js:118:21)
    at async Cli.run (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/cli/index.js:56:29)
    at async Object.run [as default] (/home/hpr/gitlab/tests-nodejs/node_modules/@cucumber/cucumber/lib/cli/run.js:29:18)
rkrisztian commented 1 day ago

I tried @cucumber/cucumber@11.0.1 with allure-cucumberjs@3.0.2, and I couldn't reproduce this issue. Maybe try upgrading?