From db539d46bf590ed798a121b02166b615f30d7d0c Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Fri, 17 Feb 2023 18:55:26 +0530 Subject: [PATCH 01/20] [Binaries] Ignore Binary setup --- .../java/io/github/selcukes/core/driver/BrowserOptions.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java b/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java index 463b05f1d..2d03fec2f 100644 --- a/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java +++ b/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java @@ -72,7 +72,7 @@ public static Capabilities getBrowserOptions(DriverType driverType, boolean igno } public static void setBinaries(DriverType driverType) { - switch (driverType) { + /*switch (driverType) { case EDGE: WebDriverBinary.edgeDriver().setup(); break; @@ -84,6 +84,6 @@ public static void setBinaries(DriverType driverType) { break; default: WebDriverBinary.chromeDriver().setup(); - } + }*/ } } From c1c36e857e95aa5f841497ee4d3009c68d075138 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Fri, 17 Feb 2023 20:49:32 +0530 Subject: [PATCH 02/20] Parse Excel as Map of Maps #165 --- .../selcukes/databind/excel/ExcelMapper.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/selcukes-databind/src/main/java/io/github/selcukes/databind/excel/ExcelMapper.java b/selcukes-databind/src/main/java/io/github/selcukes/databind/excel/ExcelMapper.java index 7b2904fe1..9f688df37 100644 --- a/selcukes-databind/src/main/java/io/github/selcukes/databind/excel/ExcelMapper.java +++ b/selcukes-databind/src/main/java/io/github/selcukes/databind/excel/ExcelMapper.java @@ -18,8 +18,21 @@ import io.github.selcukes.databind.exception.DataMapperException; import io.github.selcukes.databind.utils.DataFileHelper; +import io.github.selcukes.databind.utils.Streams; import lombok.experimental.UtilityClass; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.FormulaEvaluator; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import java.io.File; +import java.io.FileInputStream; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -28,6 +41,9 @@ */ @UtilityClass public class ExcelMapper { + private static final DataFormatter DATA_FORMATTER = new DataFormatter(); + private static FormulaEvaluator formulaEvaluator; + /** * Parses the Excel file to an Entity Class. It takes a class as input and * returns a stream of objects of that class @@ -48,4 +64,41 @@ public Stream parse(final Class entityClass) { ExcelParser excelMapper = new ExcelParser<>(entityClass); return excelMapper.parse(dataFile.getPath()); } + + /** + * It creates a workbook from the file, creates a formula evaluator, and + * then creates a map of sheet names to a list of maps of column names to + * cell values + * + * @param file The file to be parsed. + * @return A map of sheet names to a list of maps of column names to + * cell values. + */ + public Map>> parse(File file) { + try (var workbook = WorkbookFactory.create(new FileInputStream(file))) { + formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator(); + return Streams.of(workbook.iterator()) + .collect(Collectors.toMap(Sheet::getSheetName, sheet -> Streams.of(sheet.iterator()) + .skip(1) + .map(ExcelMapper::readRow) + .collect(Collectors.toList()), + (k, v) -> k, LinkedHashMap::new)); + } catch (Exception e) { + throw new DataMapperException("Unable to parse Excel file " + file.getAbsolutePath(), e); + } + + } + + private Map readRow(Row row) { + return Streams.of(row.iterator()) + .collect(Collectors.toMap(cell -> cell.getSheet().getRow(0) + .getCell(cell.getColumnIndex()).getStringCellValue(), + cell -> { + if (cell.getCellType().equals(CellType.FORMULA)) { + return DATA_FORMATTER.formatCellValue(cell, formulaEvaluator); + } else { + return DATA_FORMATTER.formatCellValue(cell); + } + }, (k, v) -> k, LinkedHashMap::new)); + } } From 0f497b5505cf211dfcbb62018f534d831d49e89a Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 11:29:41 +0530 Subject: [PATCH 03/20] Parse Excel as Map of Maps #165 --- .../io/github/selcukes/excel/ExcelUtils.java | 142 +++++++----------- .../src/test/resources/TestData.xlsx | Bin 13345 -> 13424 bytes .../src/test/resources/features/Yahoo.feature | 5 +- 3 files changed, 57 insertions(+), 90 deletions(-) diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index 2340477ea..e3e2c3db3 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -18,6 +18,9 @@ import io.github.selcukes.commons.config.ConfigFactory; import io.github.selcukes.commons.exception.ExcelConfigException; +import io.github.selcukes.commons.helper.FileHelper; +import io.github.selcukes.databind.excel.ExcelMapper; +import io.github.selcukes.databind.utils.StringHelper; import lombok.CustomLog; import lombok.experimental.UtilityClass; @@ -28,129 +31,92 @@ import java.util.Map; import java.util.stream.Collectors; +import static java.util.Optional.ofNullable; + @UtilityClass @CustomLog public class ExcelUtils { static final String NAME_SEPARATOR = "::"; - static final List runScenarios = new ArrayList<>(); + static List runScenarios = new ArrayList<>(); + private static final String TEST = "Test"; private static final String RUN = "Run"; private static final String HYPHEN = " - "; private static final String EXAMPLE = " - Example"; - private static final Map>> allSheetsDataMap = new LinkedHashMap<>(); private static final String TEST_SUITE_RUNNER_SHEET = ConfigFactory.getConfig().getExcel().get("suiteName"); - private static final List IGNORE_SHEETS = new ArrayList<>( - Arrays.asList("Master", "Smoke", "Regression", "StaticData")); - private static Map>> allSheetsMap = new LinkedHashMap<>(); - - public static void initTestRunner() { - ExcelReader excelReader = new ExcelReader( - ConfigFactory.getConfig().getExcel().get("fileName")); + private static final List IGNORE_SHEETS = new ArrayList<>(Arrays.asList("Master", "Smoke", "Regression", "StaticData")); + private static Map>> excelData = new LinkedHashMap<>(); - // Store all sheets data - allSheetsMap = excelReader.getAllSheetsDataMap(); - - // Replace Empty test name with previous row test name and if it is - // examples test then add Example row - allSheetsMap.keySet().forEach(sheet -> allSheetsDataMap.put(sheet, modifySheetFirstColumn(sheet))); + public void initTestRunner() { + var filePath = FileHelper.loadResource(ConfigFactory.getConfig().getExcel().get("fileName")); + excelData = ExcelMapper.parse(filePath); IGNORE_SHEETS.remove(TEST_SUITE_RUNNER_SHEET); - logger.debug(() -> "Using excel runner sheet : " + TEST_SUITE_RUNNER_SHEET); - - // Filter runOnly Tests - Map>> allSheetsModifiedMap = allSheetsDataMap.keySet().stream() - .filter(s -> !IGNORE_SHEETS.contains(s)) - .collect(Collectors.toMap(sheet -> sheet, sheet -> allSheetsDataMap.get(sheet).stream().skip(1) - .filter(row -> { - int exeStatus = allSheetsDataMap.get(sheet).get(0).indexOf(RUN); - return row.get(exeStatus).equalsIgnoreCase("yes"); - }).collect(Collectors.toList()))); - - // Stores FeatureName::Tests from master sheet - List masterList = allSheetsModifiedMap.get(TEST_SUITE_RUNNER_SHEET).stream() - .map(row -> row.get(1) + NAME_SEPARATOR + row.get(2)).collect(Collectors.toList()); - - if (TEST_SUITE_RUNNER_SHEET.equalsIgnoreCase("Master")) { - allSheetsModifiedMap.keySet().stream().skip(1).forEach( - sheet -> allSheetsModifiedMap.get(sheet).stream().filter(row -> anyMatch(masterList, row.get(0))) - .forEach(row -> runScenarios.add(row.get(0)))); - } else { - runScenarios.addAll(masterList); + var masterList = new ArrayList(); + var dataList = new ArrayList(); + excelData.entrySet().stream() + .filter(entry -> !IGNORE_SHEETS.contains(entry.getKey())) + .forEach(entry -> modifyFirstColumnData(entry.getValue(), + entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "Screen" : TEST, + entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "" : "Example")); + + for (var entry : excelData.entrySet()) { + if (!IGNORE_SHEETS.contains(entry.getKey())) { + for (var map : entry.getValue()) { + if (map.get(RUN).equalsIgnoreCase("Yes")) { + if (entry.getKey().equalsIgnoreCase(TEST_SUITE_RUNNER_SHEET)) { + masterList.add(map.get("Feature") + NAME_SEPARATOR + map.get(TEST)); + } else { + dataList.add(map.get(TEST)); + } + } + } + } } + runScenarios = dataList.stream().filter(name -> anyMatch(masterList, name)) + .collect(Collectors.toList()); + runScenarios.forEach(System.out::println); } - public static Map getTestDataAsMap(String testName) { + public Map getTestDataAsMap(String testName) { + logger.debug(() -> "TestName:" + testName); - String testSheetName = getTestSheetName(testName); + String testSheetName = testName.split(NAME_SEPARATOR)[0]; logger.debug(() -> "TestSheetName:" + testSheetName); - - List> listRow = allSheetsDataMap.get(testSheetName); - int testRowIndex = getColumnData(listRow, 0).indexOf(testName); - Map testDataRowMap = new LinkedHashMap<>(); - if (testRowIndex < 0) { + var rowTestData = excelData.get(testSheetName).parallelStream() + .filter(row -> row.get(TEST).equalsIgnoreCase(testName)) + .findFirst(); + if (rowTestData.isPresent()) { + return rowTestData.get(); + } else { throw new ExcelConfigException("Unable to read Test Row for the test name:" + testName); } - for (int i = 0; i < getRowData(listRow, 0).size(); i++) { - // Adding Key as Column Header and Value as Test Data Row value - testDataRowMap.put(getRowData(allSheetsDataMap.get(testSheetName), 0).get(i), - getRowData(listRow, testRowIndex).get(i)); - } - return testDataRowMap; - } - - private static List getRowData(List> rowList, int rowIndex) { - return new ArrayList<>(rowList.get(rowIndex)); - } - - private static String getTestSheetName(String testName) { - String tests = testName.split(NAME_SEPARATOR)[1]; - - List> masterSheetList = allSheetsDataMap.get(TEST_SUITE_RUNNER_SHEET); - int index = getColumnData(masterSheetList, 2).indexOf(tests); - if (index < 0) { - int i = tests.lastIndexOf(HYPHEN.trim()); - if (i > 0 && tests.substring(i).trim().startsWith(EXAMPLE.trim())) { - tests = tests.substring(0, i - 1); - } - index = getColumnData(masterSheetList, 2).indexOf(tests); - if (index < 0) { - throw new ExcelConfigException("Unable to read SheetName for the given testName:" + testName); - } - } - - return masterSheetList.get(index).get(0); - } - - private static List getColumnData(List> sheetDataList, int columnIndex) { - return sheetDataList.stream().map(row -> row.get(columnIndex)).collect(Collectors.toList()); } - private static boolean anyMatch(List masterList, String testName) { + private boolean anyMatch(List masterList, String testName) { return masterList.stream().anyMatch(name -> { String scenarioName = name + EXAMPLE; return testName.startsWith(scenarioName) || testName.equalsIgnoreCase(name); }); } - private List> modifySheetFirstColumn(String sheetName) { - List> sheetDataList = new ArrayList<>(allSheetsMap.get(sheetName)); + private void modifyFirstColumnData(List> sheetData, String firstColumn, String secondColumn) { String testName = ""; - for (int i = 0; i < sheetDataList.size(); i++) { - if (sheetDataList.get(i).get(0).isEmpty()) { + for (int i = 0; i < sheetData.size(); i++) { + if (StringHelper.isNullOrEmpty(sheetData.get(i).get(firstColumn))) { String newTestName; - if (!sheetName.equalsIgnoreCase(TEST_SUITE_RUNNER_SHEET)) { - if (!sheetDataList.get(i - 1).get(0).startsWith(testName + EXAMPLE)) { - sheetDataList.get(i - 1).set(0, testName + HYPHEN + sheetDataList.get(i - 1).get(1)); + if (!StringHelper.isNullOrEmpty(secondColumn)) { + if (!sheetData.get(i - 1).get(firstColumn).startsWith(testName + EXAMPLE)) { + sheetData.get(i - 1).put(firstColumn, testName + HYPHEN + ofNullable(sheetData.get(i - 1).get(secondColumn)).orElse("")); } - newTestName = testName + HYPHEN + sheetDataList.get(i).get(1); + newTestName = testName + HYPHEN + ofNullable(sheetData.get(i).get(secondColumn)).orElse(""); } else { newTestName = testName; } - sheetDataList.get(i).set(0, newTestName); + sheetData.get(i).put(firstColumn, newTestName); } else { - testName = sheetDataList.get(i).get(0); + testName = sheetData.get(i).get(firstColumn); } } - return sheetDataList; } } diff --git a/selcukes-excel-runner/src/test/resources/TestData.xlsx b/selcukes-excel-runner/src/test/resources/TestData.xlsx index 574b8d208c98af0a98d8d94c8af744c0f032fb54..a7a3ebb5e336be257876e7d939c6118f74f9b771 100644 GIT binary patch delta 4240 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 Date: Sat, 18 Feb 2023 11:40:59 +0530 Subject: [PATCH 04/20] Removed WebDriver Binaries --- selcukes-snapshot/pom.xml | 5 --- .../snapshot/tests/NativeSnapshotTest.java | 38 +++++++++++++++---- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/selcukes-snapshot/pom.xml b/selcukes-snapshot/pom.xml index 532018172..cff8833b3 100644 --- a/selcukes-snapshot/pom.xml +++ b/selcukes-snapshot/pom.xml @@ -29,11 +29,6 @@ io.github.selcukes selcukes-commons - - io.github.selcukes - webdriver-binaries - test - org.testng testng diff --git a/selcukes-snapshot/src/test/java/io/github/selcukes/snapshot/tests/NativeSnapshotTest.java b/selcukes-snapshot/src/test/java/io/github/selcukes/snapshot/tests/NativeSnapshotTest.java index 8f3c96217..30c86f5fc 100644 --- a/selcukes-snapshot/src/test/java/io/github/selcukes/snapshot/tests/NativeSnapshotTest.java +++ b/selcukes-snapshot/src/test/java/io/github/selcukes/snapshot/tests/NativeSnapshotTest.java @@ -17,28 +17,34 @@ package io.github.selcukes.snapshot.tests; import io.github.selcukes.commons.os.Platform; -import io.github.selcukes.wdb.driver.LocalDriver; -import io.github.selcukes.wdb.enums.DriverType; import lombok.CustomLog; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.edge.EdgeDriver; +import org.openqa.selenium.edge.EdgeOptions; +import org.openqa.selenium.remote.Browser; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import static org.openqa.selenium.remote.Browser.CHROME; +import static org.openqa.selenium.remote.Browser.EDGE; + @CustomLog public class NativeSnapshotTest { private static final ThreadLocal LOCAL_DRIVER = new InheritableThreadLocal<>(); @DataProvider public Object[][] driverTypes() { - return new Object[][] { { DriverType.CHROME }, { DriverType.EDGE } }; + return new Object[][]{{CHROME}, {EDGE}}; } @Test(dataProvider = "driverTypes") - public void browserTest(DriverType driverType) { - logger.debug(() -> "DriverType : " + driverType); - setDriver(driverType); + public void browserTest(Browser browser) { + logger.debug(() -> "Browser : " + browser); + setDriver(browser); new HomePage(getDriver()).navigateToHomePage(); } @@ -57,7 +63,23 @@ private WebDriver getDriver() { return LOCAL_DRIVER.get(); } - private void setDriver(DriverType driverType) { - LOCAL_DRIVER.set(new LocalDriver().createWebDriver(driverType, Platform.isLinux())); + private void setDriver(Browser browser) { + LOCAL_DRIVER.set(createWebDriver(browser, Platform.isLinux())); + } + + private WebDriver createWebDriver(Browser browser, boolean headless) { + if (browser.equals(EDGE)) { + EdgeOptions edgeOptions = new EdgeOptions(); + if (headless) { + edgeOptions.addArguments("--headless"); + } + return new EdgeDriver(edgeOptions); + } else { + ChromeOptions chromeOptions = new ChromeOptions(); + if (headless) { + chromeOptions.addArguments("--headless"); + } + return new ChromeDriver(chromeOptions); + } } } From 2e981b16a49638b88d77e3773b5604ef4c36471b Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 13:20:04 +0530 Subject: [PATCH 05/20] Removed WebDriver Binaries --- selcukes-core/pom.xml | 2 +- .../selcukes/core/driver/AppiumManager.java | 5 +- .../selcukes/core/driver/BrowserOptions.java | 99 +++++++++---------- .../selcukes/core/driver/GridRunner.java | 8 +- .../selcukes/core/driver/WebManager.java | 4 +- .../core/tests/unit/ShadowRootTest.java | 10 +- .../core/tests/web/ClassicGridTest.java | 12 +-- .../core/tests/web/EventDriverTest.java | 8 +- .../selcukes/core/tests/web/WebAuthTest.java | 12 ++- .../selcukes/databind/csv/CsvMapper.java | 15 ++- 10 files changed, 84 insertions(+), 91 deletions(-) diff --git a/selcukes-core/pom.xml b/selcukes-core/pom.xml index aeadd372d..c23d0133f 100644 --- a/selcukes-core/pom.xml +++ b/selcukes-core/pom.xml @@ -41,7 +41,7 @@ io.github.selcukes - webdriver-binaries + selcukes-commons org.testng diff --git a/selcukes-core/src/main/java/io/github/selcukes/core/driver/AppiumManager.java b/selcukes-core/src/main/java/io/github/selcukes/core/driver/AppiumManager.java index 73eeb1f97..fe3538462 100644 --- a/selcukes-core/src/main/java/io/github/selcukes/core/driver/AppiumManager.java +++ b/selcukes-core/src/main/java/io/github/selcukes/core/driver/AppiumManager.java @@ -18,7 +18,6 @@ import io.appium.java_client.android.AndroidDriver; import io.github.selcukes.commons.config.ConfigFactory; -import io.github.selcukes.wdb.enums.DriverType; import lombok.CustomLog; import lombok.SneakyThrows; import org.openqa.selenium.Capabilities; @@ -53,7 +52,7 @@ public URL getServiceUrl() { serviceUrl = new URL(ConfigFactory.getConfig().getMobile().getServiceUrl()); } logger.debug(() -> String.format("Using ServiceUrl[%s://%s:%s]", serviceUrl.getProtocol(), serviceUrl.getHost(), - serviceUrl.getPort())); + serviceUrl.getPort())); return serviceUrl; } @@ -62,7 +61,7 @@ public WebDriver createBrowserDriver(String browser) { Capabilities capabilities = AppiumOptions.getUserOptions(); if (capabilities == null) { String platform = ConfigFactory.getConfig().getMobile().getPlatform(); - capabilities = BrowserOptions.getBrowserOptions(DriverType.valueOf(browser), isCloudAppium(), platform); + capabilities = BrowserOptions.getBrowserOptions(BrowserOptions.valueOf(browser), platform); if (isCloudAppium()) { capabilities = capabilities.merge(CloudOptions.getBrowserStackOptions(false)); } diff --git a/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java b/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java index 2d03fec2f..7c8e6d5e4 100644 --- a/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java +++ b/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java @@ -17,8 +17,6 @@ package io.github.selcukes.core.driver; import io.github.selcukes.databind.utils.StringHelper; -import io.github.selcukes.wdb.WebDriverBinary; -import io.github.selcukes.wdb.enums.DriverType; import lombok.experimental.UtilityClass; import org.openqa.selenium.Capabilities; import org.openqa.selenium.chrome.ChromeOptions; @@ -26,64 +24,61 @@ import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.ie.InternetExplorerOptions; +import org.openqa.selenium.remote.Browser; + +import static org.openqa.selenium.remote.Browser.CHROME; +import static org.openqa.selenium.remote.Browser.EDGE; +import static org.openqa.selenium.remote.Browser.FIREFOX; +import static org.openqa.selenium.remote.Browser.IE; @UtilityClass public class BrowserOptions { - public Capabilities getBrowserOptions(DriverType driverType, boolean ignoreBinarySetup) { - return getBrowserOptions(driverType, ignoreBinarySetup, ""); - } - - public static Capabilities getBrowserOptions(DriverType driverType, boolean ignoreBinarySetup, String platform) { + public static Capabilities getBrowserOptions(Browser browser, String platform) { boolean headless = RunMode.isHeadless(); - if (!ignoreBinarySetup) { - setBinaries(driverType); + if (EDGE.equals(browser)) { + EdgeOptions edgeOptions = new EdgeOptions(); + if (headless) { + edgeOptions.addArguments("--headless"); + } + if (!StringHelper.isNullOrEmpty(platform)) { + edgeOptions.setPlatformName(platform); + } + return edgeOptions; + } else if (FIREFOX.equals(browser)) { + FirefoxOptions firefoxOptions = new FirefoxOptions(); + if (headless) { + firefoxOptions.addArguments("--headless"); + } + return firefoxOptions; + } else if (IE.equals(browser)) { + InternetExplorerOptions ieOptions = new InternetExplorerOptions().requireWindowFocus(); + ieOptions.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); + ieOptions.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true); + ieOptions.setCapability("ignoreProtectedModeSettings", true); + ieOptions.setCapability("disable-popup-blocking", true); + ieOptions.setCapability("enablePersistentHover", true); + return ieOptions; } - - switch (driverType) { - case EDGE: - - EdgeOptions edgeOptions = new EdgeOptions(); - edgeOptions.setHeadless(headless); - if (!StringHelper.isNullOrEmpty(platform)) { - edgeOptions.setPlatformName(platform); - } - return edgeOptions; - case FIREFOX: - FirefoxOptions firefoxOptions = new FirefoxOptions(); - firefoxOptions.setHeadless(headless); - return firefoxOptions; - case IEXPLORER: - InternetExplorerOptions ieOptions = new InternetExplorerOptions().requireWindowFocus(); - ieOptions.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); - ieOptions.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true); - ieOptions.setCapability("ignoreProtectedModeSettings", true); - ieOptions.setCapability("disable-popup-blocking", true); - ieOptions.setCapability("enablePersistentHover", true); - return ieOptions; - default: - ChromeOptions chromeOptions = new ChromeOptions(); - chromeOptions.setHeadless(headless); - if (!StringHelper.isNullOrEmpty(platform)) { - chromeOptions.setPlatformName(platform); - } - return chromeOptions; + ChromeOptions chromeOptions = new ChromeOptions(); + if (headless) { + chromeOptions.addArguments("--headless"); + } + if (!StringHelper.isNullOrEmpty(platform)) { + chromeOptions.setPlatformName(platform); } + return chromeOptions; } - public static void setBinaries(DriverType driverType) { - /*switch (driverType) { - case EDGE: - WebDriverBinary.edgeDriver().setup(); - break; - case FIREFOX: - WebDriverBinary.firefoxDriver().setup(); - break; - case IEXPLORER: - WebDriverBinary.ieDriver().setup(); - break; - default: - WebDriverBinary.chromeDriver().setup(); - }*/ + public Browser valueOf(String browserName) { + if (browserName.equalsIgnoreCase("Edge")) { + return EDGE; + } else if (browserName.equalsIgnoreCase("IE")) { + return IE; + } else if (browserName.equalsIgnoreCase("Firefox")) { + return FIREFOX; + } else { + return CHROME; + } } } diff --git a/selcukes-core/src/main/java/io/github/selcukes/core/driver/GridRunner.java b/selcukes-core/src/main/java/io/github/selcukes/core/driver/GridRunner.java index 50a632e2f..58b59287a 100644 --- a/selcukes-core/src/main/java/io/github/selcukes/core/driver/GridRunner.java +++ b/selcukes-core/src/main/java/io/github/selcukes/core/driver/GridRunner.java @@ -16,14 +16,11 @@ package io.github.selcukes.core.driver; -import io.github.selcukes.wdb.enums.DriverType; import lombok.CustomLog; import lombok.experimental.UtilityClass; import org.openqa.selenium.grid.Main; import org.openqa.selenium.net.PortProber; -import java.util.Arrays; - import static io.github.selcukes.core.driver.RunMode.isCloudAppium; import static io.github.selcukes.core.driver.RunMode.isCloudBrowser; import static io.github.selcukes.core.driver.RunMode.isLocalBrowser; @@ -34,14 +31,13 @@ public class GridRunner { static int hubPort; private static boolean isRunning = false; - public synchronized void startSelenium(DriverType... driverType) { + public synchronized void startSelenium() { if (!isCloudBrowser() || !isLocalBrowser()) { logger.info(() -> "Starting Selenium Server ..."); - Arrays.stream(driverType).distinct().forEach(BrowserOptions::setBinaries); hubPort = PortProber.findFreePort(); if (isSeleniumServerNotRunning()) { logger.debug(() -> "Using Free Hub Port: " + hubPort); - Main.main(new String[] { "standalone", "--port", String.valueOf(hubPort) }); + Main.main(new String[]{"standalone", "--port", String.valueOf(hubPort)}); isRunning = true; logger.info(() -> "Selenium Server started..."); } diff --git a/selcukes-core/src/main/java/io/github/selcukes/core/driver/WebManager.java b/selcukes-core/src/main/java/io/github/selcukes/core/driver/WebManager.java index b47c94de4..70e0ec68c 100644 --- a/selcukes-core/src/main/java/io/github/selcukes/core/driver/WebManager.java +++ b/selcukes-core/src/main/java/io/github/selcukes/core/driver/WebManager.java @@ -17,7 +17,6 @@ package io.github.selcukes.core.driver; import io.github.selcukes.commons.config.ConfigFactory; -import io.github.selcukes.wdb.enums.DriverType; import lombok.CustomLog; import lombok.SneakyThrows; import org.openqa.selenium.Capabilities; @@ -40,8 +39,7 @@ public synchronized WebDriver createDriver() { logger.debug(() -> "Initiating New Browser Session..."); Capabilities capabilities = AppiumOptions.getUserOptions(); if (capabilities == null) { - capabilities = BrowserOptions.getBrowserOptions(DriverType.valueOf(browser), - !(isLocalBrowser() || isCloudBrowser())); + capabilities = BrowserOptions.getBrowserOptions(BrowserOptions.valueOf(browser), ""); if (isCloudBrowser()) { capabilities = capabilities.merge(CloudOptions.getBrowserStackOptions(false)); } diff --git a/selcukes-core/src/test/java/io/github/selcukes/core/tests/unit/ShadowRootTest.java b/selcukes-core/src/test/java/io/github/selcukes/core/tests/unit/ShadowRootTest.java index 3340a5bef..f8f759b25 100644 --- a/selcukes-core/src/test/java/io/github/selcukes/core/tests/unit/ShadowRootTest.java +++ b/selcukes-core/src/test/java/io/github/selcukes/core/tests/unit/ShadowRootTest.java @@ -17,11 +17,11 @@ package io.github.selcukes.core.tests.unit; import io.github.selcukes.core.page.WebPage; -import io.github.selcukes.wdb.driver.LocalDriver; -import io.github.selcukes.wdb.enums.DriverType; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -32,7 +32,9 @@ public class ShadowRootTest { @BeforeMethod private void setup() { - driver = new LocalDriver().createWebDriver(DriverType.CHROME); + var options=new ChromeOptions(); + options.addArguments("--headless"); + driver = new ChromeDriver(options); page = new WebPage(driver); } @@ -48,7 +50,7 @@ public void shadowElementTest() { page.open("http://watir.com/examples/shadow_dom.html"); WebElement shadowContent = page.findShadowChild(By.cssSelector("#shadow_host"), - By.cssSelector("#shadow_content")); + By.cssSelector("#shadow_content")); page.assertThat().element(shadowContent).textAs("some text"); } diff --git a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/ClassicGridTest.java b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/ClassicGridTest.java index 4b40ec04b..c3abf6026 100644 --- a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/ClassicGridTest.java +++ b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/ClassicGridTest.java @@ -20,8 +20,8 @@ import io.github.selcukes.commons.config.ConfigFactory; import io.github.selcukes.core.driver.GridRunner; import io.github.selcukes.core.page.Pages; -import io.github.selcukes.wdb.enums.DriverType; import lombok.CustomLog; +import org.openqa.selenium.remote.Browser; import org.testng.annotations.BeforeSuite; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -31,19 +31,19 @@ public class ClassicGridTest { @BeforeSuite public static void beforeSuite() { - GridRunner.startSelenium(DriverType.CHROME, DriverType.EDGE); + GridRunner.startSelenium(); } @DataProvider(parallel = true) public Object[][] driverTypes() { - return new Object[][] { { DriverType.CHROME }, { DriverType.EDGE } + return new Object[][]{{Browser.CHROME}, {Browser.EDGE} }; } @Test(dataProvider = "driverTypes") - public void parallelBrowserTest(DriverType driverType) { - logger.debug(() -> "In Parallel Test for " + driverType.getName()); - ConfigFactory.getConfig().getWeb().setBrowser(driverType.getName()); + public void parallelBrowserTest(Browser driverType) { + logger.debug(() -> "In Parallel Test for " + driverType.browserName()); + ConfigFactory.getConfig().getWeb().setBrowser(driverType.browserName()); Pages.webPage().open("https://www.google.com/") .assertThat().title("Google"); } diff --git a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/EventDriverTest.java b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/EventDriverTest.java index 7244c32bf..22d31ba4d 100644 --- a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/EventDriverTest.java +++ b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/EventDriverTest.java @@ -19,14 +19,14 @@ import io.github.selcukes.commons.helper.FileHelper; import io.github.selcukes.core.page.WebPage; import io.github.selcukes.databind.utils.Clocks; -import io.github.selcukes.wdb.driver.LocalDriver; -import io.github.selcukes.wdb.enums.DriverType; import lombok.CustomLog; import lombok.SneakyThrows; import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -43,7 +43,9 @@ public class EventDriverTest { @BeforeMethod private void setup() { - driver = new LocalDriver().createWebDriver(DriverType.CHROME); + var options = new ChromeOptions(); + options.addArguments("--headless"); + driver = new ChromeDriver(options); page = new WebPage(driver); } diff --git a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/WebAuthTest.java b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/WebAuthTest.java index 193ee2c5a..265593f88 100644 --- a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/WebAuthTest.java +++ b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/WebAuthTest.java @@ -18,11 +18,11 @@ import io.github.selcukes.core.page.WebPage; import io.github.selcukes.core.wait.WaitCondition; -import io.github.selcukes.wdb.driver.LocalDriver; -import io.github.selcukes.wdb.enums.DriverType; import lombok.CustomLog; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -37,7 +37,9 @@ public class WebAuthTest { @BeforeMethod private void setup() { - driver = new LocalDriver().createWebDriver(DriverType.CHROME); + var options = new ChromeOptions(); + options.addArguments("--headless"); + driver = new ChromeDriver(options); page = new WebPage(driver); } @@ -58,11 +60,11 @@ public void testVirtualAuth() { page.enter(By.id("input-email"), randomId); page.click(By.id("register-button")); page.waitFor(ExpectedConditions.textToBePresentInElementLocated( - By.className("popover-body"), "Success! Now try logging in"), 20); + By.className("popover-body"), "Success! Now try logging in"), 20); page.click(By.id("login-button")); page.waitFor(By.xpath("//*[contains(@class,'main-content')]//h3"), "You're logged in!", - WaitCondition.TEXT_TO_BE); + WaitCondition.TEXT_TO_BE); page.removeVirtualAuthenticator(); } diff --git a/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java b/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java index 5c7cb5393..08817ec66 100644 --- a/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java +++ b/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java @@ -32,19 +32,18 @@ public class CsvMapper { /** - * It takes a CSV file, reads it line by line, splits each line by comma, removes the quotes, and returns a list of - * maps + * It takes a CSV file, reads it line by line, splits each line by comma, + * removes the quotes, and returns a list of maps * - * @param filePath The path to the file to be parsed. - * @return A list of maps. + * @param filePath The path to the file to be parsed. + * @return A list of maps. */ public List> parse(Path filePath) { try (var lines = Files.lines(filePath)) { return Streams.toListOfMap(lines.parallel() - .map(line -> - Pattern.compile(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)").splitAsStream(line) - .map(field -> field.replaceAll("^\"|\"$", "")) - .collect(Collectors.toCollection(LinkedList::new))) + .map(line -> Pattern.compile(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)").splitAsStream(line) + .map(field -> field.replaceAll("^\"|\"$", "")) + .collect(Collectors.toCollection(LinkedList::new))) .collect(Collectors.toCollection(LinkedList::new))); } catch (Exception e) { throw new DataMapperException("Failed parsing CSV File: ", e); From ae3e39d522e708d6317f372ff4c8fc1f5c215fb4 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 13:22:49 +0530 Subject: [PATCH 06/20] #165 Removed ExcelReader.java --- .../io/github/selcukes/excel/ExcelReader.java | 80 ------------------- 1 file changed, 80 deletions(-) delete mode 100644 selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelReader.java diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelReader.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelReader.java deleted file mode 100644 index e8e851a68..000000000 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelReader.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) Ramesh Babu Prudhvi. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.github.selcukes.excel; - -import io.github.selcukes.commons.config.ConfigFactory; -import io.github.selcukes.commons.exception.ExcelConfigException; -import io.github.selcukes.databind.utils.Streams; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.DataFormatter; -import org.apache.poi.ss.usermodel.FormulaEvaluator; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.ss.usermodel.WorkbookFactory; - -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class ExcelReader { - private final Workbook workbook; - - public ExcelReader(String fileName) { - this.workbook = getWorkBook(fileName); - } - - private Workbook getWorkBook(String fileName) { - try (Workbook wb = WorkbookFactory.create(Objects.requireNonNull(ConfigFactory.getStream(fileName)))) { - return wb; - } catch (Exception e) { - throw new ExcelConfigException("Failed reading excel file : " + fileName); - } - } - - public Stream getAllSheets() { - return Streams.of(workbook.iterator()); - } - - public Map>> getAllSheetsDataMap() { - return getAllSheets().collect(Collectors.toMap(Sheet::getSheetName, this::getSheetData)); - } - - public List> getSheetData(Sheet sheet) { - return Streams.of(sheet.iterator()) - .map(this::getRowData) - .collect(Collectors.toList()); - } - - private List getRowData(Row row) { - DataFormatter df = new DataFormatter(); - FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator(); - return Streams.of(row.iterator()) - .map(cell -> { - if (cell == null) { - return ""; - } else if (cell.getCellType().equals(CellType.FORMULA)) { - return df.formatCellValue(cell, formulaEvaluator); - } else { - return df.formatCellValue(cell); - } - }).collect(Collectors.toList()); - } - -} From b7fed509af7c3fb18b96c97408783c79db761a10 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 13:25:30 +0530 Subject: [PATCH 07/20] Ignore Edge Test --- .../test/java/io/github/selcukes/tests/WebDriverBinaryTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webdriver-binaries/src/test/java/io/github/selcukes/tests/WebDriverBinaryTest.java b/webdriver-binaries/src/test/java/io/github/selcukes/tests/WebDriverBinaryTest.java index ad0c4e577..fbcc8569d 100644 --- a/webdriver-binaries/src/test/java/io/github/selcukes/tests/WebDriverBinaryTest.java +++ b/webdriver-binaries/src/test/java/io/github/selcukes/tests/WebDriverBinaryTest.java @@ -52,7 +52,7 @@ public void ieDriverTest() { logger.debug(() -> "Binary path for { " + binProp + "} is {" + getProperty(binProp) + "}"); } - @Test + @Test(enabled = false) public void edgeDriverTest() { BinaryInfo binaryInfo = WebDriverBinary.edgeDriver().setup(); From 0ff208ae0206b0d868597d375858492bd92b2114 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 13:30:50 +0530 Subject: [PATCH 08/20] Refactor --- .../selcukes/core/driver/BrowserOptions.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java b/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java index 7c8e6d5e4..32b519589 100644 --- a/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java +++ b/selcukes-core/src/main/java/io/github/selcukes/core/driver/BrowserOptions.java @@ -33,12 +33,14 @@ @UtilityClass public class BrowserOptions { + public static final String HEADLESS = "--headless"; + public static Capabilities getBrowserOptions(Browser browser, String platform) { - boolean headless = RunMode.isHeadless(); + boolean isHeadless = RunMode.isHeadless(); if (EDGE.equals(browser)) { EdgeOptions edgeOptions = new EdgeOptions(); - if (headless) { - edgeOptions.addArguments("--headless"); + if (isHeadless) { + edgeOptions.addArguments(HEADLESS); } if (!StringHelper.isNullOrEmpty(platform)) { edgeOptions.setPlatformName(platform); @@ -46,8 +48,8 @@ public static Capabilities getBrowserOptions(Browser browser, String platform) { return edgeOptions; } else if (FIREFOX.equals(browser)) { FirefoxOptions firefoxOptions = new FirefoxOptions(); - if (headless) { - firefoxOptions.addArguments("--headless"); + if (isHeadless) { + firefoxOptions.addArguments(HEADLESS); } return firefoxOptions; } else if (IE.equals(browser)) { @@ -60,8 +62,8 @@ public static Capabilities getBrowserOptions(Browser browser, String platform) { return ieOptions; } ChromeOptions chromeOptions = new ChromeOptions(); - if (headless) { - chromeOptions.addArguments("--headless"); + if (isHeadless) { + chromeOptions.addArguments(HEADLESS); } if (!StringHelper.isNullOrEmpty(platform)) { chromeOptions.setPlatformName(platform); From 21acbc96380115d88c2722ab9ed7bc61926932f9 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 13:32:37 +0530 Subject: [PATCH 09/20] Refactor --- .../java/io/github/selcukes/databind/excel/ExcelMapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selcukes-databind/src/main/java/io/github/selcukes/databind/excel/ExcelMapper.java b/selcukes-databind/src/main/java/io/github/selcukes/databind/excel/ExcelMapper.java index 9f688df37..e8b15479b 100644 --- a/selcukes-databind/src/main/java/io/github/selcukes/databind/excel/ExcelMapper.java +++ b/selcukes-databind/src/main/java/io/github/selcukes/databind/excel/ExcelMapper.java @@ -74,7 +74,7 @@ public Stream parse(final Class entityClass) { * @return A map of sheet names to a list of maps of column names to * cell values. */ - public Map>> parse(File file) { + public static Map>> parse(File file) { try (var workbook = WorkbookFactory.create(new FileInputStream(file))) { formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator(); return Streams.of(workbook.iterator()) @@ -89,7 +89,7 @@ public Map>> parse(File file) { } - private Map readRow(Row row) { + private static Map readRow(Row row) { return Streams.of(row.iterator()) .collect(Collectors.toMap(cell -> cell.getSheet().getRow(0) .getCell(cell.getColumnIndex()).getStringCellValue(), From 504bdab10cfafd48f6aabd8e1f162421b507f661 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 13:33:40 +0530 Subject: [PATCH 10/20] Refactor --- .../src/main/java/io/github/selcukes/excel/ExcelUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index e3e2c3db3..61bc0e03c 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -46,7 +46,7 @@ public class ExcelUtils { private static final List IGNORE_SHEETS = new ArrayList<>(Arrays.asList("Master", "Smoke", "Regression", "StaticData")); private static Map>> excelData = new LinkedHashMap<>(); - public void initTestRunner() { + public static void initTestRunner() { var filePath = FileHelper.loadResource(ConfigFactory.getConfig().getExcel().get("fileName")); excelData = ExcelMapper.parse(filePath); From c5eab57b293d0d3e869ee1cd6d3cb3cbe25ee196 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 13:36:05 +0530 Subject: [PATCH 11/20] Refactor --- .../src/main/java/io/github/selcukes/excel/ExcelUtils.java | 1 - 1 file changed, 1 deletion(-) diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index 61bc0e03c..e9b1529f8 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -75,7 +75,6 @@ public static void initTestRunner() { } runScenarios = dataList.stream().filter(name -> anyMatch(masterList, name)) .collect(Collectors.toList()); - runScenarios.forEach(System.out::println); } public Map getTestDataAsMap(String testName) { From 81cc1f90b6b1ed927fcaacfe716b3bb3a329c717 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 13:57:08 +0530 Subject: [PATCH 12/20] Refactor --- .../main/java/io/github/selcukes/databind/csv/CsvMapper.java | 2 +- .../src/main/java/io/github/selcukes/excel/ExcelUtils.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java b/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java index 08817ec66..2d916a37f 100644 --- a/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java +++ b/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java @@ -41,7 +41,7 @@ public class CsvMapper { public List> parse(Path filePath) { try (var lines = Files.lines(filePath)) { return Streams.toListOfMap(lines.parallel() - .map(line -> Pattern.compile(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)").splitAsStream(line) + .map(line -> Pattern.compile(",(?=(?:(?:[^\"]*\"){2})*[^\"]*$)").splitAsStream(line) .map(field -> field.replaceAll("^\"|\"$", "")) .collect(Collectors.toCollection(LinkedList::new))) .collect(Collectors.toCollection(LinkedList::new))); diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index e9b1529f8..6c1925647 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -88,7 +88,7 @@ public Map getTestDataAsMap(String testName) { if (rowTestData.isPresent()) { return rowTestData.get(); } else { - throw new ExcelConfigException("Unable to read Test Row for the test name:" + testName); + throw new ExcelConfigException(String.format("Unable to read Test Data Row for [%s]", testName)); } } From 535cac8465e9caaa8122641fb041e0847b5eb789 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 14:21:53 +0530 Subject: [PATCH 13/20] Refactor --- .../main/java/io/github/selcukes/databind/csv/CsvMapper.java | 4 ++-- .../test/java/io/github/selcukes/databind/tests/CsvTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java b/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java index 2d916a37f..dcfa2b057 100644 --- a/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java +++ b/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java @@ -41,8 +41,8 @@ public class CsvMapper { public List> parse(Path filePath) { try (var lines = Files.lines(filePath)) { return Streams.toListOfMap(lines.parallel() - .map(line -> Pattern.compile(",(?=(?:(?:[^\"]*\"){2})*[^\"]*$)").splitAsStream(line) - .map(field -> field.replaceAll("^\"|\"$", "")) + .map(line -> Pattern.compile(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)").splitAsStream(line) + .map(field -> field.trim().replace("\"", "")) .collect(Collectors.toCollection(LinkedList::new))) .collect(Collectors.toCollection(LinkedList::new))); } catch (Exception e) { diff --git a/selcukes-databind/src/test/java/io/github/selcukes/databind/tests/CsvTest.java b/selcukes-databind/src/test/java/io/github/selcukes/databind/tests/CsvTest.java index 3ec2a020f..4ef732b81 100644 --- a/selcukes-databind/src/test/java/io/github/selcukes/databind/tests/CsvTest.java +++ b/selcukes-databind/src/test/java/io/github/selcukes/databind/tests/CsvTest.java @@ -35,7 +35,7 @@ public void csvDataReaderTest() { String phone = map.get("Phone "); return map.get("Country").substring(0, 3).toUpperCase() + "_DDA_" + phone.substring(phone.length() - 4); })); - System.out.println(csvData); + csvData.forEach(System.out::println); } } From 101345d04ab7cce057582f1d4c8ef64d5d2f36c4 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 14:23:00 +0530 Subject: [PATCH 14/20] Revert --- .../main/java/io/github/selcukes/databind/csv/CsvMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java b/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java index dcfa2b057..08817ec66 100644 --- a/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java +++ b/selcukes-databind/src/main/java/io/github/selcukes/databind/csv/CsvMapper.java @@ -42,7 +42,7 @@ public List> parse(Path filePath) { try (var lines = Files.lines(filePath)) { return Streams.toListOfMap(lines.parallel() .map(line -> Pattern.compile(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)").splitAsStream(line) - .map(field -> field.trim().replace("\"", "")) + .map(field -> field.replaceAll("^\"|\"$", "")) .collect(Collectors.toCollection(LinkedList::new))) .collect(Collectors.toCollection(LinkedList::new))); } catch (Exception e) { From 226f08bba925c164934029416f9649ab47264ece Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 14:29:31 +0530 Subject: [PATCH 15/20] Refactor --- .../main/java/io/github/selcukes/excel/ExcelUtils.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index 6c1925647..cda2e4d85 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -52,14 +52,18 @@ public static void initTestRunner() { excelData = ExcelMapper.parse(filePath); IGNORE_SHEETS.remove(TEST_SUITE_RUNNER_SHEET); logger.debug(() -> "Using excel runner sheet : " + TEST_SUITE_RUNNER_SHEET); - var masterList = new ArrayList(); - var dataList = new ArrayList(); + excelData.entrySet().stream() .filter(entry -> !IGNORE_SHEETS.contains(entry.getKey())) .forEach(entry -> modifyFirstColumnData(entry.getValue(), entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "Screen" : TEST, entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "" : "Example")); + filterScenariosToRun(); + } + private void filterScenariosToRun() { + var masterList = new ArrayList(); + var dataList = new ArrayList(); for (var entry : excelData.entrySet()) { if (!IGNORE_SHEETS.contains(entry.getKey())) { for (var map : entry.getValue()) { From e26b074579eccc323e962c5e0ee252951ba55d18 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 14:43:14 +0530 Subject: [PATCH 16/20] Refactor --- .../main/java/io/github/selcukes/excel/ExcelUtils.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index cda2e4d85..ad8f5773d 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -61,7 +61,7 @@ public static void initTestRunner() { filterScenariosToRun(); } - private void filterScenariosToRun() { + private static List getScenariosToRun() { var masterList = new ArrayList(); var dataList = new ArrayList(); for (var entry : excelData.entrySet()) { @@ -77,10 +77,14 @@ private void filterScenariosToRun() { } } } - runScenarios = dataList.stream().filter(name -> anyMatch(masterList, name)) + return dataList.stream().filter(name -> anyMatch(masterList, name)) .collect(Collectors.toList()); } + private static void filterScenariosToRun() { + runScenarios = getScenariosToRun(); + } + public Map getTestDataAsMap(String testName) { logger.debug(() -> "TestName:" + testName); From 72d01378888e60bcef74e52d735d2c1cade3fffd Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 15:01:35 +0530 Subject: [PATCH 17/20] Refactor --- .../src/main/java/io/github/selcukes/excel/ExcelUtils.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index ad8f5773d..2a4183186 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -58,7 +58,7 @@ public static void initTestRunner() { .forEach(entry -> modifyFirstColumnData(entry.getValue(), entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "Screen" : TEST, entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "" : "Example")); - filterScenariosToRun(); + runScenarios = getScenariosToRun(); } private static List getScenariosToRun() { @@ -81,10 +81,6 @@ private static List getScenariosToRun() { .collect(Collectors.toList()); } - private static void filterScenariosToRun() { - runScenarios = getScenariosToRun(); - } - public Map getTestDataAsMap(String testName) { logger.debug(() -> "TestName:" + testName); From 59429a2215fda2814ece7fbb0f9eb6a52c97f7ed Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 15:09:42 +0530 Subject: [PATCH 18/20] Refactor --- .../io/github/selcukes/excel/ExcelUtils.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index 2a4183186..fbc0ffd7e 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -64,19 +64,17 @@ public static void initTestRunner() { private static List getScenariosToRun() { var masterList = new ArrayList(); var dataList = new ArrayList(); - for (var entry : excelData.entrySet()) { - if (!IGNORE_SHEETS.contains(entry.getKey())) { - for (var map : entry.getValue()) { - if (map.get(RUN).equalsIgnoreCase("Yes")) { - if (entry.getKey().equalsIgnoreCase(TEST_SUITE_RUNNER_SHEET)) { - masterList.add(map.get("Feature") + NAME_SEPARATOR + map.get(TEST)); - } else { - dataList.add(map.get(TEST)); - } + excelData.forEach((key, value) -> { + if (!IGNORE_SHEETS.contains(key)) { + value.stream().filter(entry -> entry.get(RUN).equalsIgnoreCase("Yes")).forEach(entry -> { + if (key.equalsIgnoreCase(TEST_SUITE_RUNNER_SHEET)) { + masterList.add(entry.get("Feature") + NAME_SEPARATOR + entry.get(TEST)); + } else { + dataList.add(entry.get(TEST)); } - } + }); } - } + }); return dataList.stream().filter(name -> anyMatch(masterList, name)) .collect(Collectors.toList()); } From bf411d276c4e03ad766d5dc794c51986eadebb21 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 15:13:19 +0530 Subject: [PATCH 19/20] Code Format changes --- .../selcukes/core/driver/AppiumManager.java | 2 +- .../selcukes/core/driver/GridRunner.java | 2 +- .../core/tests/unit/ShadowRootTest.java | 4 +-- .../core/tests/web/ClassicGridTest.java | 2 +- .../selcukes/core/tests/web/WebAuthTest.java | 4 +-- .../io/github/selcukes/excel/ExcelUtils.java | 25 +++++++++++-------- .../snapshot/tests/NativeSnapshotTest.java | 2 +- 7 files changed, 22 insertions(+), 19 deletions(-) diff --git a/selcukes-core/src/main/java/io/github/selcukes/core/driver/AppiumManager.java b/selcukes-core/src/main/java/io/github/selcukes/core/driver/AppiumManager.java index fe3538462..4797e96d2 100644 --- a/selcukes-core/src/main/java/io/github/selcukes/core/driver/AppiumManager.java +++ b/selcukes-core/src/main/java/io/github/selcukes/core/driver/AppiumManager.java @@ -52,7 +52,7 @@ public URL getServiceUrl() { serviceUrl = new URL(ConfigFactory.getConfig().getMobile().getServiceUrl()); } logger.debug(() -> String.format("Using ServiceUrl[%s://%s:%s]", serviceUrl.getProtocol(), serviceUrl.getHost(), - serviceUrl.getPort())); + serviceUrl.getPort())); return serviceUrl; } diff --git a/selcukes-core/src/main/java/io/github/selcukes/core/driver/GridRunner.java b/selcukes-core/src/main/java/io/github/selcukes/core/driver/GridRunner.java index 58b59287a..517eb3c8f 100644 --- a/selcukes-core/src/main/java/io/github/selcukes/core/driver/GridRunner.java +++ b/selcukes-core/src/main/java/io/github/selcukes/core/driver/GridRunner.java @@ -37,7 +37,7 @@ public synchronized void startSelenium() { hubPort = PortProber.findFreePort(); if (isSeleniumServerNotRunning()) { logger.debug(() -> "Using Free Hub Port: " + hubPort); - Main.main(new String[]{"standalone", "--port", String.valueOf(hubPort)}); + Main.main(new String[] { "standalone", "--port", String.valueOf(hubPort) }); isRunning = true; logger.info(() -> "Selenium Server started..."); } diff --git a/selcukes-core/src/test/java/io/github/selcukes/core/tests/unit/ShadowRootTest.java b/selcukes-core/src/test/java/io/github/selcukes/core/tests/unit/ShadowRootTest.java index f8f759b25..0522810af 100644 --- a/selcukes-core/src/test/java/io/github/selcukes/core/tests/unit/ShadowRootTest.java +++ b/selcukes-core/src/test/java/io/github/selcukes/core/tests/unit/ShadowRootTest.java @@ -32,7 +32,7 @@ public class ShadowRootTest { @BeforeMethod private void setup() { - var options=new ChromeOptions(); + var options = new ChromeOptions(); options.addArguments("--headless"); driver = new ChromeDriver(options); page = new WebPage(driver); @@ -50,7 +50,7 @@ public void shadowElementTest() { page.open("http://watir.com/examples/shadow_dom.html"); WebElement shadowContent = page.findShadowChild(By.cssSelector("#shadow_host"), - By.cssSelector("#shadow_content")); + By.cssSelector("#shadow_content")); page.assertThat().element(shadowContent).textAs("some text"); } diff --git a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/ClassicGridTest.java b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/ClassicGridTest.java index c3abf6026..ac8086d74 100644 --- a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/ClassicGridTest.java +++ b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/ClassicGridTest.java @@ -36,7 +36,7 @@ public static void beforeSuite() { @DataProvider(parallel = true) public Object[][] driverTypes() { - return new Object[][]{{Browser.CHROME}, {Browser.EDGE} + return new Object[][] { { Browser.CHROME }, { Browser.EDGE } }; } diff --git a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/WebAuthTest.java b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/WebAuthTest.java index 265593f88..f90fc15c0 100644 --- a/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/WebAuthTest.java +++ b/selcukes-core/src/test/java/io/github/selcukes/core/tests/web/WebAuthTest.java @@ -60,11 +60,11 @@ public void testVirtualAuth() { page.enter(By.id("input-email"), randomId); page.click(By.id("register-button")); page.waitFor(ExpectedConditions.textToBePresentInElementLocated( - By.className("popover-body"), "Success! Now try logging in"), 20); + By.className("popover-body"), "Success! Now try logging in"), 20); page.click(By.id("login-button")); page.waitFor(By.xpath("//*[contains(@class,'main-content')]//h3"), "You're logged in!", - WaitCondition.TEXT_TO_BE); + WaitCondition.TEXT_TO_BE); page.removeVirtualAuthenticator(); } diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index fbc0ffd7e..045f53b2d 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -43,7 +43,8 @@ public class ExcelUtils { private static final String HYPHEN = " - "; private static final String EXAMPLE = " - Example"; private static final String TEST_SUITE_RUNNER_SHEET = ConfigFactory.getConfig().getExcel().get("suiteName"); - private static final List IGNORE_SHEETS = new ArrayList<>(Arrays.asList("Master", "Smoke", "Regression", "StaticData")); + private static final List IGNORE_SHEETS = new ArrayList<>( + Arrays.asList("Master", "Smoke", "Regression", "StaticData")); private static Map>> excelData = new LinkedHashMap<>(); public static void initTestRunner() { @@ -56,8 +57,8 @@ public static void initTestRunner() { excelData.entrySet().stream() .filter(entry -> !IGNORE_SHEETS.contains(entry.getKey())) .forEach(entry -> modifyFirstColumnData(entry.getValue(), - entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "Screen" : TEST, - entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "" : "Example")); + entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "Screen" : TEST, + entry.getKey().equals(TEST_SUITE_RUNNER_SHEET) ? "" : "Example")); runScenarios = getScenariosToRun(); } @@ -66,13 +67,14 @@ private static List getScenariosToRun() { var dataList = new ArrayList(); excelData.forEach((key, value) -> { if (!IGNORE_SHEETS.contains(key)) { - value.stream().filter(entry -> entry.get(RUN).equalsIgnoreCase("Yes")).forEach(entry -> { - if (key.equalsIgnoreCase(TEST_SUITE_RUNNER_SHEET)) { - masterList.add(entry.get("Feature") + NAME_SEPARATOR + entry.get(TEST)); - } else { - dataList.add(entry.get(TEST)); - } - }); + value.stream().filter(entry -> entry.get(RUN).equalsIgnoreCase("Yes")) + .forEach(entry -> { + if (key.equalsIgnoreCase(TEST_SUITE_RUNNER_SHEET)) { + masterList.add(entry.get("Feature") + NAME_SEPARATOR + entry.get(TEST)); + } else { + dataList.add(entry.get(TEST)); + } + }); } }); return dataList.stream().filter(name -> anyMatch(masterList, name)) @@ -108,7 +110,8 @@ private void modifyFirstColumnData(List> sheetData, String f String newTestName; if (!StringHelper.isNullOrEmpty(secondColumn)) { if (!sheetData.get(i - 1).get(firstColumn).startsWith(testName + EXAMPLE)) { - sheetData.get(i - 1).put(firstColumn, testName + HYPHEN + ofNullable(sheetData.get(i - 1).get(secondColumn)).orElse("")); + sheetData.get(i - 1).put(firstColumn, + testName + HYPHEN + ofNullable(sheetData.get(i - 1).get(secondColumn)).orElse("")); } newTestName = testName + HYPHEN + ofNullable(sheetData.get(i).get(secondColumn)).orElse(""); } else { diff --git a/selcukes-snapshot/src/test/java/io/github/selcukes/snapshot/tests/NativeSnapshotTest.java b/selcukes-snapshot/src/test/java/io/github/selcukes/snapshot/tests/NativeSnapshotTest.java index 30c86f5fc..64249b63e 100644 --- a/selcukes-snapshot/src/test/java/io/github/selcukes/snapshot/tests/NativeSnapshotTest.java +++ b/selcukes-snapshot/src/test/java/io/github/selcukes/snapshot/tests/NativeSnapshotTest.java @@ -38,7 +38,7 @@ public class NativeSnapshotTest { @DataProvider public Object[][] driverTypes() { - return new Object[][]{{CHROME}, {EDGE}}; + return new Object[][] { { CHROME }, { EDGE } }; } @Test(dataProvider = "driverTypes") From 1fa0eeaa3525da09d7bd181c4fbbba1715cc8293 Mon Sep 17 00:00:00 2001 From: Ramesh Babu Date: Sat, 18 Feb 2023 15:20:36 +0530 Subject: [PATCH 20/20] Code Format changes --- .../java/io/github/selcukes/excel/ExcelUtils.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java index 045f53b2d..428ee5af6 100644 --- a/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java +++ b/selcukes-excel-runner/src/main/java/io/github/selcukes/excel/ExcelUtils.java @@ -65,19 +65,24 @@ public static void initTestRunner() { private static List getScenariosToRun() { var masterList = new ArrayList(); var dataList = new ArrayList(); + excelData.forEach((key, value) -> { if (!IGNORE_SHEETS.contains(key)) { - value.stream().filter(entry -> entry.get(RUN).equalsIgnoreCase("Yes")) + value.stream() + .filter(entry -> entry.get(RUN).equalsIgnoreCase("Yes")) .forEach(entry -> { + var testName = entry.get(TEST); if (key.equalsIgnoreCase(TEST_SUITE_RUNNER_SHEET)) { - masterList.add(entry.get("Feature") + NAME_SEPARATOR + entry.get(TEST)); + masterList.add(entry.get("Feature") + NAME_SEPARATOR + testName); } else { - dataList.add(entry.get(TEST)); + dataList.add(testName); } }); } }); - return dataList.stream().filter(name -> anyMatch(masterList, name)) + + return dataList.stream() + .filter(name -> anyMatch(masterList, name)) .collect(Collectors.toList()); }