Here is my update on the issue: The problem seems to be an enterprise group policy not permitting me to configure IE settings as necessary for Geb/Selenium testing. It works when I run the same test in a cloud environment (TestChameleon) for this very simple case:
package de.scrum_master.geb
import geb.spock.GebReportingSpec
import spock.lang.Unroll
class MyGebTest extends GebReportingSpec {
def testNestedNewTabs() {
when:
go "http://scrum-master.de/"
report "Scrum-Master"
then:
title.contains "Scrum-Master.de"
and:
println "Open windows: ${availableWindows.size()} -> ${availableWindows}"
withNewWindow({ $("a", text: contains("Abschied von der Hierarchie")).click() }) {
title.contains "Abschied von der Hierarchie"
report "Computerwoche"
println "Open windows: ${availableWindows.size()} -> ${availableWindows}"
withNewWindow({ $("a", title: contains("Druckansicht")).firstElement().click() }) {
title.contains "Druckansicht"
report "Druckansicht"
println "Open windows: ${availableWindows.size()} -> ${availableWindows}"
true
}
println "Open windows: ${availableWindows.size()} -> ${availableWindows}"
true
}
println "Open windows: ${availableWindows.size()} -> ${availableWindows}"
}
}
It prints something like this:
Open windows: 1 -> [3d00470d-518d-483a-93a0-ec874b155ed3]
Open windows: 2 -> [3d00470d-518d-483a-93a0-ec874b155ed3, 5c8095ab-b1ac-4894-9650-77bf0e4fece9]
Open windows: 3 -> [3d00470d-518d-483a-93a0-ec874b155ed3, 5c8095ab-b1ac-4894-9650-77bf0e4fece9, 67c370e4-22dc-4027-bdc9-3ab4c44833b6]
Open windows: 2 -> [3d00470d-518d-483a-93a0-ec874b155ed3, 5c8095ab-b1ac-4894-9650-77bf0e4fece9]
Open windows: 1 -> [3d00470d-518d-483a-93a0-ec874b155ed3]
In a more complex scenario which I cannot easily reproduce here because it relies on our internal code base, it still fails in the cloud test for IE, but works in other browsers like PhantomJS or Chrome.