aboutsummaryrefslogtreecommitdiff
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
commit8d6898a36e2879bc3e1aef95db2a44c10187169e (patch)
tree80256ceb71285381e5f7c37e0bd8ab6b8750d4a8
parentca0291062362b3036077cb14bd8d13aca1cde62d (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
-rw-r--r--src/app.test.ts23
-rw-r--r--views/error.eta14
2 files changed, 26 insertions, 11 deletions
diff --git a/src/app.test.ts b/src/app.test.ts
index c028e1b..450c1cc 100644
--- a/src/app.test.ts
+++ b/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>/);
+ });
+});
diff --git a/views/error.eta b/views/error.eta
index 784a843..a46411e 100644
--- a/views/error.eta
+++ b/views/error.eta
@@ -1,11 +1,3 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <title><%= it.title ?? it.message %></title>
- <link rel="stylesheet" href="/static/style.css">
-</head>
-<body>
- <%= it.message %>
-</body>
-</html>
+<% layout("/layouts/base.eta", { title: it.title ?? it.message }) %>
+
+<%= it.message %>