Regression checks
Run every suite from the addon root (Linux/WSL with Lua 5.0):
sh tests/run_all.sh ../tools/lua5.0/lua5.0
The interpreter defaults to lua5.0 if omitted. The runner discovers all
tests/test_*.lua files, reports every failure, prints a final count, and exits
unsuccessfully if any suite fails. It is developer tooling, is not loaded by the
addon, and has no in-game overhead. The current suite contains 27 test files.
Individual checks can also be run from the addon root:
lua5.0 tests/test_ui_rarity.lua .
lua5.0 tests/test_ui_slot_edges.lua .
lua5.0 tests/test_ui_palette.lua .
lua5.0 tests/test_options_search.lua .
lua5.0 tests/test_player_frame_options.lua .
lua5.0 tests/test_hide_player_resources.lua .
lua5.0 tests/test_personal_resource_display.lua .
lua5.0 tests/test_actionbar_movers.lua .
lua5.0 tests/test_golden_unit_names.lua .
lua5.0 tests/test_quest_parchment.lua .
lua5.0 tests/test_castbar_mover.lua .
lua5.0 tests/test_bighealth_split.lua .
lua5.0 tests/test_loss_of_control_style.lua .
lua5.0 tests/test_health_text_alignment.lua .
lua5.0 tests/test_classicapi_runtime.lua .
lua5.0 tests/test_actionbar_grid.lua .
lua5.0 tests/test_range_events.lua .
lua5.0 tests/test_healing_prediction.lua .
lua5.0 tests/test_healing_shared.lua .
lua5.0 tests/test_cast_tracking.lua .
lua5.0 tests/test_runtime_helpers.lua .
lua5.0 tests/test_health_event_routing.lua .
lua5.0 tests/test_swing_native.lua .
lua5.0 tests/test_energy_tick.lua .
lua5.0 tests/test_macro_native.lua .
lua5.0 tests/test_equip_compare_native.lua .
These checks execute private helpers extracted from the production source with mocked WoW APIs. They cover item qualities, independent option controls, direct attachment insertion/removal, asymmetric trade offers, empty-slot reuse, palette filtering, backdrop resets, and deferred-refresh batching with and without native timers. They also parse the affected modules with Lua 5.0.
The search check loads config.lua with mocked frame APIs and exercises
filtering, collapsed categories, empty results, scrolling transitions, widget
reuse, and preservation/application of unsaved settings.
They cannot validate client rendering, actual event order, DLL behavior, or FPS. In-game testing remains necessary after changes to these paths.
Player-frame checks cover independent resource copies and resource hiding, native bar/event retention, Big Health sizing, saved positions/sizes, drag/reset, modifier release and option dependencies. Portrait crops, native animations, resize rendering and interactions with other addons still need in-game checks. Compact-frame checks also cover independent name positions/reset, native unit click forwarding, stopping a hidden drag and persistent raid group-number hiding.
Action-bar checks cover the Reduced Actionbar prerequisite, automatic movement integration, outline-only dragging, dependent bars, saved anchors, native relayout, reset, hidden progress bars and mouseover bars. Golden name-header checks cover the opaque texture, active palette, font/text updates and switching between NPC and player targets. Quest/gossip checks cover native parchment crops, tile dimensions, idempotence and removal of the stationery overlay. Actual action execution, paging, stances, pet transitions and title-strip rendering need game QA.
Cast-bar checks cover initialization despite an old disabled flag, checkbox removal, saved position protection and reset.
Cast-tracking checks cover authoritative native queries without a duplicate mirror, demand-driven SuperWoW registration, live channel identity, delayed failures, expiry/cache limits and Hunter custom timing/hooks. See the cast tracking review for ownership and game checks.
Runtime-helper checks load the production API layer and exercise all modifier combinations, native left/right state precedence, independent deferred startup requests, preserved fallback delays and removal of one-shot scripts. Action-bar and resource-display fixtures also use the real shared helpers. In game, verify that Ctrl+Shift+Alt previews, drag/reset and restored positions still work after login and reload, including the cast bar, timers and unit frames.
Health routing checks separate health/power events for all three units and retain identity/startup refreshes and alternate-power updates. Swing checks cover native capability/method guards, fill/text ownership without a Lua driver, timer reset cancellation, completion/grace, range and Hunter colors, Maul queue cancellation, preview suspension/restoration, death and the older-API fallback. Native DLL animation, actual action-state event delivery and weapon timing still require game testing. See the measurement plan.
Energy/mana checks cover world-entry booleans, form samples, casts versus drains, channel-stop ownership, proc rejection, native/fallback sweeps, size changes and idle cancellation. Macro checks cover native ownership/chosen icons, custom hints and conditions, item-cache retry, release on edit/logout, conditional-only polling, foreign parser/alias ownership and compatibility paths. Comparison checks cover full item links, native offsets, Shift, batching and hide/clear ownership, including item-link tooltips and the old-method fallback.
Comparison regression also simulates native callbacks during construction and 50 consecutive source clear/set refreshes plus 50 source hide/re-show cycles, including native side effects hiding ShoppingTooltip1/2 and clearing their owners. Hidden comparisons must rebind to the hovered item button and refill their native contents synchronously; merely calling Show is insufficient. An independently hidden comparison recovers without a new source event. The unchanged visible case still avoids native rebuilds. Changed links/equipment rebuild; a non-item or persistently hidden source removes comparisons after the deferred lifecycle check.
Proc-highlight checks cover capability detection, pre-existing procs, direct spells/macros, paging, hidden buttons, event-only updates and native-animation/static paths.