Подскажите пожалуйста, если для автотестов UI, есть PageObject, ScreenPlay(BDD) паттерны для проектирование проектов автотестов, то как организовать такой проект для API?!
Поресёчив этот вопрос в инете, я не нашла ни паттерна, ни хоть какого-то намёка на интересующий вопрос.
Дорогие коллеги, поделитесь опытом, как организован Ваш проект.
На какие каталоги он разбит и в каком каталоге что храните.
Может кто-то отзывчивый поделится скриншотом или схемой фреимвёрка...
Большое Вам спасибо!
P.S. Я знакома только с Python (Pytest + rests lib).
Понятнее всего будет, если пример будет именно на нём показан.
у меня есть фрагмент функции, который перекладывает элементы из двух массивов в два других массива на основе того, присутствуют ли эти элементы (controlsOnAC) в данный момент на странице. Ниже потом с массивом именно отсутствующих элементов дальнейшие действия производятся (если надо, я могу объяснить, почему так, но это долго и запутанно).
//действия по получению массивов allСontrolsToEnable и allControlsToCheck
//до этого места все работает правильно - массивы содержат нужные элементы
let elementsToEnable = [];
let elementsToWait = [];
for (let counter = 0; counter < allControlsToCheck.length; counter++){
controlsOnAC[counter].isPresent().then(function (result) {
if (!result) {
elementsToEnable.push(allСontrolsToEnable[counter]);
elementsToWait.push(allControlsToCheck[counter]);
console.log("element in elementsToEnable " + counter + " " + elementsToEnable[counter].locator().toString());
console.log("element in elementsToWait " + counter + " " + elementsToWait[counter].locator().toString());
}
});
}
//some actions
console.log("HERE SHOULD BE FULL ARRAY LENGTH = " + elementsToEnable.length);
console.log("HERE SHOULD BE FULL ARRAY LENGTH = " + elementsToWait.length)
После этой функции там происходят примерно такие действия: нажать на UI кнопочку, в открывшейся панельке прокликать элементы из массива elementsToEnable, дождавшись появления на UI элементов из elementsToWait, закрыть панельку.
И вот в эти дальнейшие действия массивы elementsToEnable и elementsToWait передаются пустыми, а сообщеньки про длину (которые капслоком) в консоли отображаются перед теми, что внутри цикла (но они потом выводят верное содержимое новых массивов), т.е. получается как-то так, что сперва проделываются все остальные действия, а уж потом программа идет в этот цикл (или в этот промис).
Подскажите, пожалуйста, как написать правильно, у меня видимо какой-то пробел насчет промисов здесь :(