diff --git a/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserFactory.java b/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserFactory.java index 55d8900..b9ad047 100644 --- a/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserFactory.java +++ b/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserFactory.java @@ -1,9 +1,11 @@ package io.swaglabs.portal.qa.browsermanager; +import io.swaglabs.portal.qa.constants.WebPortalConstants; + public class BrowserFactory { - public IBrowser createBrowser(String browserName) { - return switch (BrowserName.fromString(browserName)) { + public IBrowser createBrowser() { + return switch (BrowserName.fromString(WebPortalConstants.BROWSER)) { case FIREFOX -> new FirefoxBrowser(); case WEBKIT -> new WebkitBrowser(); case MS_EDGE -> new MsEdgeBrowser(); diff --git a/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserManager.java b/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserManager.java index 123bf8c..b676e5a 100644 --- a/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserManager.java +++ b/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserManager.java @@ -11,10 +11,8 @@ public class BrowserManager implements IBrowserManager { @Override public Page getBrowserPage(Playwright playwright) { - String browserName = WebPortalConstants.BROWSER; - String runMode = WebPortalConstants.RUN_MODE; - boolean isHeadless = runMode.equals("headless"); - BrowserContext browserContext = new BrowserFactory().createBrowser(browserName).createSession(playwright, isHeadless); + boolean isHeadless = "headless".equals(WebPortalConstants.RUN_MODE); + BrowserContext browserContext = new BrowserFactory().createBrowser().createSession(playwright, isHeadless); Objects.requireNonNull(browserContext, "Playwright Browser Context is null!"); return browserContext.newPage(); } diff --git a/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserName.java b/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserName.java index 5adba0d..d8fbc9b 100644 --- a/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserName.java +++ b/src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserName.java @@ -1,6 +1,6 @@ package io.swaglabs.portal.qa.browsermanager; -import io.swaglabs.portal.qa.exceptions.UtilsException; +import io.swaglabs.portal.qa.exceptions.WebUtilsException; import lombok.AllArgsConstructor; import lombok.Getter; @@ -20,6 +20,6 @@ public enum BrowserName { public static BrowserName fromString(String browserName) { return Arrays.stream(BrowserName.values()) .filter(browserType -> browserType.getBrowserType().equalsIgnoreCase(browserName)) - .findFirst().orElseThrow(() -> new UtilsException("Unknown browser: " + browserName)); + .findFirst().orElseThrow(() -> new WebUtilsException("Unknown browser: " + browserName)); } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/browsermanager/ChromeBrowser.java b/src/main/java/io/swaglabs/portal/qa/browsermanager/ChromeBrowser.java index 40c7db8..0c59976 100644 --- a/src/main/java/io/swaglabs/portal/qa/browsermanager/ChromeBrowser.java +++ b/src/main/java/io/swaglabs/portal/qa/browsermanager/ChromeBrowser.java @@ -6,14 +6,16 @@ import com.microsoft.playwright.Playwright; import io.swaglabs.portal.qa.constants.WebPortalConstants; +import java.util.List; + public class ChromeBrowser implements IBrowser { @Override public BrowserContext createSession(Playwright playwright, boolean isHeadless) { - return playwright.chromium().launch(new BrowserType.LaunchOptions() - .setHeadless(isHeadless)) - .newContext(new Browser.NewContextOptions() - .setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT) - .setTimezoneId(WebPortalConstants.TIME_ZONE)); + BrowserType.LaunchOptions chromeLaunchOptions = WebPortalConstants.BROWSER_LAUNCH_OPTIONS.setHeadless(isHeadless) + .setArgs(List.of(WebPortalConstants.WINDOW_POSITION)); + return playwright.chromium().launch(chromeLaunchOptions).newContext(new Browser.NewContextOptions() + .setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT) + .setTimezoneId(WebPortalConstants.TIME_ZONE)); } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/browsermanager/FirefoxBrowser.java b/src/main/java/io/swaglabs/portal/qa/browsermanager/FirefoxBrowser.java index df55612..d83de6b 100644 --- a/src/main/java/io/swaglabs/portal/qa/browsermanager/FirefoxBrowser.java +++ b/src/main/java/io/swaglabs/portal/qa/browsermanager/FirefoxBrowser.java @@ -9,10 +9,9 @@ public class FirefoxBrowser implements IBrowser { @Override public BrowserContext createSession(Playwright playwright, boolean isHeadless) { - return playwright.firefox().launch(new BrowserType.LaunchOptions() - .setHeadless(isHeadless)) - .newContext(new Browser.NewContextOptions() - .setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT) - .setTimezoneId(WebPortalConstants.TIME_ZONE)); + BrowserType.LaunchOptions firefoxLaunchOptions = WebPortalConstants.BROWSER_LAUNCH_OPTIONS.setHeadless(isHeadless); + return playwright.firefox().launch(firefoxLaunchOptions).newContext(new Browser.NewContextOptions() + .setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT) + .setTimezoneId(WebPortalConstants.TIME_ZONE)); } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/browsermanager/MsEdgeBrowser.java b/src/main/java/io/swaglabs/portal/qa/browsermanager/MsEdgeBrowser.java index 0834bc4..26138b1 100644 --- a/src/main/java/io/swaglabs/portal/qa/browsermanager/MsEdgeBrowser.java +++ b/src/main/java/io/swaglabs/portal/qa/browsermanager/MsEdgeBrowser.java @@ -6,13 +6,17 @@ import com.microsoft.playwright.Playwright; import io.swaglabs.portal.qa.constants.WebPortalConstants; +import java.util.List; + public class MsEdgeBrowser implements IBrowser { @Override public BrowserContext createSession(Playwright playwright, boolean isHeadless) { - return playwright.chromium().launch(new BrowserType.LaunchOptions() - .setHeadless(isHeadless).setChannel(BrowserName.MS_EDGE.getBrowserType())) - .newContext(new Browser.NewContextOptions() - .setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT) - .setTimezoneId(WebPortalConstants.TIME_ZONE)); + BrowserType.LaunchOptions msedgeLaunchOptions = WebPortalConstants.BROWSER_LAUNCH_OPTIONS + .setHeadless(isHeadless) + .setChannel(BrowserName.MS_EDGE.getBrowserType()) + .setArgs(List.of(WebPortalConstants.WINDOW_POSITION)); + return playwright.chromium().launch(msedgeLaunchOptions).newContext(new Browser.NewContextOptions() + .setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT) + .setTimezoneId(WebPortalConstants.TIME_ZONE)); } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/browsermanager/WebkitBrowser.java b/src/main/java/io/swaglabs/portal/qa/browsermanager/WebkitBrowser.java index cee8e76..d031db2 100644 --- a/src/main/java/io/swaglabs/portal/qa/browsermanager/WebkitBrowser.java +++ b/src/main/java/io/swaglabs/portal/qa/browsermanager/WebkitBrowser.java @@ -9,10 +9,9 @@ public class WebkitBrowser implements IBrowser { @Override public BrowserContext createSession(Playwright playwright, boolean isHeadless) { - return playwright.webkit().launch(new BrowserType.LaunchOptions() - .setHeadless(isHeadless)) - .newContext(new Browser.NewContextOptions() - .setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT) - .setTimezoneId(WebPortalConstants.TIME_ZONE)); + BrowserType.LaunchOptions webkitLaunchOptions = new BrowserType.LaunchOptions().setHeadless(isHeadless); + return playwright.webkit().launch(webkitLaunchOptions).newContext(new Browser.NewContextOptions() + .setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT) + .setTimezoneId(WebPortalConstants.TIME_ZONE)); } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/commons/WebBasePage.java b/src/main/java/io/swaglabs/portal/qa/commons/WebBasePage.java index d13b862..1366116 100644 --- a/src/main/java/io/swaglabs/portal/qa/commons/WebBasePage.java +++ b/src/main/java/io/swaglabs/portal/qa/commons/WebBasePage.java @@ -2,18 +2,13 @@ import com.microsoft.playwright.Locator; import com.microsoft.playwright.Page; -import io.swaglabs.portal.qa.constants.WebPortalConstants; import io.swaglabs.portal.qa.exceptions.WebPageException; import io.swaglabs.portal.qa.locators.Locators; -import io.swaglabs.portal.qa.screenshotsmanager.ElementScreenshotStrategy; -import io.swaglabs.portal.qa.screenshotsmanager.ScreenshotContext; import java.util.Objects; public abstract class WebBasePage { - private static final String ELEMENT_SCREENSHOT_FILE_LOCATION = WebPortalConstants.SCREENSHOT_FILE_LOCATION + "/elements/" - + WebPortalConstants.BROWSER + "_" + WebPortalConstants.RUN_MODE + "_Element_"; protected Page basePage; protected Locators locators; @@ -53,9 +48,4 @@ private String extractText(Locator locator, String errorMessage) { Objects.requireNonNull(locator, errorMessage); return locator.textContent().trim(); } - - protected void takeElementScreenshot(Locator locator, String fileName) { - ScreenshotContext screenshotContext = new ScreenshotContext(new ElementScreenshotStrategy(locator)); - screenshotContext.captureScreenshot(basePage, ELEMENT_SCREENSHOT_FILE_LOCATION + fileName + WebPortalConstants.IMAGE_FORMAT); - } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/constants/WebPortalConstants.java b/src/main/java/io/swaglabs/portal/qa/constants/WebPortalConstants.java index b701024..6a494a4 100644 --- a/src/main/java/io/swaglabs/portal/qa/constants/WebPortalConstants.java +++ b/src/main/java/io/swaglabs/portal/qa/constants/WebPortalConstants.java @@ -1,5 +1,7 @@ package io.swaglabs.portal.qa.constants; +import com.microsoft.playwright.BrowserType; +import io.swaglabs.portal.qa.utils.ScreenshotsUtils; import io.swaglabs.portal.qa.utils.WebConfigLoader; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -18,9 +20,17 @@ public final class WebPortalConstants { public static final String BROWSER = System.getProperty("browser"); public static final String TIME_ZONE = "Asia/Kolkata"; + // Web Browser resolution public static final int SCREEN_WIDTH = 1920; public static final int SCREEN_HEIGHT = 1080; + public static final String WINDOW_POSITION = "--window-position=0,0"; public static final String SCREENSHOT_FILE_LOCATION = "./target/screenshots/"; public static final String IMAGE_FORMAT = ".png"; + + // Browser Type Launch Options Config + public static final BrowserType.LaunchOptions BROWSER_LAUNCH_OPTIONS = new BrowserType.LaunchOptions(); + + // SCREENSHOT STRATEGIES + public static final ScreenshotsUtils SCREENSHOTS_UTILS = ScreenshotsUtils.getInstance(); } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/exceptions/UtilsException.java b/src/main/java/io/swaglabs/portal/qa/exceptions/UtilsException.java deleted file mode 100644 index 01de526..0000000 --- a/src/main/java/io/swaglabs/portal/qa/exceptions/UtilsException.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.swaglabs.portal.qa.exceptions; - -public class UtilsException extends RuntimeException { - - public UtilsException(String errorMessage) { - super(errorMessage); - } -} diff --git a/src/main/java/io/swaglabs/portal/qa/exceptions/WebUtilsException.java b/src/main/java/io/swaglabs/portal/qa/exceptions/WebUtilsException.java new file mode 100644 index 0000000..112e5a6 --- /dev/null +++ b/src/main/java/io/swaglabs/portal/qa/exceptions/WebUtilsException.java @@ -0,0 +1,8 @@ +package io.swaglabs.portal.qa.exceptions; + +public class WebUtilsException extends RuntimeException { + + public WebUtilsException(String errorMessage) { + super(errorMessage); + } +} diff --git a/src/main/java/io/swaglabs/portal/qa/pages/SwagLabsProductPage.java b/src/main/java/io/swaglabs/portal/qa/pages/SwagLabsProductPage.java index e3f59e7..3b13ef6 100644 --- a/src/main/java/io/swaglabs/portal/qa/pages/SwagLabsProductPage.java +++ b/src/main/java/io/swaglabs/portal/qa/pages/SwagLabsProductPage.java @@ -3,6 +3,7 @@ import com.microsoft.playwright.Locator; import com.microsoft.playwright.Page; import com.microsoft.playwright.options.AriaRole; +import io.swaglabs.portal.qa.constants.WebPortalConstants; public final class SwagLabsProductPage extends SwagLabsBasePage { @@ -17,7 +18,7 @@ public String getProductNameText() { public String getProductPriceText() { Locator productPrice = locators.getPageLocator(".inventory_details_price"); String productPriceText = getTextContent(productPrice); - takeElementScreenshot(productPrice, productPriceText); + WebPortalConstants.SCREENSHOTS_UTILS.takeElementScreenshot(productPrice, productPriceText); return productPriceText; } @@ -32,7 +33,7 @@ public boolean isProductAddedToCart() { public boolean isShoppingCartClicked() { Locator shoppingCart = locators.getPageLocator(".shopping_cart_link"); - takeElementScreenshot(shoppingCart, "shoppingCart"); + WebPortalConstants.SCREENSHOTS_UTILS.takeElementScreenshot(shoppingCart, "shoppingCart"); clickElement(shoppingCart); return true; } diff --git a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ElementScreenshotStrategy.java b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ElementScreenshotStrategy.java index 412f2cf..3e1a332 100644 --- a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ElementScreenshotStrategy.java +++ b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ElementScreenshotStrategy.java @@ -1,18 +1,17 @@ package io.swaglabs.portal.qa.screenshotsmanager; import com.microsoft.playwright.Locator; -import com.microsoft.playwright.Page; -import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; import java.nio.file.Paths; -@AllArgsConstructor +@RequiredArgsConstructor public class ElementScreenshotStrategy implements ScreenshotStrategy { - private final Locator locator; + private final Locator LOCATOR; @Override - public void capture(Page page, String filePath) { - locator.screenshot(new Locator.ScreenshotOptions().setPath(Paths.get(filePath))); + public void capture(String filePath) { + LOCATOR.screenshot(new Locator.ScreenshotOptions().setPath(Paths.get(filePath))); } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/FullPageScreenshotStrategy.java b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/FullPageScreenshotStrategy.java index 5a3dcc4..7a93710 100644 --- a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/FullPageScreenshotStrategy.java +++ b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/FullPageScreenshotStrategy.java @@ -1,13 +1,17 @@ package io.swaglabs.portal.qa.screenshotsmanager; import com.microsoft.playwright.Page; +import lombok.RequiredArgsConstructor; import java.nio.file.Paths; +@RequiredArgsConstructor public class FullPageScreenshotStrategy implements ScreenshotStrategy { + private final Page PAGE; + @Override - public void capture(Page page, String filePath) { - page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get(filePath)).setFullPage(true)); + public void capture(String filePath) { + PAGE.screenshot(new Page.ScreenshotOptions().setPath(Paths.get(filePath)).setFullPage(true)); } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ScreenshotContext.java b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ScreenshotContext.java index 357bde0..11db371 100644 --- a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ScreenshotContext.java +++ b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ScreenshotContext.java @@ -1,17 +1,13 @@ package io.swaglabs.portal.qa.screenshotsmanager; -import com.microsoft.playwright.Page; -import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; -import java.util.Objects; - -@AllArgsConstructor +@RequiredArgsConstructor public class ScreenshotContext { - private ScreenshotStrategy screenshotStrategy; + private final ScreenshotStrategy screenshotStrategy; - public void captureScreenshot(Page page, String filePath) { - Objects.requireNonNull(screenshotStrategy, "Screenshot strategy is not set."); - screenshotStrategy.capture(page, filePath); + public void captureScreenshot(String filePath) { + screenshotStrategy.capture(filePath); } } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ScreenshotStrategy.java b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ScreenshotStrategy.java index 7de88d3..b18ee08 100644 --- a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ScreenshotStrategy.java +++ b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ScreenshotStrategy.java @@ -1,8 +1,6 @@ package io.swaglabs.portal.qa.screenshotsmanager; -import com.microsoft.playwright.Page; - public interface ScreenshotStrategy { - void capture(Page page, String filePath); + void capture(String filePath); } \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/utils/PropertiesUtils.java b/src/main/java/io/swaglabs/portal/qa/utils/PropertiesUtils.java index fa7c05c..e8343fe 100644 --- a/src/main/java/io/swaglabs/portal/qa/utils/PropertiesUtils.java +++ b/src/main/java/io/swaglabs/portal/qa/utils/PropertiesUtils.java @@ -1,6 +1,6 @@ package io.swaglabs.portal.qa.utils; -import io.swaglabs.portal.qa.exceptions.UtilsException; +import io.swaglabs.portal.qa.exceptions.WebUtilsException; import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,7 +23,7 @@ public static Properties loadProperties(String fileName) { properties = new Properties(); properties.load(fileInputStream); } catch (IOException e) { - throw new UtilsException("Properties File failed loading..." + e.getMessage()); + throw new WebUtilsException("Properties File failed loading..." + e.getMessage()); } return properties; } diff --git a/src/main/java/io/swaglabs/portal/qa/utils/ScreenshotsUtils.java b/src/main/java/io/swaglabs/portal/qa/utils/ScreenshotsUtils.java new file mode 100644 index 0000000..9d69516 --- /dev/null +++ b/src/main/java/io/swaglabs/portal/qa/utils/ScreenshotsUtils.java @@ -0,0 +1,42 @@ +package io.swaglabs.portal.qa.utils; + +import com.microsoft.playwright.Locator; +import com.microsoft.playwright.Page; +import io.swaglabs.portal.qa.constants.WebPortalConstants; +import io.swaglabs.portal.qa.screenshotsmanager.ElementScreenshotStrategy; +import io.swaglabs.portal.qa.screenshotsmanager.FullPageScreenshotStrategy; +import io.swaglabs.portal.qa.screenshotsmanager.ScreenshotContext; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +import java.util.Objects; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class ScreenshotsUtils { + + private static ScreenshotsUtils instance; + private static final String ELEMENT_SCREENSHOT_FILE_LOCATION = WebPortalConstants.SCREENSHOT_FILE_LOCATION + + "/elements/" + WebPortalConstants.BROWSER + "_" + WebPortalConstants.RUN_MODE + "_Element_"; + + public static ScreenshotsUtils getInstance() { + if (instance == null) { + synchronized (ScreenshotsUtils.class) { + if (instance == null) { + instance = new ScreenshotsUtils(); + } + } + } + return instance; + } + + public ScreenshotContext getFullPageScreenshotContext(Page page) { + return new ScreenshotContext(new FullPageScreenshotStrategy(page)); + } + + public void takeElementScreenshot(Locator locator, String fileName) { + Objects.requireNonNull(locator, "Locator cannot be null."); + Objects.requireNonNull(fileName, "File name cannot be null."); + String filePath = ELEMENT_SCREENSHOT_FILE_LOCATION + fileName + WebPortalConstants.IMAGE_FORMAT; + new ScreenshotContext(new ElementScreenshotStrategy(locator)).captureScreenshot(filePath); + } +} \ No newline at end of file diff --git a/src/test/java/io/swaglabs/portal/qa/commons/WebBaseTest.java b/src/test/java/io/swaglabs/portal/qa/commons/WebBaseTest.java index c42053b..a2a543b 100644 --- a/src/test/java/io/swaglabs/portal/qa/commons/WebBaseTest.java +++ b/src/test/java/io/swaglabs/portal/qa/commons/WebBaseTest.java @@ -24,7 +24,6 @@ public abstract class WebBaseTest { private static final ThreadLocal PLAYWRIGHT = new ThreadLocal<>(); private static BrowserManager browserManager; - @BeforeSuite(alwaysRun = true) public void setUp() { browserManager = new BrowserManager(); @@ -37,6 +36,13 @@ public void init(Method method) { page.set(browserManager.getBrowserPage(PLAYWRIGHT.get())); log.info("Browser has been set."); WebTestListeners.setPage(page.get()); + if (isChromiumBrowser()) { + initializeCdpSession(); + } + trackPerformanceMetrics(method.getName()); + } + + private void initializeCdpSession() { if (isChromiumBrowser()) { CdpUtils.initializeCdpSession(page.get()); CdpUtils.enableCdpSession(); @@ -51,8 +57,11 @@ public void init(Method method) { CdpUtils.logPageLoadCompletion(); CdpUtils.logPageNavigatedWithinDocument(); } - PerformanceUtils.evaluatePageLoadTime(page.get(), method.getName()); - PerformanceUtils.evaluateDomContentLoadTime(page.get(), method.getName()); + } + + private void trackPerformanceMetrics(String methodName) { + PerformanceUtils.evaluatePageLoadTime(page.get(), methodName); + PerformanceUtils.evaluateDomContentLoadTime(page.get(), methodName); } @AfterMethod(alwaysRun = true) diff --git a/src/test/java/io/swaglabs/portal/qa/listeners/WebTestListeners.java b/src/test/java/io/swaglabs/portal/qa/listeners/WebTestListeners.java index 27beac6..e8e60a6 100644 --- a/src/test/java/io/swaglabs/portal/qa/listeners/WebTestListeners.java +++ b/src/test/java/io/swaglabs/portal/qa/listeners/WebTestListeners.java @@ -2,8 +2,6 @@ import com.microsoft.playwright.Page; import io.swaglabs.portal.qa.constants.WebPortalConstants; -import io.swaglabs.portal.qa.screenshotsmanager.FullPageScreenshotStrategy; -import io.swaglabs.portal.qa.screenshotsmanager.ScreenshotContext; import lombok.extern.slf4j.Slf4j; import org.testng.*; @@ -73,8 +71,7 @@ private void takeScreenshot(ITestResult testResult) { String filePath = Paths.get(dirPath, fileName).toString(); try { Files.createDirectories(Paths.get(dirPath)); - ScreenshotContext screenshotContext = new ScreenshotContext(new FullPageScreenshotStrategy()); - screenshotContext.captureScreenshot(currentPage, filePath); + WebPortalConstants.SCREENSHOTS_UTILS.getFullPageScreenshotContext(currentPage).captureScreenshot(filePath); } catch (IOException e) { log.error("Screenshot failed for {}: {}", testName, e.getMessage()); }