Git Product home page Git Product logo

karma-cucumberjs's People

Contributors

hallvar avatar mseankelly avatar poporul avatar s9tpepper avatar tansaku avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

karma-cucumberjs's Issues

Running examples

Can you please update documentation regarding how to run example, opening runner in browser doesn't do anything

test runs fail randomly, unable to execute the karma-loaded function

When running my tests, they fairly regularly fail with the following message: TypeError: 'undefined' is not a function (evaluating 'window.__karma__.loaded()'). Rerunning the tests solves the problem, but the instability is frustrating when developing locally and unacceptable when it randomly fails on the ci-server (travis-ci).

Is it possible that I have configured something incorrectly?

I'm executing the tests with grunt and the project is available here, if that would help diagnose.

Unmaintained?

Hi,

It's seems that not much has changed in this project in three years. If this project is no longer maintained please put some description in the README and we will find a different project to make the official cucumber-karma project.

Thanks.

Register karma-cucumber on npm

I unregistered karma-cucumber on npm since this project is more up to date, and redirected traffic from here to this repo.

So if you would like you can take that name (as soon as the registry updates).

"Angular is not Defined" Error

I'm getting this error when running:

Chrome 52.0.2743 (Mac OS X 10.11.4) ERROR
Uncaught ReferenceError: angular is not defined
at /Users/jim/Git-Projects/Flexbox-Push-Drawer-Example/src/app/index.module.js:4

My karma.config file:

// Karma configuration
// Generated on Mon Aug 08 2016 16:30:26 GMT-0300 (BRT)

//npm install -g grunt-cli bower yo generator-karma generator-angular
//npm install -g karma-phantomjs-launcher karma
//npm install -g karma-phantomjs-launcher karma cucumber
//npm install karma-cucumberjs --save-dev

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['cucumberjs'],


    // list of files / patterns to load in the browser
    files: [
      'src/app/**/*.module.js',
      {pattern: 'ff/**/*.feature', watched: true, included: false, served: true},
      // {pattern: 'ff/**/*.js', watched: true, included: true, served: true},
      {pattern: 'src/**/*.js', watched: true, included: true, served: true}
    ],


    // list of files to exclude
    exclude: [
    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_DEBUG,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],
    //browsers: ['PhantomJS'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false,

    // Concurrency level
    // how many browser should be started simultaneous
    concurrency: Infinity
  })
}

ff/ff.feature:

Feature: Adding

  Scenario: Add two numbers
    Given the input "2+2"
    When the calculator is run
    Then the output should be "4"

ff/ff.steps.js:

//var zombie = require('zombie');
addStepDefinitions(function (scenario) {
//module.exports = function () {
  scenario.Given(/^the input "([^"]*)"$/, function (arg1, callback) {
    // Write code here that turns the phrase above into concrete actions
    callback(null, 'pending');
  });

  scenario.When(/^the calculator is run$/, function (callback) {
    // Write code here that turns the phrase above into concrete actions
    callback(null, 'pending');
  });

  //this.Then(/^the output should be "([^"]*)"$/, function (arg1, callback) {
  // Write code here that turns the phrase above into concrete actions
  // callback(null, 'pending');
  //});
});

the Karma coverage option does not seem to work

it may just be my project but..

when i configure coverage, the instanbul report is generated though none of the files i specify to cover are reported on.

i've test this with some jasmine specs rathern the cucumber.js specs and the jasmine one generate coverage information.

This is a real shame as the coverage information would be the icing on the cake for me

You need to include some adapter that implements __karma__.start method!

I'm getting this error when executing and have no idea why...

'use strict';

var path = require('path');
var conf = require('./gulp/conf');

var _ = require('lodash');
var wiredep = require('wiredep');

var pathSrcHtml = [
  path.join(conf.paths.src, '/**/*.html')
];

function listFiles() {
  var wiredepOptions = _.extend({}, conf.wiredep, {
    dependencies: true,
    devDependencies: true
  });

  var patterns = wiredep(wiredepOptions).js
    .concat([
      path.join(conf.paths.src, '/app/**/*.module.js'),
      path.join(conf.paths.src, '/app/**/*.js'),
      path.join(conf.paths.src, '/**/*.spec.js'),
      path.join(conf.paths.src, '/**/*.mock.js'),
    ])
    .concat(pathSrcHtml);

  var files = patterns.map(function(pattern) {
    return {
      pattern: pattern
    };
  });
  files.push({
    pattern: path.join(conf.paths.src, '/assets/**/*'),
    included: false,
    served: true,
    watched: false
  });
  return files;
}

module.exports = function(config) {

  var configuration = {
      files: [
        // These are not watched because they're not expected to change.
        // These are not included because they are not JavaScript files and Karma inserts
        // these as <script> tags.
        // These are served however, as the adapter will load them into the captured browsers.
        // The cucumber-html.css file can be copied and customized, simply change the path.
        // The adapter will load any file ending with '.css' into the captured browsers.
        {pattern: 'node_modules/karma-cucumberjs/vendor/cucumber-html.css', watched: false,
          included: false, served: true},
        {pattern: '/app.unit.template.html', watched: false, included: false, served: true},


        // These are not included because they're text feature files and shouldn't go in script tags.
        // These are watched because feature files will change during dev and you want Karma to run
        // tests when these change.
        // These are served by Karma so the adapter can load their contents when its time to test.
        {pattern: '/**/*.unit.feature', watched: true, included: false, served: true},



        // The step definitions should be loaded last so the adapter can load the global functions
        // needed by the step defs.
        // The step defs are watched and served so Karma runs when they change.
        {pattern: '/**/*.unit.step.js', watched: true, included: true, served: true}
      ],

    // frameworks: ['jasmine', 'angular-filesort','karma-cucumberjs'],
    framework: ['cucumberjs'],


    singleRun: true,

    autoWatch: false,

    ngHtml2JsPreprocessor: {
      stripPrefix: conf.paths.src + '/',
      moduleName: 'ngNjOrg'
    },

    logLevel: 'WARN',

    // frameworks: ['jasmine', 'angular-filesort'],
    // frameworks: ['cucumberjs', 'angular-filesort'],

    angularFilesort: {
      whitelist: [path.join(conf.paths.src, '/**/!(*.html|*.spec|*.mock).js')]
    },

    browsers : ['PhantomJS'],

    plugins : [
      'karma-phantomjs-launcher',
      'karma-angular-filesort',
      'karma-coverage',
      'karma-jasmine',
      'karma-ng-html2js-preprocessor'
    ],

    coverageReporter: {
      type : 'html',
      dir : 'dist/reports/acceptance-unit'
    },

    reporters: ['progress'],

    proxies: {
      '/assets/': path.join('/base/', conf.paths.src, '/assets/')
    }
  };

  // This is the default preprocessors configuration for a usage with Karma cli
  // The coverage preprocessor is added in gulp/unit-test.js only for single tests
  // It was not possible to do it there because karma doesn't let us now if we are
  // running a single test or not
  configuration.preprocessors = {};
  pathSrcHtml.forEach(function(path) {
    configuration.preprocessors[path] = ['ng-html2js'];
  });

  // This block is needed to execute Chrome on Travis
  // If you ever plan to use Chrome and Travis, you can keep it
  // If not, you can safely remove it
  // https://github.com/karma-runner/karma/issues/1144#issuecomment-53633076
  if(configuration.browsers[0] === 'Chrome' && process.env.TRAVIS) {
    configuration.customLaunchers = {
      'chrome-travis-ci': {
        base: 'Chrome',
        flags: ['--no-sandbox']
      }
    };
    configuration.browsers = ['chrome-travis-ci'];
  }

  config.set(configuration);
};
<div id='myApp'>
  <div class='box' style='background-color: green;'>A box in my app</div>
</div>

<script type='text/javascript'>
  $('.box').click(function () {
    $('.box').css('background-color', 'red');
  });

  // This MUST be called once the application is ready to undergo testing.
  startCucumberRun();
</script>

Feature: The Footer has some hardcoded text.
  In order to see copyright information and terms of user links
  As a user of the website
  I want to have to see copyright information and terms of user links displayed on the screen.

  - Johnny Bibblestein from the Texas Ranger Motorcycle Squad
  alerted me that the footer is quite an important piece of the project
  and surely requires low level step definition acceptance tests!


  Scenario: Copyright text shows
    Given gg
    When mm
    Then pp
// This addStepDefinitions() function is why the step definitions must
// be configured to load after the adapter.
addStepDefinitions(function (scenario) {
  // Provide a custom World constructor. It's optional, a default one is supplied.
  scenario.World = function (callback) {
    callback();
  };


  // Define your World, here is where you can add some custom utlity functions you
  // want to use with your Cucumber step definitions, this is usually moved out
  // to its own file that you include in your Karma config
  var proto = scenario.World.prototype;
  proto.appSpecificUtilityFunction = function someHelperFunc() {
    // do some common stuff with your app
  };


  // Before scenario hoooks
  scenario.Before(function (callback) {
    // Use a custom utility function
    this.appSpecificUtilityFunction();

    callback();
  });


  scenario.Given(/^gg$/, function(callback) {
    // Verify or set up an app state

    // Move to next step
    callback();
  });

  scenario.When(/^mm$/, function(callback) {
    // Trigger some user action

    // Move to next step
    callback();
  });

  scenario.Then(/^pp$/, function(callback) {
    // Verify the expected outcome

    // Move to next step
    callback();
  });

  // After scenario hooks
  scenario.After(function (callback) {
    callback();
  });
});

Breaks when `browserify --standalone` bundle included via karma files

As a karma-cucumber-js user
I want to include a bundle built with Browserify
So that I can use its functionality inside my feature testing DSL

Given a bundle that has been built with Browserify as follows browserify src/some-module.js --standalone some-module > bundle.js
When I include this module in karma.conf.js's file section as follows { pattern: "./node_modules/some-module/bundle.js", watched: false, included: true, served: false }
I should not be presented with the error Error: Mismatched anonymous define() module

The error originates from here https://github.com/s9tpepper/karma-cucumberjs/blob/master/lib/adapter.js#L1220

How to run?

For me, karma was already set up in my project and is run with gulp scripts . I'm pretty sure those gulp scripts won't work to run this karma config file. It would be nice for the README to show how to actually run this instead of just leaving you wondering...

Synchronous step definitions

Does karma-cucumberjs not support synchronous step definitions like cucumber-js does?
https://github.com/cucumber/cucumber-js#synchronous-step-definitions

I never get to when in the below example:

PhantomJS 1.9.8 (Mac OS X 0.0.0) LOG: 'Given'
WARN [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: Disconnected (1 times), because no message in 10000 ms.
Feature:
    Feature text
    More feature text

    Scenario: Scenario text
    Given a
    When b
    Then c
    scenario.Given(/^a$/, function () {
        console.log('Given');
        console.log('leaving Given');
    });

    scenario.When(/^b$/, function () {
        console.log('When');
        console.log('leaving When');
    });

Error: Mismatched anonymous define() module

I'm trying to work with cucumber in karma using grunt-karma and karma-cucumberjs. I'm doing everything as Readme.md describes, just translating the configs to grunt-karma.

When I run grunt karma:bdd I get the colourful error:

PhantomJS 1.9.8 (Linux 0.0.0)
Error: Mismatched anonymous define() module: function () {
return sinonChai;
}
http://requirejs.org/docs/errors.html#mismatch
at http://localhost:9876/base/node_modules/karma-cucumberjs/lib/adapter.js?8617a1aab4937295762f75412f3a2edb8fddee32:25

Could anyone shed light on the error?

BTW: the RequireJS does not like something. However, nothing is said in Readme.md on RequireJS.

In a grunt task I have:

bdd: {
        options: {
            files: [{
                pattern: 'node_modules/karma-cucumberjs/vendor/cucumber-html.css',
                watched: false,
                included: false,
                served: true
            }, {
                pattern: 'frontend/features/step_definitions/support/app.template',
                watched: false,
                included: false,
                served: true
            }, {
                pattern: 'frontend/features/**/*.feature',
                watched: true,
                included: false,
                served: true
            }, {
                pattern: 'frontend/features/step_definitions/**/*.js',
                watched: true,
                included: true,
                served: true
            }],

            frameworks: ['cucumberjs', 'chai-as-promised', 'sinon-chai', 'chai']
        }

app.template:

<div id="myApp">
  <div class="a-container">

  </div>
</div>

<script type="text/javascript">
  startCucumberRun();
</script>

step definition:

addStepDefinitions( function (scenario) {
    var When = scenario.When;
    var Then = scenario.Then;

   // skipped...

});

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.