Search code examples
calabashcalabash-ios

Is there a way to speed up recovery from a crash


I'm trying to find a way to switch Calabash to next Scenario after noticing a crash

Retrying.. HTTPClient::ReceiveTimeoutError: (execution expired)
Retrying.. HTTPClient::ReceiveTimeoutError: (execution expired)
Failing... HTTPClient::ReceiveTimeoutError

Otherwise it can take up to half an hour before Calabash reestablish connection to Simulator and starts the next Scenario.


Solution

  • half an hour before Calabash reestablish connection to Simulator

    This is very unusual and typically indicates a problem with UIAutomation.

    Have you seen the Hot Topics page? In particular:

    NSLog output can cause apps to become unresponsive during testing.

    My best guess is that instruments is hanging for some reason. Below, I provide details about various variables and their defaults that influence launching and connecting the Calabash server.

    I don't think that adjusting any of the variables below will make an difference in your case.

    Reporting Problems

    In the future, please include the details found in the Report Problems section of the Calabash iOS Wiki Home Page.

    Environment Variables

    You can find documentation about all the Calabash iOS environment variables here.

    There are several variables you can use to control how long Calabash will wait for a response.

    In Calabash iOS, two things need to happen before tests can begin:

    1. The instruments command-line tool must launch the app and respond that it has launched the app.
    2. Calabash must establish a connection with the embedded server.

    You can control how long run-loop waits for instruments to launch the app and report back using the UIA_TIMEOUT environment variable. The default is 10 seconds. Calabash tells run-loop to try 3 times, for a total of 30 seconds. Unfortunately, there are no public API docs for run-loop.

    The there are two environment variables that control how long Calabash will try to establish a connection with the embedded server:

    • CONNECT_TIMEOUT
    • MAX_CONNECT_RETRY

    The default is try to reconnect once every 3 seconds 10 times for a total of 30 seconds.

    These two variables are also used every time a query or gesture is made - how long does Calabash wait for the server to reply.