classResu
// specified CSS class
.append("| ").append(methodName)
.append(" | ") // Table cell with a hyperlink
- .append("").append(String.format("%.2f", scenarioDurationMin)).append(" | "); // Table cell with
- // scenario duration
+ .append("").append(String.format("%.2f", scenarioDurationMin)).append(" | "); // Table
+ // cell
+ // with
+ // scenario duration
scenarioIndex++;
}
@@ -426,10 +458,6 @@ protected void writeScenarioDetails() {
}
}
- /**
- * Writes the scenario details for the results of a given state for a single
- * test.
- */
private int writeScenarioDetails(List classResults, int startingScenarioIndex) {
int scenarioIndex = startingScenarioIndex;
for (ClassResult classResult : classResults) {
@@ -451,9 +479,6 @@ private int writeScenarioDetails(List classResults, int startingSce
return scenarioIndex - startingScenarioIndex;
}
- /**
- * Writes the details for an individual test scenario.
- */
private void writeScenario(int scenarioIndex, String label, ITestResult result) {
writer.print(" getTestResults() {
}
}
+ private static Set getKnownIssueSubset(Set resultsSet) {
+ List filtered = new ArrayList<>();
+
+ for (ITestResult r : resultsSet) {
+ if (TestRunner.knownIssues.containsKey(r.getName())) {
+ filtered.add(r);
+ }
+ }
+ return Set.copyOf(filtered);
+ }
+
/**
* Groups {@link ClassResult}s by test, type (configuration or test), and
* status.
@@ -635,28 +671,34 @@ public int compare(ITestResult o1, ITestResult o2) {
private final int failedTestCount;
private final int skippedTestCount;
private final int passedTestCount;
+ private final List knownIssueTestResults;
+ private final int knownIssueTestCount;
private final long duration;
private final String includedGroups;
private final String excludedGroups;
public TestResult(ITestContext context) {
testName = context.getName();
-
Set failedConfigurations = context.getFailedConfigurations().getAllResults();
Set failedTests = context.getFailedTests().getAllResults();
Set skippedConfigurations = context.getSkippedConfigurations().getAllResults();
- Set skippedTests = context.getSkippedTests().getAllResults();
+ Set rawSkipped = context.getSkippedTests().getAllResults();
Set passedTests = context.getPassedTests().getAllResults();
+ Set knownIssueTests = getKnownIssueSubset(rawSkipped);
+ Set finalSkipped = new java.util.HashSet<>(rawSkipped);
+ finalSkipped.removeAll(knownIssueTests);
failedConfigurationResults = groupResults(failedConfigurations);
failedTestResults = groupResults(failedTests);
skippedConfigurationResults = groupResults(skippedConfigurations);
- skippedTestResults = groupResults(skippedTests);
+ skippedTestResults = groupResults(finalSkipped);
passedTestResults = groupResults(passedTests);
failedTestCount = failedTests.size();
- skippedTestCount = skippedTests.size();
+ skippedTestCount = finalSkipped.size();
passedTestCount = passedTests.size();
+ knownIssueTestCount = knownIssueTests.size();
+ knownIssueTestResults = groupResults(knownIssueTests);
duration = context.getEndDate().getTime() - context.getStartDate().getTime();
@@ -758,6 +800,14 @@ public List getPassedTestResults() {
return passedTestResults;
}
+ public List getKnownIssueTestResults() {
+ return knownIssueTestResults;
+ }
+
+ public int getKnownIssueTestCount() {
+ return knownIssueTestCount;
+ }
+
public int getFailedTestCount() {
return failedTestCount;
}
@@ -847,25 +897,5 @@ public List getResults() {
return results;
}
}
-
- private static String getValueForKey(String key) {
- String value = System.getenv(key);
- if (value == null || value.isEmpty()) {
- try {
- java.lang.reflect.Field field = io.mosip.testrig.adminui.kernel.util.ConfigManager.class.getDeclaredField("propsKernel");
- field.setAccessible(true);
- Object props = field.get(null);
- if (props instanceof java.util.Properties) {
- value = ((java.util.Properties) props).getProperty(key);
- }
- } catch (Exception e) {
- value = "";
- }
- }
-
- return value;
- }
-
-
}
diff --git a/uitest-admin/src/main/java/io/mosip/testrig/adminui/utility/KnownIssueListener.java b/uitest-admin/src/main/java/io/mosip/testrig/adminui/utility/KnownIssueListener.java
new file mode 100644
index 00000000..59b7c429
--- /dev/null
+++ b/uitest-admin/src/main/java/io/mosip/testrig/adminui/utility/KnownIssueListener.java
@@ -0,0 +1,27 @@
+package io.mosip.testrig.adminui.utility;
+
+import org.apache.log4j.Logger;
+import org.testng.IInvokedMethod;
+import org.testng.IInvokedMethodListener;
+import org.testng.ITestResult;
+import org.testng.SkipException;
+
+public class KnownIssueListener implements IInvokedMethodListener {
+ static Logger logger = Logger.getLogger(KnownIssueListener.class);
+
+ @Override
+ public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
+ if (method.isTestMethod()) {
+ String tcName = testResult.getMethod().getMethodName();
+
+ if (TestRunner.knownIssues.containsKey(tcName)) {
+ logger.info("Skipping Known Issue TestCase: " + tcName);
+ throw new SkipException("Known Issue - Skipped: " + tcName);
+ }
+ }
+ }
+
+ @Override
+ public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
+ }
+}
diff --git a/uitest-admin/src/main/java/io/mosip/testrig/adminui/utility/TestRunner.java b/uitest-admin/src/main/java/io/mosip/testrig/adminui/utility/TestRunner.java
index 97bba12a..0592e671 100644
--- a/uitest-admin/src/main/java/io/mosip/testrig/adminui/utility/TestRunner.java
+++ b/uitest-admin/src/main/java/io/mosip/testrig/adminui/utility/TestRunner.java
@@ -1,8 +1,11 @@
package io.mosip.testrig.adminui.utility;
import java.io.File;
+import java.io.BufferedReader;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.log4j.Logger;
import org.testng.TestListenerAdapter;
@@ -11,39 +14,71 @@
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+
import io.mosip.testrig.adminui.dbaccess.DBManager;
import io.mosip.testrig.adminui.fw.util.AdminTestUtil;
import io.mosip.testrig.adminui.kernel.util.ConfigManager;
-
public class TestRunner {
private static final Logger logger = Logger.getLogger(TestRunner.class);
static TestListenerAdapter tla = new TestListenerAdapter();
public static String jarUrl = TestRunner.class.getProtectionDomain().getCodeSource().getLocation().getPath();
- public static String uin="";
- public static String perpetualVid="";
- public static String onetimeuseVid="";
- public static String temporaryVid="";
+ public static String uin = "";
+ public static String perpetualVid = "";
+ public static String onetimeuseVid = "";
+ public static String temporaryVid = "";
static TestNG testNg;
+ public static Map knownIssues = new HashMap<>();
public static void main(String[] args) throws Exception {
-
+
AdminTestUtil.initialize();
DBManager.clearMasterDbData();
+
+ try (BufferedReader br = new BufferedReader(new InputStreamReader(
+ new FileInputStream(getResourcePath() + "/config/Known_Issues.txt"), StandardCharsets.UTF_8))) {
+
+ String line;
+ while ((line = br.readLine()) != null) {
+ line = line.trim();
+
+ if (line.isEmpty() || line.startsWith("#") || !line.contains("------")) {
+ continue;
+ }
+
+ String[] parts = line.split("------", 2);
+ if (parts.length == 2 && !parts[0].trim().isEmpty() && !parts[1].trim().isEmpty()) {
+ String bugId = parts[0].trim();
+ String testCaseName = parts[1].trim();
+
+ knownIssues.put(testCaseName, bugId);
+ }
+ }
+
+ logger.info("Known Issues Loaded: " + knownIssues);
+
+ } catch (Exception e) {
+ logger.warn("Known_Issues.txt not found or unreadable: " + e.getMessage());
+ }
+
startTestRunner();
}
-
public static void startTestRunner() throws Exception {
File homeDir = null;
TestNG runner = new TestNG();
- if(!ConfigManager.gettestcases().equals("")) {
+ if (!ConfigManager.gettestcases().equals("")) {
XmlSuite suite = new XmlSuite();
suite.setName("ADMIN-UI-AUTOMATION");
suite.addListener("io.mosip.testrig.adminui.utility.EmailableReport");
+ suite.addListener("io.mosip.testrig.adminui.utility.AdminTestListener");
+ suite.addListener("io.mosip.testrig.adminui.utility.KnownIssueListener");
XmlClass blocklistedwordsCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.BlockListTest");
XmlClass bulkUploadCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.BulkUploadTest");
XmlClass centerCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.CenterTest");
@@ -56,61 +91,60 @@ public static void startTestRunner() throws Exception {
XmlClass dynamicFieldCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.DynamicFieldTest");
XmlClass holidaysCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.HolidaysTest");
XmlClass machineSpecCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.MachineSpecificationTest");
- XmlClass machineCRUD= new XmlClass("io.mosip.testrig.adminui.testcase.MachineTest");
+ XmlClass machineCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.MachineTest");
XmlClass machineTypesCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.MachineTypesTest");
XmlClass templateCRUD = new XmlClass("io.mosip.testrig.adminui.testcase.TemplateTest");
List classes = new ArrayList<>();
- String[] Scenarioname=ConfigManager.gettestcases().split(",");
- for(String test:Scenarioname) {
- if(test.equals("blocklistedwordsCRUD"))
+ String[] Scenarioname = ConfigManager.gettestcases().split(",");
+ for (String test : Scenarioname) {
+ if (test.equals("blocklistedwordsCRUD"))
classes.add(blocklistedwordsCRUD);
- if(test.equals("bulkUploadCRUD"))
+ if (test.equals("bulkUploadCRUD"))
classes.add(bulkUploadCRUD);
- if(test.equals("centerCRUD"))
+ if (test.equals("centerCRUD"))
classes.add(centerCRUD);
- if(test.equals("centerTypeCRUD"))
+ if (test.equals("centerTypeCRUD"))
classes.add(centerTypeCRUD);
- if(test.equals("deviceSpecCRUD"))
+ if (test.equals("deviceSpecCRUD"))
classes.add(deviceSpecCRUD);
- if(test.equals("deviceCRUD"))
+ if (test.equals("deviceCRUD"))
classes.add(deviceCRUD);
- if(test.equals("deviceTypesCRUD"))
+ if (test.equals("deviceTypesCRUD"))
classes.add(deviceTypesCRUD);
- if(test.equals("documentCategoriesCRUD"))
+ if (test.equals("documentCategoriesCRUD"))
classes.add(documentCategoriesCRUD);
- if(test.equals("documentTypesCRUD"))
+ if (test.equals("documentTypesCRUD"))
classes.add(documentTypesCRUD);
- if(test.equals("dynamicFieldCRUD"))
+ if (test.equals("dynamicFieldCRUD"))
classes.add(dynamicFieldCRUD);
- if(test.equals("holidaysCRUD"))
+ if (test.equals("holidaysCRUD"))
classes.add(holidaysCRUD);
- if(test.equals("machineSpecCRUD"))
+ if (test.equals("machineSpecCRUD"))
classes.add(machineSpecCRUD);
- if(test.equals("machineCRUD"))
+ if (test.equals("machineCRUD"))
classes.add(machineCRUD);
- if(test.equals("machineTypesCRUD"))
+ if (test.equals("machineTypesCRUD"))
classes.add(machineTypesCRUD);
- if(test.equals("templateCRUD"))
+ if (test.equals("templateCRUD"))
classes.add(templateCRUD);
}
-
XmlTest test = new XmlTest(suite);
test.setName("MyTest");
test.setXmlClasses(classes);
@@ -120,7 +154,7 @@ public static void startTestRunner() throws Exception {
runner.setXmlSuites(suites);
- }else {
+ } else {
List suitefiles = new ArrayList();
String os = System.getProperty("os.name");
if (checkRunType().contains("IDE") || os.toLowerCase().contains("windows") == true) {
@@ -136,23 +170,20 @@ public static void startTestRunner() throws Exception {
suitefiles.add(file.getAbsolutePath());
}
}
-
+ runner.addListener(new KnownIssueListener());
runner.setTestSuites(suitefiles);
-
}
// Set other properties and run TestNG
- System.getProperties().setProperty("testng.outpur.dir", "testng-report");
+ System.getProperties().setProperty("testng.output.dir", "testng-report");
runner.setOutputDirectory("testng-report");
- System.getProperties().setProperty("emailable.report2.name", "ADMINUI-" + BaseTestCaseFunc.environment
- + "-run-" + System.currentTimeMillis() + "-report.html");
+ System.getProperties().setProperty("emailable.report2.name",
+ "ADMINUI-" + BaseTestCaseFunc.environment + "-run-" + System.currentTimeMillis() + "-report.html");
runner.run();
DBManager.clearMasterDbData();
System.exit(0);
}
-
-
public static String getGlobalResourcePath() {
if (checkRunType().equalsIgnoreCase("JAR")) {
return new File(jarUrl).getParentFile().getAbsolutePath().toString();
@@ -168,12 +199,13 @@ public static String getGlobalResourcePath() {
public static String getResourcePath() {
if (checkRunType().equalsIgnoreCase("JAR")) {
- return new File(jarUrl).getParentFile().getAbsolutePath().toString()+"/resources/";
+ return new File(jarUrl).getParentFile().getAbsolutePath().toString() + "/resources/";
} else if (checkRunType().equalsIgnoreCase("IDE")) {
String path = System.getProperty("user.dir") + System.getProperty("path.config");
- // String path = new File(TestRunner.class.getClassLoader().getResource("").getPath()).getAbsolutePath()
- // .toString();
+ // String path = new
+ // File(TestRunner.class.getClassLoader().getResource("").getPath()).getAbsolutePath()
+ // .toString();
if (path.contains("test-classes"))
path = path.replace("test-classes", "classes");
return path;
@@ -187,17 +219,17 @@ public static String checkRunType() {
else
return "IDE";
}
- public static String GetKernalFilename(){
+
+ public static String GetKernalFilename() {
String path = System.getProperty("env.user");
- String kernalpath=null;
- if(System.getProperty("env.user")==null || System.getProperty("env.user").equals("")) {
- kernalpath="Kernel.properties";
+ String kernalpath = null;
+ if (System.getProperty("env.user") == null || System.getProperty("env.user").equals("")) {
+ kernalpath = "Kernel.properties";
- }else {
- kernalpath="Kernel_"+path+".properties";
+ } else {
+ kernalpath = "Kernel_" + path + ".properties";
}
return kernalpath;
}
-
}
diff --git a/uitest-admin/src/main/resources/config/Known_Issues.txt b/uitest-admin/src/main/resources/config/Known_Issues.txt
new file mode 100644
index 00000000..48731920
--- /dev/null
+++ b/uitest-admin/src/main/resources/config/Known_Issues.txt
@@ -0,0 +1,3 @@
+#Add the Known Issue Testcase with its bug id here
+#Ex:bugId------testcaseName
+#Ex:MOSIP-2724------deviceTypesCRUD
\ No newline at end of file
diff --git a/uitest-admin/src/main/resources/testngFile/testng.xml b/uitest-admin/src/main/resources/testngFile/testng.xml
index a72d9faa..b55bc77c 100644
--- a/uitest-admin/src/main/resources/testngFile/testng.xml
+++ b/uitest-admin/src/main/resources/testngFile/testng.xml
@@ -26,6 +26,8 @@
+
+