From a705faf7e41219a101e1ac40dd5dc5b0854ca895 Mon Sep 17 00:00:00 2001 From: Suvesh Moza Date: Fri, 29 May 2026 15:37:29 +0530 Subject: [PATCH 1/2] test: skip yarn package manager test if not present --- .../wxt/src/core/package-managers/__tests__/yarn.test.ts | 6 ++++-- packages/wxt/src/core/package-managers/yarn.ts | 9 +++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/wxt/src/core/package-managers/__tests__/yarn.test.ts b/packages/wxt/src/core/package-managers/__tests__/yarn.test.ts index 40415b7df..d57b9ae0f 100644 --- a/packages/wxt/src/core/package-managers/__tests__/yarn.test.ts +++ b/packages/wxt/src/core/package-managers/__tests__/yarn.test.ts @@ -1,8 +1,10 @@ import { describe, expect, it } from 'vitest'; import path from 'node:path'; -import { yarn } from '../yarn'; +import { isYarnInstalled, yarn } from '../yarn'; -describe('Yarn Package Management Utils', () => { +const shouldSkip = !(await isYarnInstalled()); + +describe.skipIf(shouldSkip)('Yarn Package Management Utils', () => { describe('listDependencies', () => { const cwd = path.resolve(__dirname, 'fixtures/simple-yarn-project'); diff --git a/packages/wxt/src/core/package-managers/yarn.ts b/packages/wxt/src/core/package-managers/yarn.ts index 8b5449329..02d6d8692 100644 --- a/packages/wxt/src/core/package-managers/yarn.ts +++ b/packages/wxt/src/core/package-managers/yarn.ts @@ -3,6 +3,15 @@ import { WxtPackageManagerImpl } from './types'; import { dedupeDependencies, npm } from './npm'; import spawn from 'nano-spawn'; +export async function isYarnInstalled(): Promise { + try { + await spawn('yarn', ['--version']); + return true; + } catch { + return false; + } +} + export const yarn: WxtPackageManagerImpl = { overridesKey: 'resolutions', downloadDependency(...args) { From 8000051f007e2a044a2c20ff1e2131a57c9d5ba5 Mon Sep 17 00:00:00 2001 From: Suvesh Moza Date: Thu, 4 Jun 2026 00:16:31 +0530 Subject: [PATCH 2/2] treat Yarn as installed when command prints a semver version --- packages/wxt/src/core/package-managers/yarn.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/wxt/src/core/package-managers/yarn.ts b/packages/wxt/src/core/package-managers/yarn.ts index 02d6d8692..7ad55be54 100644 --- a/packages/wxt/src/core/package-managers/yarn.ts +++ b/packages/wxt/src/core/package-managers/yarn.ts @@ -5,8 +5,9 @@ import spawn from 'nano-spawn'; export async function isYarnInstalled(): Promise { try { - await spawn('yarn', ['--version']); - return true; + const { stdout } = await spawn('yarn', ['--version']); + const version = stdout.trim(); + return version !== '' && /^\d+\.\d+\.\d+/.test(version); } catch { return false; }