A low-feature, dependency-free and performant test runner inspired by Rust and Deno

Overview

minitest

GitHub Actions Status NPM

A low-feature, dependency-free and performant test runner inspired by Rust and Deno

  • Simplicity: Use the mt test runner with the test function, nothing more.
  • Performance: By doing and including less we can run more quick.
  • Minimal: Bring your own assertions, snapshots, mt will always be dependency free.
Table of Contents

Table of Contents

Quickstart

  1. Install via your tool of choice: pnpm add --dev @sondr3/minitest

  2. Add a test script to package.json:

      "scripts": {
        "test": "mt <dir>",
      },
  3. Write your tests:

    import { strict as assert } from "assert";
    import { test } from "@sondr3/minitest";
    
    test("it works!", () => {
      assert(true === true, "Phew");
    });
  4. Run your tests: pnpm test

    running 1 test
    running 1 test in dir/index.test.js
    test  it works! ... ok
    
    test result: ok. 1 passed; 0 failed; 0 ignored; 0 filtered out; finished in 32ms
    

Usage

Finding tests

mt will recursively look for files in your current directory:

  • named test.{js,mjs},
  • or ending in .test.{js,mjs}
  • or ending in _test.{js,mjs}

Writing tests

To write tests you need to import the test function from @sondr3/minitest. There are a couple of different styles that can be used to write tests, but we'll get into these later.

import { test } from "@sondr3/minitest";
import { strict as assert } from "node:assert";

test("hello world #1", () => {
  const x = 1 + 2;
  assert.equal(x, 3);
});

test({ name: "hello world #2" }, () => {
  const x = 1 + 2;
  assert.equal(x, 3);
});

You can use any assertion library you want, like Chai for a TDD/BDD like assertions and Sinon.JS to spy and mock functionality. The only requirement is that the assertions throw when they fail.

If you come from a frameworks like Jest you may be surprised to learn that there is no built-in support for nesting tests, or anything like beforeAll or beforeEach in minitest. I can highly recommend this article from Kent C. Dodds about nesting and test hooks. After having used Deno and Rust which do not have such functionality, I don't miss it. I recommend you give it a try!

Async functions

You can also test asynchronous code by turning the test function into a function that returns a promise. Simply add async in front of the function:

import { test } from "@sondr3/minitest";
import { strict as assert } from "node:assert";

test("async hello world", async () => {
  const x = 1 + 2;
  const wait = async () => new Promise((res) => setTimeout(res, 1000));
  await wait();
  assert.equal(x, 3);
});

Running tests

Simply run mt to test all test files matching the pattern in finding tests, or point it to the directory or file you want to run:

# Run all tests in current directory
mt

# Run all tests in the fs directory
mt fs

# Run a single test file
mt fs.test.js

Filtering

There are tree different ways of filtering tests, either by filtering against test names, skipping tests or running a select subset of tests.

Filtering via the CLI

Tests can be filtered out by using the --filter option. This option accepts either a case insensitive string or a Regex pattern as its value.

If you have the following tests:

test("a-test", () => {});
test("test-1", () => {});
test("test-2", () => {});

You can then filter them by filtering all tests that contain the word test:

mt --filter "test"

Or by matching against a Regex pattern:

mt --filter "/test-*\d/"

Ignoring (skipping)

If you want to ignore/skip tests based on some boolean condition or because they are currently incorrect you can use the ignore() method or the ignore field in the options:

test("ignored", () => {}).ignore(); // or .ignore(condition)
test({ name: "other ignored", ignore: process.arch === "x64" }, () => {});
test("final ignored", () => {}, { ignore: true });

Running specific tests

Sometimes you may want to only run a subset of your tests because you are working on a problem where you want to ignore tests not relevant to it. To do this you can mark tests using the only() method or the only field in the options, and only these tests are run. While these tests will run normally and report success and failure normally, the whole test suite will still fail as using only should only be a temporary measure as it disables nearly the whole test suite.

test("other ignored", () => {}).only();
test({ name: "ignored", only: true }, () => {});
test("final ignored", () => {}, { only: true });

Failing fast

If you have a test suite that takes a long time to complete or you simply want to exit after the first error, one can use the --fail-fast option:

# fail immediately
mt --fail-fast

# fail after three failures
mt --fail-fast 3

Quiet

The test output for mt can quickly become verbose once the test suite grows, to help with this one can use the --quiet flag to make it far less verbose:

mt --quiet

CLI

For a complete overview over the available options, use the --help flag:

$ mt --help
minitest v0.1.0
A low-feature and performant test runner inspired by Rust and Deno

USAGE:
        mt <dir> [flags]

OPTIONS:
        -q, --quiet              Quiet output
        -f, --filter=<filter>    Filter tests by name, accepts regex
        -F, --fail-fast=<N>      Fail after N test failures [default: 0]
        -v, --version            Print version
        -h, --help               Print help

Extras

TypeScript

There is no built-in support for natively running TypeScript files, they need to be compiled to JavaScript first. In other words, your build step needs to happen before you run your tests.

Coverage

To generate coverate reporting for your tests, I highly recommend using c8. It generates coverage based on the built-in coverage functionality of NodeJS and will just magically work with your tests. It is also very fast compared to similar functionality in other testing libraries. To generate coverage by default, change your test script to the following after you've added c8 as a dependency:

  "scripts": {
    "test": "c8 mt <dir>",
  },

JSX, TSX, browsers

Like with TypeScript, there is no built-in support for usage with JSX and/or TSX, and no specific functionality for working against browsers. You may be able to make it work, but it is purpose built around testing with Node, so YMMV.

Rationale

Why would you use this over the myriad of other test frameworks, runners and libraries that exist? You probably shouldn't, Jest, Ava, tape, uvu and a whole lot of others are more mature, stable, feature rich and has a wider userbase, but if you want a simple Rust/Deno like test framework, this might just scratch your itch.

I also created this as an exercise in learning how testing works under the hood, and had a lot of fun building it out into a actual useful package. For my needs and packages minitest is just what I want from a test framework: minimal fuzzing, fast and easy and straight forward.

License

MIT.

Comments
  • Bump pnpm/action-setup from 2.2.3 to 2.2.4

    Bump pnpm/action-setup from 2.2.3 to 2.2.4

    Bumps pnpm/action-setup from 2.2.3 to 2.2.4.

    Release notes

    Sourced from pnpm/action-setup's releases.

    v2.2.4

    No deprecation warnings are printed about set-state and set-output commands (pnpm/action-setup#57)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump pnpm/action-setup from 2.2.2 to 2.2.3

    Bump pnpm/action-setup from 2.2.2 to 2.2.3

    Bumps pnpm/action-setup from 2.2.2 to 2.2.3.

    Release notes

    Sourced from pnpm/action-setup's releases.

    v2.2.3

    Bump Node.js version to 16 pnpm/action-setup#56

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump pnpm/action-setup from 2.2.1 to 2.2.2

    Bump pnpm/action-setup from 2.2.1 to 2.2.2

    Bumps pnpm/action-setup from 2.2.1 to 2.2.2.

    Release notes

    Sourced from pnpm/action-setup's releases.

    v2.2.2

    Fixing network issues.

    Related issues:

    Related PR:

    Commits
    • 10693b3 Update action.yml
    • 99ecd24 v2.2.2
    • 958500f fix: do not download pnpm from get.pnpm.io (#46)
    • 57b9359 Merge pull request #41 from nelson6e65/patch-1
    • ec1a8b4 Change runs-on back to ubuntu-latest
    • 73e1525 docs(readme): improve and fix cache example
    • 10b4b0b Merge pull request #36 from pnpm/dependabot/github_actions/actions/checkout-3
    • 5fa8980 Update dependabot.yml
    • ae78e9a Bump actions/checkout from 2 to 3
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump actions/checkout from 2 to 3

    Bump actions/checkout from 2 to 3

    Bumps actions/checkout from 2 to 3.

    Release notes

    Sourced from actions/checkout's releases.

    v3.0.0

    • Update default runtime to node16

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    v2.3.0

    Fallback to the default branch

    v2.2.0

    Fetch all history for all tags and branches when fetch-depth=0

    v2.1.1

    Changes to support GHES (here and here)

    v2.1.0

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump pnpm/action-setup from 2.2.0 to 2.2.1

    Bump pnpm/action-setup from 2.2.0 to 2.2.1

    Bumps pnpm/action-setup from 2.2.0 to 2.2.1.

    Release notes

    Sourced from pnpm/action-setup's releases.

    v2.2.1

    Fix "packageManager" reader pnpm/action-setup#35

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump actions/setup-node from 2 to 3

    Bump actions/setup-node from 2 to 3

    Bumps actions/setup-node from 2 to 3.

    Release notes

    Sourced from actions/setup-node's releases.

    v3.0.0

    In scope of this release we changed version of the runtime Node.js for the setup-node action and updated package-lock.json file to v2.

    Breaking Changes

    Fix logic of error handling for npm warning and uncaught exception

    In scope of this release we fix logic of error handling related to caching (actions/setup-node#358) and (actions/setup-node#359).

    In the previous behaviour we relied on stderr output to throw error. The warning messages from package managers can be written to the stderr's output. For now the action will throw an error only if exit code differs from zero. Besides, we add logic to сatch and log unhandled exceptions.

    Adding Node.js version file support

    In scope of this release we add the node-version-file input and update actions/cache dependency to the latest version.

    Adding Node.js version file support

    The new input (node-version-file) provides functionality to specify the path to the file containing Node.js's version with such behaviour:

    • If the file does not exist the action will throw an error.
    • If you specify both node-version and node-version-file inputs, the action will use value from the node-version input and throw the following warning: Both node-version and node-version-file inputs are specified, only node-version will be used.
    • For now the action does not support all of the variety of values for Node.js version files. The action can handle values according to the documentation and values with v prefix (v14)
    steps:
      - uses: actions/checkout@v2
      - name: Setup node from node version file
        uses: actions/setup-node@v2
        with:
          node-version-file: '.nvmrc'
      - run: npm install
      - run: npm test
    

    Update actions/cache dependency to 1.0.8 version.

    We updated actions/cache dependency to the latest version (1.0.8). For more information please refer to the toolkit/cache.

    Add "cache-hit" output

    This release introduces a new output: cache-hit (#327).

    The cache-hit output contains boolean value indicating that an exact match was found for the key. It shows that the action uses already existing cache or not. The output is available only if cache is enabled.

    Support caching for mono repos and repositories with complex structure

    This release introduces dependency caching support for mono repos and repositories with complex structure (#305).

    By default, the action searches for the dependency file (package-lock.json or yarn.lock) in the repository root. Use the cache-dependency-path input for cases when multiple dependency files are used, or they are located in different subdirectories. This input supports wildcards or a list of file names for caching multiple dependencies.

    Yaml example:

    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v2
    </tr></table> 
    

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump pnpm/action-setup from 2.1.0 to 2.2.0

    Bump pnpm/action-setup from 2.1.0 to 2.2.0

    Bumps pnpm/action-setup from 2.1.0 to 2.2.0.

    Release notes

    Sourced from pnpm/action-setup's releases.

    v2.2.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump pnpm/action-setup from 2.0.1 to 2.1.0

    Bump pnpm/action-setup from 2.0.1 to 2.1.0

    Bumps pnpm/action-setup from 2.0.1 to 2.1.0.

    Release notes

    Sourced from pnpm/action-setup's releases.

    v2.1.0

    Support pnpm v7 pnpm/action-setup#29

    Commits
    • 2270f39 v2.1.0
    • 394c848 Update the bundle
    • e13928c Merge pull request #27 from metonym/fix-jobs-syntax
    • 93bd5a1 Merge pull request #29 from pnpm/pnpm-v7
    • 9eb14dd decrease bundle size
    • eafb777 download script from pnpm.io
    • e6378df PNPM_HOME_PATH=>PNPM_HOME
    • 6ff6e97 The pnpm home directory should be added to PATH and PNPM_HOME
    • 45d9c91 Specify job name to fix syntax error
    • 15569a4 Merge pull request #26 from ai/patch-1
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.1.1)
  • v0.1.1(Jan 12, 2022)

  • v0.1.0(Jan 7, 2022)

    0.1.0

    2022-01-07

    Summary

    Initial release of a minitest, a low-feature, dependency-free and performant test runner inspired by Rust and Deno.

    Commits

    • [f92b97e] Create mjs_test.mjs to verify testing mjs files work
    • [8a605cb] Add TSDocs to test function
    • [e3d7ff1] Only export the test function from the library
    • [264e4ba] Explicitly include and exclude files in tsconfig
    • [d4e8a44] Add tests based on code coverage
    • [2780e6a] Add c8 for code coverage
    • [6cf6f3f] Mention c8 for code coverage
    • [d52ad92] Add keywords, update headline and add more documentation
    • [95e5b31] Update README [ci skip]
    • [4c1eb26] Change test output to look closer to cargo test
    • [7c66e4f] Implement fail-fast
    • [8c95516] Update documentation
    • [65125a3] Update types ever so slightly
    • [e53b1d8] Update 'lib' value to match currently supported node versions
    • [3bdb96a] Add initial value to reduci in mapSize to fix error on empty maps
    • [accf2e0] Filter out empty tests files when filtering test names
    • [cb48470] Skip whole report loop if file has no valid tests
    • [8bc164e] Hide file test count if file has no tests
    • [ffd81a1] Refactor test file name matching
    • [11099c6] Add some tests, refactor to use TestRunner
    • [b50bf4f] Fix counting ignored tests, run tests asynchronously
    • [7f9b681] Export a simple Test class, convert to internal test runner
    • [e027935] Strip items marked as internal from public exports
    • [42c2a3e] Explicitly add 'types' key in package.json
    • [e7bec25] Add some tests for test function
    • [65fb615] Refactor test runner, implement only/filtering
    • [2500e5c] Fix tests accidentally copying running test CLI options
    • [52f6a37] Move coloring functionality to utils
    • [f7b7b59] Simplify ignoreDir, testFile and results functions
    • [16558d0] Add test for missing filter string
    • [37a456d] Fix test runner for single files trying to open it as a folder
    • [bbc74f7] Refactor CLI parsing, add tests
    • [5862fbe] Extract CLI to its own file
    • [54f05d4] Set eslint envs correctly, engines in package.json
    • [afaabe1] Add version and help flag to CLI
    • [964e940] Add README
    • [e073c10] Make package more modular, move bin file
    • [edc21fd] Add colors to test results
    • [f88c06d] Report results via test runner
    • [4d76b1a] Add runner, reporting of tests
    • [4a9b847] Convert test function to class
    • [0cd6a9f] Add back @sondr3/prettier, add .gitattributes/.editorconfig for Windows
    • [ee3d21c] Use default pretter config
    • [8156cfc] Setup matrix tests for Node versions and OS
    • [0f0da04] Run the found test files
    • [b8ff858] Create directory walker, CLI for binary
    • [8b19ad5] First pass at defining tests
    • [dd7301b] Set binary name, emit declarations
    Source code(tar.gz)
    Source code(zip)
Owner
Sondre Aasemoen
Informatics, algorithms @ University of Bergen. Rust | Kotlin | TypeScript | React.
Sondre Aasemoen
A new zero-config test runner for the true minimalists

Why User-friendly - zero-config, no API to learn, simple conventions Extremely lighweight - only 40 lines of code and no dependencies Super fast - wit

null 680 Dec 20, 2022
A leetcode workspace template with test case runner for JavaScript/TypeScript programmers.

leetcode-typescript-workspace English | 简体中文 A vscode workspace template with test case runner script for JavaScript/TypeScript programmers using exte

null 10 Dec 13, 2022
A simple tap test runner that can be used by any javascript interpreter.

just-tap A simple tap test runner that can be used in any client/server javascript app. Installation npm install --save-dev just-tap Usage import cre

Mark Wylde 58 Nov 7, 2022
Opinionated collection of TypeScript definitions and utilities for Deno and Deno Deploy. With complete types for Deno/NPM/TS config files, constructed from official JSON schemas.

Schemas Note: You can also import any type from the default module, ./mod.ts deno.json import { type DenoJson } from "https://deno.land/x/[email protected]

deno911 2 Oct 12, 2022
Utility functions for iterators. Inspired by Rust's `std::iter::Iterator` trait.

iter-funcs About Utility functions for iterators. Inspired by Rust's std::iter::Iterator trait. This library uses JavaScript native iterators, so it's

Shuntaro Nishizawa 6 Dec 27, 2022
A Remix stack setup to run on Deno with support for Rust WASM modules!

Remix + Deno + Rust -> Webassembly - The Air Metal Stack Welcome to the Air Metal Stack for Remix! ?? + ?? This stack is a good choice if you want to

Ben Wishovich 60 Jan 5, 2023
coc-pyright-tools is a coc-extension that adds its own functionality to coc-pyright for coc.nvim. Currently the "Inlay Hints", "CodeLens" and "Test Framework commands" feature is available.

coc-pyright-tools !!WARNING!! Inlay hints feature of coc-pyright-tools, have been ported to coc-pyright itself. https://github.com/fannheyward/coc-pyr

yaegassy 5 Aug 23, 2022
A functional, immutable, type safe and simple dependency injection library inspired by angular.

func-di English | 简体中文 A functional, immutable, type safe and simple dependency injection library inspired by Angular. Why func-di Installation Usage

null 24 Dec 11, 2022
Easily create key board shortcuts for your JS functions. Built using JS only with no other dependency. Inspired from MacOS spotlight

floodlightjs Inspired from macOS spotlight, floodlight is simple JS library that will show a search area. How the search is handled is completely on y

Raj Nandan Sharma 6 Aug 12, 2022
They stole our free learn feature, so it's now time for an open source variant

Quizletbutfree This project was generated using Nx. ?? Smart, Fast and Extensible Build System Quick Start & Documentation Nx Documentation 10-minute

zerxal 2 Nov 13, 2022
Lightweight (< 2.3kB gzipped) and performant natural sorting of arrays and collections by differentiating between unicode characters, numbers, dates, etc.

fast-natural-order-by Lightweight (< 2.3kB gzipped) and performant natural sorting of arrays and collections by differentiating between unicode charac

Shelf 5 Nov 14, 2022
A lightweight, performant, and simple-to-use wrapper component to stick section headers to the top when scrolling brings them to top

A lightweight, performant, and simple-to-use wrapper component to stick section headers to the top when scrolling brings them to top

Mayank 7 Jun 27, 2022
:mechanical_leg: Tiny and performant collapse component for SolidJS.

Solid Collapse Tiny and performant collapse component for SolidJS. Demo and examples Features Pure dynamic CSS height transition, no javascript animat

Simone 12 Dec 29, 2022
🏆 2nd Runner Up 🏆 at Vividthata A Blend of ideas By NIT Hamirpur

Index Problem Statement Solution Proposed How it Works Challenges we faced Running Locally Demonstration Glimpse Problem Statement It is often the cas

null 3 Nov 22, 2022
A Jest runner that runs tests directly in bare Node.js, without virtualizing the environment.

jest-light-runner A Jest runner that runs tests directly in bare Node.js, without virtualizing the environment. Comparison with the default Jest runne

Nicolò Ribaudo 193 Dec 12, 2022
Performant WebSocket Server & Client

Socketich ?? Performant WebSocket server and persistent client powered by uWebSockets.js and PersistentWebSocket Install npm i @geut/socketich Usage S

GEUT 6 Aug 15, 2022
Quick T3 Stack with SvelteKit for rapid deployment of highly performant typesafe web apps.

create-t3svelte-app Just Build npx create-t3svelte-app Outline Get Building npm yarn More Info ?? Early Version Note Prisma Requirements Available Tem

Zach 85 Dec 26, 2022
Cross platform shell tools for Deno inspired by zx.

dax Note: This is very early stages. Just started working on it. Cross platform shell tools for Deno inspired by zx. Differences: No globals or global

David Sherret 150 Dec 31, 2022
Cross platform shell tools for Deno inspired by zx.

dax Note: This is very early stages. Just started working on it. Cross platform shell tools for Deno inspired by zx. Differences: No globals or global

David Sherret 45 Jul 24, 2022