Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

karma-firefox-launcher

karma-runner1.1mMIT2.1.3TypeScript support: definitely-typed

A Karma plugin. Launcher for Firefox.

karma, testing, karma-plugin, karma-launcher, firefox

readme

karma-firefox-launcher

js-standard-style npm version npm downloads semantic-release

Build Status Dependency Status devDependency Status

Launcher for Mozilla Firefox.

karma-firefox-launcher is deprecated and is not accepting new features or general bug fixes.

See deprecation notice for karma.

Web Test Runner, jasmine-browser-runner, and playwright-test provide browser-based unit testing solutions which can be used as a direct alternative.

Installation

The easiest way is to keep karma-firefox-launcher as a devDependency in your package.json.

You can simple do it by:

npm install karma-firefox-launcher --save-dev

Configuration

// karma.conf.js
module.exports = function (config) {
  config.set({
    plugins: [require("karma-firefox-launcher")],
    browsers: [
      "Firefox",
      "FirefoxDeveloper",
      "FirefoxAurora",
      "FirefoxNightly",
    ],
  });
};

You can pass list of browsers as a CLI argument too:

karma start --browsers Firefox,Chrome

To run Firefox in headless mode, append Headless to the version name, e.g. FirefoxHeadless, FirefoxNightlyHeadless.

Environment variables

You can specify the location of the Firefox executable using the following environment variables:

  • FIREFOX_BIN (for browser Firefox or FirefoxHeadless)
  • FIREFOX_DEVELOPER_BIN (for browser FirefoxDeveloper or FirefoxDeveloperHeadless)
  • FIREFOX_AURORA_BIN (for browser FirefoxAurora or FirefoxAuroraHeadless)
  • FIREFOX_NIGHTLY_BIN (for browser FirefoxNightly or FirefoxNightlyHeadless)

Custom Firefox location

In addition to Environment variables you can specify location of the Firefox executable in a custom launcher:

browsers: ['Firefox68', 'Firefox78'],

customLaunchers: {
    Firefox68: {
        base: 'Firefox',
        name: 'Firefox68',
        command: '<path to FF68>/firefox.exe'
    },
    Firefox78: {
        base: 'Firefox',
        name: 'Firefox78',
        command: '<path to FF78>/firefox.exe'
    }
}

Custom Preferences

To configure preferences for the Firefox instance that is loaded, you can specify a custom launcher in your Karma config with the preferences under the prefs key:

browsers: ['FirefoxAutoAllowGUM'],

customLaunchers: {
    FirefoxAutoAllowGUM: {
        base: 'Firefox',
        prefs: {
            'media.navigator.permission.disabled': true
        }
    }
}

Loading Firefox Extensions

If you have extensions that you want loaded into the browser on startup, you can specify the full path to each extension in the extensions key:

browsers: ['FirefoxWithMyExtension'],

customLaunchers: {
    FirefoxWithMyExtension: {
        base: 'Firefox',
        extensions: [
          path.resolve(__dirname, 'helpers/extensions/myCustomExt@suchandsuch.xpi'),
          path.resolve(__dirname, 'helpers/extensions/myOtherExt@soandso.xpi')
        ]
    }
}

Please note: the extension name must exactly match the 'id' of the extension. You can discover the 'id' of your extension by extracting the .xpi (i.e. unzip XXX.xpi) and opening the install.RDF file with a text editor, then look for the em:id tag under the Description tag. If your extension manifest looks something like this:

<?xml version="1.0" encoding="utf-8"?>
   <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  <Description about="urn:mozilla:install-manifest">
    <em:id>myCustomExt@suchandsuch</em:id>
    <em:version>1.0</em:version>
    <em:type>2</em:type>
    <em:bootstrap>true</em:bootstrap>
    <em:unpack>false</em:unpack>

    [...]
  </Description>
</RDF>

Then you should name your extension `myCustomExt@suchandsuch.xpi`.


For more information on Karma see the homepage.

changelog

2.1.3 (2024-03-03)

2.1.2 (2021-11-02)

Bug Fixes

2.1.1 (2021-06-02)

Bug Fixes

  • update name of Developer Edition on macOS (a0b5e58)

2.1.0 (2020-11-03)

Features

  • provide a way to configure location of executable in customLauncher (fix #125) (c53efcc)

2.0.0 (2020-10-20)

Bug Fixes

  • Bypass WSL check if Firefox is present in WSL environment (23a5d10), closes #107
  • Update is-wsl to v2.2.0 to detect docker under WSL (#116) (c585393)

Features

  • Make Node 10 minimum required version (480dafd), closes #118

BREAKING CHANGES

  • Changed minimum required version of node.js from 8 to 10.

Node 8 EOL was 2019-12-31.

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

1.3.0 (2020-01-08)

Bug Fixes

  • Check that wsl path exists before using wslpath to convert it (#105) (1eb7e1b)

1.2.0 (2019-08-09)

Bug Fixes

  • Add -wait-for-browser (540c1dd)
  • Look for other paths for Firefox Nightly on Windows and Mac (6377ee3)

Features

  • headless: add enable remote debugging by default (0e37f76)
  • Add support for running Windows Firefox from WSL (b4e260e)

1.1.0 (2017-12-07)

Bug Fixes

  • safe handling of missing env variables (98a4ada), closes #67

Features

  • support Firefox headless (a1fc1c8)

1.0.1 (2017-03-04)

Bug Fixes

  • windows: change getFirefoxExe function to allow running on win64 (a332915)
  • windows: change getFirefoxExe function to find exe on other drive (3322a61)
  • disable multi-process firefox (9f28aa9)
  • only use $HOME environmental variable if it exists (3ffa514)