From 487574e245374e18ae18dc8bf56fea751d0ed793 Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 27 Oct 2025 22:21:51 +0100 Subject: [PATCH] fix: add test for file embed and code fragments --- test/integration/example.test.js | 56 ++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/test/integration/example.test.js b/test/integration/example.test.js index 4f6b57378..9e9d34faa 100644 --- a/test/integration/example.test.js +++ b/test/integration/example.test.js @@ -134,4 +134,60 @@ describe('Creating a Docsify site (integration tests in Jest)', function () { ).toBeTruthy(); expect(await waitForText('#main', 'This is a custom route')).toBeTruthy(); }); + + test('embed file code fragment renders', async () => { + await docsifyInit({ + markdown: { + homepage: ` + # Embed Test + + [filename](_media/example1.js ':include :type=code :fragment=demo') + + [filename](_media/example2.js ':include :type=code :fragment=demo') + `, + }, + routes: { + // Serve the example.js file so the embed fetch can retrieve it + '_media/example1.js': ` + let myURL = 'https://api.example.com/data'; + /// [demo] + const result = fetch(myURL) + .then(response => { + return response.json(); + }) + .then(myJson => { + console.log(JSON.stringify(myJson)); + }); + /// [demo] + + result.then(console.log).catch(console.error); + `, + '_media/example2.js': ` + let myURL = 'https://api.example.com/data'; + ### [demo] + const result = fetch(myURL) + .then(response => { + return response.json(); + }) + .then(myJson => { + console.log(JSON.stringify(myJson)); + }); + ### [demo] + + result.then(console.log).catch(console.error); + `, + }, + }); + + // Wait for the embedded fragment to be fetched and rendered into #main + expect( + await waitForText('#main', 'console.log(JSON.stringify(myJson));'), + ).toBeTruthy(); + // Ensure the URL outside the fragment is NOT included in the embedded code + const mainText = document.querySelector('#main').textContent; + expect(mainText).not.toContain('https://api.example.com/data'); + expect(mainText).not.toContain( + 'result.then(console.log).catch(console.error);', + ); + }); });