Prow test commands — when to use which

4 views
Skip to first unread message

Daniel Hiller

unread,
Apr 14, 2026, 5:35:04 AMApr 14
to kubevirt-dev
Hi folks,

TL;DR: If tests haven't run at all on a PR, use /test all. /retest and /retest-required only act on jobs that have already run.

A quick note on the differences between Prow's test trigger commands, since this recently caused confusion with the dependabot auto-merge setup.

We introduced automatic labeling and merging for dependabot PRs in https://github.com/kubevirt/project-infra/pull/4896. The commenter periodic was using /retest-required to trigger tests, but this turned out to be a no-op -- as seen on https://github.com/kubevirt/project-infra/pull/4924, where tests were only triggered after a human manually approved the PR. The fix is in https://github.com/kubevirt/project-infra/pull/4945.

Here's the breakdown:

* /test all - triggers all matching presubmit jobs unconditionally, whether they've run before or not.
* /retest - re-triggers jobs that have failed, plus automatic jobs that haven't run yet.
* /retest-required - re-triggers only required jobs that have failed. Optional jobs and jobs that haven't run are skipped entirely. If nothing has failed, this command does nothing.

Why this matters for reviewers and approvers: PRs from untrusted users (external contributors, bots like dependabot) don't get tests auto-triggered by Prow. If you're reviewing such a PR and see no test results, commenting /retest-required won't help -- there are no failed jobs to retest. Use /test all to kick off the initial test run.

How to tell if tests actually ran: GitHub's PR status area can be misleading here. GitHub shows two different things that look similar but have different sources:

* "Expected" checks (shown with a yellow dot) come from branch protection rules. These are always shown for every PR regardless of whether any test has been triggered. They tell you what's required, not what's running.
* Actual commit statuses (shown as pending/success/failure with a details link) come from Prow reporting back. These only appear once a job has actually been triggered.

If you see only "Expected" checks with no details links, no tests have run -- branch protection is just listing what it's waiting for. This is the situation where /retest-required does nothing and you need /test all.

Thanks,
--

Kind regards,


Daniel Hiller

He / Him / His

Principal Software Engineer, KubeVirt CI, OpenShift Virtualization

Red Hat

dhi...@redhat.com   

Red Hat GmbH, Registered seat: Werner von Siemens Ring 12, D-85630 Grasbrunn, Germany  
Commercial register: Amtsgericht Muenchen/Munich, HRB 153243,
Managing Directors: Ryan Barnhart, Charles Cachera, Avril Crosse O'Flaherty  
Reply all
Reply to author
Forward
0 new messages