karma-electron
Karma launcher and preprocessor for Electron
Last updated a year ago by twolfson .
Unlicense · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install karma-electron 
SYNC missed versions from official npm registry.

karma-electron Build status Build status

Karma launcher and preprocessor for Electron

This was written to allow for directly testing in Electron where we might want require to work automatically

Features:

  • Tested via CI on Linux and Windows
  • Support for Node.js integration in the renderer process (e.g. node_modules, __filename, relative paths for require)
  • Support for hidden browser windows
  • Support for isolated test runs to prevent cookie/localStorage pollution

Requirements:

Notices:

Breaking changes in 5.0.0

We have corrected inaccuracies with file:// behavior from Electron. For example:

  • __filename is now Karma's context.html
  • Relative paths for require resolve from Karma's context.html directory

We have transferred support for this to the option client.loadScriptsViaRequire which loads scripts via require and has the original expected Node.js behavior

For more information, see https://github.com/twolfson/karma-electron/issues/11

Getting Started

On a project that has been set up with karma init already, install the module via:

# Install our module and `electron`
npm install karma-electron electron

Then, configure the module:

// Inside `karma.conf.js`
browsers: ['Electron']

// If you would like Node.js integration support (e.g. `require`)
//   then, you must include this in `preprocessors` and `client`
// DEV: preprocessors is for backfilling `__filename` and local `require` paths
preprocessors: {
  '**/*.js': ['electron']
},
// DEV: `useIframe: false` is for launching a new window instead of using an iframe
//   In Electron, iframes don't get `nodeIntegration` priveleges yet windows do
client: {
  useIframe: false
}

Then, we can run Karma:

karma start

Documentation

Environment variables

  • ELECTRON_BIN - Override path to use for electron
    • By default, we will use path given by electron

Example:

ELECTRON_BIN=/usr/bin/electron karma start

Script configuration

We support the following configurations:

  • client Object - Container for configuring child windows loaded from Karma
    • __filenameOverride String - Override __filename to be another path (e.g. /path/to/my-index.html)
      • This will also affect __dirname and module.filename as those are derived from __filename
      • By default, __filename will point to Karma's context.html
    • loadScriptsViaRequire Boolean - Load scripts via require instead of <script src=
      • This sets __filename, __dirname, and module to match the script instead of Karma's context.html
      • By default, this is false and we directly load the original scripts content

Example:

module.exports = function (config) {
  config.set({
    client: {
      // DEV: These 2 options aren't typically used together
      //   This is for demonstration purposes

      // Override top level `__filename` to be `/home/.../my-electron-app/index.html`
      //   where `__dirname` is `/home/.../my-electron-app`
      __filenameOverride: __dirname + '/index.html',

      // Use `require` instead of `<script src=` to load scripts
      loadScriptsViaRequire: true
    }
  });
};

Launcher configuration

We support configuration via Karma's custom launcher inheritance:

  • flags Array - List of Chromium flags to alter Electron's behavior
  • userDataDir String - Directory to store cookies/localStorage information
    • By default, this is a random directory generated by Karma (e.g. /tmp/karma-5355024)
  • require String - Path to a main Electron process file to require before calling app.on('ready')

Example:

module.exports = function (config) {
  config.set({
    // Specify usage of our custom launcher
    browsers: ['CustomElectron'],

    // Define a custom launcher which inherits from `Electron`
    customLaunchers: {
      CustomElectron: {
        base: 'Electron',
        userDataDir: __dirname + '/.electron',
        flags: ['--show'],
        require: __dirname + '/main-fixtures.js'
      }
    }
  });
};

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via npm run lint and test via npm test.

Donating

Support this project and others by twolfson via donations.

http://twolfson.com/support-me

Unlicense

As of Mar 03 2016, Todd Wolfson has released this repository and its contents to the public domain.

It has been released under the UNLICENSE.

Current Tags

  • 6.0.0                                ...           latest (a year ago)

24 Versions

  • 6.0.0                                ...           a year ago
  • 5.3.0                                ...           a year ago
  • 5.2.2                                ...           2 years ago
  • 5.2.1                                ...           2 years ago
  • 5.2.0                                ...           2 years ago
  • 5.1.1                                ...           3 years ago
  • 5.1.0                                ...           3 years ago
  • 5.0.0                                ...           3 years ago
  • 4.1.3                                ...           3 years ago
  • 4.1.2                                ...           3 years ago
  • 4.1.1                                ...           3 years ago
  • 4.1.0                                ...           3 years ago
  • 4.0.0                                ...           3 years ago
  • 3.2.1                                ...           3 years ago
  • 3.2.0                                ...           3 years ago
  • 3.1.1                                ...           3 years ago
  • 3.1.0                                ...           3 years ago
  • 3.0.5                                ...           3 years ago
  • 3.0.4                                ...           3 years ago
  • 3.0.3                                ...           3 years ago
  • 3.0.2                                ...           3 years ago
  • 3.0.1                                ...           3 years ago
  • 3.0.0                                ...           3 years ago
  • 2.0.2                                ...           3 years ago
Maintainers (1)
Downloads
Today 3
This Week 319
This Month 1,237
Last Day 29
Last Week 387
Last Month 1,627
Dependencies (6)
Dev Dependencies (15)

Copyright 2014 - 2016 © taobao.org |