diff --git a/plugins/techdocs/src/reader/transformers/addBaseUrl.test.ts b/plugins/techdocs/src/reader/transformers/addBaseUrl.test.ts index 8629dce0d3..e6a4432878 100644 --- a/plugins/techdocs/src/reader/transformers/addBaseUrl.test.ts +++ b/plugins/techdocs/src/reader/transformers/addBaseUrl.test.ts @@ -39,7 +39,8 @@ describe('addBaseUrl', () => { it('contains transformed absolute paths', () => { const shadowDom = createTestShadowDom(FIXTURES.FIXTURE_STANDARD_PAGE, { - transformers: [ + preTransformers: [], + postTransformers: [ addBaseUrl({ docStorageURL: DOC_STORAGE_URL, componentId: 'example-docs', @@ -73,7 +74,8 @@ describe('addBaseUrl', () => { `, { - transformers: [ + preTransformers: [], + postTransformers: [ addBaseUrl({ docStorageURL: DOC_STORAGE_URL, componentId: 'example-docs', @@ -108,7 +110,8 @@ describe('addBaseUrl', () => { `, { - transformers: [ + preTransformers: [], + postTransformers: [ addBaseUrl({ docStorageURL: DOC_STORAGE_URL, componentId: 'example-docs', diff --git a/plugins/techdocs/src/reader/transformers/addLinkClickListener.test.ts b/plugins/techdocs/src/reader/transformers/addLinkClickListener.test.ts index 0554ff85e9..8e942b8be1 100644 --- a/plugins/techdocs/src/reader/transformers/addLinkClickListener.test.ts +++ b/plugins/techdocs/src/reader/transformers/addLinkClickListener.test.ts @@ -21,7 +21,8 @@ describe('addLinkClickListener', () => { it('calls onClick when a link has been clicked', () => { const fn = jest.fn(); const shadowDom = createTestShadowDom(FIXTURES.FIXTURE_STANDARD_PAGE, { - transformers: [ + preTransformers: [], + postTransformers: [ addLinkClickListener({ onClick: fn, }), diff --git a/plugins/techdocs/src/reader/transformers/modifyCss.test.tsx b/plugins/techdocs/src/reader/transformers/modifyCss.test.tsx index fa808103dc..b7bb0832ee 100644 --- a/plugins/techdocs/src/reader/transformers/modifyCss.test.tsx +++ b/plugins/techdocs/src/reader/transformers/modifyCss.test.tsx @@ -22,7 +22,8 @@ describe('modifyCss', () => { const shadowDom = createTestShadowDom( `
`, { - transformers: [], + preTransformers: [], + postTransformers: [], }, ); @@ -37,7 +38,8 @@ describe('modifyCss', () => { const shadowDom = createTestShadowDom( `
`, { - transformers: [ + preTransformers: [], + postTransformers: [ modifyCss({ cssTransforms: { '.md-typeset': [{ 'font-size': '1em' }], diff --git a/plugins/techdocs/src/reader/transformers/onCssReady.test.ts b/plugins/techdocs/src/reader/transformers/onCssReady.test.ts index 10edbbae5e..234100fc4b 100644 --- a/plugins/techdocs/src/reader/transformers/onCssReady.test.ts +++ b/plugins/techdocs/src/reader/transformers/onCssReady.test.ts @@ -42,7 +42,8 @@ describe('onCssReady', () => { const onLoaded = jest.fn(); createTestShadowDom(FIXTURES.FIXTURE_STANDARD_PAGE, { - transformers: [ + preTransformers: [], + postTransformers: [ onCssReady({ docStorageURL, onLoading, @@ -61,7 +62,8 @@ describe('onCssReady', () => { const onLoaded = jest.fn(); createTestShadowDom(FIXTURES.FIXTURE_STANDARD_PAGE, { - transformers: [ + preTransformers: [], + postTransformers: [ addBaseUrl({ docStorageURL, componentId: 'mkdocs', diff --git a/plugins/techdocs/src/reader/transformers/removeMkdocsHeader.test.ts b/plugins/techdocs/src/reader/transformers/removeMkdocsHeader.test.ts index 7e155ea317..43917e8432 100644 --- a/plugins/techdocs/src/reader/transformers/removeMkdocsHeader.test.ts +++ b/plugins/techdocs/src/reader/transformers/removeMkdocsHeader.test.ts @@ -20,7 +20,8 @@ import { removeMkdocsHeader } from '../transformers'; describe('removeMkdocsHeader', () => { it('does not remove mkdocs header', () => { const shadowDom = createTestShadowDom(FIXTURES.FIXTURE_STANDARD_PAGE, { - transformers: [], + preTransformers: [], + postTransformers: [], }); expect(shadowDom.querySelector('.md-header')).toBeTruthy(); @@ -28,7 +29,8 @@ describe('removeMkdocsHeader', () => { it('does remove mkdocs header', () => { const shadowDom = createTestShadowDom(FIXTURES.FIXTURE_STANDARD_PAGE, { - transformers: [removeMkdocsHeader()], + preTransformers: [], + postTransformers: [removeMkdocsHeader()], }); expect(shadowDom.querySelector('.md-header')).toBeFalsy(); diff --git a/plugins/techdocs/src/reader/transformers/rewriteDocLinks.test.ts b/plugins/techdocs/src/reader/transformers/rewriteDocLinks.test.ts index b4ceab0b38..e1abc0e5f7 100644 --- a/plugins/techdocs/src/reader/transformers/rewriteDocLinks.test.ts +++ b/plugins/techdocs/src/reader/transformers/rewriteDocLinks.test.ts @@ -43,7 +43,8 @@ describe('rewriteDocLinks', () => { Test Sub Page `, { - transformers: [rewriteDocLinks()], + preTransformers: [], + postTransformers: [rewriteDocLinks()], }, ); diff --git a/plugins/techdocs/src/test-utils/shadowDom.ts b/plugins/techdocs/src/test-utils/shadowDom.ts index ded6b6a860..556979217e 100644 --- a/plugins/techdocs/src/test-utils/shadowDom.ts +++ b/plugins/techdocs/src/test-utils/shadowDom.ts @@ -18,22 +18,36 @@ import transformer from '../reader/transformers'; import type { Transformer } from '../reader/transformers'; export type CreateTestShadowDomOptions = { - transformers: Transformer[]; + preTransformers: Transformer[]; + postTransformers: Transformer[]; }; export const createTestShadowDom = ( fixture: string, - opts: CreateTestShadowDomOptions = { transformers: [] }, + opts: CreateTestShadowDomOptions = { + preTransformers: [], + postTransformers: [], + }, ): ShadowRoot => { const divElement = document.createElement('div'); divElement.attachShadow({ mode: 'open' }); document.body.appendChild(divElement); - const domParser = new DOMParser().parseFromString(fixture, 'text/html'); - divElement.shadowRoot?.appendChild(domParser.documentElement); + // Transformers before the UI is rendered + let dom: Element | HTMLElement = new DOMParser().parseFromString( + fixture, + 'text/html', + ).documentElement; + if (opts.preTransformers) { + dom = transformer(dom, opts.preTransformers); + } - if (opts.transformers) { - transformer(divElement.shadowRoot!.children[0], opts.transformers); + // Mount the UI + divElement.shadowRoot?.appendChild(dom); + + // Transformers after the UI is rendered + if (opts.postTransformers) { + transformer(dom, opts.postTransformers); } return divElement.shadowRoot!;