Skip to content

Report retry-confirmed failures as regressions, not flakiness - #78223

Open
TheRealAlexxx wants to merge 1 commit into
WebKit:mainfrom
TheRealAlexxx:buildbot-printer-regression-report
Open

TheRealAlexxx wants to merge 1 commit into
WebKit:mainfrom
TheRealAlexxx:buildbot-printer-regression-report

Conversation

@TheRealAlexxx

@TheRealAlexxx TheRealAlexxx commented Oct 25, 2026 •

Copy link
Copy Markdown

Report retry-confirmed failures as regressions, not flakiness

When a test fails in both the initial run and the retry run but with different result types, run-webkit-tests counts it as a regression in the summarized results (num_regressions, report REGRESSION) and exits non-zero, yet the buildbot-style report lists it under "Unexpected flakiness" and prints no Regressions section, because BuildBotPrinter.print_unexpected_results ignores the report field and treats any test with more than one actual result type as flaky. Bots then report, for example, num_regressions=1 alongside "reports: 2 FLAKY, 0 REGRESSION" for the same run. See https://bugs.webkit.org/show_bug.cgi?id=321787.

BuildBotPrinter already documents that its groups must match summarize_results(), so use the report field it writes: tests marked REGRESSION are grouped with the regressions and tests marked FLAKY with the flaky results, keyed by the first actual result type in both cases. The existing pass, pixel-retry, multi-result, and single-result fallbacks are unchanged, as are the exit code and the summarized results themselves.

A new test summarizes a run where a test times out in the initial run and crashes on retry, then checks that the buildbot report contains a Regressions section listing the test and no flakiness section, matching num_regressions=1.

PYTHONPATH=Tools/Scripts python3 -m unittest webkitpy.layout_tests.views.buildbot_results_unittest
python3 Tools/Scripts/check-webkit-style Tools/Scripts/webkitpy/layout_tests/views/buildbot_results.py Tools/Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py
```<!--EWS-Status-Bubble-Start-->
https://github.com/WebKit/WebKit/commit/14ba6931c30d52cae6a1d3560e41572449183fb9

| Misc | iOS, visionOS, tvOS & watchOS  | macOS  | Linux |  Windows |
| ----- | ---------------------- | ------- |  ----- |  --------- |
| [✅ 🧪 style](https://ews-build.webkit.org/#/builders/38/builds/197527 "Passed style check") | [✅ 🛠 ios](https://ews-build.webkit.org/#/builders/159/builds/70475 "Built successfully") | [✅ 🛠 mac](https://ews-build.webkit.org/#/builders/168/builds/64503 "Built successfully") | [✅ 🛠 wpe](https://ews-build.webkit.org/#/builders/5/builds/206882 "Built successfully") | [✅ 🛠 win](https://ews-build.webkit.org/#/builders/59/builds/160619 "Built successfully") 
| [✅ 🧪 bindings](https://ews-build.webkit.org/#/builders/9/builds/199385 "Passed tests") | [✅ 🛠 ios-sim](https://ews-build.webkit.org/#/builders/155/builds/72817 "Built successfully") | [✅ 🛠 mac-cmake-debug](https://ews-build.webkit.org/#/builders/156/builds/70440 "Built successfully") | [✅ 🧪 wpe-wk2](https://ews-build.webkit.org/#/builders/34/builds/153646 "Passed tests") | [✅ 🧪 win-tests](https://ews-build.webkit.org/#/builders/60/builds/106079 "Passed tests") 
| [✅ 🧪 webkitperl](https://ews-build.webkit.org/#/builders/11/builds/200483 "Passed tests") | [✅ 🧪 ios-wk2](https://ews-build.webkit.org/#/builders/162/builds/57602 "Passed tests") | [✅ 🧪 api-mac](https://ews-build.webkit.org/#/builders/18/builds/173915 "Passed tests") | [✅ 🧪 api-wpe](https://ews-build.webkit.org/#/builders/41/builds/134336 "Passed tests") | 
| [✅ 🧪 webkitpy](https://ews-build.webkit.org/#/builders/6/builds/196864 "Passed tests") | [✅ 🧪 ios-wk2-wpt](https://ews-build.webkit.org/#/builders/154/builds/56730 "Passed tests") | [✅ 🧪 api-mac-cmake-debug](https://ews-build.webkit.org/#/builders/165/builds/53131 "Passed tests") | | 
| | [✅ 🧪 api-ios](https://ews-build.webkit.org/#/builders/13/builds/166084 "Passed tests") | [✅ 🧪 mac-wk2](https://ews-build.webkit.org/#/builders/169/builds/54088 "Passed tests") | [✅ 🛠 gtk3-gcc](https://ews-build.webkit.org/#/builders/284/builds/18472 "Built successfully") | 
| | | [✅ 🧪 mac-cmake-debug-wk2](https://ews-build.webkit.org/#/builders/161/builds/58420 "Passed tests") | [✅ 🛠 gtk](https://ews-build.webkit.org/#/builders/2/builds/209564 "Built successfully") | 
| | [✅ 🛠 vision](https://ews-build.webkit.org/#/builders/153/builds/69966 "Built successfully") | | [✅ 🧪 gtk-wk2](https://ews-build.webkit.org/#/builders/1/builds/164399 "Passed tests") | 
| | [✅ 🛠 vision-sim](https://ews-build.webkit.org/#/builders/160/builds/70577 "Built successfully") | [✅ 🧪 mac-intel-wk2](https://ews-build.webkit.org/#/builders/170/builds/49595 "Passed tests") | [✅ 🧪 api-gtk](https://ews-build.webkit.org/#/builders/21/builds/164152 "Passed tests") | 
| | [✅ 🧪 vision-wk2](https://ews-build.webkit.org/#/builders/164/builds/58596 "Passed tests") | | [  ~~🛠 playstation~~](https://ews-build.webkit.org/#/builders/134/builds/141695 "The change is no longer eligible for processing.") | 
| | [✅ 🛠 tv](https://ews-build.webkit.org/#/builders/158/builds/69767 "Built successfully") | [✅ 🧪 mac-site-isolation](https://ews-build.webkit.org/#/builders/185/builds/29031 "Passed tests") | | 
| | [✅ 🛠 tv-sim](https://ews-build.webkit.org/#/builders/157/builds/68010 "Built successfully") | | | 
| | [✅ 🛠 watch](https://ews-build.webkit.org/#/builders/163/builds/70096 "Built successfully") | | | 
| | [✅ 🛠 watch-sim](https://ews-build.webkit.org/#/builders/152/builds/69726 "Built successfully") | | | 
<!--EWS-Status-Bubble-End-->

https://bugs.webkit.org/show_bug.cgi?id=321787

Reviewed by NOBODY (OOPS!).

When a test fails in both the initial run and the retry run but with different result types, run-webkit-tests counts it as a regression in the summarized results (num_regressions, report REGRESSION) and exits non-zero, yet the buildbot-style report lists it under "Unexpected flakiness" and prints no Regressions section, because BuildBotPrinter.print_unexpected_results ignores the report field and treats any test with more than one actual result type as flaky. Bots then report, for example, num_regressions=1 alongside "reports: 2 FLAKY, 0 REGRESSION" for the same run. See https://bugs.webkit.org/show_bug.cgi?id=321787.

BuildBotPrinter already documents that its groups must match summarize_results(), so use the report field it writes: tests marked REGRESSION are grouped with the regressions and tests marked FLAKY with the flaky results, keyed by the first actual result type in both cases. The existing pass, pixel-retry, multi-result, and single-result fallbacks are unchanged, as are the exit code and the summarized results themselves.

A new test summarizes a run where a test times out in the initial run and crashes on retry, then checks that the buildbot report contains a Regressions section listing the test and no flakiness section, matching num_regressions=1.

```
PYTHONPATH=Tools/Scripts python3 -m unittest webkitpy.layout_tests.views.buildbot_results_unittest
python3 Tools/Scripts/check-webkit-style Tools/Scripts/webkitpy/layout_tests/views/buildbot_results.py Tools/Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants