React Native Detox - Local 和 CI 有不同的结果
React Native Detox - Local and CI have different outcomes
我在 运行 本地和 CI 环境中使用 React Native Detox 测试时遇到了 st运行ge 问题。
以下是在两种环境中 运行 的代码片段:
import { E2E_IDS } from './constants';
import {
executeBeforeEachTest,
tapById,
testAccount,
typeTextById,
waitForId,
waitForText,
} from './utils';
describe('User email sign in flow test', () => {
beforeEach(executeBeforeEachTest);
it('should login with provided user credentials successfully', async () => {
await tapById(E2E_IDS.SIGN_IN);
await waitForText('Welcome back');
await tapById(E2E_IDS.SIGN_IN_VIA_EMAIL);
await typeTextById(E2E_IDS.SIGN_IN_EMAIL, testAccount.USER);
await typeTextById(E2E_IDS.SIGN_IN_PASSWORD, testAccount.PASS);
await tapById(E2E_IDS.SIGN_IN_LOGIN_BUTTON);
await waitForText('You have no classes yet.');
});
});
在我的本地 mac machine 上,e2e 测试按预期运行良好。
在 Github CI mac machine 上,e2e 失败,因为单击 SIGN_IN_LOGIN_BUTTON 是不够的,如果我执行以下操作:
await tapById(E2E_IDS.SIGN_IN_LOGIN_BUTTON, 2);
如果我们点击按钮两次,那么它就通过了测试。我想知道为什么 CI machine 没有承认第一次点击,我们不得不做两次。
如果有人能帮助缩小这种行为的根本原因,那就太好了。
最后一个问题比较棘手,它实际上是一个用户体验错误。因此,当用户在登录表单中输入他们的电子邮件和密码时,当我们点击登录按钮时键盘不会掉落,因为我们有一个键盘覆盖层阻止了登录按钮被点击。为了避免这个问题,我们需要将 keyboardShouldPersistTaps='handled' 添加到顶层 scrollView ,这将触发点击事件到它的 child 这将导致关闭键盘加上点击到右边的元素,所有一气呵成。
很奇怪为什么这在我的本地模拟器上没有发生,也许我们可以切换键盘 on/off 这并没有帮助我缩小手头的问题。
为什么要点击 2 次?
因为,第一个是放下键盘(非活动状态),然后下一个是点击登录按钮。
我在 运行 本地和 CI 环境中使用 React Native Detox 测试时遇到了 st运行ge 问题。
以下是在两种环境中 运行 的代码片段:
import { E2E_IDS } from './constants';
import {
executeBeforeEachTest,
tapById,
testAccount,
typeTextById,
waitForId,
waitForText,
} from './utils';
describe('User email sign in flow test', () => {
beforeEach(executeBeforeEachTest);
it('should login with provided user credentials successfully', async () => {
await tapById(E2E_IDS.SIGN_IN);
await waitForText('Welcome back');
await tapById(E2E_IDS.SIGN_IN_VIA_EMAIL);
await typeTextById(E2E_IDS.SIGN_IN_EMAIL, testAccount.USER);
await typeTextById(E2E_IDS.SIGN_IN_PASSWORD, testAccount.PASS);
await tapById(E2E_IDS.SIGN_IN_LOGIN_BUTTON);
await waitForText('You have no classes yet.');
});
});
在我的本地 mac machine 上,e2e 测试按预期运行良好。
在 Github CI mac machine 上,e2e 失败,因为单击 SIGN_IN_LOGIN_BUTTON 是不够的,如果我执行以下操作:
await tapById(E2E_IDS.SIGN_IN_LOGIN_BUTTON, 2);
如果我们点击按钮两次,那么它就通过了测试。我想知道为什么 CI machine 没有承认第一次点击,我们不得不做两次。
如果有人能帮助缩小这种行为的根本原因,那就太好了。
最后一个问题比较棘手,它实际上是一个用户体验错误。因此,当用户在登录表单中输入他们的电子邮件和密码时,当我们点击登录按钮时键盘不会掉落,因为我们有一个键盘覆盖层阻止了登录按钮被点击。为了避免这个问题,我们需要将 keyboardShouldPersistTaps='handled' 添加到顶层 scrollView ,这将触发点击事件到它的 child 这将导致关闭键盘加上点击到右边的元素,所有一气呵成。 很奇怪为什么这在我的本地模拟器上没有发生,也许我们可以切换键盘 on/off 这并没有帮助我缩小手头的问题。
为什么要点击 2 次? 因为,第一个是放下键盘(非活动状态),然后下一个是点击登录按钮。