5.1 KiB
ShaguDPS 4.6.2 validation (ClassicAPI 1.20.4)
Automated checks
Run each tests/*.lua file from the repository root using Lua 5.0. The
threat-benchmark.lua script requires 0.5 as its first argument.
The regression scenarios cover direct and periodic damage, demon and guardian ownership, merged and separate pets, exclusion of outsiders, effective healing with positive/zero/invalid overhealing, unavailable target visibility, dispels, fight history, threat, display caching and the profiling command. Smoothing tests cover both toggles, both healing layers, unsupported/partial APIs, row reuse, view/segment/target changes and forced refreshes.
These use mocked WoW APIs and synthetic events. They cannot verify what the server sends, real rendering, native animation cost, or actual raid accuracy.
In-game accuracy check (OEVG)
- Select ClassicAPI as the data source and reset meter data. Enable
/combatlogfor a short controlled fight; disable it afterwards. ClassicAPI also writes structured events toLogs/WoWCombatLog-MMDDYY_HHMMSS.txt. - Cast Corruption alone, then Shadow Bolt. Compare your spell breakdown totals with damage event amounts in the structured log for your source GUID.
- Repeat with an imp attacking. With Merge Pets enabled, Firebolt should appear under your pet contribution. Reset and repeat with merging off: the imp gets a separate row. Test an Infernal or other guardian if available. For a summoned demon that turns hostile, verify the pet contribution stops at control loss, including its first hostile hit and Immolation ticks. Your own damage against the hostile demon still counts. If control is regained, pet attribution should resume immediately. Start logging before summoning and reset data before each attempt; old incorrect totals are not rewritten.
- Compare successful direct and periodic heals against a group member with known missing health, then a full-health member. Compare raw totals and effective healing (amount minus overhealing where valid). Out-of-view or percentage-only health can require an estimate; the client log is not server-authoritative.
- End combat and verify Current, Overall and a saved boss fight separately. Use fresh resets between merge-mode comparisons so earlier totals don't mix.
- Check the segment menu: Fights lists boss kills and Wipes beneath it lists failed attempts, newest first. Select entries in Damage, Heal and Dispels; reload and verify both histories persist. Reset Data should clear both. Limits are 15 kills and 5 wipes independently; older mixed history is separated automatically.
Smoothing and compatibility (OEVG)
- Open
/sdps config. Both smoothing toggles start off. Turn on only damage/heal smoothing; confirm Damage and Heal fills ease while Threat remains immediate. - Turn on only threat smoothing; verify the independent behavior. Toggle both off while fills are moving: the next forced repaint snaps to current values.
- Confirm healing's effective and raw-healing layers ease together and labels still show current values. Dispels remain immediate.
- Change ranking, scroll, switch views/segments, hide/show a window and switch between threat targets (including same-name mobs). New identities should snap.
- Check multiple windows and both Classic/Flat themes, including option text fit.
- Without ClassicAPI interpolation, the addon must retain ordinary immediate bars with either toggle enabled. No Lua animation loop is installed.
In-game performance comparison (OEVG)
- Run
/console scriptProfile 1, then/reload. - With a fixed number of visible windows/rows and the same source/time settings,
run
/sdps perfduring ten seconds of a busy fight. Record CPU ms/s and memory with both smoothing toggles off; repeat in comparable combat with each toggle on separately and then both on. Repeat samples if combat load differs greatly. - Inspect GentleGC freeze reports and visible frame pacing too. Native rendering cost may not appear in addon Lua CPU; memory deltas also reflect collection.
- Run
/console scriptProfile 0, then/reloadwhen finished.
No in-game performance gain or accuracy result is claimed by these offline tests. ClassicAPI remains optional. No changes are needed in OEVG's ShaguTweaks options: these settings affect only ShaguDPS's own status bars.
In-game results and remaining checks (November 6, 2026)
- Imp tests matched logged player and pet damage exactly, both merged and separate.
- After the ownership-cache fix, the Infernal test excluded all 2,494 logged damage against the player after control loss. Player spells and friendly melee matched. One friendly 40-damage Immolation hit was absent: the meter showed 19,737 versus 19,777 expected from player damage plus friendly pet events. This discrepancy remains unresolved; do not claim complete damage accuracy.
- The summon-time Inferno Effect was logged with hostile NPC flags before pet control and is excluded by the current group-source rules.
- Native smoothing performance, 15-kill/5-wipe menus and the options-window recolor still need in-game confirmation beyond automated regression checks.