Repository navigation
Full Sri Lanka channel list, player fix for HLS URLs without .m3u8, and end-to-end smoke tests - #9
Merged
Merged
Conversation
Collect every Sri Lankan stream URL that has appeared in iptv-org's streams/lk.m3u history (91 URLs, 33 channels), excluding unofficial Tata Play restreams, into sources/candidates.m3u, and have the stream check workflow test it alongside lk.m3u. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KFgZAqUcFaYKfwpPMUvu9P
- Fix VideoPlayer: use hls.js for every non-progressive URL. Streams such as Swarnavahini (https://teledrama.ebc.lk/TTT/proxy.php) have no .m3u8 extension and were handed to <video> directly, which Chrome cannot play. - Add scripts/smoke_test.cjs (Playwright): checks static files, the consent flow, loading the Sri Lanka preset and, with --play, that each channel actually plays in the browser. - Run it on pull requests against a fresh build (smoke-test.yml) and after every deploy against https://falconstream-pro.github.io. - Add Imai TV and Verbum TV to lk.m3u (passed the stream check) and CHANNELS.md listing all 91 Sri Lankan channels with stream status. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KFgZAqUcFaYKfwpPMUvu9P
Playwright's bundled Chromium has no H.264/AAC decoders, so no live stream could play in it (0/8 in the first run, stuck with no player error). Use the Chrome channel preinstalled on GitHub runners, fail fast with a clear message when the test browser cannot decode H.264, and log the video element state for channels that fail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KFgZAqUcFaYKfwpPMUvu9P
AshenWijesingha
marked this pull request as ready for review
October 7, 2026 17:12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Channels
public/playlists/sri-lanka/CHANNELS.md: all 91 Sri Lankan channels in the iptv-org database, with the stream status of each one.sources/candidates.m3u: every Sri Lankan stream URL from iptv-org'sstreams/lk.m3uhistory (91 URLs covering 33 channels). Unofficial Tata Play restreams are left out. The Check Sri Lanka streams workflow tests this file as well.lk.m3u: now 8 working channels. Hiru, Jaya, Shakthi, Siyatha, Swarnavahini and Talent were already there; Imai TV and Verbum TV are added because they passed the stream check (8 of the 91 candidates passed).Player fix
VideoPlayeronly used hls.js when the URL contained.m3u8. Swarnavahini's stream (https://teledrama.ebc.lk/TTT/proxy.php) has no such extension, so it went straight to<video>, which Chrome can't play. Now every URL that isn't a plain media file (mp4, webm and so on) goes through hls.js.Deployment checks
scripts/smoke_test.cjs(Playwright): checks that the static files load, accepts the consent modal, loads the Sri Lanka preset and, with--play, waits for every channel to actually play (currentTime > 2). It runs in Google Chrome, because Playwright's bundled Chromium can't decode H.264.smoke-test.ymlruns lint, build and the smoke test against the build on every PR.deploy.ymlhas a newverifyjob that runs the smoke test against https://falconstream-pro.github.io after each deploy.Note: Pages publishes twice
Every push to
mainalso starts GitHub's built-in pages build and deployment run, which builds the raw repo with Jekyll and races the Next.js Actions deploy; whichever finishes last is what's live. To stop this, set Settings → Pages → Source to GitHub Actions.Test plan
npm run lint,npm run build; local smoke test (without--play) passes: page, consent, Sri Lanka preset with 8 channels, no page errors or broken assetslk.m3upass--playin Chrome on CI🤖 Generated with Claude Code
https://claude.ai/code/session_01KFgZAqUcFaYKfwpPMUvu9P