A simple, extensible JavaScript test framework (work in progress)
Clone or download
isiahmeadows Fix license
No one has actually contributed to this other than me, so there's no need to say "and others". Also, fixed a formatting error.
Latest commit 2543eea Nov 10, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Simplify/clean up more code, rely more on `util` abstraction Feb 16, 2018
docs Improve "getting started" guide Feb 16, 2018
fixtures Migrate most of the incoming reports Jun 25, 2017
lib Kill duplicate entry in detailed help Jun 1, 2018
migrate Deprecate + migrate `reflect.isRoot` Jun 13, 2017
mocha Make ESLint happy again... Oct 26, 2016
playground Add `t.skip()`, deprecate `t.testSkip` Jun 12, 2017
r Several API changes Jun 9, 2017
scripts Update roadmap, regen bundles Jun 6, 2017
test-util Fix some more oddities, clean up some code Feb 15, 2018
test Simplify/clean up more code, rely more on `util` abstraction Feb 16, 2018
.coffeelintignore Straighten out Coffeelint/ESLint ignore files Jul 3, 2016
.editorconfig Update the .editorconfig to ignore the package.json Feb 15, 2017
.eslintignore Make ESLint happy again... Oct 26, 2016
.eslintrc.yml Add `reflect.current`, deprecate `reflect.methods`/`t` argument, drop… Oct 19, 2016
.gitattributes Mark images as binary [ci skip] Feb 15, 2017
.gitignore Update deps, move init higher Jun 6, 2017
.npmignore Update deps, move init higher Jun 6, 2017
.travis.yml Update Travis matrix, attempt to revert a flake Feb 15, 2018
CHANGELOG.md v0.3.12 Apr 5, 2017
CONTRIBUTING.md Update the CONTRIBUTING document to reflect the existing code base a … Jul 13, 2018
README.md Fix license Nov 10, 2018
appveyor.yml Drop Node < 6, add --respawn-as/--env Jun 6, 2017
assert.d.ts Update deps, move init higher Jun 6, 2017
assert.js Move thallium/assert implementation out of core Jan 9, 2017
cli.js Simplify/clean up more code, rely more on `util` abstraction Feb 16, 2018
coffeelint.json Finalize CLI, and finish acceptance tests. May 10, 2016
dom.js Edit DOM runner API, document changes Jan 31, 2017
index.d.ts Deprecate + migrate `reflect.isRoot` Jun 13, 2017
index.js Drop `.js` extension, regenerate bundles, fix bundling process Oct 26, 2016
internal.d.ts Flatten report hierarchy Jun 12, 2017
internal.js Fix a linter fail Jun 25, 2017
karma.conf.js Re-modularize this, reduce memory footprint, fix several comments Oct 24, 2016
make.js Move make script, properly mirror test/watch Jun 6, 2017
package.json Remove outdated line... Jun 9, 2017
roadmap.md Add `t.skip()`, deprecate `t.testSkip` Jun 12, 2017
thallium-migrate.js Remove another artifact, rebuild bundles Jun 12, 2017
thallium.d.ts Flatten report hierarchy Jun 12, 2017
thallium.js Remove another artifact, rebuild bundles Jun 12, 2017
tsconfig.json Move thallium/assert implementation out of core Jan 9, 2017
yarn.lock Update deps, move init higher Jun 6, 2017

README.md

Thallium

Travis Build Status AppVeyor Build status Join the chat at https://gitter.im/isiahmeadows/thallium

A simple, unopinionated, modular test framework meant to simplify your tests. It supports Node (from the current LTS), as well as PhantomJS 2 and browsers (tested in Chrome and Firefox).

Note that this is a huge work in progress, and is probably not suited for production projects.

Installation

First, install Node and npm.

npm install --save-dev thallium

# If you would like it globally installed, that works, too.
npm install --global thallium

Also, if you target older runtimes like PhantomJS or Internet Explorer, this will require a Promise polyfill, such as es6-promise. That polyfill in particular is used by this library to test in PhantomJS 2.

Usage and API

Check out the documentation.

# Your basic command
tl

Couple specific notes:

  1. I plan to make this a very batteries-included framework. It includes several useful utilities like an assertion library far more helpful than Node's assert (you can easily define your own ad-hoc assertions, even - I do it in the tests themselves).

  2. Not much configuration is required to get started. I aim for ease of use and convention over configuration, but I also try to enable as much flexibility as you need. Your config file can even return a promise, if that's what you need.

Versioning

As soon as it's 1.0, I'll stick to semver. Until then, here's how I'll aim for new versions:

  • Minor versions (0.x) represent larger breaking changes or larger new features. This includes much of the primary roadmap.
  • Patch versions (0.1.x, 0.2.x, etc.) represent bug fixes and smaller breaking changes/new features. This includes some of the nice-to-haves I've listed below the roadmap.

I will try to avoid breaking changes on patch updates, but it's not guaranteed, particularly if it's because a bug fix.

Recent Updates

See the changelog for the most recent published changes. It also contains some useful migration information for dealing with breaking changes.

And in case you want to know what's in the works, look here.

Contributing

See CONTRIBUTING.md.

License

The following license (ISC License), unless otherwise stated:

Copyright (c) 2016 and later, Isiah Meadows <me@isiahmeadows.com>.

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.