シナリオ: ajax を使用してユーザーを検証するログイン ページがあり、無効なログインの場合、同じページにとどまります。
これが Gebで atを使用する正しい方法なのか、それとも即興でできるのか疑問に思っています。懸念:
- ハードコーディングされたタイムアウトなどでwaitForを使用しています。
- waitFor をatブロックに入れる必要がありますか?
- これを書くより良い方法はありますか?
仕様定義
def "perform invald login"()
{
given: "I am at the login page"
to LoginPage
when : "I entered invalid data"
loginForm.loginClientCode = "test"
loginForm.loginSystemCode = "test"
loginForm.loginUserId = "test"
loginForm.loginPassword = "test"
loginButton().click()
then: "Log in attempt unsuccessful"
at(LoginPage)
}
ページ オブジェクト
class LoginPage extends Page
{
static url = "login/login.jsf";
static at =
{
waitFor(10,0.5)
{ $("div.ic-h1").text() == "User Authentication" }
}
static content =
{
loginForm
{
$("form",id: "loginForm")
}
loginButton
{
$("button", id: "loginButton")
}
statusMessages
{
$('div.ui-messages').text()
}
}
}