spockframework / spockframework/spock

Add support for inspecting exception causes in `@Retry`

Open
#1,794 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

new feature
Dominant language
Java
Stars
3.6k
Forks
483
PR merge metrics
No merged PRs in 30d

Description

Is your feature request related to a problem?

Sometimes the exception that you want to actually want to look at is the cause of the top-level exception. For example if the exception happened in a condition you get a ConditionFailedWithExceptionError which is fairly unspecific.

Describe the solution you'd like

Either always expect causes, or add a flag to inspect them when configured.

@Retry (
    exceptions = StaleElementReferenceException,
    inspectCauses = true
)
Describe alternatives you've considered
@Retry (
    exceptions = [StaleElementReferenceException, ConditionFailedWithExceptionError],
    // exceptions don't check causes, so we need to do it in the condition
    condition = {
        failure instanceof StaleElementReferenceException || failure.cause instanceof StaleElementReferenceException
    }
)
Additional context

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the @Retry implementation and its existing exception-matching tests. Review how configured exceptions and ConditionFailedWithExceptionError are currently handled, then compare the requested inspectCauses option with the condition-based workaround. Done means the requested cause-inspection behavior is supported without requiring that workaround, while existing behavior remains intact.

Written by the indexing model from the issue text.

Assessment

Tech stack
groovy, java
Domain
testing
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.