Xamarin.UITest 2.2.4 начало сеанса не удалось на первом тесте - PullRequest
0 голосов
/ 25 апреля 2018

Поскольку мои macOS заставили меня обновиться до XCode 9.3, мне пришлось обновить Xamarin.UITest с 2.2.2 до 2.2.4.

Проблема в том, что когда я запускаю все свои тесты, каждый раз первыйодин терпит неудачу с приложенной ошибкой.Я думаю, что это не проблема теста, потому что все тесты работают правильно на macOS с XCode 9.2 и Xamarin.UITest 2.2.2.Также, если я удалю этот тест, то следующий, который будет первым, не пройдёт с той же ошибкой.

Может кто-нибудь помочь мне, пожалуйста?Большое спасибо заранее!

1) SetUp Error : UI.Tests.TestDashboardDetailsPage(iOS)
Xamarin.UITest.XDB.Exceptions.DeviceAgentException : DeviceAgent start session failed: An error occurred while sending the request
  ----> System.Net.Http.HttpRequestException : An error occurred while sending the request
  ----> System.Net.WebException : Error: ConnectFailure (Connection refused)
  ----> System.Net.Sockets.SocketException : Connection refused
  at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<RequestAsync>c__async14`1[T].MoveNext () [0x0010e] in <1bd397951f434cd4913ddc08b7bc45af>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<StartAppAsync>c__asyncE.MoveNext () [0x000ba] in <1bd397951f434cd4913ddc08b7bc45af>:0 
--- End of stack trace from previous location where exception was thrown ---
  at Xamarin.UITest.iOS.iOSAppLauncher.LaunchAppLocal (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, System.Boolean clearAppData) [0x00216] in <1bd397951f434cd4913ddc08b7bc45af>:0 
  at Xamarin.UITest.iOS.iOSAppLauncher.LaunchApp (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, Xamarin.UITest.TestCloud.TestCloudiOSAppConfiguration testCloudAppConfiguration, Xamarin.UITest.Shared.Http.HttpClient testCloudWsClient, Xamarin.UITest.Shared.Http.HttpClient xtcServicesClient, System.Boolean testCloudUseDeviceAgent) [0x0007a] in <1bd397951f434cd4913ddc08b7bc45af>:0 
  at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Execution.IExecutor executor) [0x002de] in <1bd397951f434cd4913ddc08b7bc45af>:0 
  at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration) [0x00000] in <1bd397951f434cd4913ddc08b7bc45af>:0 
  at Xamarin.UITest.Configuration.iOSAppConfigurator.StartApp (Xamarin.UITest.Configuration.AppDataMode appDataMode) [0x00017] in <1bd397951f434cd4913ddc08b7bc45af>:0 
  at UI.Tests.AppInitializer.StartApp (Xamarin.UITest.Platform platform) [0x00041] in <2cd1cd61003a486e92c6ffb9d58f1488>:0 
  at UI.Tests.TestDashboardDetailsPage.OneTimeSetUp () [0x00000] in <2cd1cd61003a486e92c6ffb9d58f1488>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
--HttpRequestException
  at System.Net.Http.HttpClientHandler+<SendAsync>d__63.MoveNext () [0x004ab] in <7e581108ecb143d78ca072a020c287c3>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Net.Http.HttpClient+<SendAsyncWorker>d__47.MoveNext () [0x000ca] in <7e581108ecb143d78ca072a020c287c3>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at Xamarin.UITest.XDB.Services.HttpService+<PostAsJsonAsync>c__async3`1+<PostAsJsonAsync>c__AnonStorey11+<PostAsJsonAsync>c__async10[T].MoveNext () [0x00094] in <1bd397951f434cd4913ddc08b7bc45af>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at Xamarin.UITest.XDB.Services.HttpService+<ExecuteRequestAsync>c__async5.MoveNext () [0x0008b] in <1bd397951f434cd4913ddc08b7bc45af>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at Xamarin.UITest.XDB.Services.HttpService+<RequestAsync>c__async4`1[T].MoveNext () [0x0031b] in <1bd397951f434cd4913ddc08b7bc45af>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at Xamarin.UITest.XDB.Services.HttpService+<PostAsJsonAsync>c__async3`1[T].MoveNext () [0x00132] in <1bd397951f434cd4913ddc08b7bc45af>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<RequestAsync>c__async14`1[T].MoveNext () [0x000be] in <1bd397951f434cd4913ddc08b7bc45af>:0 
--WebException
  at System.Net.HttpWebRequest.EndGetRequestStream (System.IAsyncResult asyncResult) [0x0003a] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0 
  at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x0000f] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0 
  at System.Net.Http.HttpClientHandler+<SendAsync>d__63.MoveNext () [0x002e7] in <7e581108ecb143d78ca072a020c287c3>:0 
--SocketException
  at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000b6] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0 
  at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0016d] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0 

Ответы [ 3 ]

0 голосов
/ 12 июля 2018

Я использую скрипт, который запускает симулятор и ждет перед выполнением тестов - кажется, это помогает с такими проблемами.

Также имеется необязательный путь к файлу .app, если вы хотите установить файл .app до выполнения тестов:

#!/bin/sh -
# Boots the iOS simulator using specified OS and simulator name

set -e

SIMULATOR_VERSION="${1:?You must pass an iOS version as the first argument}"
SIMULATOR_NAME="${2:?You must pass a simulator name as the second argument}"
OPTIONAL_APP_PATH="$3"

SIMULATOR_GUID="$(xcrun simctl list | grep -vi unavailable | sed -e "1,/^-- iOS $SIMULATOR_VERSION --\$/d" -e '/^-- .* --$/,$ d' | grep -E "^\s+$SIMULATOR_NAME \(" | sed -e 's/^[^(]*(//g' -e 's/).*//g' | tail -1)"

if [ -z "$SIMULATOR_GUID" ]; then
    echo "ERROR: Could not find simulator GUID for $SIMULATOR_NAME" >&2
    exit 123
fi

shutDownSimulator()
{
    GUID=$1
    echo "==> Shutting down simulator with GUID $GUID..."
    if xcrun simctl shutdown "$GUID" ; then
        sleep 10s
        echo "==> Successfully shutdown desired simulator."
    else
        echo "==> Desired simulator is already in shutdown state."
    fi
}

eraseSimulator()
{
    GUID=$1
    echo "==> Erasing..."
    xcrun simctl erase "$GUID"
    echo "==> Waiting for 30 seconds..."
    sleep 30s
}

bootSimulator()
{
    GUID=$1
    echo "==> Booting..."
    xcrun simctl boot "$GUID"
    echo "==> Waiting for 30 seconds..."
    sleep 30s
}

installOptionalAppFile()
{
    GUID=$1
    if [ -z "$OPTIONAL_APP_PATH" ] ; then
        echo "==> No app file to install specified, continuing..."
    else
        if [ -e "$OPTIONAL_APP_PATH" ]
        then
            echo "==> Installing app file at $OPTIONAL_APP_PATH"
            xcrun simctl install "$GUID" "$OPTIONAL_APP_PATH"
        else
            echo "==> App file was not found at path: $OPTIONAL_APP_PATH"
        fi
    fi
}

echo "==> Erasing and launching simulator with name: $SIMULATOR_NAME / iOS version: $SIMULATOR_VERSION / GUID: $SIMULATOR_GUID..."
shutDownSimulator "$SIMULATOR_GUID"
eraseSimulator "$SIMULATOR_GUID"
bootSimulator "$SIMULATOR_GUID"

echo "==> Launching Simulator app..."
open `xcode-select -p`/Applications/Simulator.app

echo "Waiting for simulator to boot for 120 seconds..."
sleep 120s

installOptionalAppFile "$SIMULATOR_GUID"

exit 0

2 минуты, вероятно, слишком много для ожидания, но я делаю это на всякий случай, так как некоторые из моих Mac Minis немного устарели

0 голосов
/ 12 июля 2018

У меня тоже есть проблема с физическими устройствами.Я обнаружил, что перезагрузка устройства может решить эту проблему.После перезапуска устройства UITests больше не выходят из строя на первом.Мы можем перезапустить устройство, используя библиотеку libimobiledevice

https://www.mankier.com/1/idevicediagnostics

Я запускаю UITests из Jenkins, и в сценарии сборки перед запуском тестов мы перезагружаем устройство

idevicediagnostics -u[deviceUDID] restart
sleep 90s
0 голосов
/ 08 мая 2018

Ответь на мой вопрос. Проблема в XCode 9.3. Надеюсь, они скоро это исправят.

Известные проблемы

В macOS 10.13.4 в первый раз загрузка iOS 11 и более поздних версий в симуляторе может занять несколько минут. (35628711)

ИСТОЧНИК: https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-DontLinkElementID_1

...