The backtracking from adjacent combinators

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

TEST COMPLETE

