@@ -32,7 +32,26 @@ export interface TestDOMContext {
3232let currentDOMInstance : any = null
3333let originalGlobals : Partial < TestDOMGlobals > = { }
3434
35- export async function loadHtmlFromHar ( key : keyof typeof CORPUS ) : Promise < string > {
35+ export async function setupDOM ( key : keyof typeof CORPUS ) : Promise < TestDOMGlobals > {
36+ const entry = CORPUS [ key ]
37+ if ( ! entry ) {
38+ throw new Error ( `Invalid corpus key: ${ String ( key ) } ` )
39+ }
40+
41+ let html : string
42+ if ( entry . type === 'har' ) {
43+ html = await loadRootHtmlStringFromHar ( key )
44+ } else if ( entry . type === 'html' ) {
45+ html = await loadHtmlStringFromHtml ( key )
46+ } else {
47+ throw new Error ( `Unsupported corpus type: ${ entry . type } ` )
48+ }
49+ const domGlobals = createDOMFromString ( html , entry . url )
50+ setupDOMFromHar ( domGlobals )
51+ return domGlobals
52+ }
53+
54+ async function loadRootHtmlStringFromHar ( key : keyof typeof CORPUS ) : Promise < string > {
3655 const entry = CORPUS [ key ]
3756 if ( ! entry || entry . type !== 'har' ) {
3857 throw new Error ( `Invalid HAR corpus key: ${ String ( key ) } ` )
@@ -42,15 +61,22 @@ export async function loadHtmlFromHar(key: keyof typeof CORPUS): Promise<string>
4261 const harContent = await fs . readFile ( harPath , 'utf-8' )
4362 const harData : HarFile = JSON . parse ( harContent )
4463 const mainEntry = harData . log . entries . find ( ( entry ) => entry . request . url === url )
45-
4664 if ( ! mainEntry ) {
4765 throw new Error ( `No entry found for URL: ${ url } in HAR file: ${ harPath } ` )
4866 }
67+ return mainEntry . response . content . text !
68+ }
4969
50- return mainEntry . response . content . text || ''
70+ async function loadHtmlStringFromHtml ( key : keyof typeof CORPUS ) : Promise < string > {
71+ const entry = CORPUS [ key ]
72+ if ( ! entry || entry . type !== 'html' ) {
73+ throw new Error ( `Invalid HTML corpus key: ${ String ( key ) } ` )
74+ }
75+ const htmlPath = path . join ( __dirname , 'corpus' , 'html' , `${ String ( key ) } .html` )
76+ return await fs . readFile ( htmlPath , 'utf-8' )
5177}
5278
53- export function createDOMFromHar ( html : string , url : string ) : TestDOMGlobals {
79+ function createDOMFromString ( html : string , url : string ) : TestDOMGlobals {
5480 const dom = parseHTML ( html )
5581
5682 return {
@@ -72,7 +98,7 @@ export function createDOMFromHar(html: string, url: string): TestDOMGlobals {
7298 }
7399}
74100
75- export function setupDOMFromHar ( domGlobals : TestDOMGlobals ) : void {
101+ function setupDOMFromHar ( domGlobals : TestDOMGlobals ) : void {
76102 // Store original globals for cleanup
77103 originalGlobals = {
78104 Document : ( globalThis as any ) . Document ,
@@ -104,51 +130,3 @@ export function cleanupDOM(): void {
104130 originalGlobals = { }
105131 }
106132}
107-
108- export async function loadHtmlFromHtml ( key : keyof typeof CORPUS ) : Promise < string > {
109- const entry = CORPUS [ key ]
110- if ( ! entry || entry . type !== 'html' ) {
111- throw new Error ( `Invalid HTML corpus key: ${ String ( key ) } ` )
112- }
113- const htmlPath = path . join ( __dirname , 'corpus' , 'html' , `${ String ( key ) } .html` )
114- return await fs . readFile ( htmlPath , 'utf-8' )
115- }
116-
117- export async function setupHtmlDOM ( key : keyof typeof CORPUS ) : Promise < TestDOMGlobals > {
118- const html = await loadHtmlFromHtml ( key )
119- const entry = CORPUS [ key ]
120- if ( ! entry || entry . type !== 'html' ) {
121- throw new Error ( `Invalid HTML corpus key: ${ String ( key ) } ` )
122- }
123- const url = entry . url
124- const domGlobals = createDOMFromHar ( html , url )
125- setupDOMFromHar ( domGlobals )
126- return domGlobals
127- }
128-
129- export async function setupHarDOM ( key : keyof typeof CORPUS ) : Promise < TestDOMGlobals > {
130- const html = await loadHtmlFromHar ( key )
131- const entry = CORPUS [ key ]
132- if ( ! entry || entry . type !== 'har' ) {
133- throw new Error ( `Invalid HAR corpus key: ${ String ( key ) } ` )
134- }
135- const url = entry . url
136- const domGlobals = createDOMFromHar ( html , url )
137- setupDOMFromHar ( domGlobals )
138- return domGlobals
139- }
140-
141- export async function setupDOM ( key : keyof typeof CORPUS ) : Promise < TestDOMGlobals > {
142- const entry = CORPUS [ key ]
143- if ( ! entry ) {
144- throw new Error ( `Invalid corpus key: ${ String ( key ) } ` )
145- }
146-
147- if ( entry . type === 'har' ) {
148- return await setupHarDOM ( key )
149- } else if ( entry . type === 'html' ) {
150- return await setupHtmlDOM ( key )
151- } else {
152- throw new Error ( `Unsupported corpus type: ${ entry . type } ` )
153- }
154- }
0 commit comments