@@ -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