- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这就是我对动画按钮的意思。我让它有一个 ID,但它无法被 Detox 以某种方式定位。
Detox eliminates flakiness by automatically synchronizing your tests with the app. A test cannot continue to the next line if the app is busy. The test will only resume when the app becomes idle. Detox monitors your app very closely in order to know when it's idle. It tracks several asynchronous operations and waits until they complete. This includes:
Keeping track of all network requests that are currently in-flight and waiting until they complete Keeping track of pending animations and waiting until they complete Keeping track of timers (like setTimeout) and waiting until they expire Keeping track of the React Native bridge which carries asynchronous messages Keeping track of asynchronous React Native layout and the shadow queue Keeping track of the JavaScript event loop which may contain pending asynchronous actions
最佳答案
来自排毒文档:
Endless looping animations
By default, Detox will wait until animations complete. If you have an endless looping animation, this may cause Detox to hang. In this case, consider turning off the animation synchronization or remove the endless loop in your E2E build with react-native-repackager.
General remarks
Infinite animations (looped animations) can make detox wait forever. Please consider turning looped animations off for testing. It's also a good practice to speed up all animations for testing.
disableSynchronization()
- 因此您可以暂时禁用同步以解决动画问题
Currently supports only RN 0.51
$ yarn add react-native-config
$ react-native link react-native-config
.env.production
和
.env.testing
在根 React Native 应用程序目录中。然后我正在使用
IS_动画 根据构建环境切换动画的配置变量。您需要添加
ENVFILE=.env.testing
和
ENVFILE=.env.production
到您的排毒构建配置。
ENV_TYPE=Production
IS_ANIMATE=1
ENV_TYPE=Testing
IS_ANIMATE=0
import Config from 'react-native-config'
import React, { Component } from 'react'
import {
AppRegistry,
StyleSheet,
Alert,
Animated,
View,
TouchableOpacity,
Text
} from 'react-native'
class example extends Component {
constructor(props) {
super(props)
this.state = {
radius: new Animated.Value(1)
}
}
componentDidMount() {
// only enable animation for production
if (Config.IS_ANIMATE == true) {
this.cycleAnimation()
}
}
cycleAnimation() {
Animated.loop(
Animated.sequence([
Animated.timing(this.state.radius, {
toValue: 2,
duration: 500,
delay: 1000
}),
Animated.timing(this.state.radius, {
toValue: 1,
duration: 500
})
])
).start()
}
render() {
return (
<View testID='container' style={styles.container}>
<Text>{Config.ENV_TYPE}</Text>
<TouchableOpacity
testID='button'
onPress={() => Alert.alert("I was pressed")}
>
<Animated.View
style={[
styles.button,
{transform: [
{scale: this.state.radius},
]}
]}
>
<Text>START DIARY</Text>
</Animated.View>
</TouchableOpacity>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
},
button: {
justifyContent: 'center',
alignItems: 'center',
borderRadius: 60,
width: 120,
height: 120,
backgroundColor: 'green'
},
text: {
padding: 5,
fontSize: 14
}
})
AppRegistry.registerComponent('example', () => example)
it('Animated Button', async () => {
const buttonElement = element(by.id('button'));
await expect(buttonElement).toBeVisible();
await buttonElement.tap();
});
"detox": {
"specs": "e2e",
"configurations": {
"ios.sim.release": {
"binaryPath": "ios/build/Build/Products/Release-iphonesimulator/example.app",
"build": "ENVFILE=.env.production export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -project ios/example.xcodeproj -scheme example -configuration Release -sdk iphonesimulator -derivedDataPath ios/build",
"type": "ios.simulator",
"name": "iPhone 5s, iOS 10.3"
},
"ios.sim.test": {
"binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/example.app",
"build": "ENVFILE=.env.testing xcodebuild -project ios/example.xcodeproj -scheme example -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build -arch x86_64",
"type": "ios.simulator",
"name": "iPhone 5s, iOS 10.3"
}
}
}
detox build --configuration ios.sim.release && detox test --configuration ios.sim.release
detox build --configuration ios.sim.test && detox test --configuration ios.sim.test
关于detox - 动画按钮阻止排毒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47391019/
使用 Jest-Circus 作为测试运行器运行 detox 17.4.3 我在使用 iOS 模拟器时遇到以下错误。 detox[18766] WARN: [Client.js/PENDING_RE
在使用 Detox 进行测试时,我在按钮上执行 tap() 时遇到问题。 Log In 我们的测试看起来像这样: const emailInput = element(by.id('e
在我的测试中,我想在“取消升级”按钮显示时模拟点击: it('should be in home menu', async () => { await waitFor(element(by.id(
我正在使用来自 react-native 的警报。 如何按警报消息上的“注销”按钮进行排毒? 我尝试使用 await element(by.text('Log out')).tap(); 但是我收到“
我正在使用 detox e2e 为我的 react-native 应用程序创建测试用例。长话短说,我在组件的渲染函数中有一个按钮,该按钮从左向右过渡。我已经为该按钮提供了一个唯一的测试 ID。在我的测
我在我的 react-native 应用程序中为 e2e 测试实现了 Detox,我有 2 个测试: 启动 -> 未登录 -> 显示登录表单 -> 主屏幕 启动 -> 记录 -> 主屏幕 授权信息存储
我想知道如何使用 native 键盘输入数字,然后使用“\n”在 Detox 的普通字符串上像 typeText 一样输入它 //await typeText('${screen_id}_screen
我们的应用程序中有一个 toast 组件,它为我们的测试增加了相当多的脆弱性。 toast 组件显示动画 View 4 秒,然后消失。在很多测试中,我需要检查消息内容是什么才能继续测试。 Toast
我已按照此处的 Android 排毒指南安装到我的 react-native 项目 - https://github.com/wix/Detox/blob/master/docs/Introducti
我正在尝试设置 detox在我的应用程序上运行 e2e 测试(react native + expokit)。 正如我在 https://github.com/wix/Detox/issues/162
在过去的两天里,我一直在寻找使用 Expo + Detox + CircleCI 的良好设置,以便应用程序可以在 CI 过程中构建。 在本地,我可以通过下载 Exponent.app 并放入 bin
输入用户电子邮件地址后,我希望 Detox 按下一步移动到密码字段。 我试图通过元素 ID 查找密码字段并调用 .tap()焦点,但键盘部分遮挡了密码字段,并且未能通过 75% 的可见性标准。 Err
我不熟悉排毒和移动自动化。我想使用 detox 在通知中心点击 iOS 推送通知。或者是否有任何其他工具可以与 detox 一起使用,以便在 iOS 上点击通知? 有什么建议吗?谢谢 最佳答案 在您的
我正在尝试使用 detox 测试我的 react-native 应用程序,等待文本输入可见并在其中键入文本。我的 spec JS 文件 如下所示: describe('FiestTest', () =
我在最新版本上使用 detox,此提交 ( https://github.com/wix/Detox/commit/2507c1e4325936ed9f46c0f64571fa581c71ff5f )
尝试从 Detox 7.3.4 升级到 8.1.1 即使提供 --configuration,它似乎是从苹果电视而不是我提供的手机加载的 包.json: "detox": { "confi
使用从命令行启动应用程序detox test --configuration ios.sim.debug 通过代码启动应用程序await device.launchApp({ permissions:
为您的帮助干杯。我对 Detox、React Native、Macs、Xcode 和在 StackOverflow 上发帖(新工作)非常陌生,如果我遗漏了细节,我深表歉意。 我遵循以下指南: http
我是一名优秀的程序员,十分优秀!