Есть ли у кого-нибудь еще проблемы с запуском тестов пользовательского интерфейса Xcode с Xcode 11, нацеленным на симулятор iOS 13 или устройство, где поиск кнопок на UIActivityViewController вызывает сбой?
У меня есть несколько тестов пользовательского интерфейса, которые проверяют кнопки, которые появляются в UIActivityViewController. Они выполняют ожидаемую настройку, а затем ищут кнопку с чем-то вроде:
XCTAssertTrue(app.buttons["Copy"].exists)
Тесты прошли нормально iOS 10, 11 и 12. Если я попытаюсь запустить тот же тест на симуляторе или устройстве iOS 13, в момент, когда код попытается получить доступ к app.buttons, выполнение остановится, и я получу Thread 1: signal SIGABRT
. пользователем Failed to get matching snapshots: Lost connection to the application (pid 33047).
в строке, где я пытаюсь получить доступ к app.buttons.
Добавление ожидания или даже сна в стиле старой школы ничего не дает. Я попытался покопаться в некоторых других запросах, связанных с XCUIElementTypeQueryProvider
, чтобы найти элементы, но безуспешно.
Если я отлаживаю тест и устанавливаю точку останова до того, как тест обращается к app.buttons, и я пытаюсь распечатать то, что он содержит, я получаю другое сообщение об ошибке.
po app.buttons
t = 49.37s Requesting snapshot of accessibility hierarchy for app with pid 37576
expression produced error: error: /var/folders/f2/zhwz28mn1hd815pc78kg02q80000gp/T/expr5-3b2971..swift:1:72: error: 'XCUIElementQuery' is not a member type of 'XCTest'
Swift._DebuggerSupport.stringForPrintObject(Swift.UnsafePointer<XCTest.XCUIElementQuery>(bitPattern: 0x10c73f4d0)!.pointee)
Это определенно похоже на ошибку Xcode. Кто-нибудь еще сталкивался с этим?
Вот небольшой код, если кто-то еще хочет его попробовать.
Из контроллера представления:
@IBAction func showPressed(_ sender: Any) {
let text = "I have something to share."
let vc = UIActivityViewController(activityItems: [text], applicationActivities: nil)
vc.popoverPresentationController?.sourceView = self.view
self.present(vc, animated: true, completion: nil)
}
Тест пользовательского интерфейса:
func testActivityViewController() {
let app = XCUIApplication()
app.launch()
app.buttons["Show AVC"].tap()
let buttons = app.buttons
let copy = buttons["Copy"]
sleep(2) // Just keeping things simple for the example.
XCTAssertTrue(copy.exists)
}