Skip to content

test(extractors): make the live smoke check see a video outage - #18

Merged
vannt-dev merged 1 commit into
mainfrom
test/live-smoke-covers-video
Sep 1, 2026
Merged

test(extractors): make the live smoke check see a video outage#18
vannt-dev merged 1 commit into
mainfrom
test/live-smoke-covers-video

Conversation

@vannt-dev

Copy link
Copy Markdown
Owner

Follow-up to #16 and #17. Those fixed the outage and its message; this makes the daily health job capable of noticing the next one.

The daily check stayed green through a total outage

.github/workflows/live-extractors.yml runs every night and opens an issue on failure. It passed throughout the window in which every Facebook reel and share link was dead, and it could not have done otherwise.

Both Facebook cases are galleries, asserting only qualities.length >= 2. Measured on the share link the test itself uses:

strategy before the fix
1 page — the only path that yields video 400
2 embed 200, og:image=0
3 mobile 200, og:image=2

Strategy 3 returned one image, which sent the post to the external gallery service, which returned the whole set. Two media, assertion satisfied, green — while Facebook's own page fetch was dead the whole time.

Two holes, both closed

minimumVideos per case, asserted. Counting media alone let a case named for video pass on photographs, so simply adding a reel case would have protected little. Every existing case is now pinned to what its name claims: 0 for galleries and slideshows, 1 for videos.

A YouTube case. A primary platform with no live coverage at all. Verified through the real extractor before adding it — one video stream and one audio stream come back.

Facebook video: a transport check, not a post URL

I could not find a stable public Facebook video to point at. No Facebook host serves an anonymous client a video listing — www, m and mbasic all return a script shell with zero discoverable ids, for NASA and facebook alike. And a URL that rots turns a nightly job into noise, which is the failure mode worth avoiding here.

So the check tests the request instead of a post. The three paths it uses name nothing that exists, so no post can be deleted out from under them:

/reel/1/   /share/r/zzzzzzzzzz/   /share/p/zzzzzzzzzz/

All three answered 400 before the header fix and 200 after. A 404 passes — that is a fine answer for a post that is not there. A 400 means Facebook rejected the shape of the request, which is exactly the regression, and it would have been caught on night one.

Verification

  • Live run: 8/8, including the new YouTube case and the new transport check
  • flutter test — 222 pass, 8 skipped (the live cases, gated as before)
  • flutter analyze — No issues found
  • No CHANGELOG entry: test-only commits in this repo do not carry one (adbea3c, c8e4653)

🤖 Generated with Claude Code

https://claude.ai/code/session_01RjyfcAcWuaNcXTc4ZdTofM

The daily health job stayed green through a total outage of Facebook
video extraction, and could not have done otherwise.

Both Facebook cases are galleries asserting `qualities.length >= 2`.
When Facebook began answering 400 to the page request -- the only
strategy that yields video -- the mobile strategy still returned one
Open Graph image, which sent the post to the external gallery service,
which returned the whole set. Two media, assertion satisfied, green.
Facebook's own page fetch was dead the entire time.

Two holes, both closed here.

`minimumVideos` per case, asserted: counting media alone let a case
named for video pass on photographs, so even adding a reel case would
have protected little on its own. Every existing case is pinned to what
its name claims -- 0 for the galleries and slideshows, 1 for the videos.

A YouTube case, which had no live coverage at all despite being a
primary platform. Verified through the real extractor before being
added: one video stream and one audio stream come back.

Facebook video itself gets a transport check rather than a post URL.
Anonymous clients are served no video listing by any Facebook host, so
there is no stable public reel to point at, and a URL that rots turns
the daily job into noise. The three paths checked name nothing that
exists, so nothing can be deleted out from under them; what is under
test is whether Facebook rejects the shape of the request. A 404 passes.
A 400 is the regression, and all three answered 400 before the header
fix.

Live run: 8/8, including the new YouTube case and the new check.
@vannt-dev
vannt-dev merged commit 59aeb20 into main Sep 1, 2026
7 checks passed
@vannt-dev
vannt-dev deleted the test/live-smoke-covers-video branch September 1, 2026 01:57
@vannt-dev vannt-dev mentioned this pull request Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant