Skip to content

Commit ee77673

Browse files
Merge pull request #48 from iamcharankumar/fb_mini_refactor
Fb mini refactor
2 parents 7af52d8 + a378dd8 commit ee77673

20 files changed

Lines changed: 127 additions & 77 deletions

src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.swaglabs.portal.qa.browsermanager;
22

3+
import io.swaglabs.portal.qa.constants.WebPortalConstants;
4+
35
public class BrowserFactory {
46

5-
public IBrowser createBrowser(String browserName) {
6-
return switch (BrowserName.fromString(browserName)) {
7+
public IBrowser createBrowser() {
8+
return switch (BrowserName.fromString(WebPortalConstants.BROWSER)) {
79
case FIREFOX -> new FirefoxBrowser();
810
case WEBKIT -> new WebkitBrowser();
911
case MS_EDGE -> new MsEdgeBrowser();

src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserManager.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ public class BrowserManager implements IBrowserManager<Page> {
1111

1212
@Override
1313
public Page getBrowserPage(Playwright playwright) {
14-
String browserName = WebPortalConstants.BROWSER;
15-
String runMode = WebPortalConstants.RUN_MODE;
16-
boolean isHeadless = runMode.equals("headless");
17-
BrowserContext browserContext = new BrowserFactory().createBrowser(browserName).createSession(playwright, isHeadless);
14+
boolean isHeadless = "headless".equals(WebPortalConstants.RUN_MODE);
15+
BrowserContext browserContext = new BrowserFactory().createBrowser().createSession(playwright, isHeadless);
1816
Objects.requireNonNull(browserContext, "Playwright Browser Context is null!");
1917
return browserContext.newPage();
2018
}

src/main/java/io/swaglabs/portal/qa/browsermanager/BrowserName.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.swaglabs.portal.qa.browsermanager;
22

3-
import io.swaglabs.portal.qa.exceptions.UtilsException;
3+
import io.swaglabs.portal.qa.exceptions.WebUtilsException;
44
import lombok.AllArgsConstructor;
55
import lombok.Getter;
66

@@ -20,6 +20,6 @@ public enum BrowserName {
2020
public static BrowserName fromString(String browserName) {
2121
return Arrays.stream(BrowserName.values())
2222
.filter(browserType -> browserType.getBrowserType().equalsIgnoreCase(browserName))
23-
.findFirst().orElseThrow(() -> new UtilsException("Unknown browser: " + browserName));
23+
.findFirst().orElseThrow(() -> new WebUtilsException("Unknown browser: " + browserName));
2424
}
2525
}

src/main/java/io/swaglabs/portal/qa/browsermanager/ChromeBrowser.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@
66
import com.microsoft.playwright.Playwright;
77
import io.swaglabs.portal.qa.constants.WebPortalConstants;
88

9+
import java.util.List;
10+
911
public class ChromeBrowser implements IBrowser {
1012

1113
@Override
1214
public BrowserContext createSession(Playwright playwright, boolean isHeadless) {
13-
return playwright.chromium().launch(new BrowserType.LaunchOptions()
14-
.setHeadless(isHeadless))
15-
.newContext(new Browser.NewContextOptions()
16-
.setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT)
17-
.setTimezoneId(WebPortalConstants.TIME_ZONE));
15+
BrowserType.LaunchOptions chromeLaunchOptions = WebPortalConstants.BROWSER_LAUNCH_OPTIONS.setHeadless(isHeadless)
16+
.setArgs(List.of(WebPortalConstants.WINDOW_POSITION));
17+
return playwright.chromium().launch(chromeLaunchOptions).newContext(new Browser.NewContextOptions()
18+
.setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT)
19+
.setTimezoneId(WebPortalConstants.TIME_ZONE));
1820
}
1921
}

src/main/java/io/swaglabs/portal/qa/browsermanager/FirefoxBrowser.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99
public class FirefoxBrowser implements IBrowser {
1010
@Override
1111
public BrowserContext createSession(Playwright playwright, boolean isHeadless) {
12-
return playwright.firefox().launch(new BrowserType.LaunchOptions()
13-
.setHeadless(isHeadless))
14-
.newContext(new Browser.NewContextOptions()
15-
.setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT)
16-
.setTimezoneId(WebPortalConstants.TIME_ZONE));
12+
BrowserType.LaunchOptions firefoxLaunchOptions = WebPortalConstants.BROWSER_LAUNCH_OPTIONS.setHeadless(isHeadless);
13+
return playwright.firefox().launch(firefoxLaunchOptions).newContext(new Browser.NewContextOptions()
14+
.setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT)
15+
.setTimezoneId(WebPortalConstants.TIME_ZONE));
1716
}
1817
}

src/main/java/io/swaglabs/portal/qa/browsermanager/MsEdgeBrowser.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@
66
import com.microsoft.playwright.Playwright;
77
import io.swaglabs.portal.qa.constants.WebPortalConstants;
88

9+
import java.util.List;
10+
911
public class MsEdgeBrowser implements IBrowser {
1012
@Override
1113
public BrowserContext createSession(Playwright playwright, boolean isHeadless) {
12-
return playwright.chromium().launch(new BrowserType.LaunchOptions()
13-
.setHeadless(isHeadless).setChannel(BrowserName.MS_EDGE.getBrowserType()))
14-
.newContext(new Browser.NewContextOptions()
15-
.setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT)
16-
.setTimezoneId(WebPortalConstants.TIME_ZONE));
14+
BrowserType.LaunchOptions msedgeLaunchOptions = WebPortalConstants.BROWSER_LAUNCH_OPTIONS
15+
.setHeadless(isHeadless)
16+
.setChannel(BrowserName.MS_EDGE.getBrowserType())
17+
.setArgs(List.of(WebPortalConstants.WINDOW_POSITION));
18+
return playwright.chromium().launch(msedgeLaunchOptions).newContext(new Browser.NewContextOptions()
19+
.setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT)
20+
.setTimezoneId(WebPortalConstants.TIME_ZONE));
1721
}
1822
}

src/main/java/io/swaglabs/portal/qa/browsermanager/WebkitBrowser.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99
public class WebkitBrowser implements IBrowser {
1010
@Override
1111
public BrowserContext createSession(Playwright playwright, boolean isHeadless) {
12-
return playwright.webkit().launch(new BrowserType.LaunchOptions()
13-
.setHeadless(isHeadless))
14-
.newContext(new Browser.NewContextOptions()
15-
.setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT)
16-
.setTimezoneId(WebPortalConstants.TIME_ZONE));
12+
BrowserType.LaunchOptions webkitLaunchOptions = new BrowserType.LaunchOptions().setHeadless(isHeadless);
13+
return playwright.webkit().launch(webkitLaunchOptions).newContext(new Browser.NewContextOptions()
14+
.setViewportSize(WebPortalConstants.SCREEN_WIDTH, WebPortalConstants.SCREEN_HEIGHT)
15+
.setTimezoneId(WebPortalConstants.TIME_ZONE));
1716
}
1817
}

src/main/java/io/swaglabs/portal/qa/commons/WebBasePage.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@
22

33
import com.microsoft.playwright.Locator;
44
import com.microsoft.playwright.Page;
5-
import io.swaglabs.portal.qa.constants.WebPortalConstants;
65
import io.swaglabs.portal.qa.exceptions.WebPageException;
76
import io.swaglabs.portal.qa.locators.Locators;
8-
import io.swaglabs.portal.qa.screenshotsmanager.ElementScreenshotStrategy;
9-
import io.swaglabs.portal.qa.screenshotsmanager.ScreenshotContext;
107

118
import java.util.Objects;
129

1310
public abstract class WebBasePage {
1411

15-
private static final String ELEMENT_SCREENSHOT_FILE_LOCATION = WebPortalConstants.SCREENSHOT_FILE_LOCATION + "/elements/"
16-
+ WebPortalConstants.BROWSER + "_" + WebPortalConstants.RUN_MODE + "_Element_";
1712
protected Page basePage;
1813
protected Locators locators;
1914

@@ -53,9 +48,4 @@ private String extractText(Locator locator, String errorMessage) {
5348
Objects.requireNonNull(locator, errorMessage);
5449
return locator.textContent().trim();
5550
}
56-
57-
protected void takeElementScreenshot(Locator locator, String fileName) {
58-
ScreenshotContext screenshotContext = new ScreenshotContext(new ElementScreenshotStrategy(locator));
59-
screenshotContext.captureScreenshot(basePage, ELEMENT_SCREENSHOT_FILE_LOCATION + fileName + WebPortalConstants.IMAGE_FORMAT);
60-
}
6151
}

src/main/java/io/swaglabs/portal/qa/constants/WebPortalConstants.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.swaglabs.portal.qa.constants;
22

3+
import com.microsoft.playwright.BrowserType;
4+
import io.swaglabs.portal.qa.utils.ScreenshotsUtils;
35
import io.swaglabs.portal.qa.utils.WebConfigLoader;
46
import lombok.AccessLevel;
57
import lombok.NoArgsConstructor;
@@ -18,9 +20,17 @@ public final class WebPortalConstants {
1820
public static final String BROWSER = System.getProperty("browser");
1921
public static final String TIME_ZONE = "Asia/Kolkata";
2022

23+
// Web Browser resolution
2124
public static final int SCREEN_WIDTH = 1920;
2225
public static final int SCREEN_HEIGHT = 1080;
26+
public static final String WINDOW_POSITION = "--window-position=0,0";
2327

2428
public static final String SCREENSHOT_FILE_LOCATION = "./target/screenshots/";
2529
public static final String IMAGE_FORMAT = ".png";
30+
31+
// Browser Type Launch Options Config
32+
public static final BrowserType.LaunchOptions BROWSER_LAUNCH_OPTIONS = new BrowserType.LaunchOptions();
33+
34+
// SCREENSHOT STRATEGIES
35+
public static final ScreenshotsUtils SCREENSHOTS_UTILS = ScreenshotsUtils.getInstance();
2636
}

src/main/java/io/swaglabs/portal/qa/exceptions/UtilsException.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)