can1357/oh-my-pi · error · Error

Chrome channel was not found in Chrome-for-Testing metadata

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.

Solutions

  1. Prefer an explicit channel like BrowserTag.STABLE or BETA, which is reliably present in last-known-good-versions.json.
  2. Pin an exact four-part version string (e.g. '131.0.6778.0') — resolveBuildId returns it directly without metadata lookup.
  3. Pass a milestone number (e.g. '131') to use latest-versions-per-milestone.json instead.
  4. 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

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


AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31). Data as JSON: /api/errors/8cfb12ce76a74417. Report an issue: GitHub.

Appendix: 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)