Mik*_*ert 6 ios react-native xcode-ui-testing fastlane fastlane-snapshot
所以我试图在我的React Native项目上运行XCode UI测试.我的目标是使用fastlane/snapshot来抓取我的应用的截图.
我终于想出了如何编写我的应用程序脚本来做我想要的.不幸的是,应用程序App failed to quiesce within 60s在调用后卡住了一条消息app.otherElements["mainButton"].tap().
据我所知,作为一个人,我的应用程序似乎是静态的,不会更新或动画任何东西.但我不清楚UI测试用于其检测启发式的内容,因此它可能使用一些内部状态或检查线程.
我怀疑有一些React Native行为会阻止UI Test看到事情已经完成.不幸的是,没有任何真正的能力来看看UI测试正在做什么,我甚至不确定我需要深入研究React Native来修复它.:(
任何帮助,将不胜感激!
小智 1
上面链接中的解决方法对于有问题的视图和禁用动画的行
viewWillAppear:
- (void) viewWillAppear: (BOOL)animated {
if ([[[NSProcessInfo processInfo] environment][@"UITEST_DISABLE_ANIMATIONS"] isEqualToString:@"YES"]) {
[UIView setAnimationsEnabled:NO];
}
}
Run Code Online (Sandbox Code Playgroud)
并在 viewWillDisappear 中重新打开动画:
- (void) viewWillDisappear:(BOOL)animated {
if ([[[NSProcessInfo processInfo] environment][@"UITEST_DISABLE_ANIMATIONS"] isEqualToString:@"YES"]) {
[UIView setAnimationsEnabled:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
在您的测试中扩展 XCUIApplication 并设置变量。然后在您的设置方法中调用 launchvariables 函数
extension XCUIApplication {
func launchTestsWithEnvironmentVariables() {
launchEnvironment = [
"UITEST_DISABLE_ANIMATIONS" : "YES"
]
self.launch()
}
}
override func setUp() {
super.setUp()
continueAfterFailure = false
XCUIApplication().launchTestsWithEnvironmentVariables()
}
func testblahblah {
Run Code Online (Sandbox Code Playgroud)
这设置了一个环境变量,该变量将禁用该特定视图的动画。唯一的缺点是,如果您喜欢的话,您将不会测试该视图的动画。Hacky 解决方法,但目前有效。
PS这对我真的很有帮助
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |