Files
iptvnator/tools/release/capture-fixtures.ts
T
4grayandClaude Fable 5.1 90d26d499f feat(website): add the Xtream Codes setup guide with FAQ and guide screenshots
Publish "How to Add an Xtream Codes Account to IPTVnator" as the first
evergreen guide: what the server URL, username and password are, the
Add playlist flow with the connection test and its four verdicts, the
Auto-detect method for pasted provider messages, what the import syncs,
Account info, refresh, troubleshooting and a seven-question FAQ. The
guide is cross-linked from the three download pages and llms.txt.

Blog posts gain an optional `faq` frontmatter list: BlogPost.astro
renders it as an accordion after the body and emits FAQPage JSON-LD
next to the BlogPosting entry. LinkCards and PostButton keep internal
links in the same tab.

Guide screenshots come from the release capture script: manifest shots
may carry a `group`, `--group guides` captures only those into
apps/website/public/blog/guides/screenshots/, and a release run skips
them. New setup actions open the Add playlist dialog with the mock's
fictional Xtream credentials (connection test shown), the Auto-detect
method with a labeled hand-out, and the Xtream Live TV view. Dialog
helpers and fixture identities move into shared modules so the driver
and the navigation actions cannot import each other cyclically.

tools/testing/website-guides.test.mjs checks the FAQPage schema, the
download-hub link and the shipped screenshots of every guide;
screenshot-guards.test.mjs covers group validation and output routing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-03 21:14:59 +02:00

33 lines
1.3 KiB
TypeScript

/**
* Fixture identities shared by the capture driver (seeding) and the named
* setup actions (guide shots that re-enter the add-playlist dialog). Kept in
* a leaf module so capture-navigation.ts can import them without pulling in
* the driver, which itself imports the navigation module.
*
* Everything here is fictional and resolves only against the local Xtream
* mock server; the G4 frame guard still rejects any URL carrying query
* credentials, so the auto-detect hand-out deliberately uses labeled lines
* instead of a `get.php?username=…` link.
*/
export const XTREAM_MOCK_ORIGIN = 'http://localhost:3211';
export const XTREAM_FIXTURE_TITLE = 'Fictional Xtream Demo';
export const M3U_FIXTURE_TITLE = 'release-demo';
/** Credential pair of the mock server's curated `marketing` scenario. */
export const XTREAM_FIXTURE_CREDENTIALS = {
username: 'marketing',
password: 'marketing',
} as const;
/** A fictional "your subscription is ready" message for the Auto-detect shot. */
export const AUTO_DETECT_FIXTURE_MESSAGE = [
'Welcome to Fictional TV! Your account is ready.',
'',
`Host: ${XTREAM_MOCK_ORIGIN}`,
`Username: ${XTREAM_FIXTURE_CREDENTIALS.username}`,
`Password: ${XTREAM_FIXTURE_CREDENTIALS.password}`,
'',
'Use these details in any Xtream Codes compatible player.',
].join('\n');