Tests various scenarios of noshade and color attributes of hr element.

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


PASS window.getComputedStyle(document.getElementById('hrElement1'),null).getPropertyValue('border-color') is "rgb(255, 0, 0)"
PASS window.getComputedStyle(document.getElementById('hrElement1'),null).getPropertyValue('background-color') is "rgb(255, 0, 0)"
PASS window.getComputedStyle(document.getElementById('hrElement2'),null).getPropertyValue('border-color') is "rgb(0, 0, 255)"
PASS window.getComputedStyle(document.getElementById('hrElement2'),null).getPropertyValue('background-color') is "rgb(0, 0, 255)"
PASS window.getComputedStyle(document.getElementById('hrElement3'),null).getPropertyValue('border-color') is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById('hrElement3'),null).getPropertyValue('background-color') is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById('hrElement4'),null).getPropertyValue('border-color') is "rgb(128, 128, 128)"
PASS window.getComputedStyle(document.getElementById('hrElement4'),null).getPropertyValue('background-color') is "rgb(128, 128, 128)"
PASS window.getComputedStyle(document.getElementById('hrElement5'),null).getPropertyValue('border-color') is "rgb(255, 255, 0)"
PASS window.getComputedStyle(document.getElementById('hrElement5'),null).getPropertyValue('background-color') is "rgb(255, 255, 0)"
PASS window.getComputedStyle(document.getElementById('hrElement6'),null).getPropertyValue('border-color') is "rgb(0, 128, 0)"
PASS window.getComputedStyle(document.getElementById('hrElement6'),null).getPropertyValue('background-color') is "rgb(0, 128, 0)"

