From 4d9f2c0c9e668717d9919502570988baa58e37e0 Mon Sep 17 00:00:00 2001 From: Valentin Pichavant Date: Fri, 11 Oct 2024 21:41:24 +0800 Subject: [PATCH] Add screenshot to help debug (#3) --- .../sfcc/FillCommerceApiSettingsTest.java | 18 ++++++++++++++++++ .../java/com/mirakl/sfcc/PlaywrightBase.java | 11 +++++++++++ 2 files changed, 29 insertions(+) diff --git a/playwright_tools/src/test/java/com/mirakl/sfcc/FillCommerceApiSettingsTest.java b/playwright_tools/src/test/java/com/mirakl/sfcc/FillCommerceApiSettingsTest.java index 6292c8c..3edb97e 100644 --- a/playwright_tools/src/test/java/com/mirakl/sfcc/FillCommerceApiSettingsTest.java +++ b/playwright_tools/src/test/java/com/mirakl/sfcc/FillCommerceApiSettingsTest.java @@ -35,39 +35,57 @@ void FillCommerceApiSettings() throws InterruptedException { try { // Login Thread.sleep(TWO_SECONDS); + takeScreenshot(sfccAdminLoginPage); sfccAdminLoginPage.setUsername(SFCC_AUTOMATED_TESTS_USERNAME); + takeScreenshot(sfccAdminLoginPage); sfccAdminLoginPage.clickSkipForNowButton(); Thread.sleep(TWO_SECONDS); + takeScreenshot(sfccAdminLoginPage); sfccAdminLoginPage.setPassword(SFCC_AUTOMATED_TESTS_PASSWORD); + takeScreenshot(sfccAdminLoginPage); sfccAdminLoginPage.clickSkipForNowButton(); Thread.sleep(TWO_SECONDS); + takeScreenshot(sfccAdminLoginPage); sfccAdminVerifyPage.fillAuthenticatorForm(SFCC_AUTOMATED_TESTS_SECRET_KEY); + takeScreenshot(sfccAdminLoginPage); sfccAdminVerifyPage.clickSkipForNowButton(); // Feature Switches Thread.sleep(TEN_SECONDS); + takeScreenshot(sfccAdminLoginPage); sfccNavigationPage.clickSkipForNowButton(); + takeScreenshot(sfccAdminLoginPage); sfccNavigationPage.clickAdministrationSubMenus(); + takeScreenshot(sfccAdminLoginPage); try { sfccNavigationPage.clickViewFeatureSwitchPrefsSubMenus(); } catch (Exception e) { sfccNavigationPage.clickSkipForNowButton(); + takeScreenshot(sfccAdminLoginPage); sfccNavigationPage.clickAdministrationSubMenus(); + takeScreenshot(sfccAdminLoginPage); sfccNavigationPage.clickViewFeatureSwitchPrefsSubMenus(); } Thread.sleep(TWO_SECONDS); + takeScreenshot(sfccAdminLoginPage); featureSwitchesPage.clickSkipForNowButton(); + takeScreenshot(sfccAdminLoginPage); Thread.sleep(TWO_SECONDS); + takeScreenshot(sfccAdminLoginPage); featureSwitchesPage.enableScapiHookExecutionFlag(); Thread.sleep(TWO_SECONDS); + takeScreenshot(sfccAdminLoginPage); featureSwitchesPage.clickSkipForNowButton(); + takeScreenshot(sfccAdminLoginPage); Thread.sleep(TWO_SECONDS); + takeScreenshot(sfccAdminLoginPage); featureSwitchesPage.clickApplyButton(); return; } catch (Exception e) { logger.error("Error while filling Commerce API settings", e); currentError++; } + takeScreenshot(sfccAdminLoginPage); } while (currentError < maxError); } diff --git a/playwright_tools/src/test/java/com/mirakl/sfcc/PlaywrightBase.java b/playwright_tools/src/test/java/com/mirakl/sfcc/PlaywrightBase.java index 1550bcf..b5af79e 100644 --- a/playwright_tools/src/test/java/com/mirakl/sfcc/PlaywrightBase.java +++ b/playwright_tools/src/test/java/com/mirakl/sfcc/PlaywrightBase.java @@ -2,8 +2,12 @@ import com.microsoft.playwright.*; import org.junit.jupiter.api.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; +import java.util.Arrays; +import java.util.Base64; import java.util.List; import java.util.concurrent.TimeUnit; @@ -12,6 +16,7 @@ @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class PlaywrightBase { + private static final Logger logger = LoggerFactory.getLogger(PlaywrightBase.class); protected static final long TWO_SECONDS = TimeUnit.SECONDS.toMillis(2); protected static final long TEN_SECONDS = TimeUnit.SECONDS.toMillis(10); protected static final List BROWSER_DEFAULT_ARGS = List.of("--start-maximized", "--start-fullscreen", "--incognito", "--disable-save-password-bubble"); @@ -45,6 +50,12 @@ protected static void clickSkipForNowBtn(Page page) { page.keyboard().press("Tab"); } + protected static void takeScreenshot(BasePage basePage){ + byte[] buffer = basePage.getPage().screenshot(); + logger.info("Screenshot taken from the page" , Arrays.stream(Thread.currentThread().getStackTrace()).map(StackTraceElement::toString).toArray()); + logger.info(Base64.getEncoder().encodeToString(buffer)); + } + @BeforeAll static void launchBrowser() { playwright = create();