Я настроил несколько geb
тестов для проверки разных сообщений в зависимости от попытки входа в систему в моем веб-приложении.Поскольку сообщение и поля ввода изменятся при третьей попытке входа в систему.
Имя входа - это двухэтапное имя входа на основе пароля, отправленного на определенный номер телефона, поэтому на первой странице LoginPage пользователь вводит свои Id и phoneNumber , затем перенаправляется на вторую страницу ValidationLoginPage , где пользователь вводит полученный пароль.
Я хочу проверить, что на второй странице пользователь может ввести только три неверных пароля, а с четвертой попытки ввод пароля вводится, и появляется другое сообщение, указывающее, что больше нет попыток, которые он показывает.
Чтобы проверить это, я подготовил тест, который вводит Id и phoneNumber в предложении given:
, а с помощью предложения where:
вводит неверный пароль три раза.,Так как where:
повторяют все тесты, я пытаюсь контролировать повторяемую часть, используя введенную переменную, как в where:
, поэтому у меня есть что-то вроде:
def "Test max loging attempts"(){
given:
if(loginAttempt == 1)
to LoginPage
loginModule.startLogin(cfg.user.id,cfg.user.phone)
}
when:
at LoginValidationPage
assert $('div.box_id_header h3').text() == 'Verify your code'
assert $('#code').css('display').contains('block')
loginModule.verifyPassword('WRONGPASSWORD')
then:
at LoginValidationPage
println "Attempt ${loginAttempt}"
if(loginAttempt == 4){
// last attempt
assert $('#code').css('display') == 'none'
assert $('#divCodeErrorMsg').text().contains('No more attempts')
}else{
assert $('#code').css('display').contains('block')
assert $('#divCodeErrorMsg').text().contains('Wrong password. Try again.')
}
where:
loginAttempt << (1..4)
}
Моя проблема в том, что cookies
очищены длякаждая where:
итерация, мысль сообщение и поведение не то, что я ожидаю.Я не хочу настраивать autoClearCookies=false
в GebConfig.groovy
файле, так как у меня есть другие тесты, где эта функция необходима.Существует способ избежать очистки файлов cookie для этого метода с использованием метода spock def setupSpec() {}
и повторной активации в методе def cleanupSpec() {}
?
Кроме того, можно также использовать where:
более чистым способом, избегая проверки loginAttempt
переменная, чтобы избежать запуска given:
часть несколько раз, или есть лучший подход вообще не использовать where:
?