Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
JimLynchCodes opened this issue Aug 9, 2016 · 0 comments

Comments

@JimLynchCodes
Copy link

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();
  });
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant