Retry Logic In TestNG || How to execute failed test cases in Selenium WebDriver
Вставка
- Опубліковано 8 лют 2025
- How to execute failed test cases in Selenium WebDriver using IRetryAnalyzer in TestNG.
I'm sure, you are facing random failure during an automated test run. These failures might not necessarily be because of product bugs.
These failure can be because of following reasons:
+Random browser issues
+Browser becoming unresponsive
+Random machine issues
+Server issues like unexpected delay in the response from server
+Application not responding properly
+Application is very slow
+Network is very slow, hence app is very slow
+Ajax Component could not be loaded properly
+HTML DOM is slow
There are two ways to implement retry logic using TestNG Listener:
1. By specifying retryAnalyzer value in the @Test annotation
2. By adding Retry analyser during run time by implementing IAnnotationTransformer interfaces
======================================================
Subscribe to this channel, and press bell icon to get some interesting videos on Selenium and Automation:
www.youtube.co...
Follow me on my Facebook Page:
/ naveenqtpexpert
Let's join our Automation community for some amazing knowledge sharing and group discussion:
t.me/joinchat/... Subscribe to this channel, and press bell icon to get some interesting videos on Selenium and Automation:
www.youtube.co...
Follow me on my Facebook Page:
/ naveenqtpexpert
Let's join our Automation community for some amazing knowledge sharing and group discussion on Telegram:
t.me/joinchat/...
Paid courses (Recorded) videos:
Java & Selenium Course: www.naveenautom...
API Course: www.naveenautom... ➡️Get Our Courses✔️
📗 Get My Paid Courses at
Paid courses (Recorded) videos:
Java & Selenium Course: www.naveenautom...
API Course: www.naveenautom...
-------------------------------
✔️SOCIAL NETWORKS
Facebook: / naveenqtpexpert
Twitter: / naveenkhunteta
Blog: www.naveenautom...
--------------------------------
Support My Channel✔️Or Buy Me A Coffee
Paypal: paypal.me/nave...
Google Pay: naveenanimation20@gmail.com
--------------------------------
✔️Thanks for watching!
देखने के लिए धन्यवाद
Благодаря за гледането
感谢您观看
Merci d'avoir regardé
Grazie per la visione
Gracias por ver
شكرا للمشاهدة
5 years later and still relevant! Thank you, Naveen.
Thanks dude ! You saved my life. Took me less than half an hour to do this. My test suite was always failing 1-3 test cases randomly in every run and the report always looked red as a result. When I ran the failed tests individually, they passed. I was looking for a solution like this and found this video. Kudos bro !
Hi Sir..... A great salute to your vision.....I implemented these within 10min in our project.. A big Thanks
Awesome explanation... Keep up the great work... 👏👏💐💐😍😍
Hello Naveen, thank you for this helpful tutorial. Could you please tell me in summary How to run failed test cases? in order to explain during the interview in just few words. Please!!!
Well explained.Thank you for sharing Naveen.
Excellent explanation ,,very helpful ....
great explanation naveen ...thanks
Amazing concept.. thank you so much Naveen🙏🙏
Hi Naveen,
Its a very new concept for us, thank you for your efforts. Can we use this for Junit or is it applicable only for testng?
Hi Naveen , Testng automatically generate testng-failed.xml file for failed test cases in test out folder , if we run that testng-failed.xml file it will execute failed test cases . .Is it recommended approach to execute testng-failed.xml file
Hi naveen,Consider the scenario of one @Test method depends on another @Test Method in a class...how to rerun the whole class again in case one of the @Test fails.
We cannot group everything under one @Test in an ideal scenario.
Really appreciable... Thank you so much
Hi naveen, I liked your video a lot its just a cut clear :-). One question here we are implementing both IRetryAnalyzer interface as well IAnnotationTransformer at a time ?
Yes Manali, IRetryAnalyzer interface servers logic that how many times test case should execute and IAnnotationTransformer is to handle failed test cases in runtime.
Amazing stuff ..looking for this concept badly..
Appreciate it, very imp topic.
Thanks Naveen well explained. It would be grate if you could you make another video on how to use TestNG ItestListeners,RetryAnalyzer, or TestNG concepts using CUCUMBER BDD style??
Hello Naveen, thank you for the video, appreciate all your efforts and support !
one question, do i get to know in report, how many test cases passed in retry attempt.
Hi Naveen, Thanks for the video, It's much useful. I have a question, If 100 test cases run and 70 gets passed, Would the Retry Logic run for the remaining 30 after completing all the 100 test cases or would run after the each test case fails immediately for the first time.
Thanks for the video,
Issue:This doesn't work with 2D data provider, working fine with simple data provider. Error thrown: wrong number of arguments
Explanation is good.
Great content..............
Nice explanations
One issue..the reports show the failed test in the number of tests run. Like if I run 10 tests with 1 failing and 3 retries, the report says 4 out of 14 tests failed where as its just 1 that got retried.
Hi Naveen,
Awesome one... but one Q is why all these methods are going in skip category ?? Please answer ...
Very well explained, thanks! Any suggestions on retry for independent APIs that are called? Not at test level, but if a single API in the test fails..
Hi Naveen, superb video and it really helps me for my new framework and I would like to highlight one thing that exactly same approach, code , example have been used in the website toolsqa . I was wondering of you are connected to them or is it coincidence?
Or copyright?
Thanks.. when I implemented this run time level listener in my framework. I noticed when I give retry limit as 2. When the test case failed at first time and passed in 2nd time still it runs 3rd time. Also for all the other test cases in that class it runs three times though it passes in first run. Anybody facing this issue can you please help me on this?
Hi Naveen, loved the tutorial, one question though, how would you handle thread safe here since many test cases are using the same RetryAnalyzer class and its counter. I think you need to implement Singleton class to handle this.. thoughts ??
1) Why you are taking 4 parameters inside transform() and what is the use of these 4?
2) also parameters of retry() why and what is the use
Well about the parameters of the retry method
1st retry is the over-ridden method of interface IRetryAnalyzer and ITestResult is another interface which extends IAttributes and Comparable
So the list goes on and on
So its better to stick to the point
hoping Naveen also agree with me
In the result, it's showing as "3 skip" , means test1 is skipping 3 times(not executing 3 times) and 4th time when it ran , test script
fail
please correct me if my understanding is wrong
In RetryAnalyzer, you have given result as parameter of retry method but have not used anywhere in the code inside. What is the use?
Well explained
Hi Naveen Thanks for the Video it helpful. I have one doubt?
How to set different download path using selenium it is possible or not please explain??
how to implement the same in BDD framework. When implemented I see entire feature file executed thrice.. even if only one scenario was failing
Hi Naveen , there is an option we have in testNg, I wanted to Excecute only failure Test cases in next build execution
public class RetryAnalyser implements IRetryAnalyzer {
int Count= 0;
int maxcount =3;
public boolean retry(ITestResult result)
{
if(Count
Awsm
Hi Naveen if there are multiple test class in the project and we want to implement this listener for all the class then how do we define that in the arguments class
How can i implement this when there when @Aftermethod / @BeforeMethod fails due to some reason. For me Its skipping the @Test and giving incorrect number of runs
Hi Naveen,
Thank you for this post.
1 query,
Lets say i have defined one Listener class for generating the report and taking screenshot for the failed testcases.
Now i wanna try this retry process for which i am again writing the above transformer custom class.
Now can i define both the listeners at a time. If no please suggest the way.
is the below way of defining the listeners inside the testng.xml possible,
Nice Content 👍 Can you please increase the font size a bit in your videos.
why when executed showing 6 skipped and 2 Time failed in Test Result? Test Run = 8, Failures = 2, skips = 6?
Thankyou naveen
When specifying at runtime, can we exclude a particular testcase from the retry logic?
How to integrate this with extend report ..Retry logic is only invoke those TCs which are failed in testNG default report . currently i am handling my every TCs in side the try catch block so only run time exception mark fail in default TestNG report .but i want to integrate retry with extent report..if you hava solution please update us
Hi Sir in my case I have code to lounch my browser in base class when I try I am not able to lounch browser 2nd time.Sir please help.i am using beforeaTest and after Test annotations in base class which is not invocked when I try to rereun
Thank you
I am receiving error - java.lang.ClassCastException: class testNGDemo.Retry cannot be cast to class org.testng.ITestNGListener (testNGDemo.Retry and org.testng.ITestNGListener are in unnamed module of loader 'app').
I have implemented both IRetryAnalyzer and IAnnotationTransformer and using TestNG 7.2.0
unable to see run asTestNg option when right click on class inside mavenproject...please reply bro
Hi Naveen I have question.. how to add helper class or method to TestNG framework..
While running a testsuite it is going to infinite loop it doesn't stops execution with the same code I used. Please help me in this naveen
Hi Navin, Could tell you me how to get a total number of cell in webtable or any table ?
Hi Naveen
I'm using junit framework,i'm struggling to failed testcases,uses cucumber with selenium,pls help to how to failed the testcases,I have tried Assert in junit but issue in that after assert.failed() method all remaining testcases are not executing,pls help how to resolved that.
👌👌👌
Can this be done in BDD with POM ?
Sir can we achieve retry logic in pytest?
can anyone help while running testng xml , listener class not found in classpath is displayed,, any assistance would be appricaited
Hi naveen, In my framework i will execute 100 tests out of which 10 testcases will always fail, so i don't want to re-execute those, is there any way of excluding those 10 tests to save time, as IAnnotationTransformer deals with all failed tests.
you can disable them like:- @Test(enable=false)... Or Give them into one group and exclude them... Try these and let me know if it works...
@@akshaysoni2051 Thanks for reply.I cannot disable those expected failures,they should run excatly one time as we need to generate report.
solution1:Grouping testcases
In my project there we more than 1000 testcases and grouping is not possible because expected failures have dependency with 4 dbs,4 browsers and 2 os.So each time if we try to execute testsuite in different environments the expected results varies.So i didn't worked out.
solution 2:using excel and apache poi
I have created excel sheet with expected failures along with 4 dbs,4 browsers and 2 os.I have created a class which returns Objects of expected failures using excel and used @factory to separate those expected tests and in testgh.xml file i created separate test for these and it worked
can you tell me the difference between Invocation Count and IRetry Logic Annotation
Invocation count is test execution at a specified number of times irrespective of test result while Iretry logic will come into picture only when test fails
Can you please provide all the code which was explained in above TestNG Tutorial videos...Please let me know if it is available in any repository..
how to run all test cases without skipping. Like one test case failed then rest pending should not be skipped. Please help
Use soft assertions instead of hard assertions in all test cases.
If you are using hard Assertion, then if any test case fails, subsequent ones will not be executed and other test cases go into skip category. One way to execute every test case is to use soft assert
Sir can you please provide url for this code ?
Can anyone please share the Github url?
Can you please provide the git url ?
It's resolved I changed import annotations
import org.testng.IAnnotationTransformer;
import org.testng.annotations.ITestAnnotation;
After change
import org.testng.IAnnotationTransformer;
import org.testng.annotations.ITestAnnotation;
Previous
import org.testng.internal.annotations.IAnnotationTransformer;
import org.testng.annotations.ITestAnnotation;