global . CSS = null ; const webStorageMock = ( ) => { let storage = { } ; return { getItem : ( key ) => ( key in storage ? storage [ key ] : null ) , setItem : ( key , value ) => ( storage [ key ] = value || '' ) , removeItem : ( key ) => delete storage [ key ] , clear : ( ) => ( storage = { } ) , } ; } ; Object . defineProperty ( window , 'localStorage' , { value : webStorageMock ( ) } ) ; Object . defineProperty ( window , 'sessionStorage' , { value : webStorageMock ( ) } ) ; Object . defineProperty ( document , 'doctype' , { value : '<!DOCTYPE html>' , } ) ; Object . defineProperty ( window , 'getComputedStyle' , { value : ( ) => { return { display : 'none' , appearance : [ '-webkit-appearance' ] , } ; } , } ) ; /**
 * ISSUE: https://github.com/angular/material2/issues/7101
 * Workaround for JSDOM missing transform property
 */ Object . defineProperty ( document . body . style , 'transform' , { value : ( ) => { return { enumerable : true , configurable : true , } ; } , } ) ;