JSPM

  • Created
  • Published
  • Downloads 617
  • Score
    100M100P100Q109593F
  • License BSD-3-Clause

Lightweight client testing framework

Package Exports

  • @expressen/tallahassee
  • @expressen/tallahassee/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@expressen/tallahassee) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Tallahassee

Utilities

Built latest

Test your client scripts in a headless browser.

Introduction

Supports just about everything.

Example:

"use strict";

const app = require("../app/app");
const Browser = require("@expressen/tallahassee");
const Script = require("@bonniernews/wichita");

describe("Tallahassee", () => {
  describe("navigateTo()", () => {
    it("navigates to url", async () => {
      await Browser(app).navigateTo("/");
    });

    it("throws if not 200", async () => {
      try {
        await Browser(app).navigateTo("/404");
      } catch (e) {
        var err = e; // eslint-disable-line no-var
      }
      expect(err).to.be.ok;
    });

    it("unless you override status code", async () => {
      const browser = await Browser(app).navigateTo("/404", null, 404);
      expect(browser.document.getElementsByTagName("h1")[0].innerText).to.equal("Apocalyptic");
    });
  });

  describe("run script", () => {
    it("run es6 script sources with @bonniernews/wichita", async () => {
      const browser = await Browser(app).navigateTo("/", {
        Cookie: "_ga=1"
      });

      await Script("./app/assets/scripts/main.js").run(browser.window);

      expect(browser.document.cookie).to.equal("_ga=1");
      expect(browser.document.getElementsByClassName("set-by-js")).to.have.length(1);
    });

    it("again", async () => {
      const browser = await Browser(app).navigateTo("/");

      await Script("./app/assets/scripts/main.js").run(browser.window);

      expect(browser.document.cookie).to.equal("");
      expect(browser.document.getElementsByClassName("set-by-js")).to.have.length(0);
    });
  });
});

External scripts

May we suggest you to use Wichita, the Tallahassee sidekick. It can be found here https://www.npmjs.com/package/@bonniernews/wichita

Timers

If overriding timers on window, e.g. setTimeout it can be a good idea to make them asynchronous since they tend to be recurring.

Example:

browser.window.setTimeout = function mySetTimeout(fn, ms, ...args) {
  process.nextTick(fn, ...args);
};