feat: add integration test harness with plyrfm SDK (#744)
* feat: add integration test harness with plyrfm SDK
adds a comprehensive integration test suite that runs against staging:
- **audio generation**: pure Python drone/sine wave generation (no FFmpeg)
- generates musical tones (A4, E4, C4) for testing uploads
- ~22KB per 2-second WAV file
- **test fixtures**: multi-user client fixtures with automatic skip
- PLYR_TEST_TOKEN_1/2/3 for up to 3 test users
- graceful skip when tokens not configured
- **track lifecycle tests**: upload → edit → delete
- test_upload_verify_delete: basic CRUD
- test_upload_edit_title: title modification
- test_upload_edit_tags: tag modification
- test_upload_appears_in_my_tracks: list verification
- test_upload_searchable: search indexing
- **cross-user tests**: permissions and interactions
- test_cross_user_like: like/unlike between users
- test_cannot_delete_others_track: permission boundary
- test_cannot_edit_others_track: permission boundary
- test_public_track_visibility: visibility verification
- **GitHub Actions workflow**: runs after staging deploy
- triggered by workflow_run on deploy-staging success
- manual dispatch support
- graceful skip when secrets not configured
secrets needed:
- PLYR_TEST_TOKEN_1 (required)
- PLYR_TEST_TOKEN_2 (optional, enables cross-user tests)
- PLYR_TEST_TOKEN_3 (optional)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs: add integration test documentation
documents test accounts, running tests locally, and adding new tests.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* ci: temporarily trigger on feature branch push (remove before merge)
* ci: fix job condition to allow push trigger
* ci: remove temporary push trigger after successful test
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
authored by
zzstoatzz.io