11const fs = require ( 'fs/promises' )
2+ const { performance } = require ( 'perf_hooks' )
3+ const path = require ( 'path' )
24
35Object . defineProperty ( document , 'queryCommandSupported' , {
46 value : jest . fn ( ) . mockImplementation ( ( ) => true ) ,
@@ -19,20 +21,19 @@ Object.defineProperty(window, 'matchMedia', {
1921} ) ;
2022
2123Object . defineProperty ( window , 'fetch' , {
22- value : jest . fn ( async ( path ) => {
23-
24- const content = await fs . readFile ( path )
24+ value : jest . fn ( async ( url ) => {
25+ const content = await fs . readFile ( new URL ( url ) . pathname )
2526 return {
2627 json : async ( ) => JSON . stringify ( JSON . parse ( content . toString ( ) ) ) ,
27- arrayBuffer : async ( ) => content . buffer . slice ( content . byteOffset , content . byteOffset + content . byteLength )
28+ arrayBuffer : async ( ) => content . buffer . slice ( content . byteOffset , content . byteOffset + content . byteLength ) ,
29+ status : 200
2830 }
2931 } )
3032} )
3133
3234Object . defineProperty ( URL , 'createObjectURL' , {
3335 value : jest . fn ( ( blob ) => {
34-
35- return null
36+ return 'blob:not-working'
3637 } )
3738} )
3839
@@ -90,6 +91,9 @@ Object.defineProperty(window, 'TextEncoder', {
9091Object . defineProperty ( window , 'TextDecoder' , {
9192 value : class TextDecoder {
9293 decode ( octets ) {
94+ if ( octets == null ) {
95+ return ''
96+ }
9397 var string = "" ;
9498 var i = 0 ;
9599 while ( i < octets . length ) {
@@ -130,4 +134,19 @@ Object.defineProperty(window, 'TextDecoder', {
130134
131135Object . defineProperty ( window , 'Buffer' , {
132136 value : undefined
133- } )
137+ } )
138+
139+ // Force override performance, for some reason the implementation is empty otherwise
140+ let _performance = performance
141+ Object . defineProperty ( global , 'performance' , {
142+ get ( ) { return _performance } ,
143+ set ( v ) {
144+ // ignore
145+ }
146+ } )
147+
148+ global . CSS = {
149+ escape : v => v
150+ }
151+
152+ Element . prototype . scrollIntoView = jest . fn ( ) ;
0 commit comments