Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Add retry for JUnit failures in the CI workflow #29048

Merged
merged 2 commits into from
Nov 23, 2023
Merged

Conversation

yatinappsmith
Copy link
Contributor

Checklist:

Dev activity

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • PR is being merged under a feature flag

QA activity:

  • Speedbreak features have been covered
  • Test plan covers all impacted features and areas of interest
  • Test plan has been peer reviewed by project stakeholders and other QA members
  • Manually tested functionality on DP
  • We had an implementation alignment call with stakeholders post QA Round 2
  • Cypress test cases have been added and approved by SDET/manual QA
  • Added Test Plan Approved label after Cypress tests were reviewed
  • Added Test Plan Approved label after JUnit tests were reviewed

@mohanarpit mohanarpit changed the title CI : Add Retry for JUnit. CI : Add retry for JUnit failures in the CI workflow Nov 23, 2023
@mohanarpit mohanarpit changed the title CI : Add retry for JUnit failures in the CI workflow ci: Add retry for JUnit failures in the CI workflow Nov 23, 2023
@github-actions github-actions bot added skip-changelog Adding this label to a PR prevents it from being listed in the changelog CI labels Nov 23, 2023
@@ -145,7 +145,8 @@ jobs:
mvn --batch-mode versions:set \
-DnewVersion=${{ steps.vars.outputs.version }} \
-DgenerateBackupPoms=false \
-DprocessAllModules=true
-DprocessAllModules=true \
-Dsurefire.rerunFailingTestsCount=3 -Dsurefire.outputFile="./junit-report.xml"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to do this or do we want to follow the same CI re-run that we do for Cypress where we save the failed tests in a file/db and on re-run execute just that test case. This way, we can follow the same process of reporting, skipping and/or fixing the JUnit flaky tests as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incase we decide to use caching we will be able to report rate of failure. Down side would be each rerun would have to be triggered manually. With this method retry would be automatic.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we do both? This is how Cypress also handles this scenario. Cypress runs a test 3 times before failing. After that, we save the failing test and on re-run, execute just the failing test.

I'm asking this because the JUnit server suite is 40 mins long. I understand that it's possible we will reduce the occurrences of flaky failures by running it 3 times before reporting a failure. But if/when there is a failure, we have to wait another 40 mins for it to pass (if at all). This is not the best utilization of our CI machine time.

Having said that, I'm open to merging this PR in & getting the CI re-run change in another PR. But I want to align on our strategy ahead.

@yatinappsmith yatinappsmith merged commit 5902300 into release Nov 23, 2023
21 of 22 checks passed
@yatinappsmith yatinappsmith deleted the RerunJunit branch November 23, 2023 11:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI skip-changelog Adding this label to a PR prevents it from being listed in the changelog
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants