fix routes
This commit is contained in:
@@ -1087,3 +1087,31 @@ test("frontend scripts and styles revalidate across deployments", async () => {
|
||||
}
|
||||
} finally { await server.close(); }
|
||||
});
|
||||
|
||||
test("every served page references existing local assets", async () => {
|
||||
const server = await startTestServer();
|
||||
try {
|
||||
const assetPattern = /(?:src|href)="([^"#]+\.(?:css|js|svg)(?:\?[^"#]*)?)"/g;
|
||||
const assertPageAssets = async (route, headers = {}) => {
|
||||
const response = await fetch(server.baseUrl + route, {headers});
|
||||
assert.equal(response.status, 200, `${route} must render`);
|
||||
const html = await response.text();
|
||||
for (const [, reference] of html.matchAll(assetPattern)) {
|
||||
if (/^https?:\/\//.test(reference)) continue;
|
||||
const assetUrl = new URL(reference, server.baseUrl + route);
|
||||
const assetResponse = await fetch(assetUrl, {headers});
|
||||
assert.equal(assetResponse.status, 200, `${route} references missing asset ${assetUrl.pathname}`);
|
||||
}
|
||||
};
|
||||
|
||||
for (const route of ["/", "/login", "/register", "/market", "/privacy.html", "/tos.html"]) {
|
||||
await assertPageAssets(route);
|
||||
}
|
||||
|
||||
const jar = new CookieJar();
|
||||
await request(server.baseUrl, "/register", {method: "POST", body: {username: "assetchecker", password: "password123"}, jar});
|
||||
for (const route of ["/app", "/app/chats/new", "/app/personas", "/app/settings", "/market"]) {
|
||||
await assertPageAssets(route, jar.headers());
|
||||
}
|
||||
} finally { await server.close(); }
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user