Problem
Three test coverage gaps leave SorobanPanel state management, SorobanInvokeButton disabled state, and the SorobanScreen contract ID lift untested.
1. SorobanPanel result-clear-on-contractId-change is untested
After the fix in issue #53 (result clears when contractId changes), no test verifies this behaviour. A regression would silently re-introduce the stale result flash.
2. SorobanInvokeButton autoResetAfter prop is untested
After issue #53 adds autoResetAfter, no test uses vi.useFakeTimers() to verify the component resets to "idle" after the specified delay following a successful invocation.
3. SorobanScreen contractId state lift to ContractEventFeed is untested
After SorobanScreen lifts contractId state, no test verifies ContractEventFeed renders when contractId is non-empty and is hidden when empty.
Solution
Write Vitest tests:
SorobanPanel: change contractId after success → result clears.
SorobanInvokeButton: autoResetAfter={1000} → after 1s fake timer advance, state is "idle".
SorobanScreen: contractId empty → ContractEventFeed not rendered; non-empty → rendered.
Acceptance Criteria
Note for Contributors: Write a clear PR description. Include the full npm test output and explain the fake timer setup.
Problem
Three test coverage gaps leave
SorobanPanelstate management,SorobanInvokeButtondisabled state, and theSorobanScreencontract ID lift untested.1.
SorobanPanelresult-clear-on-contractId-change is untestedAfter the fix in issue #53 (result clears when contractId changes), no test verifies this behaviour. A regression would silently re-introduce the stale result flash.
2.
SorobanInvokeButtonautoResetAfterprop is untestedAfter issue #53 adds
autoResetAfter, no test usesvi.useFakeTimers()to verify the component resets to"idle"after the specified delay following a successful invocation.3.
SorobanScreencontractId state lift toContractEventFeedis untestedAfter
SorobanScreenlifts contractId state, no test verifiesContractEventFeedrenders when contractId is non-empty and is hidden when empty.Solution
Write Vitest tests:
SorobanPanel: change contractId after success → result clears.SorobanInvokeButton:autoResetAfter={1000}→ after 1s fake timer advance, state is"idle".SorobanScreen: contractId empty →ContractEventFeednot rendered; non-empty → rendered.Acceptance Criteria
SorobanPanelcontractId-change result clear test passesSorobanInvokeButtonautoResetAftertimer test passes usingvi.useFakeTimers()SorobanScreencontractId gate tests passnpm test