From ce23e2ee1223def9bc0781d4f4d86ca6363aa374 Mon Sep 17 00:00:00 2001 From: Michal Krzyzanowski Date: Fri, 29 Jun 2018 13:16:42 +0200 Subject: [PATCH 1/5] #174 Support for Applitools Eyes added --- bb-eyes/pom.xml | 57 +++++++++++++++++++ .../com/cognifide/qa/bb/eyes/EyesModule.java | 31 ++++++++++ .../cognifide/qa/bb/eyes/EyesProvider.java | 36 ++++++++++++ .../com/cognifide/qa/bb/eyes/WithEyes.java | 57 +++++++++++++++++++ bb-eyes/src/main/resources/config.yaml | 5 ++ 5 files changed, 186 insertions(+) create mode 100644 bb-eyes/pom.xml create mode 100644 bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesModule.java create mode 100644 bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java create mode 100644 bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java create mode 100644 bb-eyes/src/main/resources/config.yaml diff --git a/bb-eyes/pom.xml b/bb-eyes/pom.xml new file mode 100644 index 00000000..18d337e9 --- /dev/null +++ b/bb-eyes/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + + + bobcat + com.cognifide.qa.bb + 1.4.1-SNAPSHOT + + + bb-eyes + Bobcat Eyes + + + + com.google.inject + guice + + + + org.slf4j + slf4j-api + + + junit + junit + + + com.applitools + eyes-selenium-java3 + RELEASE + + + io.appium + java-client + + + + + com.cognifide.qa.bb + bb-core + ${project.version} + + + + + + + org.apache.rat + apache-rat-plugin + + + + + diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesModule.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesModule.java new file mode 100644 index 00000000..54fd55ff --- /dev/null +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesModule.java @@ -0,0 +1,31 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2016 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.eyes; + +import com.applitools.eyes.selenium.Eyes; +import com.google.inject.AbstractModule; + +public class EyesModule extends AbstractModule { + + @Override + protected void configure() { + bind(Eyes.class).toProvider(EyesProvider.class); + } +} diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java new file mode 100644 index 00000000..92af7244 --- /dev/null +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java @@ -0,0 +1,36 @@ +package com.cognifide.qa.bb.eyes; + +import com.applitools.eyes.selenium.Eyes; +import com.cognifide.qa.bb.guice.ThreadScoped; +import com.google.inject.Inject; +import com.google.inject.Provider; +import com.google.inject.name.Named; + +@ThreadScoped +public class EyesProvider implements Provider { + + private Eyes cachedEyes; + + @Inject + @Named("eyes.apiKey") + private String apiKey; + + @Inject + @Named("eyes.fullPageScreenshots") + private boolean fullPageScreenshots; + + @Override + public Eyes get() { + if (cachedEyes == null) { + cachedEyes = create(); + } + return cachedEyes; + } + + private Eyes create() { + Eyes eyes = new Eyes(); + eyes.setApiKey(apiKey); + eyes.setForceFullPageScreenshot(fullPageScreenshots); + return eyes; + } +} diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java new file mode 100644 index 00000000..6c3ec874 --- /dev/null +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java @@ -0,0 +1,57 @@ +package com.cognifide.qa.bb.eyes; + +import org.junit.rules.TestRule; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.events.EventFiringWebDriver; + +import com.applitools.eyes.selenium.Eyes; +import com.google.inject.Inject; +import com.google.inject.name.Named; + +public class WithEyes implements TestRule { + + private final WebDriver webDriver; + private final Eyes eyes; + private String appName; + + @Inject + public WithEyes(WebDriver webDriver, Eyes eyes, @Named("eyes.appName") String appName) { + this.webDriver = webDriver; + this.eyes = eyes; + this.appName = appName; + } + + public WebDriver getWebDriver() { + return webDriver; + } + + public Eyes getEyes() { + return eyes; + } + + @Override + public Statement apply(Statement base, Description description) { + return new Statement() { + @Override + public void evaluate() throws Throwable { + try { + WebDriver wrappedDriver = ((EventFiringWebDriver) webDriver).getWrappedDriver(); + eyes.open(wrappedDriver, appName, description.getMethodName()); + base.evaluate(); + } finally { + closeEyes(); + } + } + }; + } + + private void closeEyes() { + try { + eyes.close(); + } finally { + eyes.abortIfNotClosed(); + } + } +} diff --git a/bb-eyes/src/main/resources/config.yaml b/bb-eyes/src/main/resources/config.yaml new file mode 100644 index 00000000..afbf8c3b --- /dev/null +++ b/bb-eyes/src/main/resources/config.yaml @@ -0,0 +1,5 @@ +default: + properties: + eyes.apiKey: '' + eyes.fullPageScreenshots: true + eyes.appName: '' From 75b5dd717aa55582cc1eb2511c17f8fa40dfb825 Mon Sep 17 00:00:00 2001 From: Michal Krzyzanowski Date: Fri, 29 Jun 2018 13:43:31 +0200 Subject: [PATCH 2/5] 174 moved module to guice package; missing license headers added --- .../cognifide/qa/bb/eyes/EyesProvider.java | 19 +++++++++++++++++++ .../com/cognifide/qa/bb/eyes/WithEyes.java | 19 +++++++++++++++++++ .../qa/bb/eyes/{ => guice}/EyesModule.java | 5 +++-- 3 files changed, 41 insertions(+), 2 deletions(-) rename bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/{ => guice}/EyesModule.java (87%) diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java index 92af7244..f6d80685 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java @@ -1,3 +1,22 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2018 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ package com.cognifide.qa.bb.eyes; import com.applitools.eyes.selenium.Eyes; diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java index 6c3ec874..fa08dfb3 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java @@ -1,3 +1,22 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2018 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ package com.cognifide.qa.bb.eyes; import org.junit.rules.TestRule; diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesModule.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java similarity index 87% rename from bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesModule.java rename to bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java index 54fd55ff..60940469 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesModule.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java @@ -2,7 +2,7 @@ * #%L * Bobcat * %% - * Copyright (C) 2016 Cognifide Ltd. + * Copyright (C) 2018 Cognifide Ltd. * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,9 +17,10 @@ * limitations under the License. * #L% */ -package com.cognifide.qa.bb.eyes; +package com.cognifide.qa.bb.eyes.guice; import com.applitools.eyes.selenium.Eyes; +import com.cognifide.qa.bb.eyes.EyesProvider; import com.google.inject.AbstractModule; public class EyesModule extends AbstractModule { From c2a6aeb6121379977d54e048e70eef4b70e1deae Mon Sep 17 00:00:00 2001 From: Michal Krzyzanowski Date: Thu, 9 Aug 2018 13:51:12 +0200 Subject: [PATCH 3/5] #174 Moved the WithEyes rule to junit4 package --- .../java/com/cognifide/qa/bb/eyes/{ => junit4}/WithEyes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/{ => junit4}/WithEyes.java (97%) diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit4/WithEyes.java similarity index 97% rename from bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java rename to bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit4/WithEyes.java index fa08dfb3..00e35b0b 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/WithEyes.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit4/WithEyes.java @@ -17,7 +17,7 @@ * limitations under the License. * #L% */ -package com.cognifide.qa.bb.eyes; +package com.cognifide.qa.bb.eyes.junit4; import org.junit.rules.TestRule; import org.junit.runner.Description; From fdc4661ff18d3e5cd8be53b439528c256a82e11b Mon Sep 17 00:00:00 2001 From: Michal Krzyzanowski Date: Fri, 10 Aug 2018 17:45:00 +0200 Subject: [PATCH 4/5] #174 Added JUnit 5 extension enabling Eyes --- bb-eyes/pom.xml | 31 +++++++++- .../qa/bb/eyes/guice/EyesModule.java | 1 - .../qa/bb/eyes/{ => guice}/EyesProvider.java | 2 +- .../cognifide/qa/bb/eyes/junit5/WithEyes.java | 33 ++++++++++ .../qa/bb/eyes/junit5/WithEyesExtension.java | 60 +++++++++++++++++++ 5 files changed, 124 insertions(+), 3 deletions(-) rename bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/{ => guice}/EyesProvider.java (97%) create mode 100644 bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyes.java create mode 100644 bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyesExtension.java diff --git a/bb-eyes/pom.xml b/bb-eyes/pom.xml index 18d337e9..3119baa1 100644 --- a/bb-eyes/pom.xml +++ b/bb-eyes/pom.xml @@ -1,4 +1,23 @@ + @@ -7,7 +26,7 @@ bobcat com.cognifide.qa.bb - 1.4.1-SNAPSHOT + 1.5.1-SNAPSHOT bb-eyes @@ -27,6 +46,10 @@ junit junit + + org.junit.jupiter + junit-jupiter-api + com.applitools eyes-selenium-java3 @@ -38,11 +61,17 @@ + com.cognifide.qa.bb bb-core ${project.version} + + com.cognifide.qa.bb + bb-junit5 + ${project.version} + diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java index 60940469..22194cc1 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java @@ -20,7 +20,6 @@ package com.cognifide.qa.bb.eyes.guice; import com.applitools.eyes.selenium.Eyes; -import com.cognifide.qa.bb.eyes.EyesProvider; import com.google.inject.AbstractModule; public class EyesModule extends AbstractModule { diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesProvider.java similarity index 97% rename from bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java rename to bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesProvider.java index f6d80685..17cbf691 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/EyesProvider.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesProvider.java @@ -17,7 +17,7 @@ * limitations under the License. * #L% */ -package com.cognifide.qa.bb.eyes; +package com.cognifide.qa.bb.eyes.guice; import com.applitools.eyes.selenium.Eyes; import com.cognifide.qa.bb.guice.ThreadScoped; diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyes.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyes.java new file mode 100644 index 00000000..33cd5560 --- /dev/null +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyes.java @@ -0,0 +1,33 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2018 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.eyes.junit5; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.junit.jupiter.api.extension.ExtendWith; + +@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@ExtendWith(WithEyesExtension.class) +public @interface WithEyes { +} diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyesExtension.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyesExtension.java new file mode 100644 index 00000000..512e10f7 --- /dev/null +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyesExtension.java @@ -0,0 +1,60 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2018 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.eyes.junit5; + +import static com.cognifide.qa.bb.junit5.JUnit5Constants.NAMESPACE; + +import java.util.Properties; + +import org.junit.jupiter.api.extension.AfterEachCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.events.EventFiringWebDriver; + +import com.applitools.eyes.selenium.Eyes; +import com.cognifide.qa.bb.junit5.guice.InjectorUtils; +import com.google.inject.Injector; +import com.google.inject.Key; + +public class WithEyesExtension implements BeforeEachCallback, AfterEachCallback { + + @Override + public void beforeEach(ExtensionContext context) throws Exception { + Injector injector = InjectorUtils.retrieveInjectorFromStore(context, NAMESPACE); + Properties properties = injector.getInstance(Key.get(Properties.class)); + WebDriver wrappedDriver = ((EventFiringWebDriver) injector.getInstance(WebDriver.class)).getWrappedDriver(); + getEyes(context).open(wrappedDriver, String.valueOf(properties.get("eyes.appName")), context.getDisplayName()); + } + + @Override + public void afterEach(ExtensionContext context) throws Exception { + Eyes eyes = getEyes(context); + try { + eyes.close(); + } finally { + eyes.abortIfNotClosed(); + } + } + + private Eyes getEyes(ExtensionContext context) { + return InjectorUtils.retrieveInjectorFromStore(context, NAMESPACE).getInstance(Eyes.class); + } +} From b4787b658520fdc7ead9e1cdd7a26d2e99831fd4 Mon Sep 17 00:00:00 2001 From: Michal Krzyzanowski Date: Mon, 20 Aug 2018 11:25:45 +0200 Subject: [PATCH 5/5] #174 Added JavaDocs --- .../qa/bb/eyes/guice/EyesModule.java | 3 +++ .../qa/bb/eyes/guice/EyesProvider.java | 10 +++++++ .../cognifide/qa/bb/eyes/junit4/WithEyes.java | 26 +++++++++++++++++++ .../cognifide/qa/bb/eyes/junit5/WithEyes.java | 3 +++ .../qa/bb/eyes/junit5/WithEyesExtension.java | 13 ++++++++++ 5 files changed, 55 insertions(+) diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java index 22194cc1..d013b7ed 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesModule.java @@ -22,6 +22,9 @@ import com.applitools.eyes.selenium.Eyes; import com.google.inject.AbstractModule; +/** + * Eyes Guice module. Provides an {@link Eyes} instance. + */ public class EyesModule extends AbstractModule { @Override diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesProvider.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesProvider.java index 17cbf691..897bb01d 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesProvider.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/guice/EyesProvider.java @@ -25,6 +25,16 @@ import com.google.inject.Provider; import com.google.inject.name.Named; +/** + * Provides a thread-scoped {@link Eyes} instance. Bound in {@link EyesModule}. + *
+ * Requires {@code eyes.apiKey} property. + *
+ * Additional configurable options: + *
    + *
  • {@code eyes.fullPageScreenshots} - defines if full-page screenshots should be captured
  • + *
+ */ @ThreadScoped public class EyesProvider implements Provider { diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit4/WithEyes.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit4/WithEyes.java index 00e35b0b..aae80496 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit4/WithEyes.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit4/WithEyes.java @@ -29,6 +29,23 @@ import com.google.inject.Inject; import com.google.inject.name.Named; +/** + * JUnit 4 {@link TestRule} that enables Eyes integration. + *

+ * Example usage: + *

+ * public class ExampleTest {
+ *    @Rule
+ *    @Inject
+ *    public WithEyes withEyes;
+ *
+ *    public void test() {
+ *      // test actions
+ *      withEyes.getEyes().checkWindow("Example checkpoint");
+ *    }
+ * }
+ * 
+ */ public class WithEyes implements TestRule { private final WebDriver webDriver; @@ -42,14 +59,23 @@ public WithEyes(WebDriver webDriver, Eyes eyes, @Named("eyes.appName") String ap this.appName = appName; } + /** + * @return the avaialable WebDriver instance + */ public WebDriver getWebDriver() { return webDriver; } + /** + * @return the configured and initialized {@link Eyes} instance. + */ public Eyes getEyes() { return eyes; } + /** + * {@inheritDoc} + */ @Override public Statement apply(Statement base, Description description) { return new Statement() { diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyes.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyes.java index 33cd5560..b898bab4 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyes.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyes.java @@ -26,6 +26,9 @@ import org.junit.jupiter.api.extension.ExtendWith; +/** + * Meta-annotation enabling the {@link WithEyesExtension}. + */ @Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @ExtendWith(WithEyesExtension.class) diff --git a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyesExtension.java b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyesExtension.java index 512e10f7..bb0fe7fa 100644 --- a/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyesExtension.java +++ b/bb-eyes/src/main/java/com/cognifide/qa/bb/eyes/junit5/WithEyesExtension.java @@ -34,8 +34,16 @@ import com.google.inject.Injector; import com.google.inject.Key; +/** + * JUnit 5 extension that provides {@link Eyes} capabilities. + */ public class WithEyesExtension implements BeforeEachCallback, AfterEachCallback { + /** + * Opens an {@link Eyes} session before the test. + *
+ * {@inheritDoc} + */ @Override public void beforeEach(ExtensionContext context) throws Exception { Injector injector = InjectorUtils.retrieveInjectorFromStore(context, NAMESPACE); @@ -44,6 +52,11 @@ public void beforeEach(ExtensionContext context) throws Exception { getEyes(context).open(wrappedDriver, String.valueOf(properties.get("eyes.appName")), context.getDisplayName()); } + /** + * Closes or aborts the opened {@link Eyes} session. + *
+ * {@inheritDoc} + */ @Override public void afterEach(ExtensionContext context) throws Exception { Eyes eyes = getEyes(context);