44import com .microsoft .playwright .Page ;
55import io .swaglabs .portal .qa .constants .WebPortalConstants ;
66import io .swaglabs .portal .qa .exceptions .WebPageException ;
7- import io .swaglabs .portal .qa .listeners .WebTestListeners ;
87import io .swaglabs .portal .qa .locators .Locators ;
98import io .swaglabs .portal .qa .screenshotsmanager .ElementScreenshotStrategy ;
109import io .swaglabs .portal .qa .screenshotsmanager .ScreenshotContext ;
11- import org .testng .ITestResult ;
12- import org .testng .Reporter ;
1310
1411import java .util .Objects ;
15- import java .util .function .Consumer ;
1612
1713public abstract class WebBasePage {
1814
@@ -62,36 +58,4 @@ protected void takeElementScreenshot(Locator locator, String fileName) {
6258 ScreenshotContext screenshotContext = new ScreenshotContext (new ElementScreenshotStrategy (locator ));
6359 screenshotContext .captureScreenshot (basePage , ELEMENT_SCREENSHOT_FILE_LOCATION + fileName + WebPortalConstants .IMAGE_FORMAT );
6460 }
65-
66- protected void switchToNewTabAndRun (Page newTabPage , Consumer <WebBasePage > actionsInNewTab ) {
67- Page originalPage = this .basePage ;
68- Locators originalLocators = this .locators ;
69- try {
70- // Update to new tab context
71- this .basePage = newTabPage ;
72- this .locators = new Locators (newTabPage );
73- WebTestListeners .setPage (newTabPage );
74- actionsInNewTab .accept (this ); // Perform operations in new tab
75- } catch (Exception testException ) {
76- // Capture screenshot of the new tab before any cleanup
77- if (newTabPage != null && !newTabPage .isClosed ()) {
78- ITestResult currentTestResult = Reporter .getCurrentTestResult ();
79- if (currentTestResult != null ) {
80- currentTestResult .setStatus (ITestResult .FAILURE );
81- currentTestResult .setThrowable (testException );
82- WebTestListeners listeners = new WebTestListeners ();
83- listeners .onTestFailure (currentTestResult );
84- }
85- }
86- throw testException ; // Re-throw to maintain original behavior
87- } finally {
88- if (newTabPage != null && !newTabPage .isClosed ()) {
89- newTabPage .close (); // Always close the new tab
90- }
91- WebTestListeners .setPage (originalPage );
92- // Revert to the original page and locator
93- this .basePage = originalPage ;
94- this .locators = originalLocators ;
95- }
96- }
9761}
0 commit comments