Case insensitive value matching does not affect the name matching in any way. This test checks the attribute name is check case-sensitively regardless of the case-insensitive flag for the value.

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


PASS document.querySelectorAll("div[id^=target i]").length is 4
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[0]).backgroundColor is "rgb(255, 255, 255)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[0]).color is "rgb(0, 0, 0)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[0]).borderTopColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[1]).backgroundColor is "rgb(255, 255, 255)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[1]).color is "rgb(0, 0, 0)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[1]).borderTopColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[2]).backgroundColor is "rgb(255, 255, 255)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[2]).color is "rgb(0, 0, 0)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[2]).borderTopColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[3]).backgroundColor is "rgb(255, 255, 255)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[3]).color is "rgb(0, 0, 0)"
PASS getComputedStyle(document.querySelectorAll("div[id^=target i]")[3]).borderTopColor is "rgb(7, 8, 9)"
PASS successfullyParsed is true

TEST COMPLETE

