Vor allem: Was erwartest du von deinem Code in welchem Browser?
Dass das Element '
<li class="foo"><h3>test</h3></li>
' rot umrahmt wird.
Für mich ist nicht ersichtlich ob das h3-Element als 1. Kind des LI-Elements gemeint ist (da ist schlichtweg der Selektor flasch) oder das erste li-Element das erste Element innerhalb welches die Klasse Foo trägt - wofür :nth-of-type() oder :nth-child() besser geeignet wäre und :first-child hier ohnehin nicht zutrifft.