PhpStorm 2018.2 Help

Karma

Karma is a tool for testing client-side JavaScript. Karma executes tests against your application running in a real browser, which ensures correctness and trustworthiness of test results. PhpStorm integrates with Karma so you can run, debug, and monitor coverage of your tests from inside the IDE. You can see the test results in a treeview and easily navigate to the test source from there. Test status is shown next to the test in the editor with an option to quickly run it or debug it.

Before you start

  1. Install Node.js.

  2. Install and enable the Karma repository plugin on the Plugins page as described in Managing Plugins.

Installing Karma and plugins

  • Open the built-in PhpStorm Terminal (Alt+F12) and type one of the following commands at the command prompt:
    • npm install if Karma and all the required plugins are already defined in package.json.

    • To install Karma and the required plugins (e.g. karma-jasmine or jasmine-core) as development dependencies

      npm install --save-dev karma npm install --save-dev <required_karma_plugin> <another_required_karma_plugin>

    Learn more on the Karma official website.

Generating a Karma configuration file

Karma tests are run according to a karma.conf.js configuration file which is generated in the interactive mode. If you already have karma.conf.js in your project, just skip this step. For more details on Karma configuration, see Karma official website.

To create a Karma configuration file

  1. Open the Terminal and start the karma.conf.js generation wizard by typing one of the following depending on your operating system:
    • For macOS and Linux:
      ./node_modules/karma/bin/karma init

    • For Windows:
      npm install -g karma-cli
      karma init

  2. Answering the questions of the wizard, specify the testing framework to use and the browsers to be captured automatically. See also Karma Files: Pattern matching.

Running tests

With PhpStorm, you can quickly run a single Karma test right from the editor or create a run/debug configuration to execute some or all of your tests.

To run a single test from the editor

  • Click icons toolwindows toolWindowRun svg or icons actions rerun in the left gutter and choose Run <test_name> from the pop-up list. You can also see whether a test has passed or failed right in the editor, thanks to the test status icons ws_icon_test_status.png in the left gutter.

To create a Karma run configuration

  1. Select a test file in the Project tool window and choose Create <file name> on the context menu. The Run/Debug Configuration: Karma dialog box opens.

  2. Specify the Node.js interpreter to use. This can be a local Node.js interpreter or a Node.js on Windows Subsystem for Linux.

    Optionally, specify the Node.js-specific option parameters and the environment variables to be passed to Node.js.

  3. Specify the location of the karma package, the path to karma.conf.js, and the browsers from which Karma will access its server.

To run tests via a run configuration

  1. Select the Karma run/debug configuration from the list on the main toolbar and click icons toolwindows toolWindowRun svg to the right of the list.

    ws_select_run_configuration.png

  2. The Karma test server starts automatically without any steps from your side. View and analyze messages from the test server in the Karma Server tab of the Run tool window.

  3. Monitor test execution in the Test Runner tab of the Run tool window.

To rerun failed tests

  • In the Test Runner tab, click Rerun Failed Tests button on the toolbar. PhpStorm will execute all the tests that failed during the previous session.

    Rerun a failed Karma test

  • To rerun a specific failed test, select Run <test name> on its context menu.

Navigation

With PhpStorm, you can jump between a file and the related test file. Navigation from a test result in the Test Runner Tab to the test is also supported.

To jump between a file and the related test file

  • Open the file in the editor and choose Go To | Test or Go To | Test Subject on the context menu, or just press Ctrl+Shift+T.

To jump from a test result to the test

  • Select the test name in the Test Runner tab and choose Jump to Source on the context menu.

    ws_test_jump_to_test
    The test file opens in the editor with the cursor placed at the test definition.

Debugging tests

With PhpStorm, you can quickly start debugging a single Karma test right from the editor or create a run/debug configuration to debug some or all of your tests.

To start debugging a single test from the editor

  • Click icons toolwindows toolWindowRun svg or icons actions rerun in the left gutter and choose Debug <test_name> from the pop-up list.

To launch test debugging via a run/debug configuration

  1. Create a Karma run/debug configuration as described above.

  2. Select the Karma run/debug configuration from the list on the main toolbar and click icons actions startDebugger svg to the right of the list.

    ws_select_run_configuration.png

  3. In the Debug Tool Window that opens, proceed as usual: step through the tests, stop and resume test execution, examine the test when suspended, etc.

Monitoring code coverage

With PhpStorm, you can also monitor how much of your code is covered with Karma tests. PhpStorm displays this statistics in a dedicated tool window and marks covered and uncovered lines visually right in the editor. To monitor coverage, you need to install the karma-coverage package and update karma.conf.js.

To install karma-coverage

  • Open the built-in PhpStorm Terminal (Alt+F12) and type npm install  --save-dev karma-coverage.

To add karma-coverage definition to the configuration file

  1. Open karma.conf.js in the editor.

  2. Locate the reporters definition and add coverage to the list of values in the format:

    reporters: ['progress', 'coverage']

  3. Add a preprocessors definition and specify the coverage scope in the format:

    preprocessors: {'**/*.js': ['coverage']}

To launch tests with coverage

  1. Create a Karma run/debug configuration as described above.

  2. Select the Karma run/debug configuration from the list on the main toolbar and click icons general runWithCoverage svg to the right of the list.

    ws_select_run_configuration.png
    Alternatively, use the test icons in the editor to quickly run a specific suite or a test with coverage:
    ws_mocha_quickly-run-with-coverage.png

  3. Monitor the code coverage in the Coverage tool window. Every time Karma tests are run, a coverage report is actually generated on the disk. The format of a coverage report can be configured in the configuration file, for example:
    // karma.conf.js module.exports = function(config) { config.set({ ... // optionally, configure the reporter coverageReporter: { type : 'html', dir : 'coverage/' } ... });};
    The following type values are acceptable:
    • html produces a bunch of HTML files with annotated source code.

    • lcovonly produces an lcov.info file.

    • lcov produces HTML + .lcov files. This format is applied by default.

    • cobertura produces a cobertura-coverage.xml file for easy Hudson integration.

    • text-summary produces a compact text summary of coverage, typically to the console.

    • text produces a detailed text table with coverage for all files.

Last modified: 21 November 2018

See Also