У меня возникли проблемы с проверкой аутентификации моего приложения Grails. Похоже, что браузер не принимает файлы cookie, поэтому я создал простое приложение Grails в качестве теста.
<html>
<head>
<title>Welcome to Grails</title>
</head>
<body>
<g:each in="${request.cookies}">
<h1>${it.name} = <span class="value">${it.value}</span></h1>
</g:each>
<span class="value">test test</span>
</body>
and my Geb test:
import spock.lang.Stepwise;
import geb.Page;
import geb.spock.GebReportingSpec
@Stepwise
class LoginSmokeTests extends GebReportingSpec {
String getBaseUrl() {
return "http://localhost:8080/test123/"
}
def "testing stuff"() {
given:
to HomePage
when:
println header
then:
at HomePage
}
}
class HomePage extends Page {
static at = { title == "Welcome to Grails" }
static content = {
header { $("span.value").first().text() }
}
}
Когда я просматриваю это через браузер, печатаются значения 2 файлов cookie. При доступе к нему через мой тест Geb выбирается <span class="value">test test</span>
HTML, поскольку в запросе нет файлов cookie для повторения.
Я немного поискал, как использовать Geb + cookies, но, поскольку это относительно новое программное обеспечение, кажется, что там не слишком много информации (хотя руководство к нему отличное).
Для каждого метода тестирования создается новый экземпляр браузера. Однако, поскольку поведение по умолчанию заключается в повторном использовании драйвера по умолчанию в экземплярах браузера, файлы cookie драйвера очищаются в методе Spock cleanup(). Однако, если ваша спецификация пошаговая (т.е. снабжена аннотацией @spock.lang.Stepwise — подробности см. в документации Spock), файлы cookie НЕ очищаются в cleanup(), но очищаются в cleanupSpec(), что означает, что состояние браузера не сбрасывается между тестами. методы (что имеет смысл для пошаговой спецификации).
И я выполняю только один тестовый метод, но файлы cookie не отправляются. Есть идеи?