Release Validation
This checklist describes tests to run; it is not a record of passed live tests. The release's implemented API surface must be verified against your actual server configuration, sources, Discord permissions, and persistence backend.
Establish a Reproducible Baseline
- Record the Magmastream version, server versions/commits, source/plugin config,
and dependency lockfile. Start with
2.10.3. - Validate against Lavalink alone, NodeLink alone, and then a mixed node pool.
- Keep a known playable URL and a known searchable query for each enabled source.
- Capture client debug/error events and server logs. Redact passwords, Discord tokens, session/voice credentials, and signed media URLs.
- Run the library's
npm run ciand your bot's own build/typecheck/tests. The library currently has nonpm testscript; CI is not a live integration test.
Shared Playback
- Connect a node, receive ready/session info, fetch info and stats.
- Search a query, direct URL, playlist, no-result query, and backend error.
- Confirm playlist core information is distinct from plugin metadata.
- Connect a player; play, pause/resume, seek, change volume, stop, and destroy.
- Exercise queue advance, track/queue repeat, previous, and autoplay.
- Render tracks with missing URI/artwork/ISRC without a string-operation error.
- Decode one track and a batch; compare decoded identifiers.
- Fetch session players; verify HTTP-400 fallback only includes locally known players and that no-session calls make no invalid request.
Reconnect and Persistence
- Restart/disconnect the server and inspect retry count, reconnect scheduling, cleared session IDs, and successful reset after reconnect.
- Test session resumption and a new-session reconnect separately.
- Move or destroy a player while the source node is disconnected.
- Save/restart/restore a JSON-backed player and a Redis-backed player where used.
- Verify restored queue, repeat settings, autoplay flag, retry count, requester, and the first automatically recommended track.
Mixed-Pool Guards
- Ordinary shared-prefix searches can use either backend.
- Native prefixes and type-modified searches reach NodeLink.
- NodeLink recommendation enum requests reach NodeLink.
- Raw
sprec:mix:track:...reaches Lavalink, not NodeLink. - With only Lavalink available, native search fails locally with
MANAGER_NO_NODES. - Native player/REST methods fail on a Lavalink player before making requests.
- After a node move, the application reevaluates available native features.
- Missing filter plugins reject nonempty plugin-filter requests; clearing still works. Shared animation options are kept out of Lavalink calls.
Native Search
- Test each provider/prefix you actually enable, including aliases and TTS.
- Verify unified search with your configured unified sources.
- Test playlist/album/artist/channel modifiers and source-specific user search.
- Resolve collection result URIs before playback; do not play placeholders.
- Test native recommendation syntax independently of Lavalink workarounds.
- Confirm upstream rate limiting does not cause uncontrolled repeated searches.
Native Playback and Filters
- Preload the same next track as the local queue; verify a single gapless transition with no duplicate play request.
- Clear/change the preload when the local next track changes.
- Exercise fading sections, normalization, and valid audio-track selection.
- Add/list/update/remove a mixer layer and verify 0-1 layer volume.
- Test each enabled native effect, clear it, and check resulting remote state.
- Verify low-pass key serialization, transitions, and local filter hydration.
- Inspect server acceptance rather than treating an awaited filter setter as proof, since current filter update errors can be logged instead of propagated.
Metadata and Events
- Load native lyrics with a language; test found, empty, and error results.
- Subscribe/unsubscribe live lyrics and check line event fields.
- Load chapters and observe chapter-loaded/started callbacks where supported.
- Fetch meaning/background data.
- Read/change/delete native SponsorBlock state and replace full segment data.
- Check nullable track handling in lyrics/chapter/segment callbacks.
- Observe mixer, volume, filters, seek, pause, lifecycle, worker/connection, Eternal Box, and stream metadata events where your setup emits them.
- Verify unknown native events reach
nodeLinkEventwithout error spam. - Confirm
playerUpdateis delivered on both backends.
Voice and REST Extras
- Enable server voice receive; verify speaker start/audio/stop and identity.
- Test Opus and PCM separately; inspect binary format, SSRC, timestamp, and accumulated end-of-speaking data.
- Disconnect/reconnect/remove/destroy the receiver; verify resources clear.
- Encode one/batch tracks and decode them to compare metadata.
- Fetch connection diagnostics and direct-stream metadata.
- Open a raw PCM stream, consume or cancel its body, and handle non-2xx errors.
A server lacking a source, plugin, or optional feature cannot validate that feature. Record skipped checks and their reasons rather than claiming complete compatibility from a successful build.