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

  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.