Test that the properties that use the CSS Value "currentcolor" to define the color are updated correctly when the inherited color changes.

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



Initial state.
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderLeftColor is "rgb(4, 5, 6)"

Let's override the style of the wrapper through their style object.
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderLeftColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderLeftColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderLeftColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderLeftColor is "rgb(7, 8, 9)"

Let's remove the style attribute on the wrapper.
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderLeftColor is "rgb(4, 5, 6)"

Let's remove class on the wrappers.
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderLeftColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderLeftColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderLeftColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderLeftColor is "rgb(1, 2, 3)"

Then add it back.
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderLeftColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderLeftColor is "rgb(4, 5, 6)"
PASS successfullyParsed is true

TEST COMPLETE

