Files
spotify-voice-assistant/TEST_CASES.md
T
Chad Auld 61ce9c0e09 Add comprehensive playlist support for v1.0.0
Features:
- Exact matching for all search types (artists, albums, tracks, playlists)
- User playlist search (type=user_playlist) with exact and partial matching
- Performance caching for user playlist data
- Comprehensive documentation and test cases
- HACS integration support (hacs.json)

All search types now use limit=10 and prefer exact name matches to avoid
Spotify's personalized recommendations, ensuring you get what you ask for.
2025-11-17 21:34:23 -07:00

9.2 KiB

Voice Command Test Cases

Test suite for validating Spotify Voice Assistant behavior with natural language queries.

How to Use This

  1. Say each command to your voice assistant
  2. Note the actual response and whether it worked correctly
  3. Use results to identify areas for improvement

Test Categories

1. Basic Artist Queries

Test 1.1: Simple artist request

  • Command: "Play Coldplay"
  • Expected: Searches for artist "Coldplay", plays on default speaker
  • Result:
  • Pass/Fail:

Test 1.2: Artist with speaker specified

  • Command: "Play Coldplay on the kitchen speaker"
  • Expected: Searches for artist "Coldplay", plays on kitchen speaker
  • Result:
  • Pass/Fail:

Test 1.3: Natural language artist request

  • Command: "I'm in the mood for some Coldplay"
  • Expected: Searches for artist "Coldplay", plays on default speaker
  • Result:
  • Pass/Fail:

Test 1.4: Artist with contextual description

  • Command: "Play that British band with Chris Martin"
  • Expected: LLM interprets as Coldplay, searches and plays
  • Result:
  • Pass/Fail:

2. Album Queries

Test 2.1: Specific album

  • Command: "Play the album Parachutes"
  • Expected: Searches for album "Parachutes", plays on default speaker
  • Result:
  • Pass/Fail:

Test 2.2: Album with artist (combined query)

  • Command: "Play Parachutes by Coldplay"
  • Expected: Searches for album "Parachutes Coldplay", plays correct album
  • Result:
  • Pass/Fail:

Test 2.3: Natural language album request

  • Command: "Can you play the Parachutes album?"
  • Expected: Searches for album "Parachutes", plays on default speaker
  • Result:
  • Pass/Fail:

Test 2.4: Album with speaker

  • Command: "Play the album Parachutes on the gaming room speaker"
  • Expected: Searches for album "Parachutes", plays on gaming room speaker
  • Result:
  • Pass/Fail:

Test 2.5: Album exact match

  • Command: "Play Parachutes"
  • Expected: Searches albums with limit=10, returns exact match for "Parachutes" (not "Parachutes Deluxe Edition")
  • Result:
  • Pass/Fail:

3. Track Queries

Test 3.1: Specific track

  • Command: "Play Yellow"
  • Expected: Searches for track "Yellow", plays on default speaker
  • Result:
  • Pass/Fail:

Test 3.2: Track with artist (combined query)

  • Command: "Play Yellow by Coldplay"
  • Expected: Searches for track "Yellow Coldplay", plays correct track
  • Result:
  • Pass/Fail:

Test 3.3: Track with speaker

  • Command: "Play the song Yellow on the office speaker"
  • Expected: Searches for track "Yellow", plays on office speaker
  • Result:
  • Pass/Fail:

Test 3.4: Natural language track request

  • Command: "Put on that song Yellow"
  • Expected: Searches for track "Yellow", plays on default speaker
  • Result:
  • Pass/Fail:

Test 3.5: Track exact match

  • Command: "Play Yellow"
  • Expected: Searches tracks with limit=10, returns exact match for "Yellow" (prioritizes exact name over similar songs)
  • Result:
  • Pass/Fail:

4. Ambiguous Track Names (Edge Cases)

Test 4.1: Common track name (no artist)

  • Command: "Play Hurt"
  • Expected: Searches for track "Hurt", returns most popular (likely Johnny Cash or Nine Inch Nails)
  • Result:
  • Pass/Fail:

Test 4.2: Common track name with artist

  • Command: "Play Hurt by Nine Inch Nails"
  • Expected: Searches for track "Hurt Nine Inch Nails", returns correct version
  • Result:
  • Pass/Fail:

Test 4.3: Common track name with different artist

  • Command: "Play Hurt by Johnny Cash"
  • Expected: Searches for track "Hurt Johnny Cash", returns Cash cover version
  • Result:
  • Pass/Fail:

5. Exact Match Testing (All Content Types)

Test 5.1: Exact artist name

  • Command: "Play Coldplay"
  • Expected: Returns exact match for artist "Coldplay" (not similar/recommended artists)
  • Result:
  • Pass/Fail:

Test 5.2: Similar artist name

  • Command: "Play Cold War Kids"
  • Expected: Returns exact match for "Cold War Kids" (not "Coldplay" despite similarity)
  • Result:
  • Pass/Fail:

Test 5.3: Artist with common name

  • Command: "Play The Band"
  • Expected: Returns exact match for artist "The Band" (not generic band recommendations)
  • Result:
  • Pass/Fail:

Test 5.4: Album exact match verification

  • Command: "Play A Rush of Blood to the Head"
  • Expected: Returns exact match for album name, not "Deluxe" or "Remastered" versions
  • Result:
  • Pass/Fail:

Test 5.5: Track exact match verification

  • Command: "Play Fix You"
  • Expected: Returns exact match for track "Fix You" from top 10 results
  • Result:
  • Pass/Fail:

6. Playlist Queries

Test 6.1: Public playlist - exact match

  • Command: "Play Today's Top Hits"
  • Expected: Searches public playlists, returns exact match for "Today's Top Hits"
  • Result:
  • Pass/Fail:

Test 6.2: Public playlist - common name

  • Command: "Play Chill Vibes"
  • Expected: Searches public playlists with limit=10, prefers exact "Chill Vibes" match over "Chill Vibes Mix"
  • Result:
  • Pass/Fail:

Test 6.3: User playlist - exact match

  • Command: "Play my workout playlist"
  • Expected: Searches only user's saved playlists, finds exact match for "workout"
  • Result:
  • Pass/Fail:

Test 6.4: User playlist - partial match

  • Command: "Play my running music"
  • Expected: If no exact "running music" match, finds partial match like "Running Music 2024"
  • Result:
  • Pass/Fail:

Test 6.5: User playlist - not found

  • Command: "Play my xyz123 playlist"
  • Expected: Returns error "No playlist matching 'xyz123' found in your library"
  • Result:
  • Pass/Fail:

Test 6.6: Playlist vs user playlist distinction

  • Command 1: "Play RapCaviar"
  • Expected 1: Uses type=playlist, searches all public playlists
  • Command 2: "Play my RapCaviar"
  • Expected 2: Uses type=user_playlist, searches only user's saved playlists (assuming user has saved RapCaviar)
  • Result:
  • Pass/Fail:

7. Playback Control

Test 7.1: Pause

  • Command: "Pause the music"
  • Expected: Pauses current playback on active speaker
  • Result:
  • Pass/Fail:

Test 7.2: Resume

  • Command: "Resume"
  • Expected: Resumes playback on active speaker
  • Result:
  • Pass/Fail:

Test 7.3: Next track

  • Command: "Skip to the next track"
  • Expected: Advances to next track
  • Result:
  • Pass/Fail:

Test 7.4: Previous track

  • Command: "Go back to the previous song"
  • Expected: Returns to previous track
  • Result:
  • Pass/Fail:

Test 7.5: Volume up (natural language)

  • Command: "Make it louder"
  • Expected: Increases volume (LLM interprets as volume_set with higher level)
  • Result:
  • Pass/Fail:

Test 7.6: Volume specific

  • Command: "Set volume to 50 percent"
  • Expected: Sets volume to 50%
  • Result:
  • Pass/Fail:

Test 7.7: Stop

  • Command: "Stop the music"
  • Expected: Stops playback
  • Result:
  • Pass/Fail:

8. Multi-Speaker Scenarios

Test 8.1: Different speaker each time

  • Commands:
    • "Play Coldplay on the kitchen speaker"
    • "Play Radiohead on the gaming room speaker"
    • "Play Muse on the office speaker"
  • Expected: Each plays on the specified speaker
  • Result:
  • Pass/Fail:

Test 8.2: No speaker specified (uses default)

  • Command: "Play Coldplay"
  • Expected: Plays on default speaker from system prompt
  • Result:
  • Pass/Fail:

9. Error Handling

Test 9.1: Non-existent artist

  • Command: "Play XYZ123NotARealBand"
  • Expected: Returns no results or best guess, handles gracefully
  • Result:
  • Pass/Fail:

Test 9.2: Typo in artist name

  • Command: "Play Cold Play" (with space)
  • Expected: Spotify's fuzzy search finds "Coldplay"
  • Result:
  • Pass/Fail:

Test 9.3: Invalid speaker

  • Command: "Play Coldplay on the bedroom speaker" (if bedroom speaker doesn't exist)
  • Expected: Error or fallback behavior
  • Result:
  • Pass/Fail:

10. Natural Language Variations

Test 10.1: Informal request

  • Command: "Put on some Coldplay"
  • Expected: Searches for artist "Coldplay", plays on default speaker
  • Result:
  • Pass/Fail:

Test 10.2: Question format

  • Command: "Can you play Coldplay?"
  • Expected: Searches for artist "Coldplay", plays on default speaker
  • Result:
  • Pass/Fail:

Test 10.3: Context-heavy request

  • Command: "I want to listen to Coldplay right now"
  • Expected: Searches for artist "Coldplay", plays on default speaker
  • Result:
  • Pass/Fail:

Test 10.4: Mood-based request

  • Command: "Play something chill from Coldplay"
  • Expected: Searches for artist "Coldplay", plays on default speaker
  • Result:
  • Pass/Fail:

Results Summary

Total Tests: 40 Passed: _____ Failed: _____ Pass Rate: _____%

Common Failure Patterns

(Document patterns that emerge from testing)

Recommendations for Improvement

(Based on test results, list specific enhancements needed)