@expressen/tallahassee
TypeScript icon, indicating that this package has built-in type declarations

15.5.0 • Public • Published

Tallahassee

Utilities

Built latest

Test your client scripts in a headless browser.

Introduction

Supports just about everything.

Example:

"use strict";

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

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

    it("throws if not 200", async () => {
      try {
        await new 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 new 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 new Browser(app).navigateTo("/", { cookie: "_ga=1" });

      await new 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 new Browser(app).navigateTo("/");

      await new 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);
};

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 15.5.0
    93
    • latest

Version History

Package Sidebar

Install

npm i @expressen/tallahassee

Weekly Downloads

579

Version

15.5.0

License

BSD-3-Clause

Unpacked Size

132 kB

Total Files

66

Last publish

Collaborators

  • jzachrisson
  • hilleso
  • drgeobn
  • gusliden
  • karlbergc
  • martindanielson
  • matsrorbecker
  • andolf
  • markusn
  • linuss
  • joelabrahamsson
  • norla
  • paed01
  • indeedshouts
  • jonaswalden
  • marcusgronblad