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

com.salesforceiq.augmenteddriver.util.AugmentedTestWatcher Maven / Gradle / Ivy

package com.salesforceiq.augmenteddriver.util;

import com.google.common.base.Preconditions;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.salesforceiq.augmenteddriver.integrations.IntegrationFactory;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.remote.RemoteWebDriver;
import ru.yandex.qatools.allure.annotations.Attachment;

/**
 * TestWatcher used primarily to take screenshots on failure.
 *
 * @param  the RemoteWebDriver provider.
 */
public class AugmentedTestWatcher> extends TestWatcher {

    private final T driverProvider;
    private final IntegrationFactory integrationFactory;

    @Inject
    public AugmentedTestWatcher(T driverProvider,
                                IntegrationFactory integrationFactory) {
        this.driverProvider = Preconditions.checkNotNull(driverProvider);
        this.integrationFactory = Preconditions.checkNotNull(integrationFactory);
    }

    @Override
    protected void failed(Throwable e, Description description) {
        if (driverProvider.isInitialized()) {
            if (integrationFactory.allure().isEnabled() && driverProvider.get().getSessionId() != null) {
                takeScrenshoot();
            }
            driverProvider.get().quit();
        }
    }

    @Override
    protected void succeeded(Description description) {
        if (driverProvider.isInitialized()) {
            driverProvider.get().quit();
        }
    }

    @Attachment("Screenshot on Failure")
    public byte[] takeScrenshoot() {
        return driverProvider.get().getScreenshotAs(OutputType.BYTES);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy