diff --git a/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ViewportScreenshotStrategy.java b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ViewportScreenshotStrategy.java new file mode 100644 index 0000000..1d5410a --- /dev/null +++ b/src/main/java/io/swaglabs/portal/qa/screenshotsmanager/ViewportScreenshotStrategy.java @@ -0,0 +1,17 @@ +package io.swaglabs.portal.qa.screenshotsmanager; + +import com.microsoft.playwright.Page; +import lombok.RequiredArgsConstructor; + +import java.nio.file.Paths; + +@RequiredArgsConstructor +public class ViewportScreenshotStrategy implements ScreenshotStrategy { + + private final Page PAGE; + + @Override + public void capture(String filePath) { + PAGE.screenshot(new Page.ScreenshotOptions().setPath(Paths.get(filePath)).setFullPage(false)); + } +} \ No newline at end of file diff --git a/src/main/java/io/swaglabs/portal/qa/utils/ScreenshotsUtils.java b/src/main/java/io/swaglabs/portal/qa/utils/ScreenshotsUtils.java index 9d69516..785a5e5 100644 --- a/src/main/java/io/swaglabs/portal/qa/utils/ScreenshotsUtils.java +++ b/src/main/java/io/swaglabs/portal/qa/utils/ScreenshotsUtils.java @@ -6,6 +6,7 @@ import io.swaglabs.portal.qa.screenshotsmanager.ElementScreenshotStrategy; import io.swaglabs.portal.qa.screenshotsmanager.FullPageScreenshotStrategy; import io.swaglabs.portal.qa.screenshotsmanager.ScreenshotContext; +import io.swaglabs.portal.qa.screenshotsmanager.ViewportScreenshotStrategy; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -29,10 +30,16 @@ public static ScreenshotsUtils getInstance() { return instance; } - public ScreenshotContext getFullPageScreenshotContext(Page page) { + public ScreenshotContext takeFullPageScreenshotContext(Page page) { + Objects.requireNonNull(page, "Page cannot be null."); return new ScreenshotContext(new FullPageScreenshotStrategy(page)); } + public ScreenshotContext takeViewportScreenshotContext(Page page) { + Objects.requireNonNull(page, "Page cannot be null."); + return new ScreenshotContext(new ViewportScreenshotStrategy(page)); + } + public void takeElementScreenshot(Locator locator, String fileName) { Objects.requireNonNull(locator, "Locator cannot be null."); Objects.requireNonNull(fileName, "File name cannot be null."); 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 e8e60a6..9febd64 100644 --- a/src/test/java/io/swaglabs/portal/qa/listeners/WebTestListeners.java +++ b/src/test/java/io/swaglabs/portal/qa/listeners/WebTestListeners.java @@ -71,7 +71,7 @@ private void takeScreenshot(ITestResult testResult) { String filePath = Paths.get(dirPath, fileName).toString(); try { Files.createDirectories(Paths.get(dirPath)); - WebPortalConstants.SCREENSHOTS_UTILS.getFullPageScreenshotContext(currentPage).captureScreenshot(filePath); + WebPortalConstants.SCREENSHOTS_UTILS.takeFullPageScreenshotContext(currentPage).captureScreenshot(filePath); } catch (IOException e) { log.error("Screenshot failed for {}: {}", testName, e.getMessage()); }