All Downloads are FREE. Search and download functionalities are using the official Maven repository.

info.novatec.testit.webtester.internal.implementation.advices.ActionAdvice Maven / Gradle / Ivy

package info.novatec.testit.webtester.internal.implementation.advices;

import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;

import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.asm.Advice;

import info.novatec.testit.webtester.browser.Browser;
import info.novatec.testit.webtester.config.Configuration;
import info.novatec.testit.webtester.internal.OffersBrowserGetter;
import info.novatec.testit.webtester.pagefragments.annotations.Action;
import info.novatec.testit.webtester.waiting.Wait;


@Slf4j
public class ActionAdvice {

    @Advice.OnMethodEnter
    public static void action(@Advice.This OffersBrowserGetter browserGetter, @Advice.Origin Method method) {
        new ActionAdviceImpl(browserGetter, method).execute();
    }

    public static class ActionAdviceImpl {

        private final OffersBrowserGetter browserGetter;
        private final Method method;

        public ActionAdviceImpl(OffersBrowserGetter browserGetter, Method method) {
            this.browserGetter = browserGetter;
            this.method = method;
        }

        public void execute() {

            Browser browser = browserGetter.browser();
            Configuration configuration = browser.configuration();
            if (configuration.getActionDeceleration() == 0 || !method.isAnnotationPresent(Action.class)) {
                return;
            }

            long deceleration = configuration.getActionDeceleration();
            if (deceleration > 0) {
                log.trace("decelerating method execution by: {}", deceleration);
                Wait.exactly(deceleration, TimeUnit.MILLISECONDS);
            }

        }

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy