{"record":{"id":"8cfb12ce76a74417","repo":"can1357/oh-my-pi","slug":"chrome-channel-tag-was-not-found-in-chrome-for","errorCode":null,"errorMessage":"Chrome channel ${tag} was not found in Chrome-for-Testing metadata","messagePattern":"Chrome channel (.+?) was not found in Chrome-for-Testing metadata","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/utils/src/browsers.ts","lineNumber":137,"sourceCode":"\treturn undefined;\n}\n\n/** Resolve a Chrome-for-Testing channel, milestone, or build prefix to a full build ID. */\nexport async function resolveBuildId(\n\tbrowser: Browser,\n\t_platform: BrowserPlatform,\n\ttag: string | BrowserTag,\n): Promise<string> {\n\tif (browser !== Browser.CHROME && browser !== Browser.CHROMEHEADLESSSHELL && browser !== Browser.CHROMEDRIVER) {\n\t\treturn tag;\n\t}\n\tif (/^\\d+\\.\\d+\\.\\d+\\.\\d+$/.test(tag)) return tag;\n\n\tconst channel = tag === BrowserTag.LATEST ? \"Canary\" : chromeChannelName(tag);\n\tif (channel) {\n\t\tconst metadata = await fetchMetadata<LastKnownGoodVersions>(\"last-known-good-versions.json\");\n\t\tconst version = metadata.channels[channel]?.version;\n\t\tif (!version) throw new Error(`Chrome channel ${tag} was not found in Chrome-for-Testing metadata`);\n\t\treturn version;\n\t}\n\tif (/^\\d+$/.test(tag)) {\n\t\tconst metadata = await fetchMetadata<MilestoneVersions>(\"latest-versions-per-milestone.json\");\n\t\treturn metadata.milestones[tag]?.version ?? tag;\n\t}\n\tif (/^\\d+\\.\\d+\\.\\d+$/.test(tag)) {\n\t\tconst metadata = await fetchMetadata<PatchVersions>(\"latest-patch-versions-per-build.json\");\n\t\treturn metadata.builds[tag]?.version ?? tag;\n\t}\n\treturn tag;\n}\n\n/** Return the Chrome-for-Testing archive URL for a browser build. */\nexport function getDownloadUrl(\n\tbrowser: Browser,\n\tplatform: BrowserPlatform,\n\tbuildId: string,","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/utils/src/browsers.ts#L119-L155","documentation":"resolveBuildId maps a BrowserTag channel (or 'latest') to a concrete Chrome-for-Testing version by consulting the last-known-good-versions.json metadata. If the requested channel is absent from that metadata (or present without a version), this Error is thrown. It means Google's metadata does not currently list the channel you asked for.","triggerScenarios":"Calling resolveBuildId(browser, platform, tag) with tag = canary/beta/dev/stable (or latest -> Canary) when metadata.channels[channel] is undefined or has no version — e.g. the channel was removed or the channelName mapping returns a name Google no longer publishes.","commonSituations":"Using BrowserTag.LATEST which maps to Canary and Canary temporarily missing from last-known-good-versions; typos or a channel enum value that no longer exists upstream; network proxies serving stale/partial metadata; upstream CfT metadata format changes.","solutions":["Prefer an explicit channel like BrowserTag.STABLE or BETA, which is reliably present in last-known-good-versions.json.","Pin an exact four-part version string (e.g. '131.0.6778.0') — resolveBuildId returns it directly without metadata lookup.","Pass a milestone number (e.g. '131') to use latest-versions-per-milestone.json instead.","Check https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json to confirm which channels currently exist."],"exampleFix":"// before\nconst buildId = await resolveBuildId(Browser.CHROME, platform, BrowserTag.LATEST); // -> Canary, may be missing\n// after\nconst buildId = await resolveBuildId(Browser.CHROME, platform, BrowserTag.STABLE);","handlingStrategy":"fallback","validationCode":"const res = await fetch('https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json');\nconst meta = await res.json();\nconst channel = tag === 'latest' ? 'Canary' : chromeChannelName(tag);\nif (channel && !meta.channels[channel]?.version) {\n  // channel missing upstream — pick Stable or a pinned version instead\n}","typeGuard":"function isExactVersion(tag: string): boolean {\n  return /^\\d+\\.\\d+\\.\\d+\\.\\d+$/.test(tag);\n}\n// pass exact versions straight through — no metadata lookup, no throw","tryCatchPattern":"let buildId: string;\ntry {\n  buildId = await resolveBuildId(Browser.CHROME, platform, tag);\n} catch (err) {\n  if (/was not found in Chrome-for-Testing metadata/.test(String(err))) {\n    buildId = await resolveBuildId(Browser.CHROME, platform, BrowserTag.STABLE);\n  } else throw err;\n}","preventionTips":["Prefer STABLE/BETA channels or exact version strings over 'latest'/Canary.","Pin buildIds in config for reproducible installs.","Check the last-known-good-versions JSON before adopting a new channel tag."],"tags":["network","browser-download","chrome-for-testing","metadata"],"backgroundTag":"browser-channel-not-found","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}