Skip to content
31 linesCodeBlameRaw
1import assert from "node:assert/strict";
2import { test } from "node:test";
3
4import { CHECKS, pageText, verdict } from "./smoke.mjs";
5
6test("a page's text leaves out scripts, styles and tags", () => {
7 const html = `<html><style>.a{}</style><script>var x="Request access"</script><h1>Have an&nbsp;<b>invite?</b></h1></html>`;
8 assert.equal(pageText(html), "Have an invite?");
9 assert.equal(pageText("<p>Don&#x27;t</p>"), "Don't");
10});
11
12test("a check passes on its status with every phrase on the page", () => {
13 const check = { path: "/register", expect: ["Have an invite?", "Request access"] };
14 assert.equal(verdict(check, 200, "<p>Have an invite?</p><button>Request access</button>"), null);
15 assert.equal(verdict(check, 500, ""), "answered 500, expected 200");
16 assert.equal(verdict(check, 200, "<p>Have an invite?</p>"), 'missing "Request access"');
17});
18
19test("a phrase only inside a script does not count", () => {
20 const check = { path: "/", expect: ["Request access"] };
21 assert.equal(verdict(check, 200, `<script>"Request access"</script>`), 'missing "Request access"');
22});
23
24test("the waitlist check sends an address identity refuses before writing", () => {
25 const waitlist = CHECKS.find((check) => check.form);
26 assert.ok(waitlist);
27 assert.equal(waitlist.form.intent, "request-access");
28 assert.ok(!waitlist.form.email.includes("@"), "never a real-looking address, so nothing is kept");
29 assert.equal(waitlist.status, 422);
30 assert.equal(verdict(waitlist, 422, "<p>Enter a valid email address.</p>"), null);
31});