Anim Tools Test Cases
Anim Tools Test Cases
Section titled “Anim Tools Test Cases”These are validation scenarios for the WBP-owned Anim Tools panel, not a record of completed test runs. Use the current 18-panel inventory to understand supported actions. The shared dashboard is a summary surface, not a nineteenth tool. General FPS conversion and automatic project-wide animation migration are not implemented.
Shared Test Fixtures
Section titled “Shared Test Fixtures”Create or maintain these Widget Blueprints for repeatable testing:
WBP_AT_Clean: two widgets, two simple animations, no known issues.WBP_AT_KeyHeavy: repeated keys, dense keys, default-matching curves, linear-looking curves, and out-of-range keys.WBP_AT_BrokenRefs: renamed/deleted widgets, renamed Blueprint variables/functions/events, stale animation bindings, and stray MovieScene bindings.WBP_AT_Materials: images/borders/rich text using template materials, dynamic material setup in Blueprint, valid and invalid animated material parameters.WBP_AT_StateMachine: animations paired with at least oneUWbpAnimStateMachineDefinition, including missing clips, shared clips, invalid transition targets, and curve-atlas states.WBP_AT_Purge: broad track coverage, including transform subchannels, color channels, visibility, enabled, material-like tracks, event tracks, empty tracks, and unknown/custom property tracks.
Every mutating test should verify:
- An undo transaction is created.
- Backup behavior follows the current backup settings.
- The WBP is marked dirty only when data actually changes.
- The scan result refreshes after apply.
- Disabled tools do not run during automatic refresh.
Go Tonavigates to the most specific available source.
Panel Shell
Section titled “Panel Shell”Open Scope
Section titled “Open Scope”Setup: Open a Widget Blueprint and focus its editor.
Steps: Open the Widget Blueprint editor’s UI Foundry -> Anim Tools entry or the dockable Anim Tools tab.
Expected: Anim Tools opens as a tab owned by that Widget Blueprint editor and targets that WBP without requiring an asset picker.
Regression checks: The tab should not appear as a generic level-editor tool. The old top asset picker, Use Selected button, Refresh button, and pin toggle should not be present.
Tool Enablement Persistence
Section titled “Tool Enablement Persistence”Setup: Open Anim Tools for any WBP.
Steps: Disable several tools from Tools: X/Y, close the WBP editor, reopen the WBP, and reopen Anim Tools.
Expected: The same tools remain disabled and hidden from the accordion.
Regression checks: Disabled tools should still be available in the dropdown for re-enabling.
Tool Ordering Persistence
Section titled “Tool Ordering Persistence”Setup: Enable at least three tools.
Steps: Move a middle tool up and down from the tools dropdown, close and reopen the WBP editor.
Expected: The order is preserved and reflected in the accordion when the dropdown closes.
Regression checks: First tool has disabled up action, last tool has disabled down action, reset order restores the default order.
Narrow Layout
Section titled “Narrow Layout”Setup: Dock Anim Tools beside Sequencer and narrow the tab.
Steps: Resize from wide to narrow widths.
Expected: Health, Findings, and Safe Fixes stack vertically when needed; backup controls wrap; no text overlaps help icons, spinners, or checkboxes.
Regression checks: The panel should remain legible in light and dark editor themes.
Animation Health Dashboard
Section titled “Animation Health Dashboard”Clean WBP Summary
Section titled “Clean WBP Summary”Setup: Open WBP_AT_Clean.
Steps: Open Anim Tools with all tools enabled.
Expected: Health reports clean or review-free state, findings count is zero, safe fixes count is zero, and no destructive action is suggested.
Regression checks: Summary should not show stale findings from another WBP.
Review Recommended Summary
Section titled “Review Recommended Summary”Setup: Open WBP_AT_KeyHeavy or WBP_AT_BrokenRefs.
Steps: Run the visible scans.
Expected: Health moves to review recommended, findings and safe fix counts match visible tool results, and the recommended next action points to a relevant tool.
Regression checks: Counts update after fixes are applied.
Backup Configuration
Section titled “Backup Configuration”Setup: Open any WBP with a mutating issue.
Steps: Change backup location with the folder picker, change backup file name tokens, toggle Save If Unsaved, then apply a safe fix.
Expected: Backup is created at the configured path with the expected formatted name before mutation.
Regression checks: Invalid backup path blocks mutation with clear feedback unless explicit override behavior exists.
Backup Settings Persistence
Section titled “Backup Settings Persistence”Setup: Open any WBP and change the backup path, name format, Backup Before Apply, and Save If Unsaved values.
Steps: Close and reopen the WBP editor, then reopen Anim Tools.
Expected: Backup settings reload from Anim Tools settings and match the previous values.
Regression checks: Tool enablement/order persistence and backup settings should save together without resetting either group.
Redundant Keyframe Cleaner
Section titled “Redundant Keyframe Cleaner”Detect Repeated Float Keys
Section titled “Detect Repeated Float Keys”Setup: In WBP_AT_KeyHeavy, create an opacity or transform channel with three consecutive identical values.
Steps: Set repeated key threshold to 2, scan repeated keys.
Expected: The run is reported with redundant count equal to run length minus one.
Regression checks: The first key is preserved by default.
Respect Threshold
Section titled “Respect Threshold”Setup: Create one pair of repeated keys and one run of three repeated keys.
Steps: Set threshold to 3, scan.
Expected: Only the run of three is reported.
Regression checks: Changing threshold back to 2 reports both.
Float Tolerance
Section titled “Float Tolerance”Setup: Create near-duplicate float keys with tiny differences.
Steps: Scan with low tolerance, then scan with higher tolerance.
Expected: Low tolerance ignores near-duplicates; high tolerance reports them.
Regression checks: Exact duplicate bool and byte keys are unaffected by float tolerance.
Apply Cleanup
Section titled “Apply Cleanup”Setup: Scan finds redundant float, bool, byte, color, and transform keys.
Steps: Apply visible safe cleanup.
Expected: Duplicate keys are removed, visible curve shape is preserved, undo restores the removed keys.
Regression checks: Boundary keys are preserved when that safety option is enabled.
Interpolation Cleaner
Section titled “Interpolation Cleaner”Detect Default-Matching Curves
Section titled “Detect Default-Matching Curves”Setup: Add float keys whose interpolation/tangent metadata matches the channel default but is explicitly authored.
Steps: Enable default-matching curve detection and scan.
Expected: Findings identify the affected keys and suggested metadata simplification.
Regression checks: Keys with intentionally custom curves are not listed as default-matching.
Detect Effectively Linear Curves
Section titled “Detect Effectively Linear Curves”Setup: Add curved float keys whose sampled result is effectively linear under the motion tolerance.
Steps: Enable effectively linear curve detection and scan.
Expected: Findings show issue type Effectively Linear with max motion difference under tolerance.
Regression checks: Lowering tolerance can move the row to review or hide it.
Normalize Safe Tangents
Section titled “Normalize Safe Tangents”Setup: Include safe linear-like curves and unsafe/non-finite tangent cases.
Steps: Apply safe tangent normalization.
Expected: Safe rows are normalized; unsafe rows remain review-only.
Regression checks: Undo restores original interpolation metadata.
Animation Reference Checker
Section titled “Animation Reference Checker”List All Blueprint References
Section titled “List All Blueprint References”Setup: WBP_AT_BrokenRefs has widgets, Blueprint variables, functions, and events, some animated and some not.
Steps: Enable all reference filters and scan.
Expected: All present WBP/Blueprint-owned references are listed, not only animated ones.
Regression checks: Built-in widget properties such as render opacity and visibility are not treated as Blueprint variables.
Missing Reference Detection
Section titled “Missing Reference Detection”Setup: Rename or delete a function/event/variable referenced by an animation track.
Steps: Scan Blueprint references.
Expected: Missing or possible-rename rows are surfaced with distinct status formatting.
Regression checks: Used, no animated use, missing, and possible rename statuses are distinguishable without relying only on color.
Navigation
Section titled “Navigation”Setup: Ensure at least one referenced function/event track exists.
Steps: Use Go To on a reference usage row.
Expected: The WBP editor navigates to the most specific available source.
Regression checks: Failed navigation reports why rather than silently doing nothing.
Animation Material Parameter Checker
Section titled “Animation Material Parameter Checker”Valid Template Material Parameter
Section titled “Valid Template Material Parameter”Setup: WBP_AT_Materials has a widget using a template material with an animated existing scalar or color parameter.
Steps: Scan material parameters.
Expected: The parameter is classified as valid.
Regression checks: Type is reported correctly when discoverable.
Missing Parameter
Section titled “Missing Parameter”Setup: Rename a material parameter used by an animation track.
Steps: Scan material parameters.
Expected: The parameter is classified as missing and can seed the remapper source field.
Regression checks: Missing status remains legible in light and dark themes.
Runtime MID Evidence
Section titled “Runtime MID Evidence”Setup: Create dynamic material setup in Blueprint using common MID nodes.
Steps: Enable Blueprint MID setup checking and scan.
Expected: Runtime or likely MID setup status is reported with confidence language.
Regression checks: Absence of template material inventory should not automatically produce a false broken result when runtime evidence exists.
Confirmed And Likely Runtime Evidence
Section titled “Confirmed And Likely Runtime Evidence”Setup: Create one widget path that clearly calls dynamic material creation/fetch and another path that only has indirect material assignment evidence.
Steps: Scan material parameters with Blueprint MID setup checking enabled.
Expected: Findings distinguish confirmed runtime material setup from likely runtime material setup in the evidence text.
Regression checks: Turning off MID setup checking should remove runtime-evidence fallback rows without affecting template-material validation.
Material Parameter Remapper
Section titled “Material Parameter Remapper”Preview Exact Parameter Rename
Section titled “Preview Exact Parameter Rename”Setup: WBP_AT_Materials has tracks using old parameter name GlowAmount and available replacement EmissiveStrength.
Steps: Enter source and replacement names, preview remap.
Expected: Dry-run lists exact affected animations, widgets, and tracks.
Regression checks: Non-matching parameter names are not included.
Apply Remap
Section titled “Apply Remap”Setup: Preview has valid rows.
Steps: Apply selected remap.
Expected: MovieScene property names/paths are updated, scan no longer reports the old parameter as missing, undo restores old names.
Regression checks: Material assets themselves are not modified.
Compatibility Guard
Section titled “Compatibility Guard”Setup: Source appears scalar-like and replacement appears color/vector-like.
Steps: Preview with Compatible Only enabled.
Expected: Row is blocked or marked needs review.
Regression checks: Type override is required before applying incompatible remap.
Broken Widget Binding Repair
Section titled “Broken Widget Binding Repair”Detect Stale Binding
Section titled “Detect Stale Binding”Setup: Delete or rename a widget that has animation tracks.
Steps: Run Find Binding Matches.
Expected: Stale binding appears with old widget name, affected animation, and candidate replacement if available.
Regression checks: Healthy bindings are not listed as broken.
High-Confidence Remap
Section titled “High-Confidence Remap”Setup: Rename Image_Icon to Image_Icon_New with same type and similar hierarchy.
Steps: Find matches, apply high-confidence remap.
Expected: Binding points to the replacement widget and tracks remain intact.
Regression checks: Binding GUID preservation is verified where expected.
Remove Orphan
Section titled “Remove Orphan”Setup: Stale binding has no credible replacement.
Steps: Delete orphaned tracks after preview.
Expected: Orphan tracks are removed through undo transaction.
Regression checks: Confirmation or explicit selection is required.
Animation Parity Map
Section titled “Animation Parity Map”Coverage Comparison
Section titled “Coverage Comparison”Setup: Two animations share widgets but one is missing a property track.
Steps: Compare against baseline in Coverage mode.
Expected: Missing and extra tracks are shown per animation.
Regression checks: Identical tracks are summarized as matches.
Timing Drift
Section titled “Timing Drift”Setup: Same property is keyed in two animations at different times.
Steps: Compare in Timing mode.
Expected: Timing drift is surfaced with animation, widget, property, and time delta.
Regression checks: Differences Only hides matching rows.
Value Drift
Section titled “Value Drift”Setup: Same key timing but different values.
Steps: Compare in Value mode.
Expected: Value drift is reported.
Regression checks: Go To opens the selected animation/track source.
Unused Track Finder
Section titled “Unused Track Finder”Empty Track Detection
Section titled “Empty Track Detection”Setup: Add a property track with no sections.
Steps: Find unused tracks.
Expected: Track is listed as no sections or empty track.
Regression checks: Track with real keys is not listed.
No-Key Section Detection
Section titled “No-Key Section Detection”Setup: Add a section that contains no supported keyed data.
Steps: Find unused tracks.
Expected: Track is listed with reason No Keys.
Regression checks: Unsupported but non-empty tracks are review-only, not safe-delete by default.
Delete Safe Tracks
Section titled “Delete Safe Tracks”Setup: Preview includes safe empty tracks.
Steps: Delete selected safe tracks.
Expected: Tracks are removed, undo restores them, scan count decreases.
Regression checks: Suspicious tracks are not removed by the safe action.
Rename Migration Runner
Section titled “Rename Migration Runner”Aggregate Rename Candidates
Section titled “Aggregate Rename Candidates”Setup: WBP_AT_BrokenRefs has stale widget bindings, missing material parameter names, and stale property path text.
Steps: Run migration preview.
Expected: Candidates are grouped by reference type and routed to the owner tool.
Regression checks: The runner does not hide the specific repair path behind an opaque one-click operation.
Inspect-Only Migration Boundary
Section titled “Inspect-Only Migration Boundary”Setup: The Widget Blueprint has one stale widget binding and one stale animated material parameter name.
Steps: Review the aggregated findings, then open the dedicated binding or material parameter remapper for the chosen repair.
Expected: The runner reports and routes the findings. Mutation is performed only through the specialized tool and its reviewed source/target selection.
Regression checks: The runner does not apply a rename manifest or perform automatic project-wide migration.
Range Guard
Section titled “Range Guard”Detect Keys Outside Animation Range
Section titled “Detect Keys Outside Animation Range”Setup: Create property keys before the playback start and after playback end.
Steps: Use animation playback range and scan.
Expected: Out-of-range keys are listed with before/after classification.
Regression checks: Keys inside the range are not listed.
Custom Time Range
Section titled “Custom Time Range”Setup: Animation playback range is wide, but desired cleanup range is narrower.
Steps: Set custom start/end time and scan.
Expected: Keys outside the custom range are listed even if they are inside the animation playback range.
Regression checks: Switching back to animation range changes the result set.
Delete Out-of-Range Keys
Section titled “Delete Out-of-Range Keys”Setup: Preview includes supported float, bool, byte, color, and transform keys outside range.
Steps: Apply range cleanup.
Expected: Out-of-range keys are deleted; in-range keys remain.
Regression checks: Undo restores deleted keys.
Trim Sections
Section titled “Trim Sections”Setup: Add a section extending beyond the target range.
Steps: Enable Trim Sections to Range and apply cleanup.
Expected: Section range is clamped to target range.
Regression checks: Trim should not delete in-range keys unexpectedly.
Interaction State Inspector
Section titled “Interaction State Inspector”Visibility And Opacity Combination
Section titled “Visibility And Opacity Combination”Setup: Animate both visibility and render opacity on the same widget.
Steps: Inspect interaction states.
Expected: The combination is listed for review with animation, widget, properties, and final/intermediate state.
Regression checks: It is not labeled as automatically wrong.
End-State Only Filter
Section titled “End-State Only Filter”Setup: Add intermediate opacity changes that resolve to a safe final state.
Steps: Toggle End State Only.
Expected: Intermediate-only rows are hidden when End State Only is enabled.
Regression checks: Include Intermediate Keys shows them again.
Duration / FPS Normalizer
Section titled “Duration / FPS Normalizer”Empty Playback Range
Section titled “Empty Playback Range”Setup: Create an animation with zero or invalid playback range.
Steps: Analyze timing.
Expected: Empty range is reported with repair suggestion.
Regression checks: Normal animations are not reported as empty.
Initialize An Empty Playback Range
Section titled “Initialize An Empty Playback Range”Setup: Create an animation with authored section bounds and an empty playback range.
Steps: Review the duration finding and apply Normalize Duration.
Expected: The playback range is initialized from the authored section bounds.
Regression checks: Undo restores the original range and no general FPS conversion is performed.
Preserve An Existing Playback Range
Section titled “Preserve An Existing Playback Range”Setup: Create an animation with a non-empty playback range.
Steps: Review the Duration / FPS Normalizer panel and run the supported duration action where available.
Expected: The existing non-empty range is preserved.
Regression checks: The panel does not convert the display rate or retime keys through an FPS-preservation mode.
Key Usage Map
Section titled “Key Usage Map”Current Animation Summary
Section titled “Current Animation Summary”Setup: Select an animation in Sequencer that has keyed channels.
Steps: Build key usage map.
Expected: Current summary shows keyed channel and key counts for the selected animation.
Regression checks: No exhaustive per-key findings list appears.
Per-Animation Summary
Section titled “Per-Animation Summary”Setup: WBP has multiple animations with different key counts.
Steps: Build key usage map.
Expected: By Animation rows show keys, channels, and dense counts horizontally.
Regression checks: Rows are readable in narrow layouts.
Click Animation Row
Section titled “Click Animation Row”Setup: Build map with at least two animations.
Steps: Click an animation row.
Expected: Sequencer selects that animation and the Current summary updates without collapsing the Key Usage Map section.
Regression checks: The panel should not flicker or lose expansion state.
State Compatibility Checker
Section titled “State Compatibility Checker”Missing Clip
Section titled “Missing Clip”Setup: State machine definition references an animation name that does not exist in the WBP.
Steps: Check state compatibility.
Expected: Missing clip is reported with state name and expected animation.
Regression checks: Node/status wording matches state-machine editor validation where applicable.
Shared Clip Reuse
Section titled “Shared Clip Reuse”Setup: Two states reference the same WBP animation.
Steps: Check state compatibility.
Expected: Shared clip reuse is reported as review-level unless configured otherwise.
Regression checks: Intentional shared clips are not auto-fixed.
Invalid Transition Target
Section titled “Invalid Transition Target”Setup: Definition has transition target that is not a defined state.
Steps: Check state compatibility.
Expected: Invalid target is reported.
Regression checks: Same issue appears consistently in state-machine validation surfaces.
Curve Atlas State Validation
Section titled “Curve Atlas State Validation”Setup: State has curve-atlas duration with no bindings, or bindings with zero duration.
Steps: Check state compatibility.
Expected: Invalid curve-atlas timing or missing binding issues are reported.
Regression checks: Valid curve-atlas-only states are not reported as missing clips.
Sequencer Track Doctor
Section titled “Sequencer Track Doctor”Missing MovieScene
Section titled “Missing MovieScene”Setup: Create or simulate an animation with missing MovieScene data.
Steps: Inspect Sequencer tracks.
Expected: Missing MovieScene is reported as manual recovery.
Regression checks: Tool does not attempt destructive repair.
Stray Binding GUID
Section titled “Stray Binding GUID”Setup: MovieScene has a possessable/binding not present in the WBP animation binding table.
Steps: Inspect Sequencer tracks.
Expected: Stray binding is reported with raw GUID available in advanced detail.
Regression checks: Remove Strays removes only orphaned bindings.
Empty Property Path
Section titled “Empty Property Path”Setup: Add or simulate a property track with empty property path.
Steps: Inspect Sequencer tracks.
Expected: Empty property path is listed and routed to appropriate owner tool or manual review.
Regression checks: Healthy property tracks are not flagged.
Event Track Auditor
Section titled “Event Track Auditor”Missing Function Event
Section titled “Missing Function Event”Setup: Animation event/function track references a function that no longer exists.
Steps: Audit event tracks.
Expected: Missing function is reported with animation, event name, and time/frame when available.
Regression checks: Go To Function should report failure clearly if the function no longer exists.
Callable Callback Graph Detection
Section titled “Callable Callback Graph Detection”Setup: Add state-machine entry, exit, or transition condition callbacks as normal Blueprint-authored functions or Ubergraph-callable events.
Steps: Run Event Track Auditor and State Compatibility Checker.
Expected: Existing callbacks are treated as callable instead of missing.
Regression checks: Deleted or renamed callbacks are still reported as missing, and findings stay navigable where a source track or section exists.
Out-of-Range Event
Section titled “Out-of-Range Event”Setup: Event key exists outside selected animation or custom range.
Steps: Audit with out-of-range events enabled.
Expected: Event is reported and routed to Range Guard.
Regression checks: Range Guard can locate the same event source.
Duplicate Event
Section titled “Duplicate Event”Setup: Two event keys call the same function at the same frame.
Steps: Audit event tracks.
Expected: Duplicate event finding is reported as review or safe-delete depending on implementation.
Regression checks: Deletion, if available, is selected-row only and undoable.
Frame & State Drift Checker
Section titled “Frame & State Drift Checker”Loop Seam Mismatch
Section titled “Loop Seam Mismatch”Setup: Loop-like animation has first and last values that differ on the same float channel.
Steps: Scan state values with loop seam enabled.
Expected: Mismatch is reported with expected value, actual value, delta, and property/channel.
Regression checks: Difference below tolerance is not reported.
First-Frame Pop
Section titled “First-Frame Pop”Setup: First key differs from designer default or selected baseline.
Steps: Scan first-frame checks.
Expected: First-frame pop candidate is listed.
Regression checks: Baseline mode changes expected value calculation.
Match Loop Seam
Section titled “Match Loop Seam”Setup: Loop seam finding is selected.
Steps: Apply Match Loop Seam.
Expected: Selected channel’s boundary value is repaired according to chosen baseline.
Regression checks: Undo restores previous boundary values.
Track Purger
Section titled “Track Purger”Granular Transform Preview
Section titled “Granular Transform Preview”Setup: WBP_AT_Purge has transform tracks with translation X/Y, scale X/Y, rotation, and shear keys.
Steps: Select only Transform > Scale X, preview purge.
Expected: Preview lists only Scale X targets.
Regression checks: Translation, rotation, Scale Y, and shear are not included.
Parent Selection Covers Children
Section titled “Parent Selection Covers Children”Setup: Transform child channels are visible.
Steps: Check Transform > Translation.
Expected: Translation X/Y are visually covered and disabled as duplicate child selections.
Regression checks: Unchecking parent re-enables children.
All Children Promote Parent
Section titled “All Children Promote Parent”Setup: Translation X/Y are both unchecked.
Steps: Check both child channels.
Expected: Parent Translation becomes checked and children become disabled to avoid duplicate selection.
Regression checks: Removing one child selection clears parent coverage.
Apply Purge
Section titled “Apply Purge”Setup: Preview lists selected purge candidates.
Steps: Apply purge.
Expected: Selected channels/tracks are removed, optional empty track cleanup follows settings, undo restores removed data.
Regression checks: Unselected channel types remain untouched.
Large Purge Confirmation
Section titled “Large Purge Confirmation”Setup: Select filters that affect many keys/tracks.
Steps: Apply purge.
Expected: High-impact confirmation or warning appears before mutation.
Regression checks: Backup is created before mutation when backup is enabled.
Theme And Usability Regression Pass
Section titled “Theme And Usability Regression Pass”Run this pass after any visual update:
- Light editor theme: text, chips, help icons, disabled controls, and selected rows remain readable.
- Dark editor theme: strokes are subtle, expanded tool backers are visible, and status colors have sufficient contrast.
- Narrow dock: checkboxes wrap, summary cards stack, backup path truncates gracefully, and no question mark help icon overlaps an input.
- Reorder dropdown: remains open during reorder, does not flicker noticeably, and updates the accordion after closing.
- Accordion state: selecting animations, using
Go To, or applying a scan should not collapse unrelated expanded tools.