The backtracking from adjacent combinators combined with :nth-child(An+B of selector)

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


Backtracking without tail, succeeded without backtracking
PASS getComputedStyle(document.getElementById("target1")).backgroundColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.getElementById("target1")).color is "rgb(1, 2, 3)"
Backtracking without tail without indirect adjacent, failed and restart.
PASS getComputedStyle(document.getElementById("target2.1")).backgroundColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.getElementById("target2.1")).color is "rgb(1, 2, 3)"
PASS getComputedStyle(document.getElementById("target2.2")).backgroundColor is "rgb(1, 2, 3)"
PASS getComputedStyle(document.getElementById("target2.2")).color is "rgb(1, 2, 3)"
Backtracking without tail, 3 direct adjacents without indirect adjacent, failed and restart backtracking.
PASS getComputedStyle(document.getElementById("target3")).backgroundColor is "rgb(4, 5, 6)"
PASS getComputedStyle(document.getElementById("target3")).color is "rgb(4, 5, 6)"
Backtracking without tail, indirect adjacent.
PASS getComputedStyle(document.getElementById("target4")).backgroundColor is "rgb(7, 8, 9)"
PASS getComputedStyle(document.getElementById("target4")).color is "rgb(7, 8, 9)"
Backtracking from direct adjacent without tail. Matches.
PASS getComputedStyle(document.getElementById("target6.1")).backgroundColor is "rgb(10, 11, 12)"
PASS getComputedStyle(document.getElementById("target6.1")).color is "rgb(10, 11, 12)"
PASS getComputedStyle(document.getElementById("target6.2")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target6.2")).color is "rgb(0, 0, 0)"
Backtracking from direct adjacent tag matching without tail. Fails.
PASS getComputedStyle(document.getElementById("target6.3")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target6.3")).color is "rgb(0, 0, 0)"
Backtracking from direct adjacent traversal without tail. Fails.
PASS getComputedStyle(document.getElementById("target6.4")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target6.4")).color is "rgb(0, 0, 0)"
Backtracking without tail. And fails.
PASS getComputedStyle(document.getElementById("target7")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target7")).color is "rgb(0, 0, 0)"
Backtracking without tail. And Matches.
PASS getComputedStyle(document.getElementById("target8")).backgroundColor is "rgb(13, 14, 15)"
PASS getComputedStyle(document.getElementById("target8")).color is "rgb(13, 14, 15)"
Backtracking from direct adjacent with tail. And fails.
PASS getComputedStyle(document.getElementById("target9")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target9")).color is "rgb(0, 0, 0)"
Backtracking from direct adjacent with tail. And Matches.
PASS getComputedStyle(document.getElementById("target10")).backgroundColor is "rgb(16, 17, 18)"
PASS getComputedStyle(document.getElementById("target10")).color is "rgb(16, 17, 18)"
Backtracking from indirect adjacent with tail. And fails.
PASS getComputedStyle(document.getElementById("target11")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target11")).color is "rgb(0, 0, 0)"
Backtracking from indirect adjacent with tail. And Matches.
PASS getComputedStyle(document.getElementById("target12")).backgroundColor is "rgb(19, 20, 21)"
PASS getComputedStyle(document.getElementById("target12")).color is "rgb(0, 0, 0)"
Backtracking from indirect adjacent without tail. Matches.
PASS getComputedStyle(document.getElementById("target13.1")).backgroundColor is "rgb(22, 23, 24)"
Backtracking from indirect adjacent tag matching without tail. Fails.
PASS getComputedStyle(document.getElementById("target13.2")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target13.3")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target13.4")).backgroundColor is "rgb(0, 0, 0)"
Backtracking from indirect adjacent without tail. Matches.
PASS getComputedStyle(document.getElementById("target14.1")).backgroundColor is "rgb(25, 26, 27)"
Backtracking from indirect adjacent tag matching without tail. Fails.
PASS getComputedStyle(document.getElementById("target14.2")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target14.3")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target14.4")).backgroundColor is "rgb(0, 0, 0)"
Backtracking from direct adjacent with tail. And fails.
PASS getComputedStyle(document.getElementById("target15")).backgroundColor is "rgb(0, 0, 0)"
PASS getComputedStyle(document.getElementById("target15")).color is "rgb(0, 0, 0)"
Backtracking from direct adjacent with tail. And Matches.
PASS getComputedStyle(document.getElementById("target16")).backgroundColor is "rgb(28, 29, 30)"
PASS getComputedStyle(document.getElementById("target16")).color is "rgb(28, 29, 30)"
PASS successfullyParsed is true

TEST COMPLETE

