npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

karma-mojo

v1.0.1

Published

Focused Karma runner.

Downloads

9

Readme

karma-mojo

Mojo is a plugin for Karma that provides a binary for running only a select subset of tests at a time instead of running the whole test suite.

The way it works is that it watches test files you edit and tracks them in a file that will be fed to Karma to run. This way, your testing session stays lean and mean!

The mojo binary is a wrapper CLI for Karma the lets you launch and configure the plugin directly from the command-line.

Installation & Configuration

You'll have to do some wiring to get this to function since you need to customize your Karma config to support Mojo. First, install the package from npm:

npm install --save-dev karma-mojo

Then copy your karma.conf.js file to karma.mojo.conf.js and make the adjustments explained in [examples/karma.mojo.conf.js].

Read more for a run-down of the options that may help you test during development.

Options & Modes

Run mojo --help to see the list of available options. Some of the more cryptic options will be explained here.

The pick-up-where-you-left-off mode (--continue)

If you terminate Mojo and would like to run it again later to resume the work you had been doing, you can pass --continue as an argument and it will start off with the test files you had last worked on - no need to manually re-track them all.

Tunnel-visioning with --focus

When this mode is engaged, Mojo will exhibit an advanced stage of amnesia where it will only run the very last test module that you edit, forgetting all past test modules that have been tracked during the active session.

The CREEP mode (--creep)

When using mojo --creep, Mojo will now not only track the test files you're editing, but also all their siblings within that module group. This is useful if you're testing a group of interrelated modules and you want to watch out for any breakage during refactor.

For example, let's say you edit a file at:

/components/__tests__/A.test.js

Mojo will now also track all test files under:

/components/__tests__/

This saves you from manually adding all the test files to the tracker by editing/touching them.

Grepping for goodies with --grep and --grep-dir

Start a session with test suites that match the grepping pattern. The pattern is used to locate test modules that define test "suites" with names matching that pattern.

This assumes you're using mocha (BDD) or something similar where test suites are defined using the following notation:

describe("suite name")

You can control the directory in which test files are grepped by supplying the --grep-dir option, which defaults to {src}.

For example, let's run all the tests that have to do with Account:

mojo --grep 'Account'

This option uses the egrep command and expects it to be available in PATH.

--temp-dir

Mojo needs a directory to store its artifacts, and that's referred to as the temp directory. The directory must be writable by the running user. It defaults to os.tmpdir() and can be configured with this option.

--no-cache

Tell Mojo not to store its runner file to the disk when it's about to exit. Normally this is enabled in order to support the --continue mode.

--no-greeting

Tell Mojo not to print the greeting ASCII art message. But why would you? Please reconsider.

Passing options to Karma

You can forward options that mojo doesn't understand to Karma normally. For example:

mojo --browsers Firefox

The --browsers option and value will be passed to Karma as-is.

NOTE: the binary will always pass the config filename to Karma as the first argument and unfortunately it's not yet configurable. That filename is karma.mojo.conf.js.

Exported Environment Variables

The following environment variables are exported when you run the mojo binary. You can make use of them in your karma.mojo.conf.js file if needed, and they are used by the defaults.js file provided by the plugin to configure the mojo plugin.

See how those variables are put to use in [examples/karma.mojo.conf.js].

MOJO_CONTINUE

MOJO_CREEP

  • Setting to "1" instructs Mojo to creep.
  • Exposed by the --creep CLI argument.

MOJO_NO_CACHE

  • Setting to "1" instructs Mojo not to save the runner file for future runs (see the --continue options).
  • Exposed by the --no-cache CLI argument.

MOJO_RUDE

  • Setting to "1" instructs Mojo not to print the greeting message.
  • Exposed by the --no-greeting CLI argument.

MOJO_GREP

  • Defines the grep pattern, if any.
  • Exposed by the --grep CLI argument.

MOJO_GREP_DIR

  • Defines the directory glob pattern in which files should be grepped.
  • Defaults to {src}
  • Exposed by the --grep-dir CLI argument.

MOJO_FOCUS

  • Setting to "1" instructs Mojo to go into amnesia mode.
  • Defaults to ``
  • Exposed by the --focus CLI argument.

MOJO_TEMP_DIR

  • Defines where Mojo will store its temporary files.
  • Defaults to os.tmpdir() (/tmp on Linux most of the time)
  • Controlled and exposed by the --temp-dir CLI argument.

MOJO_RUNNER_PATH

  • Defines where Mojo will store its "runner" file which contains the test file listing and is fed to Karma for processing.
  • Defaults to ${TEMP_DIR}/mojo-runner.js
  • See MOJO_TEMP_DIR for resolving the temp directory.
  • Controlled indirectly by the --temp-dir CLI argument. You can not currently customize the file name, only the directory path.

MOJO_CACHE_PATH

  • Defines where Mojo will store its "cache" file for resuming sessions.
  • Defaults to ${TEMP_DIR}/mojo-cache.js
  • See MOJO_TEMP_DIR for resolving the temp directory.
  • Controlled indirectly by the --temp-dir CLI argument. You can not currently customize the file name, only the directory path.

COVERAGE

  • Mojo does not have any custom handling for this option, it is only for convenience to expose this variable so that you can configure Karma to run with coverage.
  • The value will be set to "1".
  • Exposed by the --coverage CLI argument.

VERBOSE

  • Mojo does not have any custom handling for this option, it is only for convenience to expose this variable so that you can configure Karma to run with increased verbosity.
  • The value will be set to "1".
  • Exposed by the --verbose CLI argument.

License

This work is licensed under the Affero GPL v3.0 license.

Copyright (c) 2015-present, Instructure Inc.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.