package vid.automation.test.infra; import org.apache.commons.collections.CollectionUtils; import org.onap.sdc.ci.tests.utilities.GeneralUIUtils; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.NoSuchElementException; import vid.automation.test.Constants; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; public class Wait { public static boolean byText(String text) { return GeneralUIUtils.findAndWaitByText(text, Constants.generalTimeout); } public static boolean waitFor(Predicate predicate, T input, int numOfRetries, int interval, TimeUnit intervalUnit) { for (int i=0; i boolean waitFor(Predicate predicate, T input, int numOfRetries, int interval) { return waitFor(predicate, input, numOfRetries, interval, TimeUnit.SECONDS); } public static boolean waitByClassAndText(String className, String text, int timeoutInSeconds) { return waitFor((x->Get.byClassAndText(className, text, 1)!=null), null, timeoutInSeconds, 1); } public static boolean waitByClassAndTextXpathOnly(String className, String text, int timeoutInSeconds) { try { return CollectionUtils.isNotEmpty( GeneralUIUtils.getWebElementsListByContainsClassNameAndText(className, text, timeoutInSeconds)); } catch (RuntimeException exception) { System.out.println( String.format("Failed to waitByClassAndText, after %d seconds. Class name: %s, Text: %s. Cause: %s", timeoutInSeconds, className, text, exception.toString())); return false; } } public static boolean waitByTestId(String dataTestId, int timeoutInSeconds) { return waitFor((x->Get.byTestId(dataTestId)!=null),null, timeoutInSeconds, 1); } public static boolean waitByIdAndText(String id, String text, int timeoutInSeconds) { return waitFor((x->Get.byId(id).getText().equals(text)),null, timeoutInSeconds, 1); } public static void angularHttpRequestsLoaded() { JavascriptExecutor js = (JavascriptExecutor) GeneralUIUtils.getDriver(); for (int i=0; i