5.0.0 • Public • Published


Inject different level implementations (browser, leveldb, etc) into your tests.

level badge npm Node version Build Status dependencies JavaScript Style Guide

If you are upgrading: please see UPGRADING.md.


Create a fresh db, without refering to any file system or DOM specifics, so that the same test can be used in the server or the browser! Use whatever test framework you like.

const level = require('level-test')()
const db = level({ valueEncoding: 'json' })

In node it defaults to leveldown for storage, using a unique temporary directory. If leveldown fails to load it falls back to memdown which is an in-memory store. In the browser it defaults to level-js.

No database name is needed since level-test generates unique random names. For disk-based systems it uses tempy and in the browser it uses uuid/v4.

const level = require('level-test')()
const db = level()

In either environment use of memdown can be forced with options.mem:

const level = require('level-test')({ mem: true })
const db = level({ valueEncoding: 'json' })

Or use any abstract-leveldown compliant store! In this case level-test assumes the storage is on disk and will thus create a unique temporary directory.

const rocksdb = require('rocksdb')
const level = require('level-test')(rocksdb)
const db = level({ valueEncoding: 'json' })


ctor = levelTest([store][, options])

Returns a function ctor that creates preconfigured levelup instances with temporary storage. The store if provided must be a function and abstract-leveldown compliant. Options:

  • mem: use memdown as store, default false. True implies clean: false.
  • Any other option will be merged into ctor options, the latter taking precedence.

These are equal:

const db1 = require('level-test')({ valueEncoding: 'json' })()
const db2 = require('level-test')()({ valueEncoding: 'json' })

db = ctor([options][, callback])

Returns a levelup instance via level-packager which wraps the underlying store with encoding-down. In short: the db is functionally equivalent to level. You get deferred open, encodings, Promise support, readable streams and more!


  • clean: (default true). In the browser this option clears the IndexedDB object store, of if a custom store was provided, calls store.destroy(location, callback) if implemented. For disk-based stores, this is a noop.
  • Other options are passed to levelup (which in turn passes them on to the store when opened) as well as encoding-down.

Please refer to the levelup documentation for usage of the optional callback.


level-test is an OPEN Open Source Project. This means that:

Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.

See the contribution guide for more details.


Copyright © 2013-present Dominic Tarr and Level contributors.

level-test is licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.




npm i level-test

Downloadsweekly downloads










last publish


  • avatar
  • avatar
  • avatar
  • avatar
Report a vulnerability