6

그래서 React Native 프로젝트에서 XCode UI Test를 실행하려고합니다. 내 목표는 fastlane/snapshot을 사용하여 내 앱의 스크린 샷을 캡처하는 것입니다."프로젝트가 60 초 이내에 응답하지 못했습니다."React-Native 프로젝트

마침내 내가 원하는 것을하기 위해 내 앱을 스크립팅하는 방법을 알아 냈습니다. 죄송합니다. app.otherElements["mainButton"].tap()을 호출 한 후 앱에 App failed to quiesce within 60s 메시지가 표시되지 않습니다.

필자가 인간으로 말할 수있는 한, 내 앱은 정적이며 아무것도 업데이트하거나 애니메이션을 적용하지 않는 것처럼 보입니다. 하지만 UI 테스팅이 탐지 발견법에 사용하는 것이 명확하지 않기 때문에 내부 상태 또는 검사 스레드를 사용할 수 있습니다.

UI 테스트에서 일을 끝내지 못하게하는 React Native 동작이 의심됩니다. 불행하게도, UI 테스트가 실제로 어떤 것인지를 알지 못해도, React Native를 어디에서 파헤쳐야 할지를 확신 할 수 없습니다. :(

어떤 도움을 주시면 감사하겠습니다

+0

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

답변

1

뷰 가진 문제에 대해서는 위의 링크에서 해결하고 다시 애니메이션을 설정

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

와 viewWillDisappear에서 애니메이션을 해제하는 라인을!

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

테스트에서 XCUIApplication을 확장하고 변수를 설정 한 다음 설정 메소드 호출에서 launchvariables 함수를 호출합니다

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




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




func testblahblah { 

이는 특정 뷰에서 애니메이션을 사용할 수 없게하는 환경 변수를 설정합니다. 오직 단점이라면, 당신이 뭔가 그게 당신이 그 견해에 대한 애니메이션을 테스트하지 않을 것입니다. 해키의 해결 방법이지만 지금은 작동합니다.

PS는 정말 나를 위해 도움이

+0

최고, 정말 감사합니다! 나는 (AppDelegate.m'에서'UIViewController'를 사용하고 있기 때문에) 그들을 붙이려는'UIViewController' 서브 클래스가 없었습니다. 그러나 나는 내 'AppDelegate'의'didFinishLaunchingWithOptions' 안에 disabling-code를 썼습니다. (다른보기를 위해 다시 활성화 할 이유가 없었기 때문에 앱 실행 기간 동안 비활성화되었습니다.) –