diff --git a/packages/client/src/client.js b/packages/client/src/client.js index 6ef451c00..5d49a7d0f 100644 --- a/packages/client/src/client.js +++ b/packages/client/src/client.js @@ -134,7 +134,8 @@ function parseVisualConfigFromEnv(log) { validateBoolean(visualConfig.compareWithPreviousRun, 'compareWithPreviousRun'); validateBoolean(visualConfig.diffIgnoreEnabled, 'diffIgnoreEnabled'); validateNumberInRange(visualConfig.diffIgnorePercentage, 'diffIgnorePercentage'); - validateIntegerRange(visualConfig.diffSensitivity, 'diffSensitivity', 1, 5); + // 0-indexed like the project setting: 0 = Very Strict ... 4 = Very Relaxed + validateIntegerRange(visualConfig.diffSensitivity, 'diffSensitivity', 0, 4); if (visualConfig.browsers != null) { if (!Array.isArray(visualConfig.browsers) || !visualConfig.browsers.every(b => typeof b === 'string')) { diff --git a/packages/client/test/client.test.js b/packages/client/test/client.test.js index baefb4e38..937bc91bd 100644 --- a/packages/client/test/client.test.js +++ b/packages/client/test/client.test.js @@ -769,13 +769,30 @@ describe('PercyClient', () => { .toBeRejectedWithError('Invalid PERCY_VISUAL_CONFIG: value must be valid JSON'); }); + it('accepts diffSensitivity 0 (Very Strict)', async () => { + process.env.PERCY_VISUAL_CONFIG = JSON.stringify({ diffSensitivity: 0 }); + + await expectAsync(client.createBuild({ projectType: 'web' })).toBeResolved(); + + expect(api.requests['/builds'][0].body.data.attributes['visual-config']) + .toEqual({ diffSensitivity: 0 }); + }); + it('throws when PERCY_VISUAL_CONFIG contains invalid types', async () => { process.env.PERCY_VISUAL_CONFIG = JSON.stringify({ diffSensitivity: 'high' }); await expectAsync(client.createBuild({ projectType: 'web' })).toBeRejectedWithError( - "Invalid PERCY_VISUAL_CONFIG: 'diffSensitivity' must be an integer between 1 and 5" + "Invalid PERCY_VISUAL_CONFIG: 'diffSensitivity' must be an integer between 0 and 4" + ); + }); + + it('throws when PERCY_VISUAL_CONFIG diffSensitivity is out of range', async () => { + process.env.PERCY_VISUAL_CONFIG = JSON.stringify({ diffSensitivity: 5 }); + + await expectAsync(client.createBuild({ projectType: 'web' })).toBeRejectedWithError( + "Invalid PERCY_VISUAL_CONFIG: 'diffSensitivity' must be an integer between 0 and 4" ); });