diff --git a/docs/site/scripts/base-aware-href.test.mjs b/docs/site/scripts/base-aware-href.test.mjs new file mode 100644 index 000000000..7cdf565a2 --- /dev/null +++ b/docs/site/scripts/base-aware-href.test.mjs @@ -0,0 +1,18 @@ +import assert from 'node:assert/strict'; +import { test } from 'node:test'; + +import { baseAwareHref } from '../src/lib/base-aware-href.mjs'; + +test('leaves root-relative links unchanged at the root base', () => { + assert.equal(baseAwareHref('/configure/relay/'), '/configure/relay/'); +}); + +test('prefixes root-relative links with a non-root base', () => { + assert.equal(baseAwareHref('/configure/relay/', '/dev/'), '/dev/configure/relay/'); + assert.equal(baseAwareHref('/configure/relay/', '/dev'), '/dev/configure/relay/'); +}); + +test('leaves external and protocol-relative links unchanged', () => { + assert.equal(baseAwareHref('https://example.com/spec'), 'https://example.com/spec'); + assert.equal(baseAwareHref('//example.com/spec', '/dev/'), '//example.com/spec'); +}); diff --git a/docs/site/src/components/StandardsTable.astro b/docs/site/src/components/StandardsTable.astro index 276bfd6f5..efb6c9ac5 100644 --- a/docs/site/src/components/StandardsTable.astro +++ b/docs/site/src/components/StandardsTable.astro @@ -1,8 +1,10 @@ --- import standards from '../data/generated/standards.json'; +import { baseAwareHref } from '../lib/base-aware-href.mjs'; // evidence_gap is an optional flag; absent from the JSON unless a row sets it. const rows = standards as ((typeof standards)[number] & { evidence_gap?: boolean })[]; +const base = import.meta.env.BASE_URL; ---