From ba864c218804c5218cc962e6f7506c1c528caa59 Mon Sep 17 00:00:00 2001 From: Dylan Depass Date: Thu, 30 May 2024 11:57:45 -0400 Subject: [PATCH 1/3] fix: account for url's with fragments when adding nocache query param --- src/extension/module.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/extension/module.js b/src/extension/module.js index 55c872f18..3a8c108a3 100644 --- a/src/extension/module.js +++ b/src/extension/module.js @@ -4067,8 +4067,12 @@ import sampleRUM from './rum.js'; const liveDomains = ['aem.live', 'hlx.live']; if (cacheBust && !(targetEnv === 'prod' && !liveDomains.some((domain) => envUrl.includes(domain)) && this.config.transient)) { - const separator = envUrl.includes('?') ? '&' : '?'; - envUrl = `${envUrl}${separator}nocache=${Date.now()}`; + const [baseUrl, fragment] = envUrl.split('#'); + const separator = baseUrl.includes('?') ? '&' : '?'; + envUrl = `${baseUrl}${separator}nocache=${Date.now()}`; + if (fragment) { + envUrl += `#${fragment}`; + } } // switch or open env From 03e187947745252f959ecda64add7ea184203082 Mon Sep 17 00:00:00 2001 From: Dylan Depass Date: Thu, 30 May 2024 13:09:25 -0400 Subject: [PATCH 2/3] fix: use URL class --- src/extension/module.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/extension/module.js b/src/extension/module.js index 3a8c108a3..a53836a1d 100644 --- a/src/extension/module.js +++ b/src/extension/module.js @@ -4067,12 +4067,9 @@ import sampleRUM from './rum.js'; const liveDomains = ['aem.live', 'hlx.live']; if (cacheBust && !(targetEnv === 'prod' && !liveDomains.some((domain) => envUrl.includes(domain)) && this.config.transient)) { - const [baseUrl, fragment] = envUrl.split('#'); - const separator = baseUrl.includes('?') ? '&' : '?'; - envUrl = `${baseUrl}${separator}nocache=${Date.now()}`; - if (fragment) { - envUrl += `#${fragment}`; - } + const url = new URL(envUrl); + url.searchParams.set('nocache', Date.now()); + envUrl = url.toString(); } // switch or open env From 7487868a233d882d35328f6797b2a882332e4752 Mon Sep 17 00:00:00 2001 From: Dylan Depass Date: Fri, 31 May 2024 13:21:00 -0400 Subject: [PATCH 3/3] fix: add test --- test/SidekickTest.js | 1 + test/publish.test.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/test/SidekickTest.js b/test/SidekickTest.js index d0f84559c..10d85e68c 100644 --- a/test/SidekickTest.js +++ b/test/SidekickTest.js @@ -248,6 +248,7 @@ export class SidekickTest extends EventEmitter { method: req.method, headers: req.headers, url, + urlFragment: req.urlFragment, }; if (this.requestHandler) { const r = await this.requestHandler(reqObj); diff --git a/test/publish.test.js b/test/publish.test.js index a780b3096..cdad66c62 100644 --- a/test/publish.test.js +++ b/test/publish.test.js @@ -63,6 +63,27 @@ describe('Test publish plugin', () => { assert.ok(navigated.startsWith('https://blog.adobe.com/en/topics/bla?nocache='), 'Redirect not sent'); }).timeout(IT_DEFAULT_TIMEOUT); + it('Publish works with fragment and nocache', async () => { + const setup = new Setup('blog'); + nock.sidekick(setup); + nock.admin(setup); + nock('https://admin.hlx.page') + .post('/live/adobe/blog/main/en/topics/bla') + .reply(200); + const { requestsMade } = await new SidekickTest({ + browser, + page, + plugin: 'publish', + url: 'https://main--blog--adobe.hlx.page/en/topics/bla#fragment', + waitNavigation: 'https://blog.adobe.com/en/topics/bla?nocache=', + }).run(); + const navigationRequest = requestsMade.find((r) => r.url.includes('https://blog.adobe.com/en/topics/bla?nocache=')); + assert.equal( + navigationRequest.urlFragment, + '#fragment', + ); + }).timeout(IT_DEFAULT_TIMEOUT); + it('Publish plugin also publishes dependencies', async () => { const setup = new Setup('blog'); nock.sidekick(setup);