AVPlayer El artículo no se inicia durante el text de la interfaz de usuario en Travis

Si tengo un AVPlayerItem su estado nunca alcanzará .readyToPlay en Travis VM mientras se ejecuta una testing de UI. Todo funciona bien localmente.

He configurado repro simple:

https://travis-ci.org/gsabran/TestAVItemStatus

https://github.com/gsabran/TestAVItemStatus

Esto hace que mis testings fallen en Travis porque algunos events solo se activan una vez que el elemento de video está listo para reproducirse.

Aquí está mi aplicación (un controller de vista única). Básicamente, solo carga un video local y cambia la interfaz de usuario cuando el video comienza a reproducirse.

 override func viewDidLoad() { super.viewDidLoad() item = AVPlayerItem(url: URL(fileURLWithPath: Bundle.main.path(forResource: "video", ofType: "mp4")!)) player = AVPlayer(playerItem: item) item.addObserver( self, forKeyPath: #keyPath(AVPlayerItem.status), options: [.initial, .old, .new], context: nil) if player.currentItem?.status == .readyToPlay { videoDidLoad() } player.play() } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { guard let item = object as? AVPlayerItem else { return } if item.status == .readyToPlay { DispatchQueue.main.async { self.videoDidLoad() } } } func videoDidLoad() { // Not triggenetworking on Travis VM, while working fine on local simulator and device label.text = "video ready" } 

Aquí está la testing, simplemente revisando una label después de un time:

 class TestAVItemStatusUITests: XCTestCase { override func setUp() { super.setUp() continueAfterFailure = false XCUIApplication().launch() } func testExample() { sleep(5) if !XCUIApplication().staticTexts["video ready"].exists { XCTFail() } } } 

No funciona en Travis.