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