Кто-нибудь еще испытывает проблемы с запуском тестов пользовательского интерфейса 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)
Thisконечно, похоже на ошибку 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)
}