Test the parsing of the filter property. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". Basic reference : url('#a') PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "url(\"#a\")" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "url(\"#a\")" Bare unquoted reference converting to quoted form : url(#a) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "url(\"#a\")" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "url(\"#a\")" Multiple references : url('#a') url('#b') PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "url(\"#a\") url(\"#b\")" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "url(\"#a\")" PASS subRule.cssText is "url(\"#b\")" Reference as 2nd value : grayscale(1) url('#a') PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(1) url(\"#a\")" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "grayscale(1)" PASS subRule.cssText is "url(\"#a\")" Integer value : grayscale(1) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "grayscale(1)" Percentage value : grayscale(50%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(50%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "grayscale(50%)" Float value converts to integer : grayscale(1.0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "grayscale(1)" Values over 1 are clamped : grayscale(1.5) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "grayscale(1)" Percentages over 100 are clamped : grayscale(320%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(100%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "grayscale(100%)" Zero value : grayscale(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(0)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "grayscale(0)" No values : grayscale() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "grayscale()" Multiple values : grayscale(0.5) grayscale(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(0.5) grayscale(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "grayscale(0.5)" PASS subRule.cssText is "grayscale(0.25)" Integer value : sepia(1) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "sepia(1)" Percentage value : sepia(50%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia(50%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "sepia(50%)" Float value converts to integer : sepia(1.0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "sepia(1)" Values over 1 are clamped : sepia(8) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "sepia(1)" Percentages over 100 are clamped : sepia(101%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia(100%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "sepia(100%)" Negative value : sepia(-0.5) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' Zero value : sepia(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia(0)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "sepia(0)" No values : sepia() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "sepia()" Negative value : grayscale(-0.2) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' Multiple values : sepia(0.5) sepia(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia(0.5) sepia(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "sepia(0.5)" PASS subRule.cssText is "sepia(0.25)" Rule combinations : sepia(0.5) grayscale(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "sepia(0.5) grayscale(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "sepia(0.5)" PASS subRule.cssText is "grayscale(0.25)" Integer value : saturate(1) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "saturate(1)" Percentage value : saturate(50%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate(50%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "saturate(50%)" Percentage value > 1 : saturate(250%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate(250%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "saturate(250%)" Float value converts to integer : saturate(1.0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "saturate(1)" Input value > 1 : saturate(5.5) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate(5.5)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "saturate(5.5)" Negative value : saturate(-0.5) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' Zero value : saturate(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate(0)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "saturate(0)" No values : saturate() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "saturate()" Multiple values : saturate(0.5) saturate(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate(0.5) saturate(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "saturate(0.5)" PASS subRule.cssText is "saturate(0.25)" Rule combinations : saturate(0.5) grayscale(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "saturate(0.5) grayscale(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "saturate(0.5)" PASS subRule.cssText is "grayscale(0.25)" Degrees value as integer : hue-rotate(10deg) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "hue-rotate(10deg)" Degrees float value converts to integer : hue-rotate(10.0deg) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "hue-rotate(10deg)" Radians value : hue-rotate(10rad) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate(10rad)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "hue-rotate(10rad)" Gradians value : hue-rotate(10grad) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate(10grad)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "hue-rotate(10grad)" Turns value : hue-rotate(0.5turn) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate(0.5turn)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "hue-rotate(0.5turn)" Negative value : hue-rotate(-370.2deg) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate(-370.2deg)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "hue-rotate(-370.2deg)" Zero value : hue-rotate(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate(0deg)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "hue-rotate(0deg)" No values : hue-rotate() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "hue-rotate()" Rule combinations : hue-rotate(10deg) grayscale(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg) grayscale(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "hue-rotate(10deg)" PASS subRule.cssText is "grayscale(0.25)" Integer value : invert(1) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "invert(1)" Percentage value : invert(50%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert(50%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "invert(50%)" Float value converts to integer : invert(1.0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "invert(1)" Values over 1 are clamped : invert(1.01) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "invert(1)" Percentages over 100 are clamped : invert(500000%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert(100%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "invert(100%)" Zero value : invert(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert(0)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "invert(0)" Negative value : invert(-0.5) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' No values : invert() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "invert()" Multiple values : invert(0.5) invert(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert(0.5) invert(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "invert(0.5)" PASS subRule.cssText is "invert(0.25)" Rule combinations : invert(0.5) grayscale(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "invert(0.5) grayscale(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "invert(0.5)" PASS subRule.cssText is "grayscale(0.25)" Integer value : opacity(1) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "opacity(1)" Percentage value : opacity(50%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity(50%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "opacity(50%)" Float value converts to integer : opacity(1.0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "opacity(1)" Values over 1 are clamped : opacity(2134687326) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "opacity(1)" Percentages over 100 are clamped : opacity(500%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity(100%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "opacity(100%)" Negative value : opacity(-0.5) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' Zero value : opacity(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity(0)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "opacity(0)" No values : opacity() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "opacity()" Multiple values : opacity(0.5) opacity(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity(0.5) opacity(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "opacity(0.5)" PASS subRule.cssText is "opacity(0.25)" Rule combinations : opacity(0.5) grayscale(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "opacity(0.5) grayscale(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "opacity(0.5)" PASS subRule.cssText is "grayscale(0.25)" Integer value : brightness(1) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "brightness(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "brightness(1)" Percentage value : brightness(50%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "brightness(50%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "brightness(50%)" Float value converts to integer : brightness(1.0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "brightness(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "brightness(1)" Zero value : brightness(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "brightness(0)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "brightness(0)" Negative value : brightness(-2) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' No values : brightness() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "brightness()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "brightness()" Multiple values : brightness(0.5) brightness(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "brightness(0.5) brightness(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "brightness(0.5)" PASS subRule.cssText is "brightness(0.25)" Rule combinations : brightness(0.5) grayscale(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "brightness(0.5) grayscale(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "brightness(0.5)" PASS subRule.cssText is "grayscale(0.25)" Value less than -100% : brightness(-1.1) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' Negative value : brightness(-0.6) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' Parameter more than 100% : brightness(101%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "brightness(101%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "brightness(101%)" Rule combinations : grayscale(0.25) brightness(0.5) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(0.25) brightness(0.5)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "grayscale(0.25)" PASS subRule.cssText is "brightness(0.5)" Integer value : contrast(1) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "contrast(1)" Percentage value : contrast(50%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast(50%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "contrast(50%)" Percentage value > 1 : contrast(250%) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast(250%)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "contrast(250%)" Float value converts to integer : contrast(1.0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast(1)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "contrast(1)" Zero value : contrast(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast(0)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "contrast(0)" Negative value : contrast(-0.2) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' No values : contrast() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "contrast()" Value greater than one : contrast(2) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast(2)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "contrast(2)" Negative value : contrast(-0.8) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' Multiple values : contrast(0.5) contrast(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast(0.5) contrast(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "contrast(0.5)" PASS subRule.cssText is "contrast(0.25)" Rule combinations : contrast(0.5) grayscale(0.25) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "contrast(0.5) grayscale(0.25)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "contrast(0.5)" PASS subRule.cssText is "grayscale(0.25)" Rule combinations : grayscale(0.25) contrast(0.5) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(0.25) contrast(0.5)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 2 PASS subRule.cssText is "grayscale(0.25)" PASS subRule.cssText is "contrast(0.5)" One zero to px : blur(0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "blur(0px)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "blur(0px)" One length : blur(10px) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "blur(10px)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "blur(10px)" No values : blur() PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "blur()" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "blur()" Negative value : blur(-2px) PASS cssRule.type is 1 PASS declaration.length is 0 PASS declaration.getPropertyValue('filter') is '' Color then three values : drop-shadow(red 1px 2px 3px) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "drop-shadow(red 1px 2px 3px)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)" Three values then color : drop-shadow(1px 2px 3px red) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "drop-shadow(red 1px 2px 3px)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)" Color then three values with zero length : drop-shadow(#abc 0 0 0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)" Three values with zero length : drop-shadow(0 0 0) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "drop-shadow(0px 0px 0px)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "drop-shadow(0px 0px 0px)" Two values no color : drop-shadow(1px 2px) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "drop-shadow(1px 2px)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 1 PASS subRule.cssText is "drop-shadow(1px 2px)" Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px) PASS cssRule.type is 1 PASS declaration.length is 1 PASS declaration.getPropertyValue('filter') is "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)" PASS jsWrapperClass(filterRule) is 'CSSValueList' PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueList' PASS jsWrapperClass(filterRule.constructor) is 'Function' PASS filterRule.length is 8 PASS subRule.cssText is "grayscale(0.5)" PASS subRule.cssText is "sepia(0.25)" PASS subRule.cssText is "saturate(0.75)" PASS subRule.cssText is "hue-rotate(35deg)" PASS subRule.cssText is "invert(0.2)" PASS subRule.cssText is "opacity(0.9)" PASS subRule.cssText is "blur(5px)" PASS subRule.cssText is "drop-shadow(green 1px 2px 3px)" PASS successfullyParsed is true TEST COMPLETE