6

Vì vậy, tôi đang cố gắng chạy Kiểm tra giao diện người dùng XCode trên dự án React Native của mình. Mục tiêu của tôi là sử dụng fastlane/snapshot để chụp ảnh màn hình của ứng dụng của tôi."Ứng dụng không thể dừng trong vòng 60 giây" trong dự án React-Native

Cuối cùng tôi đã tìm ra cách viết kịch bản ứng dụng của mình để thực hiện những gì tôi muốn. Rất tiếc, ứng dụng bị kẹt với thông báo App failed to quiesce within 60s sau khi gọi app.otherElements["mainButton"].tap().

Theo như tôi có thể nói với tư cách là con người, ứng dụng của tôi có vẻ tĩnh và không cập nhật hoặc làm hoạt hình bất cứ điều gì. Nhưng tôi không rõ UI UI đang sử dụng cái gì để phát hiện heuristic, vì vậy nó có thể đang sử dụng một số trạng thái nội bộ hoặc các chủ đề kiểm tra.

Tôi nghi ngờ có một số hành vi Phản ứng gốc đang giữ Kiểm tra giao diện người dùng nhìn thấy mọi thứ như đã hoàn tất. Thật không may, nếu không có bất kỳ khả năng thực sự để xem những gì kiểm tra giao diện người dùng đang làm, tôi thậm chí không chắc chắn nơi tôi cần phải đào vào React Native để sửa chữa nó. :(

Bất kỳ trợ giúp sẽ được đánh giá

+0

http://www.openradar.me/25562105 https://forums.developer.apple.com/thread/6503 – Che

Trả lời

1

Cách giải quyết từ liên kết ở trên Để có cái nhìn có vấn đề và một dòng để vô hiệu hóa hình ảnh động trong

viewWillAppear: 
- (void) viewWillAppear: (BOOL)animated { 
    if ([[[NSProcessInfo processInfo] environment][@"UITEST_DISABLE_ANIMATIONS"] isEqualToString:@"YES"]) { 
     [UIView setAnimationsEnabled:NO]; 
    } 
} 

và trong viewWillDisappear biến hình ảnh động trở lại vào lúc:

- (void) viewWillDisappear:(BOOL)animated { 
    if ([[[NSProcessInfo processInfo] environment][@"UITEST_DISABLE_ANIMATIONS"] isEqualToString:@"YES"]) { 
     [UIView setAnimationsEnabled:YES]; 
    } 
} 

Trong các thử nghiệm của bạn, hãy mở rộng XCUIApplication và đặt biến. Sau đó, trong phương thức thiết lập, hãy gọi hàm launchvariables

extension XCUIApplication { 
    func launchTestsWithEnvironmentVariables() { 
      launchEnvironment = [ 
       "UITEST_DISABLE_ANIMATIONS" : "YES" 
      ] 
    self.launch() 
    } 
} 




override func setUp() { 
     super.setUp() 
     continueAfterFailure = false 
     XCUIApplication().launchTestsWithEnvironmentVariables() 
    } 




func testblahblah { 

Điều này đặt biến môi trường sẽ tắt hoạt ảnh cho chế độ xem cụ thể đó. Nhược điểm duy nhất là bạn sẽ không được thử nghiệm hình ảnh động cho rằng xem nếu đó là một cái gì đó của bạn vào. Hacky workaround nhưng nó hoạt động cho bây giờ.

PS nó thực sự giúp cho tôi

+0

Awesome, cảm ơn bạn rất nhiều! Tôi không có một lớp con 'UIViewController' để gắn chúng vào (vì tôi sử dụng một cổ phiếu' UIViewController' trong 'AppDelegate.m'). Tuy nhiên tôi đã gắn mã vô hiệu hóa bên trong 'didFinishLaunchingWithOptions' của' AppDelegate', hoạt động tốt cho tôi. (Vô hiệu hóa chúng trong suốt thời gian chạy ứng dụng, vì tôi không có bất kỳ lý do nào để kích hoạt lại chúng cho các chế độ xem khác) –

Các vấn đề liên quan