Не самое элегантное решение, но я использовал следующее для потоковой передачи своего кода.
В файле помощника я создаю функции, которые переносят try / catch и возвращают true / false:
Например:
const expectToBeVisible = async (id) => {
try {
await expect(element(by.id(id))).toBeVisible();
return true;
} catch (e) {
return false;
}
};
module.exports = { expectToBeVisible };
Затем, когда я выполняю тесты, которые зависят от того, видим ли этот элемент или нет, я могу сделать следующее:
import { expectToBeVisible } from './helpers';
describe('Test', () => {
...
it('If button is visible do X else do Y', async () => {
let buttonVisible = await expectToBeVisible('button');
if (buttonVisible) {
// do something with that button
} else {
// do something else as the button isn't visible
}
});
...
});
Это не лучшее решение, но пока Детокс не придет с возможностью иметь, если / еще, то этого может быть достаточно в крайнем случае.