From 8f9032de83c0916d1216eebc6fabe1c21e24ec85 Mon Sep 17 00:00:00 2001 From: Craig Beck Date: Wed, 15 May 2024 10:04:24 -0700 Subject: [PATCH 1/2] Make RenderOptions optional for renderHtml and renderDom --- src/test-utils/ComponentHarness.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test-utils/ComponentHarness.ts b/src/test-utils/ComponentHarness.ts index 7f71d949..0045fa28 100644 --- a/src/test-utils/ComponentHarness.ts +++ b/src/test-utils/ComponentHarness.ts @@ -158,7 +158,7 @@ export class ComponentHarness extends EventEmitter { * @returns { Page & {html: string} } - a `Page` that has a `html` property with the rendered HTML * string */ - renderHtml(options) { + renderHtml(options?: RenderOptions) { return this._get(function(page) { page.html = page.get('$harness'); }, options); @@ -171,7 +171,7 @@ export class ComponentHarness extends EventEmitter { * @returns { Page & {fragment: DocumentFragment} } a `Page` that has a `fragment` property with the * rendered `DocumentFragment` */ - renderDom(options) { + renderDom(options?: RenderOptions) { return this._get(function(page) { page.fragment = page.getFragment('$harness'); }, options); @@ -189,7 +189,7 @@ export class ComponentHarness extends EventEmitter { * @param {(page: PageForHarness) => void} render * @param {RenderOptions} [options] */ - _get(renderFn: (page: PageForHarness) => void, options?): PageForHarness { + _get(renderFn: (page: PageForHarness) => void, options?: RenderOptions): PageForHarness { options = options || {}; const url = options.url || ''; From f8b2c78926a1461c6e3c2d7352f60c9c76503116 Mon Sep 17 00:00:00 2001 From: Craig Beck Date: Wed, 15 May 2024 12:05:09 -0700 Subject: [PATCH 2/2] Additoinal typing on PageForHarness and better return types on renderHtml and renderFragment methods --- src/test-utils/ComponentHarness.ts | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/test-utils/ComponentHarness.ts b/src/test-utils/ComponentHarness.ts index 0045fa28..ada0b1ac 100644 --- a/src/test-utils/ComponentHarness.ts +++ b/src/test-utils/ComponentHarness.ts @@ -16,8 +16,18 @@ export interface RenderOptions { export class PageForHarness extends PageForClient { component?: Component; - fragment?: any; - html?: any; + fragment?: DocumentFragment; + html?: string; +} + +interface PageRenderedHtml extends PageForHarness { + html: string; + fragment: undefined; +} + +interface PageRenderedFragment extends PageForHarness { + html: undefined; + fragment: DocumentFragment; } const derby = new DerbyForClient(); @@ -158,10 +168,10 @@ export class ComponentHarness extends EventEmitter { * @returns { Page & {html: string} } - a `Page` that has a `html` property with the rendered HTML * string */ - renderHtml(options?: RenderOptions) { + renderHtml(options?: RenderOptions): PageRenderedHtml { return this._get(function(page) { page.html = page.get('$harness'); - }, options); + }, options) as PageRenderedHtml; } /** @@ -171,10 +181,10 @@ export class ComponentHarness extends EventEmitter { * @returns { Page & {fragment: DocumentFragment} } a `Page` that has a `fragment` property with the * rendered `DocumentFragment` */ - renderDom(options?: RenderOptions) { + renderDom(options?: RenderOptions): PageRenderedFragment { return this._get(function(page) { page.fragment = page.getFragment('$harness'); - }, options); + }, options) as PageRenderedFragment; } attachTo(parentNode, node) {