There should be no red below.
The bordercolor attribute on a cell or row should have no effect.
https://bugs.webkit.org/show_bug.cgi?id=101677

PASS document.defaultView.getComputedStyle(cell, null).getPropertyValue("border-top-color") is "rgb(0, 0, 0)"
PASS document.defaultView.getComputedStyle(cell, null).getPropertyValue("border-top-width") is "0px"
PASS document.defaultView.getComputedStyle(table, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(table, null).getPropertyValue("border-top-width") is "0px"
PASS document.defaultView.getComputedStyle(cell2, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(cell2, null).getPropertyValue("border-top-width") is "1px"
PASS document.defaultView.getComputedStyle(table2, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(table2, null).getPropertyValue("border-top-width") is "1px"
PASS document.defaultView.getComputedStyle(cell3, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(cell3, null).getPropertyValue("border-top-width") is "1px"
PASS document.defaultView.getComputedStyle(table3, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(table3, null).getPropertyValue("border-top-width") is "2px"
PASS document.defaultView.getComputedStyle(row4, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(row4, null).getPropertyValue("border-top-width") is "0px"
PASS document.defaultView.getComputedStyle(table4, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(table4, null).getPropertyValue("border-top-width") is "2px"
PASS document.defaultView.getComputedStyle(col5, null).getPropertyValue("border-top-color") is "rgb(0, 0, 0)"
PASS document.defaultView.getComputedStyle(col5, null).getPropertyValue("border-top-width") is "0px"
PASS document.defaultView.getComputedStyle(table5, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(table5, null).getPropertyValue("border-top-width") is "2px"
PASS document.defaultView.getComputedStyle(tbody6, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(tbody6, null).getPropertyValue("border-top-width") is "0px"
PASS document.defaultView.getComputedStyle(table6, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(table6, null).getPropertyValue("border-top-width") is "2px"
PASS document.defaultView.getComputedStyle(col7, null).getPropertyValue("border-top-color") is "rgb(0, 0, 0)"
PASS document.defaultView.getComputedStyle(col7, null).getPropertyValue("border-top-width") is "0px"
PASS document.defaultView.getComputedStyle(table7, null).getPropertyValue("border-top-color") is "rgb(128, 128, 128)"
PASS document.defaultView.getComputedStyle(table7, null).getPropertyValue("border-top-width") is "2px"
PASS successfullyParsed is true

TEST COMPLETE

