ginkgo
ginkgo copied to clipboard
[Question] Rerun flaky test but only if condition is met
Hi, I got a question about flaky tests and rerunning them.
Is it possible to do something similar to what FlakeAttempts does but rerun tests only if given condition/predicate is true? I know it is very specific case but you may have global solution that I can simply apply to my test-suite. E.g. I would like to check if there is specific string in logs and then decide if rerun test when it failed.
Hey there - there isn't formal support for this but you can do something like this:
It("should only rerun if a condition succeeds", FlakeAttempts(5), func() {
if (CurrentSpecReport().NumAttempts > 1 && !Condition()) {
Fail("Refusing to rerun spec as condition is not met")
}
...
})
Note that this will only abort in the It - any BeforeEach nodes prior to the It will still run. If that's a problem let me know and I can share some alternatives. But tl;dr - I think you can solve for this without additional Ginkgo APIs since CurrentSpecReport().NumAttempts tells you which attempt this is.