From c1315b3512078e513865293e3af267b8f9f2d561 Mon Sep 17 00:00:00 2001 From: David Bolack Date: Tue, 13 Oct 2026 12:34:51 -0500 Subject: [PATCH 1/5] Update Download endpoint to export four shapes of Markdown files Restructures PDF download into an Export menu containing the PDF export and 4 Markdown Options Slightly tweaks tests Effectively moves the api.mergeBrewText to helpers. I think this makes more sense. Changes the download extension from txt to 'md`. The Commonmark, TOML, and JSON exports are the same with the frontmatter in a slightly different shape. These were selected based on lightweight research into Markdown Frontmatter. If specific formats - such as Obsidian - are different enough in terms of formatting the frontmatter or desired metadata content, this is fairly easy --- client/homebrew/navbar/print.navitem.jsx | 29 ++++++++++++- .../pages/basePages/editPage/editorPage.jsx | 2 +- client/homebrew/pages/sharePage/sharePage.jsx | 2 +- server/homebrew.api.js | 26 +----------- server/homebrew.api.spec.js | 10 ++--- server/page-routes.js | 16 ++++++-- shared/helpers.js | 41 ++++++++++++++++++- 7 files changed, 89 insertions(+), 37 deletions(-) diff --git a/client/homebrew/navbar/print.navitem.jsx b/client/homebrew/navbar/print.navitem.jsx index ff2d75d67..b500c24d6 100644 --- a/client/homebrew/navbar/print.navitem.jsx +++ b/client/homebrew/navbar/print.navitem.jsx @@ -2,7 +2,12 @@ import React, { useState, useEffect } from 'react'; import Nav from './nav.jsx'; import { printCurrentBrew } from '@shared/helpers.js'; -export default function(){ +const processShareId = (brew)=>{ + + return brew.googleId && !brew.stubbed ? brew.googleId + brew.shareId : brew.shareId; +}; + +export default ({ currentBrew })=>{ const [printing, setPrinting] = useState(false); // listen for print cycle events to display "loading" message since it can take some time. @@ -19,7 +24,27 @@ export default function(){ const handlePrintPrepFinished = ()=>{ setPrinting(false); }; - return + if(currentBrew?.shareId) return + + export + + + {printing ? 'loading' : 'get PDF'} + + + Markdown + + + Markdown (TOML) + + + Markdown (JSON) + + + Markdown (Homebrewery) + + ; + else return {printing ? 'loading' : 'get PDF'} ; }; diff --git a/client/homebrew/pages/basePages/editPage/editorPage.jsx b/client/homebrew/pages/basePages/editPage/editorPage.jsx index b9fb34597..718aab442 100644 --- a/client/homebrew/pages/basePages/editPage/editorPage.jsx +++ b/client/homebrew/pages/basePages/editPage/editorPage.jsx @@ -372,7 +372,7 @@ const EditorPage = (props)=>{ {(pageName == 'editPage') && renderAutoSaveButton()} } - + {(pageName == 'editPage') && } diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index 002844c2c..42a9c4241 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -117,7 +117,7 @@ const SharePage = (props)=>{ view {renderEditLink()} - + download diff --git a/server/homebrew.api.js b/server/homebrew.api.js index aa1f1f84a..8702ec42b 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -10,7 +10,7 @@ import asyncHandler from 'express-async-handler'; import { nanoid } from 'nanoid'; import { makePatches, applyPatches, stringifyPatches, parsePatch } from '@sanity/diff-match-patch'; import { md5 } from 'hash-wasm'; -import { splitTextStyleAndMetadata, +import { splitTextStyleAndMetadata, transformFrontmatter, brewSnippetsToJSON, debugTextMismatch } from '../shared/helpers.js'; import checkClientVersion from './middleware/check-client-version.js'; import dbCheck from './middleware/dbCheck.js'; @@ -209,29 +209,7 @@ const api = { return res.status(200).send(brew.style); }, mergeBrewText : (brew)=>{ - let text = brew.text; - if(brew.style !== undefined) { - text = `\`\`\`css\n` + - `${brew.style || ''}\n` + - `\`\`\`\n\n` + - `${text}`; - } - const metadata = _.pick(brew, ['title', 'description', 'tags', 'renderer', 'theme']); - const snippetsArray = brewSnippetsToJSON('brew_snippets', brew.snippets, null, false).snippets; - metadata.snippets = snippetsArray.length > 0 ? snippetsArray : undefined; - metadata.bleedSize = { top: brew?.bleedSize?.top, bottom: brew?.bleedSize?.bottom, inner: brew?.bleedSize?.inner, outer: brew?.bleedSize?.outer }; - metadata.safetySpace = { top: brew?.safetySpace?.top, bottom: brew?.safetySpace?.bottom, outer: brew?.safetySpace?.outer, inner: brew?.safetySpace?.inner }; - metadata.trimSize = { width: brew?.trimSize?.width, height: brew?.trimSize?.height }; - metadata.columns = brew?.columns; - metadata.columnGutter = brew?.columnGutter; - metadata.license = brew?.license; - metadata.legalAuthors = brew?.legalAuthors; - - text = `\`\`\`metadata\n` + - `${yaml.dump(metadata)}\n` + - `\`\`\`\n\n` + - `${text}`; - return text; + return transformFrontmatter(brew); }, getGoodBrewTitle : (text)=>{ const tokens = hbfm.marked.lexer(text); diff --git a/server/homebrew.api.spec.js b/server/homebrew.api.spec.js index 8bda5407b..b4337e6fc 100644 --- a/server/homebrew.api.spec.js +++ b/server/homebrew.api.spec.js @@ -499,8 +499,6 @@ description: this is a description tags: - something - fun -renderer: v3 -theme: phb bleedSize: top: .125in bottom: .125in @@ -518,6 +516,8 @@ columns: '2' columnGutter: .125in license: None legalAuthors: '' +renderer: v3 +theme: phb \`\`\` @@ -554,7 +554,7 @@ brew`); width : '8.5in', height : '11in', }, - }); + }, 'hb'); expect(result).toEqual(`\`\`\`metadata title: some title @@ -562,8 +562,6 @@ description: this is a description tags: - something - fun -renderer: v3 -theme: phb bleedSize: top: .125in bottom: .125in @@ -581,6 +579,8 @@ columns: '2' columnGutter: .125in license: None legalAuthors: '' +renderer: v3 +theme: phb \`\`\` diff --git a/server/page-routes.js b/server/page-routes.js index 85436d2bc..49879391e 100644 --- a/server/page-routes.js +++ b/server/page-routes.js @@ -15,7 +15,7 @@ import fs from 'fs'; import dbCheck from './middleware/dbCheck.js'; import sanitizeFilename from 'sanitize-filename'; import { DEFAULT_BREW } from './brewDefaults.js'; -import { splitTextStyleAndMetadata } from '../shared/helpers.js'; +import { splitTextStyleAndMetadata, transformFrontmatter } from '../shared/helpers.js'; import GoogleActions from './googleActions.js'; import api from './homebrew.api.js'; @@ -135,9 +135,19 @@ export default function pageRoutes({ }); //Download brew source page - app.get('/download/:id', asyncHandler(getBrew('share')), (req, res)=>{ + app.get('/download/:format/:id', asyncHandler(getBrew('share')), async (req, res)=>{ + const markdownFormats = { + hb : 'homebrewery', + cm : 'commonmark', + toml : 'toml', + json : 'json' + }; + const { brew } = req; + + const lastBrew = brew.text; sanitizeBrew(brew, 'share'); + brew.text = await transformFrontmatter(brew, req.params.format); const prefix = 'HB - '; const encodeRFC3986ValueChars = (str)=>{ @@ -152,7 +162,7 @@ export default function pageRoutes({ res.set({ 'Cache-Control' : 'no-cache', 'Content-Type' : 'text/plain', - 'Content-Disposition' : `attachment; filename*=UTF-8''${encodeRFC3986ValueChars(fileName)}.txt` + 'Content-Disposition' : `attachment; filename*=UTF-8''${encodeRFC3986ValueChars(fileName)}.${markdownFormats[req.params.format]}.md` }); res.status(200).send(brew.text); }); diff --git a/shared/helpers.js b/shared/helpers.js index d20687843..6d8180ae1 100644 --- a/shared/helpers.js +++ b/shared/helpers.js @@ -114,6 +114,44 @@ const splitTextStyleAndMetadata = (brew)=>{ if(typeof brew.tags === 'string') brew.tags = brew.tags ? [brew.tags] : []; }; +const transformFrontmatter = (brew, format = 'hb')=>{ + const markdownFormats = { + hb : '```metadata', + cm : '---', + toml : '+++', + json : ';;;' + }; + + let text = brew.text; + if((brew.style !== undefined) && (format == 'hb')) { + text = `\`\`\`css\n` + + `${brew.style || ''}\n` + + `\`\`\`\n\n` + + `${text}`; + } + const metadata = _.pick(brew, ['title', 'description', 'tags']); + if(format == 'hb') { + const snippetsArray = brewSnippetsToJSON('brew_snippets', brew.snippets, null, false).snippets; + metadata.snippets = snippetsArray.length > 0 ? snippetsArray : undefined; + metadata.bleedSize = { top: brew?.bleedSize?.top, bottom: brew?.bleedSize?.bottom, inner: brew?.bleedSize?.inner, outer: brew?.bleedSize?.outer }; + metadata.safetySpace = { top: brew?.safetySpace?.top, bottom: brew?.safetySpace?.bottom, outer: brew?.safetySpace?.outer, inner: brew?.safetySpace?.inner }; + metadata.trimSize = { width: brew?.trimSize?.width, height: brew?.trimSize?.height }; + metadata.columns = brew?.columns; + metadata.columnGutter = brew?.columnGutter; + metadata.license = brew?.license; + metadata.legalAuthors = brew?.legalAuthors; + metadata.renderer = brew.renderer; + metadata.theme = brew.theme; + } + + text = `${markdownFormats[format]}\n` + + `${format != 'json' ? yaml.dump(metadata) : JSON.stringify(metadata)}\n` + + `${markdownFormats[format].slice(0, 3)}\n\n` + + `${text}`; + + return text; +}; + const printCurrentBrew = async ()=>{ if(window.typeof !== 'undefined') { // fire a custom event for the print cycle @@ -230,5 +268,6 @@ export { fetchThemeBundle, brewSnippetsToJSON, debugTextMismatch, - yamlSnippetsToText + yamlSnippetsToText, + transformFrontmatter }; From 8e40f809c1ef2e2caa6dcd87b2dd12f7299dfa45 Mon Sep 17 00:00:00 2001 From: David Bolack Date: Tue, 13 Oct 2026 12:39:16 -0500 Subject: [PATCH 2/5] Rebuild #4994 without added Brotli files for tests --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 6f1269f97..0f76d8fe7 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "test:api-unit:css": "jest \"server/.*.spec.js\" -t \"Get CSS\" --verbose", "test:api-unit:notifications": "jest \"server/.*.spec.js\" -t \"Notifications\" --verbose", "test:content-negotiation": "jest \"server/middleware/.*.spec.js\" --verbose", + "test:static-content": "jest \"tests/routes/static-content.test.js\" --verbose", "test:coverage": "jest --coverage --silent --runInBand", "test:dev": "jest --verbose --watch", "test:basic": "jest tests/markdown/basic.test.js --verbose", From 34b5b559a7fdc09e7132a3f9f21f94cf397ef79d Mon Sep 17 00:00:00 2001 From: David Bolack Date: Tue, 13 Oct 2026 12:42:10 -0500 Subject: [PATCH 3/5] Add updated test files Staged brotli tests left in place in case full evaluation desired. --- tests/routes/static-content.test.js | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 tests/routes/static-content.test.js diff --git a/tests/routes/static-content.test.js b/tests/routes/static-content.test.js new file mode 100644 index 000000000..13e6ed44e --- /dev/null +++ b/tests/routes/static-content.test.js @@ -0,0 +1,39 @@ +import supertest from 'supertest'; +import createApp from '../../server/app.js'; + +let app; +let request; + +beforeAll(async ()=>{ + app = await createApp(); + request = supertest.agent(app).set('X-Forwarded-Proto', 'https'); +}); + +// Commenting out brotli serving tests until such time as a decision is made about verifying. + +describe('Tests for static assets and cache settings', ()=>{ + // it('Test Brotli compressed CSS file', async ()=>{ + // const results = await request.get('/fonts/fonts/fonts.css.br'); + // expect(results.header['content-type']).toBe('application/octet-stream'); + // expect(results.header['cache-control']).toBe('public, max-age: 43200, must-revalidate'); + // }); + + // it('Test Brotli encrypted font file', async ()=>{ + // const results = await request.get('/fonts/fonts/open-sans-latin-400-normal.woff2.br'); + // expect(results.header['content-type']).toBe('application/octet-stream'); + // expect(results.header['cache-control']).toBe('public, max-age=2592000, must-revalidate'); + // }); + + it('Test regular CSS file', async ()=>{ + const results = await request.get('/fonts/fonts/fonts.css'); + expect(results.header['content-type']).toBe('text/css; charset=utf-8'); + expect(results.header['cache-control']).toBe('public, max-age: 43200, must-revalidate'); + }); + + it('Test regular font file', async ()=>{ + const results = await request.get('/fonts/fonts/open-sans-latin-400-normal.woff2'); + expect(results.header['content-type']).toBe('font/woff2'); + expect(results.header['cache-control']).toBe('public, max-age=2592000, must-revalidate'); + }); + +}); \ No newline at end of file From 991655a05fe3159cb9bc84ecd4b604244cce9642 Mon Sep 17 00:00:00 2001 From: David Bolack Date: Tue, 13 Oct 2026 13:10:35 -0500 Subject: [PATCH 4/5] Remove files changed from incorrect base --- client/homebrew/navbar/print.navitem.jsx | 29 +------------ .../pages/basePages/editPage/editorPage.jsx | 2 +- client/homebrew/pages/sharePage/sharePage.jsx | 2 +- package.json | 1 - server/homebrew.api.js | 26 +++++++++++- server/homebrew.api.spec.js | 10 ++--- server/page-routes.js | 16 ++------ shared/helpers.js | 41 +------------------ 8 files changed, 37 insertions(+), 90 deletions(-) diff --git a/client/homebrew/navbar/print.navitem.jsx b/client/homebrew/navbar/print.navitem.jsx index b500c24d6..ff2d75d67 100644 --- a/client/homebrew/navbar/print.navitem.jsx +++ b/client/homebrew/navbar/print.navitem.jsx @@ -2,12 +2,7 @@ import React, { useState, useEffect } from 'react'; import Nav from './nav.jsx'; import { printCurrentBrew } from '@shared/helpers.js'; -const processShareId = (brew)=>{ - - return brew.googleId && !brew.stubbed ? brew.googleId + brew.shareId : brew.shareId; -}; - -export default ({ currentBrew })=>{ +export default function(){ const [printing, setPrinting] = useState(false); // listen for print cycle events to display "loading" message since it can take some time. @@ -24,27 +19,7 @@ export default ({ currentBrew })=>{ const handlePrintPrepFinished = ()=>{ setPrinting(false); }; - if(currentBrew?.shareId) return - - export - - - {printing ? 'loading' : 'get PDF'} - - - Markdown - - - Markdown (TOML) - - - Markdown (JSON) - - - Markdown (Homebrewery) - - ; - else return + return {printing ? 'loading' : 'get PDF'} ; }; diff --git a/client/homebrew/pages/basePages/editPage/editorPage.jsx b/client/homebrew/pages/basePages/editPage/editorPage.jsx index 718aab442..b9fb34597 100644 --- a/client/homebrew/pages/basePages/editPage/editorPage.jsx +++ b/client/homebrew/pages/basePages/editPage/editorPage.jsx @@ -372,7 +372,7 @@ const EditorPage = (props)=>{ {(pageName == 'editPage') && renderAutoSaveButton()} } - + {(pageName == 'editPage') && } diff --git a/client/homebrew/pages/sharePage/sharePage.jsx b/client/homebrew/pages/sharePage/sharePage.jsx index 42a9c4241..002844c2c 100644 --- a/client/homebrew/pages/sharePage/sharePage.jsx +++ b/client/homebrew/pages/sharePage/sharePage.jsx @@ -117,7 +117,7 @@ const SharePage = (props)=>{ view {renderEditLink()} - + download diff --git a/package.json b/package.json index 0f76d8fe7..6f1269f97 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "test:api-unit:css": "jest \"server/.*.spec.js\" -t \"Get CSS\" --verbose", "test:api-unit:notifications": "jest \"server/.*.spec.js\" -t \"Notifications\" --verbose", "test:content-negotiation": "jest \"server/middleware/.*.spec.js\" --verbose", - "test:static-content": "jest \"tests/routes/static-content.test.js\" --verbose", "test:coverage": "jest --coverage --silent --runInBand", "test:dev": "jest --verbose --watch", "test:basic": "jest tests/markdown/basic.test.js --verbose", diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 8702ec42b..aa1f1f84a 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -10,7 +10,7 @@ import asyncHandler from 'express-async-handler'; import { nanoid } from 'nanoid'; import { makePatches, applyPatches, stringifyPatches, parsePatch } from '@sanity/diff-match-patch'; import { md5 } from 'hash-wasm'; -import { splitTextStyleAndMetadata, transformFrontmatter, +import { splitTextStyleAndMetadata, brewSnippetsToJSON, debugTextMismatch } from '../shared/helpers.js'; import checkClientVersion from './middleware/check-client-version.js'; import dbCheck from './middleware/dbCheck.js'; @@ -209,7 +209,29 @@ const api = { return res.status(200).send(brew.style); }, mergeBrewText : (brew)=>{ - return transformFrontmatter(brew); + let text = brew.text; + if(brew.style !== undefined) { + text = `\`\`\`css\n` + + `${brew.style || ''}\n` + + `\`\`\`\n\n` + + `${text}`; + } + const metadata = _.pick(brew, ['title', 'description', 'tags', 'renderer', 'theme']); + const snippetsArray = brewSnippetsToJSON('brew_snippets', brew.snippets, null, false).snippets; + metadata.snippets = snippetsArray.length > 0 ? snippetsArray : undefined; + metadata.bleedSize = { top: brew?.bleedSize?.top, bottom: brew?.bleedSize?.bottom, inner: brew?.bleedSize?.inner, outer: brew?.bleedSize?.outer }; + metadata.safetySpace = { top: brew?.safetySpace?.top, bottom: brew?.safetySpace?.bottom, outer: brew?.safetySpace?.outer, inner: brew?.safetySpace?.inner }; + metadata.trimSize = { width: brew?.trimSize?.width, height: brew?.trimSize?.height }; + metadata.columns = brew?.columns; + metadata.columnGutter = brew?.columnGutter; + metadata.license = brew?.license; + metadata.legalAuthors = brew?.legalAuthors; + + text = `\`\`\`metadata\n` + + `${yaml.dump(metadata)}\n` + + `\`\`\`\n\n` + + `${text}`; + return text; }, getGoodBrewTitle : (text)=>{ const tokens = hbfm.marked.lexer(text); diff --git a/server/homebrew.api.spec.js b/server/homebrew.api.spec.js index b4337e6fc..8bda5407b 100644 --- a/server/homebrew.api.spec.js +++ b/server/homebrew.api.spec.js @@ -499,6 +499,8 @@ description: this is a description tags: - something - fun +renderer: v3 +theme: phb bleedSize: top: .125in bottom: .125in @@ -516,8 +518,6 @@ columns: '2' columnGutter: .125in license: None legalAuthors: '' -renderer: v3 -theme: phb \`\`\` @@ -554,7 +554,7 @@ brew`); width : '8.5in', height : '11in', }, - }, 'hb'); + }); expect(result).toEqual(`\`\`\`metadata title: some title @@ -562,6 +562,8 @@ description: this is a description tags: - something - fun +renderer: v3 +theme: phb bleedSize: top: .125in bottom: .125in @@ -579,8 +581,6 @@ columns: '2' columnGutter: .125in license: None legalAuthors: '' -renderer: v3 -theme: phb \`\`\` diff --git a/server/page-routes.js b/server/page-routes.js index 49879391e..85436d2bc 100644 --- a/server/page-routes.js +++ b/server/page-routes.js @@ -15,7 +15,7 @@ import fs from 'fs'; import dbCheck from './middleware/dbCheck.js'; import sanitizeFilename from 'sanitize-filename'; import { DEFAULT_BREW } from './brewDefaults.js'; -import { splitTextStyleAndMetadata, transformFrontmatter } from '../shared/helpers.js'; +import { splitTextStyleAndMetadata } from '../shared/helpers.js'; import GoogleActions from './googleActions.js'; import api from './homebrew.api.js'; @@ -135,19 +135,9 @@ export default function pageRoutes({ }); //Download brew source page - app.get('/download/:format/:id', asyncHandler(getBrew('share')), async (req, res)=>{ - const markdownFormats = { - hb : 'homebrewery', - cm : 'commonmark', - toml : 'toml', - json : 'json' - }; - + app.get('/download/:id', asyncHandler(getBrew('share')), (req, res)=>{ const { brew } = req; - - const lastBrew = brew.text; sanitizeBrew(brew, 'share'); - brew.text = await transformFrontmatter(brew, req.params.format); const prefix = 'HB - '; const encodeRFC3986ValueChars = (str)=>{ @@ -162,7 +152,7 @@ export default function pageRoutes({ res.set({ 'Cache-Control' : 'no-cache', 'Content-Type' : 'text/plain', - 'Content-Disposition' : `attachment; filename*=UTF-8''${encodeRFC3986ValueChars(fileName)}.${markdownFormats[req.params.format]}.md` + 'Content-Disposition' : `attachment; filename*=UTF-8''${encodeRFC3986ValueChars(fileName)}.txt` }); res.status(200).send(brew.text); }); diff --git a/shared/helpers.js b/shared/helpers.js index 6d8180ae1..d20687843 100644 --- a/shared/helpers.js +++ b/shared/helpers.js @@ -114,44 +114,6 @@ const splitTextStyleAndMetadata = (brew)=>{ if(typeof brew.tags === 'string') brew.tags = brew.tags ? [brew.tags] : []; }; -const transformFrontmatter = (brew, format = 'hb')=>{ - const markdownFormats = { - hb : '```metadata', - cm : '---', - toml : '+++', - json : ';;;' - }; - - let text = brew.text; - if((brew.style !== undefined) && (format == 'hb')) { - text = `\`\`\`css\n` + - `${brew.style || ''}\n` + - `\`\`\`\n\n` + - `${text}`; - } - const metadata = _.pick(brew, ['title', 'description', 'tags']); - if(format == 'hb') { - const snippetsArray = brewSnippetsToJSON('brew_snippets', brew.snippets, null, false).snippets; - metadata.snippets = snippetsArray.length > 0 ? snippetsArray : undefined; - metadata.bleedSize = { top: brew?.bleedSize?.top, bottom: brew?.bleedSize?.bottom, inner: brew?.bleedSize?.inner, outer: brew?.bleedSize?.outer }; - metadata.safetySpace = { top: brew?.safetySpace?.top, bottom: brew?.safetySpace?.bottom, outer: brew?.safetySpace?.outer, inner: brew?.safetySpace?.inner }; - metadata.trimSize = { width: brew?.trimSize?.width, height: brew?.trimSize?.height }; - metadata.columns = brew?.columns; - metadata.columnGutter = brew?.columnGutter; - metadata.license = brew?.license; - metadata.legalAuthors = brew?.legalAuthors; - metadata.renderer = brew.renderer; - metadata.theme = brew.theme; - } - - text = `${markdownFormats[format]}\n` + - `${format != 'json' ? yaml.dump(metadata) : JSON.stringify(metadata)}\n` + - `${markdownFormats[format].slice(0, 3)}\n\n` + - `${text}`; - - return text; -}; - const printCurrentBrew = async ()=>{ if(window.typeof !== 'undefined') { // fire a custom event for the print cycle @@ -268,6 +230,5 @@ export { fetchThemeBundle, brewSnippetsToJSON, debugTextMismatch, - yamlSnippetsToText, - transformFrontmatter + yamlSnippetsToText }; From 4825df37a89f0191983e704fe7135e324e44ceed Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Mon, 19 Oct 2026 13:43:37 -0400 Subject: [PATCH 5/5] Remove comments; brotli tests not needed Vite currently generates no .br files during build. There are not brotli files to test against. Best to add those tests when they become relevant, at which point they will need to be rebuilt anyway. --- tests/routes/static-content.test.js | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/tests/routes/static-content.test.js b/tests/routes/static-content.test.js index 13e6ed44e..3d307ca00 100644 --- a/tests/routes/static-content.test.js +++ b/tests/routes/static-content.test.js @@ -9,21 +9,7 @@ beforeAll(async ()=>{ request = supertest.agent(app).set('X-Forwarded-Proto', 'https'); }); -// Commenting out brotli serving tests until such time as a decision is made about verifying. - describe('Tests for static assets and cache settings', ()=>{ - // it('Test Brotli compressed CSS file', async ()=>{ - // const results = await request.get('/fonts/fonts/fonts.css.br'); - // expect(results.header['content-type']).toBe('application/octet-stream'); - // expect(results.header['cache-control']).toBe('public, max-age: 43200, must-revalidate'); - // }); - - // it('Test Brotli encrypted font file', async ()=>{ - // const results = await request.get('/fonts/fonts/open-sans-latin-400-normal.woff2.br'); - // expect(results.header['content-type']).toBe('application/octet-stream'); - // expect(results.header['cache-control']).toBe('public, max-age=2592000, must-revalidate'); - // }); - it('Test regular CSS file', async ()=>{ const results = await request.get('/fonts/fonts/fonts.css'); expect(results.header['content-type']).toBe('text/css; charset=utf-8'); @@ -35,5 +21,4 @@ describe('Tests for static assets and cache settings', ()=>{ expect(results.header['content-type']).toBe('font/woff2'); expect(results.header['cache-control']).toBe('public, max-age=2592000, must-revalidate'); }); - -}); \ No newline at end of file +});