GithubHelp home page GithubHelp logo

multi-cuke's Issues

Timeout based on stdout to prevent hangs

Should support a timeout if the process has received no stdout in a given amount of time. This is to prevent the scenario where cucumber itself hangs or crashes and we stop receiving data back from the child.

Support for external parsers

Pretty parser is defined as a class that exposes an API to handle calls around test results and results output. Other parsers would be able to be used as a drop in replacement to handle results however needed, but still would require adding a flag/option to multi-cuke and defining a default parser if none passed.

Support scenario outlines

multi-cuke doesn't seem to correctly support outlines. If I have this scenario:

Feature: LKG
  @LKG
  Scenario Outline: No-op test
    Given I do nothing

    Examples:
      | iteration |
      |     1     |
      |     2     |
      |     3     |

When I run it in regular cucumber I get:

Feature: LKG

  @LKG
  Scenario: No-op test
    Given I do nothing

  @LKG
  Scenario: No-op test
    Given I do nothing

  @LKG
  Scenario: No-op test
    Given I do nothing

3 scenarios (3 passed)
3 steps (3 passed)

But when I run it in multi-cuke I get:

Feature: LKG
  @LKG
  Scenario: No-op test
    Given I do nothing  # lkg.feature:4

1 scenario (1 passed)
5 steps (5 passed)

JSON output file

Is there any way to generate a json output format for the test execution ?

Can't identify feature tags

When having a feature:

@BAT_file
Feature: CPA BAT

@01_web_app_build_number
Scenario: BAT 01 - Web App Build Number
Given I am on CPA Login page
And I should be at "LOGIN PAGE"
And I login with "BAT ACCOUNT"

and having this configuration:

const multicuke = require('multi-cuke').default;
var options = {
paths: ['./features'],
tags: ['@BAT_file'],
requires: [],
cucumberPath: "node_modules/cucumber/bin/cucumber.js",
workers: 4,
workerEnvVars: {},
logDir: '.multiCuke_logs',
silentSummary: false,
verbose: false,
inlineStream: false,
failFast: false,
devMode: false,
strict: false
};
multicuke(options);

multi-cuke throws this message: There are no scenarios found that match the options passed.

So, I assume that feature tags are being ignored

Examples tags on Scenarios Outline are not supported

This feature is supported by Cucumber :

@06_simulation_check_outline
Scenario Outline: (OUTLINE_) BAT 06 - Simulation Check (

, ,
Given I am on CPA Login page
And I login with "RANDOM ACCOUNT"

@06_simulation_check_outline_1
Examples:
  | SECTION      | UNIT   |  SIMULATION |
  | FINANCIAL    | F1     |  1          |
@06_simulation_check_outline_2
Examples:
  | SECTION      | UNIT   |  SIMULATION |
  | REGULATION   | R1     |  1          |

If you run multi-cuke by one of the example tags (@06_simulation_check_outline_1), a message says that "There are no scenarios found that match the options passed.".

Also, if you run the tests using the scenario tag @06_simulation_check_outline, this error is shown:

Unhandled rejection TypeError: Cannot read property 'cells' of undefined
at new Worker (/Users/beckerqa/Documents/CPA2017/node_modules/multi-cuke/distribution/lib/worker.js:74:10)
at TestHandler.createWorker (/Users/beckerqa/Documents/CPA2017/node_modules/multi-cuke/distribution/lib/test-handler.js:169:20)
at /Users/beckerqa/Documents/CPA2017/node_modules/multi-cuke/distribution/lib/test-handler.js:101:20
at tryCatcher (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:510:31)
at Promise._settlePromise (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:567:18)
at Promise._settlePromise0 (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:612:10)
at Promise._settlePromises (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:691:18)
at Promise._fulfill (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:636:18)
at Promise._resolveCallback (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:431:57)
at Promise._settlePromiseFromHandler (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:522:17)
at Promise._settlePromise (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:567:18)
at Promise._settlePromise0 (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:612:10)
at Promise._settlePromises (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:691:18)
at Promise._fulfill (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:636:18)
at Promise._resolveCallback (/Users/beckerqa/Documents/CPA2017/node_modules/bluebird/js/release/promise.js:431:57)

Add verbose mode

With debug output of what is scheduled when, and what is currently running.

Support debug message propagation

With output channels silenced, there is no built in to log to console, as console.log() will not output from step definitions. Should create a handler for messages from child process to allow for easier debugging.

Abstract resource/cost system

Allow for a way to pass a function as an abstracted way to determine cost of a scenario, to allow for a scheduling algorithm

workers cannot exceed number of cores

Passing the argument to the cli of -w 8 does not run 8 tests in parallel, I even tried editing the .js files for main and cli and hard coded the worker defaults to 8 but still only 4 are run.

Should setting the -w argument allow more than 4 to be run?

Thanks

Multicuke returns 0 for invalid feature files, but cucumber-js returns 1

If the feature files we try to run are all invalid due to bad syntax, multi-cuke returns a null exit code, but for the same files, cucumber-js returns 1. It might be better if multi-cuke was consistent with cucumber-js.

(also I realize this is intentional behavior, but I still wonder if it might be better to be consistent with the tool we're wrapping - example use case is that someone updates all of the feature files but accidentally leaves in merge conflict garbage, rendering all feature files invalid - the tests would all just pass and you might never notice unless you glanced at console logs)

parseException fails if exception is undefined

TypeError: Cannot read property 'stack' of undefined
    at PrettyParser.parseException (C:\jenkins\workspace\***\node_modules\multi-cuke\distribution\lib\parsers\pretty.js:125:35)
    at PrettyParser.handleResult (C:\jenkins\workspace\***\node_modules\multi-cuke\distribution\lib\parsers\pretty.js:60:21)
    at done (C:\jenkins\workspace\***\node_modules\multi-cuke\distribution\lib\test-handler.js:151:43)
    at C:\jenkins\workspace\***\node_modules\multi-cuke\distribution\lib\test-handler.js:182:16
    at bound (domain.js:280:14)
    at runBound (domain.js:293:12)
    at tryCatcher (C:\jenkins\workspace\***\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\jenkins\workspace\***\node_modules\bluebird\js\release\promise.js:504:31)
    at Promise._settlePromise (C:\jenkins\workspace\***\node_modules\bluebird\js\release\promise.js:561:18)
    at Promise._settlePromise0 (C:\jenkins\workspace\***\node_modules\bluebird\js\release\promise.js:606:10)
    at Promise._settlePromises (C:\jenkins\workspace\***\node_modules\bluebird\js\release\promise.js:685:18)
    at Async._drainQueue (C:\jenkins\workspace\***\node_modules\bluebird\js\release\async.js:138:16)
    at Async._drainQueues (C:\jenkins\workspace\***\node_modules\bluebird\js\release\async.js:148:10)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\jenkins\workspace\***\node_modules\bluebird\js\release\async.js:17:14)
    at tryOnImmediate (timers.js:543:15)
    at processImmediate [as _immediateCallback] (timers.js:523:5)

Unit tests fail in windows

  8) Feature Finder should support multiple paths:

      AssertionError: expected [ Array(4) ] to deeply equal [ Array(4) ]
      + expected - actual

       [
         {
      -    "featureFile": "test\\features\\sample.feature"
      +    "featureFile": "test/features/sample.feature"
           "scenarioLine": 7
         }
         {
      -    "featureFile": "test\\features\\sample.feature"
      +    "featureFile": "test/features/sample.feature"
           "scenarioLine": 11
         }
         {
      -    "featureFile": "test\\features\\sample.feature"
      +    "featureFile": "test/features/sample.feature"
           "scenarioLine": 14
         }
         {
      -    "featureFile": "test\\features\\sample2.feature"
      +    "featureFile": "test/features/sample2.feature"
           "scenarioLine": 4
         }
       ]

TypeError: multicuke(options) is not a function

I have runMultiFeature.js having following code :

const multicuke = require('multi-cuke');
var options = {
    'paths': ['./login.feature'],
    'tags': [],
    'requires': ['./ui'],
    'cucumberPath': "node_modules/cucumber/bin/cucumber.js",
    'workers': 4,
    'workerEnvVars': {},
    'logDir': '.multiCuke_logs',
    'silentSummary': false,
    'verbose': false,
    'inlineStream': false,
    'failFast': false,
    'devMode': false,
    'strict': false
};
multicuke(options);

and executing the .js file using "node runMultiFeature.js"

getting following error:
multicuke();
^

TypeError: multicuke is not a function
at Object. (C:\UI_automation_201016\runMultiFeature.js:17:1)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:141:18)
at node.js:933:3

Verbose flag should support file output

the --verbose flag on multi-cuke should support no options (e.g: -v --verbose) to print to console, or a filepath to log to file (e.g: -v file://path --verbose file://path)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.