CONSOLE MESSAGE: line 1: CSSKeyframesRule 'insertRule' function is deprecated.  Use 'appendRule' instead.
The test loads the same stylesheet to different frames and then mutates them. The mutations should not affect other frames.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Test 0
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(255, 0, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: red; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 1
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: red; }
}
@page :right { margin-left: 3cm; }
#testdiv { background-color: green; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 2
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 3
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: red; }
  #testdiv { background-color: green; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 4
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media all { 
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 5
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: green; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 6
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 7
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: green; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 8
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media all { 
  #dontmatch { background-color: red; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 9
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media print { 
  #testdiv { background-color: red; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 10
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }
@media print { 
  #testdiv { background-color: red; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 11
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

#testdiv { background-color: green; }

Test 12
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(0, 128, 0)'

@import url("data:text/css;charset=utf-8,%23testdiv%7Bbackground-color%3Agreen%20!important%7D");
#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: red; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 13
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(255, 0, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: red; }
}
@page foo { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Foo; }

Test 14
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(255, 0, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: red; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
  40% { left: 40px; }
}
@font-face { font-family: Foo; }

Test 15
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(255, 0, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: red; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
}
@font-face { font-family: Foo; }

Test 16
--------------------------------------
PASS getComputedStyle(testElement, null).getPropertyValue('background-color') is 'rgb(255, 0, 0)'

#testdiv { background-color: green; }
@media all { 
  #testdiv { background-color: red; }
}
@page :right { margin-left: 3cm; }
@-webkit-keyframes bounce { 
  0% { left: 0px; }
  100% { left: 200px; }
}
@font-face { font-family: Bar; }

PASS successfullyParsed is true

TEST COMPLETE

