Skip to content

Commit 74f13a9

Browse files
committed
1. Create ExtentReport node test support TestNG data provider scenario
2. Release TestNG listener add by end user, end user can custom his listener and then disable the default listener and add his custom listeners
1 parent fbe11cb commit 74f13a9

File tree

5 files changed

+82
-9
lines changed

5 files changed

+82
-9
lines changed

src/main/java/com/github/ansonliao/selenium/parallel/SeleniumParallelTestListener.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ public void beforeInvocation(IInvokedMethod iInvokedMethod, ITestResult iTestRes
4949
}
5050

5151
ExtentTestManager.createTest(method, browserName,
52-
AuthorUtils.getMethodAuthors(method), groups);
52+
AuthorUtils.getMethodAuthors(method), groups,
53+
iTestResult.getParameters());
5354

5455
// open url if URL annotation had value
5556
Optional.ofNullable(method.getAnnotation(URL.class))

src/main/java/com/github/ansonliao/selenium/report/factory/ExtentTestManager.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,20 @@
44
import com.aventstack.extentreports.ExtentTest;
55
import com.aventstack.extentreports.Status;
66
import com.github.ansonliao.selenium.annotations.Description;
7+
import com.google.common.base.Strings;
8+
import com.google.common.collect.Lists;
79
import com.google.common.collect.Maps;
10+
import org.slf4j.Logger;
11+
import org.slf4j.LoggerFactory;
812
import org.testng.Reporter;
913

1014
import java.lang.reflect.Method;
1115
import java.util.List;
1216
import java.util.Map;
17+
import java.util.stream.Collectors;
1318

1419
public class ExtentTestManager {
20+
private static final Logger sfl4jLogger = LoggerFactory.getLogger(ExtentTestManager.class);
1521
public static ThreadLocal<ExtentTest> extentTests = new ThreadLocal<>();
1622
public static ExtentReports extentReport = ExtentManager.getExtentReports();
1723
private static ExtentTest extentTest;
@@ -37,7 +43,7 @@ public synchronized static ExtentTest createTest(String name, String description
3743
}
3844

3945
public synchronized static ExtentTest createTest(Method method, String browserName,
40-
List<String> authors, List<String> groups) {
46+
List<String> authors, List<String> groups, Object... parameters) {
4147
ExtentTest test;
4248
String description;
4349
Class clazz = method.getDeclaringClass();
@@ -65,7 +71,19 @@ public synchronized static ExtentTest createTest(Method method, String browserNa
6571
childTests.put(childNodeKey, test);
6672
}
6773

68-
test = childTests.get(childNodeKey).createNode(browserName);
74+
String extTestNodeName = browserName;
75+
if (parameters != null && parameters.length != 0) {
76+
String paramStr = Lists.newArrayList(parameters).parallelStream()
77+
.map(param -> {
78+
return param instanceof String
79+
? "\"".concat(param.toString()).concat("\"")
80+
: String.valueOf(param);
81+
}).collect(Collectors.joining(", "));
82+
extTestNodeName = extTestNodeName.concat("(").concat(paramStr).concat(")");
83+
}
84+
85+
sfl4jLogger.info("Create ExtentReport test node: {}", extTestNodeName);
86+
test = childTests.get(childNodeKey).createNode(extTestNodeName);
6987
if (groups != null && groups.size() > 0) {
7088
for (String group : groups) {
7189
test.assignCategory(group);

src/main/java/com/github/ansonliao/selenium/testng/XmlSuiteBuilder.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.github.ansonliao.selenium.testng;
22

3+
import com.github.ansonliao.selenium.utils.TestNGListenerUtils;
34
import org.slf4j.Logger;
45
import org.slf4j.LoggerFactory;
56
import org.testng.xml.XmlSuite;
67

8+
import java.util.List;
9+
710
public class XmlSuiteBuilder {
811
private static final Logger logger = LoggerFactory.getLogger(XmlSuiteBuilder.class);
912

@@ -13,14 +16,19 @@ public static XmlSuite build() {
1316
xmlSuite.setParallel(XmlSuite.ParallelMode.TESTS);
1417
xmlSuite.setPreserveOrder(false);
1518
xmlSuite.setThreadCount(Runtime.getRuntime().availableProcessors());
16-
xmlSuite.addListener(
17-
"com.github.ansonliao.selenium.testng.TestResultListener");
18-
//xmlSuite.addListener(
19-
// "com.github.ansonliao.selenium.testng.RetryListener");
20-
xmlSuite.addListener(
21-
"com.github.ansonliao.selenium.parallel.SeleniumParallelTestListener");
2219
xmlSuite.setVerbose(2);
2320

21+
// listeners
22+
List<String> listeners = TestNGListenerUtils.getDefaultTestNGListners();
23+
if (listeners.size() != 0) {
24+
logger.info("TestNG Listeners found: {}", listeners);
25+
listeners.forEach(xmlSuite::addListener);
26+
} else {
27+
List<String> defaultListeners = TestNGListenerUtils.getDefaultTestNGListners();
28+
logger.info("No TestNG Listener found, add default listeners: ", defaultListeners);
29+
defaultListeners.forEach(xmlSuite::addListener);
30+
}
31+
2432
XmlTestBuilder.setXmlSuite(xmlSuite);
2533
XmlTestBuilder.build();
2634
xmlSuite = XmlTestBuilder.getXmlSuite();
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.github.ansonliao.selenium.utils;
2+
3+
4+
import com.google.common.collect.Lists;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
import org.testng.annotations.Test;
8+
import org.testng.util.Strings;
9+
10+
import java.util.Arrays;
11+
import java.util.List;
12+
import java.util.stream.Collectors;
13+
14+
public class TestNGListenerUtils {
15+
private final Logger logger = LoggerFactory.getLogger(TestNGListenerUtils.class);
16+
private static final String DEFAULT_TESTNG_LISTENER_KEY = "defaultTestNGListeners";
17+
private static final String TESTNG_LISTENER_KEY = "testngListeners";
18+
19+
public static List<String> getDefaultTestNGListners() {
20+
if (Strings.isNotNullAndNotEmpty(SEConfig.getString(DEFAULT_TESTNG_LISTENER_KEY))) {
21+
return Arrays.stream(SEConfig.getString(DEFAULT_TESTNG_LISTENER_KEY).split(","))
22+
.map(String::trim).distinct().collect(Collectors.toList());
23+
} else {
24+
return Lists.newArrayList();
25+
}
26+
}
27+
28+
public static List<String> getTestNGListeners() {
29+
if (Strings.isNotNullAndNotEmpty(SEConfig.getString(TESTNG_LISTENER_KEY))) {
30+
return Arrays.stream(SEConfig.getString(TESTNG_LISTENER_KEY).split(","))
31+
.map(String::trim).distinct().collect(Collectors.toList());
32+
} else {
33+
return Lists.newArrayList();
34+
}
35+
}
36+
37+
@Test
38+
public void f1() {
39+
getDefaultTestNGListners().forEach(System.out::println);
40+
getTestNGListeners().forEach(System.out::println);
41+
}
42+
43+
}

src/main/resources/seleniumextensions.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ testingBrowserNames=
1010
testingTestGroups=
1111
testingTestNGClasses=
1212

13+
testngListeners=
14+
defaultTestNGListeners=com.github.ansonliao.selenium.testng.TestResultListener, com.github.ansonliao.selenium.parallel.SeleniumParallelTestListener
15+
1316
wdParameterKey.chrome="webdriver.chrome.driver"
1417
wdParameterKey.firefox="webdriver.gecko.driver"
1518
wdParameterKey.phantomjs="phantomjs.binary.path"

0 commit comments

Comments
 (0)