Skip to content
This repository has been archived by the owner on Jun 5, 2020. It is now read-only.

Latest commit

 

History

History
68 lines (47 loc) · 1.49 KB

hybrid-testing.rst

File metadata and controls

68 lines (47 loc) · 1.49 KB

Hybrid testing

Warning

This document is work in progress

Writing hybrid tests

Running tests in both browsers and Node requires a small feature test to determine whether or not to load Buster in your tests. The code under test obviously also needs to check for module, require etc. The following example shows a typical test that runs both in browsers and on node:

if (typeof module == "object" && typeof require == "function") {
    var buster = require("buster");
}

buster.testCase("Multi-environment", {
    "runs in all environments": function () {
        assert(true);
    },

    "sub context": {
        requiresSupportFor: { "DOM": typeof document != "undefined" },

        "only runs in browser-like environments": function () {
            // ...
        }
    }
});

Running tests

The simplest way to run multi-environment tests is to use a configuration file and the buster test binary:

var config = module.exports;

config["Tests"] = {
    tests: ["test/**/*.js"]
};

config["Browser tests"] = {
    extends: "Tests",
    environment: "browser",
    sources: ["lib**/*.js"]
};

config["Node tests"] = {
    extends: "Tests",
    environment: "node"
};

Given this config, you can run for Node.js using:

buster test --node

and for browsers:

buster test --browser