FPP tests
Nightly runs of fpp-tests against fpp master: every scenario under ASan and TSan, once more in a coverage build to see what FPP code the scenarios reach, and the web UI suite in a browser against the pages served as on a player, with the ASan fppd behind them. Last run 2026-10-29 08:12Z, fpp 10.x-master-3039-g54bfd083 (run log).
ASan
9 failed · 257 skipped · 0 expected failures · 199 min · 2026-10-29
TSan
8 failed · 296 skipped · 0 expected failures · 219 min · 2026-10-29
coverage build
8 failed · 261 skipped · 0 expected failures · 198 min · 2026-10-29
Pi 5
0 failed · 145 skipped · 0 expected failures · 24 min · 2026-10-29
AM62x Beagle
0 failed · 183 skipped · 0 expected failures · 27 min · 2026-10-29
BeagleBone Black
0 failed · 1 skipped · 0 expected failures · 8 min · 2026-10-29
PocketBeagle
0 failed · 13 skipped · 0 expected failures · 6 min · 2026-10-29
web UI
2 failed · 4 skipped · 0 expected failures · 50 min · 2026-10-29
line coverage
67,190 of 86,967 lines +0.2%
function coverage
5,248 of 6,387 functions · 23 of 357 files never reached +0.2%
Line-by-line coverage report Every function and its call count (CSV)
Want to help? Pick a directory or file below with many unreached lines, open it in the coverage report to see which paths no scenario takes, and add a scenario that drives them (how to write one).
Coverage over time
Scenarios per run
Coverage by source directory
FPP's own code under src/ (fppd, its plugins and tools), not the submodules. Most lines no scenario reaches first: these are the places a new scenario adds the most. Some code can't run in the Docker suite at all (cape GPIO, PRU, framebuffers, serial ports), so no directory is expected to reach 100%.
| directory | files | lines | line coverage | functions | lines not reached |
|---|---|---|---|---|---|
channeloutput | 80 | 11,275 | 72.0% +0.1% | 77.0% | 3,154 |
overlays/wled | 24 | 11,705 | 74.5% -0.3% | 74.5% | 2,982 |
(top level) | 65 | 19,398 | 85.2% +0.1% | 90.1% | 2,867 |
oled | 14 | 3,213 | 34.5% no change | 46.5% | 2,104 |
mediaoutput | 26 | 11,482 | 82.5% no change | 89.0% | 2,010 |
non-gpl/BBShiftPanel | 2 | 1,444 | 2.6% no change | 10.5% | 1,406 |
playlist | 22 | 3,977 | 79.3% no change | 85.7% | 825 |
overlays | 14 | 4,710 | 83.3% no change | 90.5% | 788 |
boot | 6 | 3,973 | 82.5% +1.9% | 96.1% | 695 |
util | 23 | 2,691 | 76.5% +2.9% | 75.2% | 632 |
sensors | 9 | 896 | 62.9% no change | 78.8% | 332 |
framebuffer | 5 | 1,567 | 79.8% no change | 86.2% | 316 |
non-gpl/CapeUtils | 2 | 1,565 | 80.4% no change | 87.8% | 307 |
fseq | 3 | 1,910 | 87.1% no change | 85.2% | 247 |
commands | 12 | 2,490 | 91.2% no change | 98.4% | 220 |
non-gpl/BBShiftString | 2 | 1,116 | 83.2% no change | 90.9% | 188 |
non-gpl/FalconV5Support | 2 | 376 | 54.5% no change | 70.3% | 171 |
channeloutput/processors | 22 | 622 | 77.8% no change | 75.0% | 138 |
non-gpl/DPIPixels | 2 | 574 | 77.7% no change | 92.0% | 128 |
non-gpl/BBB48String | 2 | 669 | 84.2% no change | 85.7% | 106 |
channeloutput/stringtesters | 7 | 405 | 82.7% no change | 91.3% | 70 |
channeltester | 8 | 806 | 92.6% no change | 93.8% | 60 |
overlays/wled/lib8tion | 5 | 103 | 69.9% no change | 44.0% | 31 |
The 40 files with the most unreached lines
| file | lines | line coverage | functions | lines not reached |
|---|---|---|---|---|
non-gpl/BBShiftPanel/BBShiftPanel.cpp | 1,437 | 2.6% | 11.4% | 1,399 |
oled/SSD1306_OLED.c | 796 | 27.3% | 43.1% | 579 |
overlays/wled/FX.cpp | 6,093 | 90.6% | 97.7% | 571 |
overlays/wled/colorutils.cpp | 601 | 12.1% | 13.2% | 528 |
mediaoutput/AES67Manager.cpp | 2,812 | 81.8% | 87.9% | 511 |
channeloutput/PanelInterleaveHandler.cpp | 524 | 5.5% | 8.1% | 495 |
overlays/wled/FX_fcn.cpp | 945 | 50.5% | 51.4% | 468 |
mediaoutput/GStreamerOut.cpp | 2,903 | 84.5% | 96.5% | 450 |
overlays/wled/noise.cpp | 419 | 0.0% | 0.0% | 419 |
MultiSync.cpp | 2,819 | 85.7% | 97.4% | 404 |
oled/FPPStatusOLEDPage.cpp | 558 | 30.8% | 45.8% | 386 |
playlist/Playlist.cpp | 1,862 | 82.9% | 89.0% | 319 |
non-gpl/CapeUtils/CapeUtils.cpp | 1,505 | 80.1% | 87.5% | 300 |
oled/FPPMainMenu.cpp | 326 | 14.1% | 13.3% | 280 |
overlays/PixelOverlayModel.cpp | 976 | 72.3% | 88.7% | 270 |
channeloutput/RGBMatrix.cpp | 255 | 0.0% | 0.0% | 255 |
boot/FPPINIT_Config.cpp | 1,125 | 78.5% | 93.9% | 242 |
overlays/PixelOverlay.cpp | 1,374 | 83.2% | 92.5% | 231 |
OutputMonitor.cpp | 744 | 69.6% | 80.4% | 226 |
fppd.cpp | 1,251 | 82.0% | 84.7% | 225 |
framebuffer/KMSFrameBuffer.cpp | 839 | 73.8% | 84.6% | 220 |
fseq/FSEQFile.cpp | 1,556 | 85.9% | 85.5% | 219 |
oled/NetworkOLEDPage.cpp | 217 | 0.0% | 0.0% | 217 |
mediaoutput/VideoInputManager.cpp | 1,152 | 81.2% | 85.5% | 217 |
oled/I2C1602_2004_DisplayDriver.cpp | 212 | 0.0% | 0.0% | 212 |
gpio.cpp | 599 | 65.4% | 69.8% | 207 |
mediaoutput/V4L2Device.cpp | 203 | 0.0% | 0.0% | 203 |
non-gpl/BBShiftString/BBShiftString.cpp | 1,075 | 82.5% | 89.1% | 188 |
channeloutput/PixelString.cpp | 568 | 67.4% | 83.3% | 185 |
oled/OLEDPages.cpp | 425 | 56.7% | 73.9% | 184 |
channeloutput/ILI9488.cpp | 182 | 0.0% | 0.0% | 182 |
channeloutput/PCA9685.cpp | 464 | 60.8% | 85.7% | 182 |
mediaoutput/VideoOutputManager.cpp | 1,244 | 85.7% | 87.1% | 178 |
boot/FPPINIT_Audio.cpp | 1,458 | 87.8% | 98.0% | 178 |
non-gpl/FalconV5Support/FalconV5Support.cpp | 370 | 53.8% | 64.5% | 171 |
overlays/wled/colors.cpp | 342 | 52.6% | 40.9% | 162 |
channeloutput/VirtualDisplayBase.cpp | 377 | 57.0% | 80.0% | 162 |
mediaoutput/OpusRTPManager.cpp | 603 | 74.5% | 90.0% | 154 |
boot/FPPINIT_Network.cpp | 917 | 83.6% | 97.3% | 150 |
channeloutput/spixels.cpp | 148 | 0.0% | 0.0% | 148 |
Recent runs
| run | fpp | ASan | TSan | coverage build | Pi 5 | AM62x Beagle | BeagleBone Black | PocketBeagle | web UI | line coverage |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026-10-29 08:12Z | 10.x-master-3039-g54bfd083 | 1975/2241 · 9 failed | 1937/2241 · 8 failed | 1972/2241 · 8 failed | 108/253 | 70/253 | 32/33 | 20/33 | 1012/1018 · 2 failed | 77.3% |
| 2026-10-28 08:09Z | 10.x-master-3032-g809c07af | 1939/2193 · 1 failed | 1895/2193 · 7 failed | 1936/2193 | 107/251 | 69/251 · 1 failed | 32/33 | 20/33 | 1002/1007 · 1 failed | 77.1% |
| 2026-10-27 08:12Z | 10.x-master-3013-g38d5636f | 1750/2001 | 1719/2001 | 1749/2001 | 107/251 | 70/251 | 32/33 | 20/33 | 978/983 · 1 failed | 75.5% |
| 2026-10-26 08:22Z | 10.x-master-3002-gb4fac350 | 1674/1925 | 1649/1925 · 2 failed | 1673/1925 | 53/94 | 32/33 | 20/33 | 954/961 · 3 failed | 69.3% | |
| 2026-10-25 08:02Z | 10.x-master-2987-g606d1762 | 1607/1701 | 1585/1701 · 1 failed | 1605/1701 · 1 failed | 51/92 | 622/626 | 67.7% | |||
| 2026-10-24 07:57Z | 10.x-master-2970-g53cd678f | 1532/1625 · 1 failed | 1510/1625 · 2 failed | 1531/1625 · 1 failed | 50/88 | 506/510 | 67.1% | |||
| 2026-10-23 08:02Z | 10.x-master-2956-g36bc7e7b | 1506/1594 | 1479/1594 · 6 failed | 1504/1594 · 1 failed | 50/87 | 503/509 · 2 failed | 65.7% | |||
| 2026-10-22 07:58Z | 10.x-master-2943-g77cc9051 | 1397/1485 · 1 failed | 1371/1485 · 8 failed | 1397/1485 · 1 failed | 49/87 · 1 failed | 483/487 | 64.8% | |||
| 2026-10-21 17:31Z | 10.x-master-2919-g3fe0c2d3 | 1385/1472 | 1373/1480 | 1391/1480 | 50/87 | 474/474 | 64.8% | |||
| 2026-10-21 09:46Z | 10.x-master-2876-gc0ba73cc | no results | no results | 1364/1456 · 4 failed | 443/451 · 8 failed | 69.4% | ||||
| 2026-10-20 08:43Z | 10.x-master-2793-g73f7fd82 | 827/851 | 815/851 · 7 failed | 827/851 | 55/55 | 61.8% | ||||
| 2026-10-19 08:43Z | 10.x-master-2747-ga0b4c6a0 | 670/694 · 1 failed | 663/694 · 4 failed | 670/694 · 1 failed | 32/32 | 55.6% | ||||
| 2026-10-18 15:38Z | 10.x-master-2688-g5cd6430e | 646/662 | 32/32 | 55.3% | ||||||
| 2026-10-18 08:22Z | 10.x-master-2684-g52ea0347 | 646/662 | 642/662 | 646/662 | 55.3% | |||||
| 2026-10-17 14:02Z | 10.x-master-2679-gadba066a | 642/661 · 3 failed | 642/661 | 642/661 · 3 failed | 55.0% | |||||
| 2026-10-17 08:21Z | 10.x-master-2679-gadba066a | 642/661 · 3 failed | 642/661 | 642/661 · 3 failed | 55.0% | |||||
| 2026-10-16 08:25Z | 10.x-master-2623-ga896ff39 | 642/658 | 639/658 | 642/658 | 55.3% | |||||
| 2026-10-15 15:25Z | 10.x-master-2617-gbc36ac2d | 641/657 · 1 failed | 55.4% | |||||||
| 2026-10-15 08:22Z | 10.x-master-2606-gf4a1ed3e | 608/623 | 594/623 · 11 failed | 607/623 · 1 failed | 54.3% | |||||
| 2026-10-14 21:47Z | 10.x-master-2602-g7ccba9e7 | 575/611 | 51.8% |
All runs, as JSON: history.json