Привет.
Для логин формы, когда вводишь неправильный пароль, выводиться ошибка с текстом
, но в проблема в том не важно какой текст я добавил, все равно тест проходит успешно.
await expect(await browser.element(by.cssContainingText('.common-form-error', 'We do not recognize that email address or password.
Ага, если полностью заменить текст, то не проходит, но почему тогда не сравнивает на полную единтичность?
const errorMessage = $('.common-form-error');
const errorText = EC.textToBePresentInElement(errorMessage, 'We do not recognize that email address or password.Please try again or Sign-up to create an account.');
await browser.wait(errorText, 3000);
Возможно там начало новой строки между предложениями. В винде это \r\n
По-крайней мере отсутствие пробела между предложениями наталкивает на такую мысль. Попробуйте так:
‘We do not recognize that email address or password.\r\nPlease try again or Sign-up to create an account.’
Когда меняю текст во втором приложении, даже просто делаю отступ от точки возле слова Please, то тест сразу падает.
Если что то меняю в первом предложении, то ничего, странно, честное слова))
const errorText = EC.textToBePresentInElement(errorMessage, 'We do not recognize that email address or password.Please try again or Sign-up to create an account.');
с \r\n просто падает при правильном тексте, возможно не подходит.
А зачем Вы ставите await перед функциями которые не возвращают промисы, ведь await так не работает.
const errorText = element(by.css(’.common-form-error’));
await expect(await errorText.getText()).toEqual(‘asd assasdASd’) ???
Также он не будет работать внутри функции которая не объявлена с async
Если Вы хотите использовать синтаксис async/await то Вам нужно обьявлять функцию с async
Например
describe(“Describe example”, function() {
it(“It example”, async function() {
…
const errorText = element(by.css(’.common-form-error’)); // Это желательно вынести в отдельный объект и не совать в каждый тест иначе потом будет очень сложно эти тесты поддерживать
let response = await errorText.getText() //Здесь ожидаем пока элемент появится и берем его значение
let expectedText = “We do not recognize that email address or password” //Здесь прописываем переменную для сравнения
expect(response, Error message should be equal ${expectedText}).toEqual(expectedText ) //Здесь проверяем через заградительное утверждение что сообщение появляется и оно содержит ожидаемый текст
})
Вроде все пофиксили, но я всеравно добавляю авейт - если промиса не вернулось - то хуже оно не сделает, а если да - я избавляюсь от потенциальной вероятности получить завершение теста до того как экспект отработает.
Здесь у вас неправильная передача параметров, должно быть:
expect(response).toBe(expectedText, `Error message should be equal ${expectedText}` ) //Здесь проверяем через заградительное утверждение что сообщение появляется и оно содержит ожидаемый текст
})