Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e46309c

Browse filesBrowse files
committed
Added TestNG listener
1 parent 58a3dd8 commit e46309c
Copy full SHA for e46309c

File tree

3 files changed

+61
-1
lines changed
Filter options

3 files changed

+61
-1
lines changed

‎src/main/java/org/sayem/webdriver/TestBase.java

Copy file name to clipboardExpand all lines: src/main/java/org/sayem/webdriver/TestBase.java
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.openqa.selenium.WebDriver;
55
import org.openqa.selenium.support.PageFactory;
66
import org.sayem.webdriver.browsers.config.BrowserThreads;
7+
import org.sayem.webdriver.listeners.RetryListener;
78
import org.sayem.webdriver.listeners.ScreenshotListener;
89
import org.sayem.webdriver.properties.PropertiesUtil;
910
import org.sayem.webdriver.properties.Repository;
@@ -19,7 +20,7 @@
1920
/**
2021
* Created by sayem on 10/05/15.
2122
*/
22-
@Listeners({ScreenshotListener.class})
23+
@Listeners({ScreenshotListener.class, RetryListener.class})
2324
public abstract class TestBase {
2425

2526
private static List<BrowserThreads> webDriverThreadPool = Collections.synchronizedList(new ArrayList<>());
+24Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.sayem.webdriver.listeners;
2+
3+
import java.lang.reflect.Constructor;
4+
import java.lang.reflect.Method;
5+
6+
import org.testng.IAnnotationTransformer;
7+
import org.testng.IRetryAnalyzer;
8+
import org.testng.annotations.ITestAnnotation;
9+
10+
/**
11+
* Created by sayem on 2/2/16.
12+
*/
13+
public class RetryListener implements IAnnotationTransformer {
14+
15+
@Override
16+
public void transform(ITestAnnotation testannotation, Class testClass,
17+
Constructor testConstructor, Method testMethod) {
18+
IRetryAnalyzer retry = testannotation.getRetryAnalyzer();
19+
20+
if (retry == null) {
21+
testannotation.setRetryAnalyzer(TestNGRetry.class);
22+
}
23+
}
24+
}
+35Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.sayem.webdriver.listeners;
2+
3+
import org.testng.IRetryAnalyzer;
4+
import org.testng.ITestResult;
5+
6+
/**
7+
* Created by sayem on 2/2/16.
8+
*/
9+
public class TestNGRetry implements IRetryAnalyzer {
10+
private int retryCount = 0;
11+
private int maxRetryCount = 1;
12+
13+
// Below method returns 'true' if the test method has to be retried else 'false'
14+
// and it takes the 'Result' as parameter of the test method that just ran
15+
public boolean retry(ITestResult result) {
16+
if (retryCount < maxRetryCount) {
17+
System.out.println("Retrying test " + result.getName() + " with status "
18+
+ getResultStatusName(result.getStatus()) + " for the " + (retryCount+1) + " time(s).");
19+
retryCount++;
20+
return true;
21+
}
22+
return false;
23+
}
24+
25+
public String getResultStatusName(int status) {
26+
String resultName = null;
27+
if(status==1)
28+
resultName = "SUCCESS";
29+
if(status==2)
30+
resultName = "FAILURE";
31+
if(status==3)
32+
resultName = "SKIP";
33+
return resultName;
34+
}
35+
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.