Search code examples
androidrubycucumbercalabash

Calabash android - HTTPClient::KeepAliveDisconnected


When I'm ty to run a simple calabash test I always run into an HTTPClient::KeepAliveDisconnected Exception.

Console output:

Feature: Login
  As a User i want to have access to my account

  Scenario: right credentials          # features\login.feature:4
1698 KB/s (567017 bytes in 0.326s)
1596 KB/s (1481497 bytes in 0.906s)
    Given I am at the login page       # features/step_definitions/login.rb:1
    When I enter my username           # features/step_definitions/login.rb:5
    And I enter my password            # features/step_definitions/login.rb:10
    And I hit the Sign In button       # features/step_definitions/login.rb:15
      **HTTPClient::KeepAliveDisconnected: Eine vorhandene Verbindung wurde vom Remotehost geschlossen. (HTTPClient::KeepAliveDisconnected)**
      ./features/step_definitions/login.rb:16:in `/^I hit the Sign In button$/'
      features\login.feature:8:in `And I hit the Sign In button'
    Then I will see the Dashboard page # features/step_definitions/login.rb:19

  Scenario: wrong credentials          # features\login.feature:11
    Given I am at the login page       # features/step_definitions/login.rb:1
    When I enter a wrong username      # features/step_definitions/login.rb:24
    And I enter a wrong password       # features/step_definitions/login.rb:29
    And I hit the Sign In button       # features/step_definitions/login.rb:15
    Then I will stay at the login page # features/step_definitions/login.rb:34

Step definitions:

Given(/^I am at the login page$/) do
  query("* id:'email_sign_in_button'")
end

When(/^I enter my username$/) do
  touch("* id:'email'")
  query("* id:'email'",{:setText => "[email protected]"})
end

When(/^I enter my password$/) do
  touch("* id:'password'")
  query("* id:'password'",{:setText => "admin"})
end

When(/^I hit the Sign In button$/) do
   touch("* id:'email_sign_in_button'")
end

Then(/^I will see the Dashboard page$/) do
   query("* text:'Dashboard'")
   sleep(3)
end

When(/^I enter a wrong username$/) do
  touch("* id:'email'")
  query("* id:'email'",{:setText => "ich bin cool"})
end

When(/^I enter a wrong password$/) do
  touch("* id:'password'")
  query("* id:'password'",{:setText => "hululu"})
end

Then(/^I will stay at the login page$/) do
  query("* id:'email_sign_in_button'")
  sleep(3)
end

I'm running Ruby V2.0.0

Why does the step "I hit the Sign In button" fail in the first scenarion but pass in the second scenario?


Solution

  • It probably means you app has crashed. see the adb logcat for a stacktrace.

    Using query("* id:'email'",{:setText => "[email protected]"}) is not recommended. Use the method enter_text("* id:'email'", "[email protected]")