Skip to content

Add smartsnap endpoints to percy client#2207

Open
RaghavsBrowserStack wants to merge 11 commits into
masterfrom
PPLT-5302
Open

Add smartsnap endpoints to percy client#2207
RaghavsBrowserStack wants to merge 11 commits into
masterfrom
PPLT-5302

Conversation

@RaghavsBrowserStack
Copy link
Copy Markdown

No description provided.

@RaghavsBrowserStack RaghavsBrowserStack marked this pull request as ready for review May 7, 2026 11:57
@RaghavsBrowserStack RaghavsBrowserStack requested a review from a team as a code owner May 7, 2026 11:57
if (!/^[\w.-]+\.json$/i.test(statsName)) {
throw new SmartSnapBailError(`SmartSnap: invalid statsFile "${statsName}" — must be a .json filename; running full snapshot set`);
}
const resolvedStatsPath = path.join(path.resolve(buildDir), statsName);
if (!/^[\w.-]+\.json$/i.test(statsName)) {
throw new SmartSnapBailError(`SmartSnap: invalid statsFile "${statsName}" — must be a .json filename; running full snapshot set`);
}
const resolvedStatsPath = path.join(path.resolve(buildDir), statsName);
throw new SmartSnapBailError(`SmartSnap: manifest changes span multiple directories (${uniqueDirs.join(', ')}); running full snapshot set`);
}
const manifestDir = uniqueDirs[0]; // repo-relative; '.' for root
const absManifestDir = path.resolve(projectRoot, manifestDir);
// coexist (e.g. a stray package-lock.json next to yarn.lock) we can't
// pick a canonical source, so bail.
const LOCKFILE_NAMES = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'];
const presentLockfiles = LOCKFILE_NAMES.filter(n => fs.existsSync(path.join(absManifestDir, n)));
// coexist (e.g. a stray package-lock.json next to yarn.lock) we can't
// pick a canonical source, so bail.
const LOCKFILE_NAMES = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'];
const presentLockfiles = LOCKFILE_NAMES.filter(n => fs.existsSync(path.join(absManifestDir, n)));
throw new SmartSnapBailError(`SmartSnap: lockfile "${lockfileRepoPath}" not present at base ref ${baseRef}; running full snapshot set`);
}

const newLockfile = fs.readFileSync(path.join(absManifestDir, lockfileName), 'utf8');
if (oldLockfile !== newLockfile) {
// Lockfile actually shifted — invoke the diff. If byte-identical, only
// package.json's non-dep fields changed and we fall through unchanged.
const packageJson = fs.readFileSync(path.join(absManifestDir, 'package.json'), 'utf8');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants