Один из недостатков использования Detox заключается в том, что в примере спецификации теста используется beforeEach
, и существует тенденция копировать дословные примеры, которые нам даны, иногда пропуская то, что либо нужно удалить, либо добавить,
В этом конкретном случае в beforeEach
происходит вызов await device.reloadReactNative();
, эта команда перезагружает устройство, как если бы вы нажали CMD+R
(на iOS) или RR
(на Android).Это означает, что элементы, которые были сохранены в состояние, теряются, и приложение в значительной степени возвращается в исходное состояние.
Проверьте свой код на наличие ошибочной строки, вы можете увидеть его в приведенном ниже примере.Если вы удалите эту строку, то перед каждым тестом она перестанет загружать React Native на ваше устройство.
example.spec.js
https://github.com/wix/Detox/blob/master/examples/demo-react-native/e2e/example.spec.js
describe('Example', () => {
beforeEach(async () => {
await device.reloadReactNative(); // <- this is the problem
});
it('should have welcome screen', async () => {
await expect(element(by.id('welcome'))).toBeVisible();
});
it('should show hello screen after tap', async () => {
await element(by.id('hello_button')).tap();
await expect(element(by.text('Hello!!!'))).toBeVisible();
});
it('should show world screen after tap', async () => {
await element(by.id('world_button')).tap();
await expect(element(by.text('World!!!'))).toBeVisible();
});
});