Я работаю над некоторым комплексным тестированием Jasmine, используя тестовый прогон Protractor. Приложение, которое я тестирую, представляет собой простую веб-страницу. У меня уже есть тестовый сценарий, который отлично работает.
Теперь я хотел бы улучшить свой код, чтобы я мог использовать один и тот же сценарий для запуска сценария тестирования дважды.
- Первый раз: тест будет выполнен на английской версии страницы
- Второй раз: на переведенной версии той же страницы.
Вот мой код:
var RandomSentenceInThePage = ["Sentence in English", "Phrase en Francais"];
var i;
var signInButton;
var TranslationButton;
var RandomSentenceInThePageBis;
i = 0;
//Runs the testing scenario twice
while (i < 2) {
describe('TC1 - The registration Page', function() {
//the translation is done on the second iteration
if (i != 0) {
beforeEach(function() {
browser.ignoreSynchronization = true;
browser.get('https://Mywebsite.url.us/');
//we get the translation button then click on it
TranslationButton = element(by.css('.TranslationButtonClass'));
TranslationButton.click();
});
}
//On the first iteration, we run the test on the not translated page…
Else {
beforeEach(function() {
browser.ignoreSynchronization = true; //Necessary for the browser.get() method to work inside the it statements.
browser.get('https://Mywebsite.url.us/');
});
}
it('should display the log in page', function() {
//Accessing the browser is done in the before each section
signInButton = element(by.css('.SignInButtonClass'));
signInButton.click();
RandomSentenceInThePageBis = element(by.css('.mt-4.text-center.signin-header')).getText();
/*******************[HERE IS WHERE THE PROBLEM IS]*******************/
expect(RandomSentenceInThePageBis.getText()).toEqual(RandomSentenceInThePage[i]);
});
/*******************************************************************/
});
}
Я выделил проблемный раздел. Код продолжает работать даже перед сравнением между RandomSentenceInThePage [i] и RandomSentenceInThePageBis. И когда они, наконец, сравниваются, цикл уже завершен.
Согласно тому, что я видел в других смежных темах, из-за использования операторов ожидаемого и методов getText () я имею дело с обещаниями и должен ждать их разрешения. После целого дня, я думаю, я мог бы использовать подсказку о том, как справиться с этим обещанием резолюции. Дайте мне знать, если вам нужна дополнительная информация.