{"record":{"id":"74cb54f7e1565abe","repo":"grafana/k6","slug":"unsupported-vision-deficiency-s","errorCode":null,"errorMessage":"unsupported vision deficiency: %s","messagePattern":"unsupported vision deficiency: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/js/modules/k6/browser/common/page.go","lineNumber":1100,"sourceCode":"\n\treturn nil\n}\n\n// EmulateVisionDeficiency activates/deactivates emulation of a vision deficiency.\nfunc (p *Page) EmulateVisionDeficiency(typ string) error {\n\tp.logger.Debugf(\"Page:EmulateVisionDeficiency\", \"sid:%v typ:%s\", p.sessionID(), typ)\n\n\tvalidTypes := map[string]emulation.SetEmulatedVisionDeficiencyType{\n\t\t\"achromatopsia\": emulation.SetEmulatedVisionDeficiencyTypeAchromatopsia,\n\t\t\"blurredVision\": emulation.SetEmulatedVisionDeficiencyTypeBlurredVision,\n\t\t\"deuteranopia\":  emulation.SetEmulatedVisionDeficiencyTypeDeuteranopia,\n\t\t\"none\":          emulation.SetEmulatedVisionDeficiencyTypeNone,\n\t\t\"protanopia\":    emulation.SetEmulatedVisionDeficiencyTypeProtanopia,\n\t\t\"tritanopia\":    emulation.SetEmulatedVisionDeficiencyTypeTritanopia,\n\t}\n\tt, ok := validTypes[typ]\n\tif !ok {\n\t\treturn fmt.Errorf(\"unsupported vision deficiency: %s\", typ)\n\t}\n\n\taction := emulation.SetEmulatedVisionDeficiency(t)\n\tif err := action.Do(cdp.WithExecutor(p.ctx, p.session)); err != nil {\n\t\treturn fmt.Errorf(\"setting emulated vision deficiency %q: %w\", typ, err)\n\t}\n\n\tapplySlowMo(p.ctx)\n\n\treturn nil\n}\n\n// Evaluate runs JS code within the execution context of the main frame of the page.\nfunc (p *Page) Evaluate(pageFunc string, args ...any) (any, error) {\n\tp.logger.Debugf(\"Page:Evaluate\", \"sid:%v\", p.sessionID())\n\n\treturn p.MainFrame().Evaluate(pageFunc, args...)\n}","sourceCodeStart":1082,"sourceCodeEnd":1118,"githubUrl":"https://github.com/grafana/k6/blob/93accf6570dcd306ca5e99cc44c393ee3797761b/internal/js/modules/k6/browser/common/page.go#L1082-L1118","documentation":"Page.EmulateVisionDeficiency validates its argument against a fixed allowlist (achromatopsia, blurredVision, deuteranopia, none, protanopia, tritanopia) and returns this error before any CDP call when the value is not in the map. It is a pure input-validation error, deterministic and entirely caller-side.","triggerScenarios":"page.emulateVisionDeficiency('deuteranopia ') with trailing whitespace, a misspelling like 'deuteranopia'/'blurriedVision', or a casing error like 'None'. The lookup is an exact, case-sensitive map hit.","commonSituations":"Typos in test scripts; copying values from Puppeteer/Playwright docs that use different names; passing undefined/null which stringifies to something invalid.","solutions":["Use one of the exact values: 'none', 'achromatopsia', 'blurredVision', 'deuteranopia', 'protanopia', 'tritanopia'","Copy-paste the value from the k6 browser API docs rather than retyping","Define the value once as a constant if reused across scripts"],"exampleFix":"// before\nawait page.emulateVisionDeficiency('blurred'); // invalid\n\n// after\nawait page.emulateVisionDeficiency('blurredVision');","handlingStrategy":"validation","validationCode":"const VALID = ['achromatopsia','blurredVision','deuteranopia','none','protanopia','tritanopia'];\nif (!VALID.includes(typ)) throw new Error(`invalid vision deficiency: ${typ}`);","typeGuard":"const isVisionDeficiency = (v) =>\n  ['achromatopsia','blurredVision','deuteranopia','none','protanopia','tritanopia'].includes(v);","tryCatchPattern":null,"preventionTips":["Keep the allowlist next to the call site as a constant","Copy values from the k6 docs; do not port names from other tools"],"tags":["browser","emulation","validation","vision-deficiency","user-input"],"backgroundTag":null,"analyzedSha":"93accf6570dcd306ca5e99cc44c393ee3797761b","analyzedAt":"2026-08-15T21:23:27.118Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}