"App failed to quiesce within 60s"在 React-Native 项目中
"App failed to quiesce within 60s"in React-Native project
所以我正在尝试 运行 对我的 React Native 项目进行 XCode UI 测试。我的目标是使用 fastlane/snapshot 抓取我的应用程序的屏幕截图。
我终于想出了如何编写我的应用程序脚本来做我想做的事。不幸的是,应用程序在调用 app.otherElements["mainButton"].tap()
.
后卡住了 App failed to quiesce within 60s
消息
据我所知,我的应用程序似乎是静态的,没有更新或动画化任何东西。但我不清楚 UI 测试用于其检测启发式的是什么,因此它可能正在使用一些内部状态或检查线程。
我怀疑有一些 React Native 行为使 UI 测试无法将事情视为已完成。不幸的是,没有任何真正的能力来查看 UI 测试在做什么,我什至不确定我需要在哪里深入研究 React Native 来修复它。 :(
如有任何帮助,我们将不胜感激!
上面 link 的解决方法
对于有问题的视图和禁用动画的行
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 {
这将设置一个环境变量,该变量将禁用该特定视图的动画。唯一的缺点是,如果您喜欢的话,您将不会为该视图测试动画。 Hacky 解决方法,但目前有效。
PS 对我很有帮助
所以我正在尝试 运行 对我的 React Native 项目进行 XCode UI 测试。我的目标是使用 fastlane/snapshot 抓取我的应用程序的屏幕截图。
我终于想出了如何编写我的应用程序脚本来做我想做的事。不幸的是,应用程序在调用 app.otherElements["mainButton"].tap()
.
App failed to quiesce within 60s
消息
据我所知,我的应用程序似乎是静态的,没有更新或动画化任何东西。但我不清楚 UI 测试用于其检测启发式的是什么,因此它可能正在使用一些内部状态或检查线程。
我怀疑有一些 React Native 行为使 UI 测试无法将事情视为已完成。不幸的是,没有任何真正的能力来查看 UI 测试在做什么,我什至不确定我需要在哪里深入研究 React Native 来修复它。 :(
如有任何帮助,我们将不胜感激!
上面 link 的解决方法 对于有问题的视图和禁用动画的行
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 {
这将设置一个环境变量,该变量将禁用该特定视图的动画。唯一的缺点是,如果您喜欢的话,您将不会为该视图测试动画。 Hacky 解决方法,但目前有效。
PS 对我很有帮助