diff --git a/packages/docusaurus-utils-validation/src/__tests__/__snapshots__/validationSchemas.test.ts.snap b/packages/docusaurus-utils-validation/src/__tests__/__snapshots__/validationSchemas.test.ts.snap index 16ec0a6e8a..da99964c24 100644 --- a/packages/docusaurus-utils-validation/src/__tests__/__snapshots__/validationSchemas.test.ts.snap +++ b/packages/docusaurus-utils-validation/src/__tests__/__snapshots__/validationSchemas.test.ts.snap @@ -60,4 +60,4 @@ exports[`validation schemas RemarkPluginsSchema: for value=false 1`] = `"\\"valu exports[`validation schemas RemarkPluginsSchema: for value=null 1`] = `"\\"value\\" must be an array"`; -exports[`validation schemas URISchema: for value="invalidURL" 1`] = `"\\"value\\" does not match any of the allowed types"`; +exports[`validation schemas URISchema: for value="spaces are invalid in a URL" 1`] = `"\\"value\\" does not match any of the allowed types"`; diff --git a/packages/docusaurus-utils-validation/src/__tests__/validationSchemas.test.ts b/packages/docusaurus-utils-validation/src/__tests__/validationSchemas.test.ts index 4045a838e0..88bab0fa4a 100644 --- a/packages/docusaurus-utils-validation/src/__tests__/validationSchemas.test.ts +++ b/packages/docusaurus-utils-validation/src/__tests__/validationSchemas.test.ts @@ -111,12 +111,16 @@ describe('validation schemas', () => { test('URISchema', () => { const validURL = 'https://docusaurus.io'; const doubleHash = 'https://docusaurus.io#github#/:'; - const invalidURL = 'invalidURL'; + const invalidURL = 'spaces are invalid in a URL'; + const relativeURL = 'relativeURL'; + const relativeURLWithParent = '../relativeURLWithParent'; const urlFromIssue = 'https://riot.im/app/#/room/#ligo-public:matrix.org'; const {testFail, testOK} = createTestHelpers({schema: URISchema}); testOK(validURL); testOK(doubleHash); testFail(invalidURL); + testOK(relativeURL); + testOK(relativeURLWithParent); testOK(urlFromIssue); }); }); diff --git a/packages/docusaurus-utils-validation/src/validationSchemas.ts b/packages/docusaurus-utils-validation/src/validationSchemas.ts index 4e2d57dac1..d4cee25f1c 100644 --- a/packages/docusaurus-utils-validation/src/validationSchemas.ts +++ b/packages/docusaurus-utils-validation/src/validationSchemas.ts @@ -26,7 +26,7 @@ export const RehypePluginsSchema = MarkdownPluginsSchema; export const AdmonitionsSchema = Joi.object().default({}); export const URISchema = Joi.alternatives( - Joi.string().uri(), + Joi.string().uri({allowRelative: true}), Joi.custom((val, helpers) => { try { const url = new URL(val);