summaryrefslogtreecommitdiff
path: root/cgithub/src
diff options
context:
space:
mode:
authorJoe Mou <dev@mou.fo>2026-09-10 14:57:44 -0400
committerJoe Mou <dev@mou.fo>2026-09-10 14:58:18 -0400
commit01494e6fa1345a509560e5e19a7f08cb2aac5cc8 (patch)
treeee6dc77371eebd8e0c2c0f361c4db38e1178bea4 /cgithub/src
parent198f2a07f68a348dc0823b2bde3bec541e06db01 (diff)
Render the error page in the shared page shell
error.eta carried its own copy of the HTML shell, so error pages missed the viewport meta tag, the build-commit footer, and the link to the original GitHub page. The renderer already passes githubUrl and buildCommit to every template, so the layout needs nothing new from app.ts. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JZAT3YzYP85DihSvQbDKB6
Diffstat (limited to 'cgithub/src')
-rw-r--r--cgithub/src/app.test.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/cgithub/src/app.test.ts b/cgithub/src/app.test.ts
index c028e1b..450c1cc 100644
--- a/cgithub/src/app.test.ts
+++ b/cgithub/src/app.test.ts
@@ -458,3 +458,26 @@ describe("redirects to GitHub", () => {
);
});
});
+
+describe("error page", () => {
+ it("should render inside the page shell", () => {
+ const html = eta.render("error.eta", {
+ title: "Not Found",
+ message: "GitHub responded with HTTP 404 Not Found",
+ buildCommit: "v0-g1234567",
+ githubUrl: "https://github.com/actions/deploy-pages",
+ });
+
+ assert.match(html, /<title>Not Found<\/title>/);
+ assert.match(html, /GitHub responded with HTTP 404 Not Found/);
+ assert.match(html, /<footer>Generated by cgithub commit <code>v0-g1234567<\/code>/);
+ assert.match(html, /href="https:\/\/github.com\/actions\/deploy-pages"/);
+ });
+
+ // The title falls back to the message for errors that carry no status text.
+ it("should title itself with the message when it has no title", () => {
+ const html = eta.render("error.eta", { message: "Error: boom" });
+
+ assert.match(html, /<title>Error: boom<\/title>/);
+ });
+});