For AI agents and LLMs: a machine-readable index is available at llms.txt. A plain-Markdown version of any documentation page is available by appending .md to its URL.
Skip to main content

Rerun Rules in HyperExecute

Reference page

This is the deep-dive reference for how HyperExecute decides whether a job can be rerun, how much of it can be rerun, and what warnings the Rerun dialog shows. For the step-by-step walkthrough on using the Rerun button, see Rerun Failed Jobs on HyperExecute.

Rerun has three independent outcomes, not one. The Re-Run button may be hidden, the Failed & Non Executed Scenarios option may be disabled so only All Scenarios can be chosen, or the dialog may show a warning you need to act on. The same checks apply whether the dialog is just previewing or you have clicked Rerun, so the dialog never offers a scope that is then rejected on submit. This page documents every rule the Rerun dialog can emit.

The three gates​

Rerun passes three independent checks, and they fail differently - which is why "rerun is not supported" is never one question.

GateOutcomeWhat the user sees
1. AdmissionThe button disappearsNo Re-Run button is rendered. The reason is not shown in a dialog, because nothing the user could change in a dialog would help.
2. ScopeOnly "All Scenarios"The job is rerunnable, but the failed subset cannot be derived. Failed & Non Executed Scenarios is disabled, the selection falls back to All Scenarios, and the reason is shown beside the disabled option.
3. AdviceOffered, with a caveatBoth scopes work. A message warns about cost or about a precondition only the user can satisfy, such as a named tunnel being up.

A refusal at gate 2 never affects gate 1: a job that cannot be narrowed is still fully rerunnable.

Before the Rerun dialog opens​

Two conditions hide the Re-Run button in the browser without ever asking the backend.

ConditionEffect
Rerun is not enabled for your organizationButton hidden. Rerun is opt-in per organization; contact your admin or support to turn it on.
The job has not ended yetButton hidden. While the job is running, queued, initiated, in-progress or just created, Rerun is not offered. Wait for the job to finish.

Gate 1 - when Rerun is unavailable​

Each row below is a property of the job itself. Any one of them is enough on its own.

ConditionWhat it means / what to do
Still runningWait for the job to finish, then try again.
Past retentionJobs are retained for 60 days. Once a job is older than that, rerun is no longer available - start a fresh job from your CLI or pipeline.
Configuration no longer storedThe job's stored configuration has been removed. Start a fresh job.
YAML version other than 0.1Rerun supports version 0.1 jobs only.
Mobile jobMobile jobs (Appium, Espresso, XCUITest) cannot be rerun from the dashboard - trigger the test again from your mobile flow.
Triggered by KaneAIRerun it from KaneAI.
Job ran without a projectA rerun needs the original job's project to fetch the suite from Git. Jobs that ran outside any project (for example, a CLI job that did not set a project) cannot be rerun from the dashboard. Run the suite again from within a project.
Project deletedA rerun belongs to the original project; if that project is gone, start the suite in a current one.
Tunnel opened by the CLI on the submitting machineA rerun cannot reopen that tunnel. Run again from the CLI, or use a named tunnel.
globalPre or globalPost with mode: localThose steps run on the machine that started the job, which a rerun cannot reach. Run again from the CLI.
Not from GitRerun fetches the suite again from Git. A job that did not run from a Git repository cannot be fetched again.
Uncommitted local changes at submit timeThe exact code the job ran on is not reproducible. Commit or stash and run again.
Reruns of hybrid jobs are turned off for this organizationContact your admin or support.
Nothing ranThe job produced no scenario outcomes, so there is nothing to rerun.
Nothing failedEvery scenario passed; there is nothing to rerun.

Worth knowing about these​

  • Mobile means Appium, Espresso and XCUITest flows (test type ios/xcui, android/espresso, appium, android/appium or ios/appium, case-insensitive).
  • KaneAI covers any trigger whose source identifies as KaneAI, including scheduled KaneAI runs.
  • Retention is 60 days from when the job was created (or from its expiry stamp when one is set).
  • Ran without a project is about the job's project, not the project's Git repo. A project that has no Git repo linked is not refused here - a user-, project- or organization-level git_token can still fetch the code - that is a separate check in the Git pre-flight.
  • Hybrid reruns off is an org-level setting your admin can toggle. It is not a per-job property.
  • On-prem deployments skip the tunnel check altogether (both the refusal and the advice), because the on-prem environment handles its own networking.

Gate 2 - when only "All Scenarios" can be rerun​

The job is rerunnable; only the failed subset is unavailable. The dialog disables Failed & Non Executed Scenarios, falls back to All Scenarios, and prints the reason beside the disabled option.

Ruled out before the scenario list is read​

ConditionMessage shown in the dialog
Latest commit chosenonly the original commit can rerun just the failed scenarios — the tests may have changed since. Switch the commit back, or rerun all scenarios
Job uses globalPre.yamlPaththis job uses globalPre.yamlPath, which can change its test list while it runs, so only All Scenarios can be rerun
Job uses dynamicAllocationthis job uses dynamicAllocation, so only All Scenarios can be rerun
Job uses testDiscovery.mode: dynamicthis job uses testDiscovery.mode: dynamic, so only All Scenarios can be rerun
Scenario list could not be loaded just nowwe could not load this job's test details just now, so only All Scenarios can be rerun. Try again in a few minutes

Only the last of these is transient. Dynamic discovery is refused because each task discovers its own scenario list on its own VM, and a reduced set from a previous run would be accepted and then silently ignored.

Ruled out by what was recorded for the job​

ConditionMessage shown in the dialog
The job predates scenario-detail trackingthis job ran before we started tracking scenario details, so only All Scenarios can be rerun
Auto-split job with no stored scenario listwe do not have the list of scenarios this job ran, so only All Scenarios can be rerun
Scenario detail does not cover what the job ranwe do not have the full details of what this job ran, so we cannot tell which scenarios to rerun. Rerun all scenarios instead
Job shape could not be worked outwe could not work out how this job was organized, so only All Scenarios can be rerun
Every unit is already settledno scenarios are left to rerun on their own

Any of these means the recorded detail cannot be trusted to pick a subset. For an auto-split job the stored discovery result can still answer the question even without the tracked detail; other shapes cannot.

Ruled out by the job's shape​

ShapeConditionMessage shown in the dialog
HybridA unit's OS was not recordedwe do not know which machine each scenario ran on, so only All Scenarios can be rerun
HybridRemote globalPre with failures on more than one OSthis job's failures are on more than one machine and its scenarios cannot be split that way. Rerun all scenarios instead
HybridToo many configurations to narrow safelythis job has too many configurations (N) to rerun selectively. Rerun all scenarios instead
MatrixA unit carries no configurationwe do not know which configuration each scenario ran under, so only All Scenarios can be rerun

A hybrid job whose non-OS matrix keys cannot each be collapsed to a single value falls into the "shape could not be worked out" case above, with the same effect.

A single-task job with no matrix is never refused here. The failed set is the job, so both options are offered and show the same count.

Gate 3 - when the dialog shows a warning​

Advice travels beside an offered scope, never instead of it. Where more than one applies, the pieces are joined with ; into one line.

TriggerMessage shown in the dialogWhy it is advice, not a refusal
Named tunnels on the jobtunnel "x" needs to be running for this job to executeThe tunnels are the user's own. The submission is rejected later if one is not up by then, so the dialog warns rather than blocks. Skipped on-prem.
Failed scenarios span many configurationsthe failed scenarios spread across N combinations; a complete rerun may cost lessThis is advice to a reader when the subset would span more than 500 combinations, not a limit anything enforces. The actual task count follows the requested concurrency, not the combination count.

What counts as a failure​

A scenario is settled - and so excluded from the subset - only on these five statuses:

SettledEverything else
completed, passed, skipped, ignored, mutedfailed, aborted, canceled, timed out, still in progress - and no outcome row at all - all rerun

Note muted is settled here: a muted scenario is treated as an intentional pass for the purposes of Rerun, so a job whose only "failures" were muted scenarios is not offered a rerun. Three cases are worth spelling out:

  • Retries. A scenario that failed and later passed on a retry is treated as passed and left out of the subset. The job itself can still be rerun, though - the fact that the scenario ever failed is enough to admit the job.
  • Fail fast. When fail fast stops a job, the scenario that caused the stop counts as a failure. Without this rule, a job that stopped on its very first failed test would appear to have no failed scenarios at all and could never be rerun.
  • Dependent groups. When scenarios run as a dependent group, the whole group is selected together - you cannot rerun a single member on its own. On a hybrid job the group is scoped to the configuration it ran under, so a failure in one configuration does not pull in the group members from another.

The two counts, and when they are absent​

The counts come from different places on purpose, and one of them is omitted rather than guessed.

CountSourceOmitted when
All ScenariosThe intended scenario count from when the job was dispatched, never the recorded outcomes, because a fail-fast trip leaves the remaining tasks' scenarios unrecorded.The latest commit is selected (the head discovers its own set), or the job has no stored scenario list. The field is omitted and the dialog shows no number.
Failed & Non ExecutedThe scenarios the dialog would re-run.Whenever the subset is refused; the option is disabled instead.

Why the label changes​

The option reads Failed & Non Executed Scenarios when the job's fail fast tripped, or when the subset contains scenarios that never reached a verdict. Otherwise it reads Only Failed Scenarios. The breakdown beside it separates failed, not run and dependent, so the number adds up for the reader.

Why a fail-fast job can show the same count twice​

If fail fast stopped a 10-scenario job after the first failure, none of the other scenarios reached a verdict - so all 10 are "unsettled" and both scopes read 10. The dialog is correct; the two counts just happen to match.

Concurrency​

The dialog pre-fills the concurrency the job actually ran at. For most shapes this is not the number in the YAML's concurrency field - a matrix job, for example, creates one task per configuration regardless of what the YAML says - so what gets filled in is the real parallelism, not the configured value. Retries, discovery tasks and the global pre/post steps are not counted.

You can raise or lower this before clicking Rerun. The maximum is your organization's concurrency limit when one is set; otherwise it is the limit of your plan.

Known gap​

When this gap applies

This affects CLI jobs where tunnel: true opened an ephemeral tunnel on the machine that submitted the job. Jobs that used a named tunnel, that used no tunnel at all, or that ran on-prem are not affected.

The CLI generates a random tunnel name, starts the tunnel locally and submits the job with tunnel: false plus that name in the configuration. Because the stored configuration shows tunnel: false, Rerun does not catch this. The job is admitted, the rerun starts, and it then fails about three minutes later with:

Tunnel provisioning failed … giving up after 5 attempt(s)

If you hit this, run the job again from the CLI, or switch the job to a named tunnel so Rerun can resolve it against your organization's tunnels.

Things that are not limits​

  • A project without a linked repo. Not refused - the credential falls back to a user-, project- or organization-level git_token.
  • Reruns of reruns. An ordinary job; the lineage label points at its own parent, so chains stay traceable.
  • Policies. Applied fresh to the new job rather than carried over.
  • The 500-combination advisory. Nothing enforces it; it is a cost warning in the dialog, not a limit.
  • A very wide matrix. When the configured matrix produces more combinations than can be enumerated quickly, Rerun does not block the job on that - the eligibility check skips the enumeration rather than slow the dialog down.

Terminal First Testing With Kane CLI

Natural language browser & mobile app tests right from terminal.

×
Schedule Your Personal Demo
Kane CLI terminal

Help and Support

Related Articles