Skip to main content
Version: v2.10.3 (current)

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​

  1. Record the Magmastream version, server versions/commits, source/plugin config, and dependency lockfile. Start with 2.10.3.
  2. Validate against Lavalink alone, NodeLink alone, and then a mixed node pool.
  3. Keep a known playable URL and a known searchable query for each enabled source.
  4. Capture client debug/error events and server logs. Redact passwords, Discord tokens, session/voice credentials, and signed media URLs.
  5. Run the library's npm run ci and your bot's own build/typecheck/tests. The library currently has no npm test script; 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.
  • 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 nodeLinkEvent without error spam.
  • Confirm playerUpdate is 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.