can1357/oh-my-pi · error · Error
Chrome channel ${tag} was not found in Chrome-for-Testing me
Error message
Chrome channel ${tag} was not found in Chrome-for-Testing metadata What it means
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.
Source
Thrown at packages/utils/src/browsers.ts:137
return undefined;
}
/** Resolve a Chrome-for-Testing channel, milestone, or build prefix to a full build ID. */
export async function resolveBuildId(
browser: Browser,
_platform: BrowserPlatform,
tag: string | BrowserTag,
): Promise<string> {
if (browser !== Browser.CHROME && browser !== Browser.CHROMEHEADLESSSHELL && browser !== Browser.CHROMEDRIVER) {
return tag;
}
if (/^\d+\.\d+\.\d+\.\d+$/.test(tag)) return tag;
const channel = tag === BrowserTag.LATEST ? "Canary" : chromeChannelName(tag);
if (channel) {
const metadata = await fetchMetadata<LastKnownGoodVersions>("last-known-good-versions.json");
const version = metadata.channels[channel]?.version;
if (!version) throw new Error(`Chrome channel ${tag} was not found in Chrome-for-Testing metadata`);
return version;
}
if (/^\d+$/.test(tag)) {
const metadata = await fetchMetadata<MilestoneVersions>("latest-versions-per-milestone.json");
return metadata.milestones[tag]?.version ?? tag;
}
if (/^\d+\.\d+\.\d+$/.test(tag)) {
const metadata = await fetchMetadata<PatchVersions>("latest-patch-versions-per-build.json");
return metadata.builds[tag]?.version ?? tag;
}
return tag;
}
/** Return the Chrome-for-Testing archive URL for a browser build. */
export function getDownloadUrl(
browser: Browser,
platform: BrowserPlatform,
buildId: string,View on GitHub (pinned to 9690622007)
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.
Example fix
// before const buildId = await resolveBuildId(Browser.CHROME, platform, BrowserTag.LATEST); // -> Canary, may be missing // after const buildId = await resolveBuildId(Browser.CHROME, platform, BrowserTag.STABLE);
Defensive patterns
Strategy: fallback
Validate before calling
const res = await fetch('https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json');
const meta = await res.json();
const channel = tag === 'latest' ? 'Canary' : chromeChannelName(tag);
if (channel && !meta.channels[channel]?.version) {
// channel missing upstream — pick Stable or a pinned version instead
} Type guard
function isExactVersion(tag: string): boolean {
return /^\d+\.\d+\.\d+\.\d+$/.test(tag);
}
// pass exact versions straight through — no metadata lookup, no throw Try / catch
let buildId: string;
try {
buildId = await resolveBuildId(Browser.CHROME, platform, tag);
} catch (err) {
if (/was not found in Chrome-for-Testing metadata/.test(String(err))) {
buildId = await resolveBuildId(Browser.CHROME, platform, BrowserTag.STABLE);
} else throw err;
} Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- Failed to fetch Chrome-for-Testing metadata (${response.stat
- Unsupported browser download: ${browser}
- Browser download failed (${response.status} ${response.statu
- timed out: {command}
- V2 remote compaction failed (${response.status} ${response.s
AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31).
Data as JSON: /api/errors/8cfb12ce76a74417.
Report an issue: GitHub.