diff --git a/packages/dsh-desktop-workbenches/client.js b/packages/dsh-desktop-workbenches/client.js index c7d0bd912..8f1c41fba 100644 --- a/packages/dsh-desktop-workbenches/client.js +++ b/packages/dsh-desktop-workbenches/client.js @@ -1062,8 +1062,13 @@ window.__ModuleLoader__.load({ ` function ensureStyles() { const existing = document.querySelector('style[data-plugin-css="dsh-desktop-workbenches"]') - if (existing) { if (existing.textContent !== css) existing.textContent = css; return } + if (existing) { + existing.dataset.plugin = 'dsh-desktop-workbenches' + if (existing.textContent !== css) existing.textContent = css + return + } const style = document.createElement('style') + style.dataset.plugin = 'dsh-desktop-workbenches' style.dataset.pluginCss = 'dsh-desktop-workbenches' style.textContent = css document.head.appendChild(style) diff --git a/test/workbench-client.test.mjs b/test/workbench-client.test.mjs index 4cc383fa1..d1c99da8e 100644 --- a/test/workbench-client.test.mjs +++ b/test/workbench-client.test.mjs @@ -721,11 +721,19 @@ describe('desktop workbench client navigation', () => { const cleanup = styleEffect() cleanup?.() expect(styles).toHaveLength(1) + expect(styles[0].dataset.plugin).toBe('dsh-desktop-workbenches') expect(styles[0].textContent).toContain('.dshWbWorkbenchHome') expect(styles[0].textContent).toContain('height:232px;flex:0 0 232px') expect(styles[0].textContent).toContain('-webkit-line-clamp:4') styleEffect() expect(styles).toHaveLength(1) + styles[0].dataset.plugin = 'another-plugin' + styleEffect() + expect(styles[0].dataset.plugin).toBe('dsh-desktop-workbenches') + styles[0].remove() + styleEffect() + expect(styles).toHaveLength(1) + expect(styles[0].dataset.plugin).toBe('dsh-desktop-workbenches') }) it('restores workbench styles after head changes without a React rerender and stops observing on disposal', async () => {