{"record":{"id":"0e9692422a13dd8e","repo":"grafana/k6","slug":"parse-isvisible-options-of-selector-q-w","errorCode":null,"errorMessage":"parse isVisible options of selector %q: %w","messagePattern":"parse isVisible options of selector %q: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/js/modules/k6/browser/browser/frame_mapping.go","lineNumber":301,"sourceCode":"\t\t\t\treturn nil, fmt.Errorf(\"parse isEnabled options of selector %q: %w\", selector, err)\n\t\t\t}\n\t\t\treturn promise(vu, func() (any, error) {\n\t\t\t\treturn f.IsEnabled(selector, popts) //nolint:wrapcheck\n\t\t\t}), nil\n\t\t},\n\t\t\"isHidden\": func(selector string, opts sobek.Value) (*sobek.Promise, error) {\n\t\t\tpopts, err := parseFrameIsHiddenOptions(rt, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"parse isHidden options of selector %q: %w\", selector, err)\n\t\t\t}\n\t\t\treturn promise(vu, func() (any, error) {\n\t\t\t\treturn f.IsHidden(selector, popts) //nolint:wrapcheck\n\t\t\t}), nil\n\t\t},\n\t\t\"isVisible\": func(selector string, opts sobek.Value) (*sobek.Promise, error) {\n\t\t\tpopts, err := parseFrameIsVisibleOptions(rt, opts)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"parse isVisible options of selector %q: %w\", selector, err)\n\t\t\t}\n\t\t\treturn promise(vu, func() (any, error) {\n\t\t\t\treturn f.IsVisible(selector, popts) //nolint:wrapcheck\n\t\t\t}), nil\n\t\t},\n\t\t\"locator\": func(selector string, opts sobek.Value) mapping {\n\t\t\treturn mapLocator(vu, f.Locator(selector, parseLocatorOptions(rt, opts)))\n\t\t},\n\t\t\"frameLocator\": func(selector string) *sobek.Object {\n\t\t\tmfl := mapFrameLocator(vu, f.FrameLocator(selector))\n\t\t\treturn rt.ToValue(mfl).ToObject(rt)\n\t\t},\n\t\t\"name\": f.Name,\n\t\t\"page\": func() mapping {\n\t\t\treturn mapPage(vu, f.Page())\n\t\t},\n\t\t\"parentFrame\": func() mapping {\n\t\t\treturn mapFrame(vu, f.ParentFrame())","sourceCodeStart":283,"sourceCodeEnd":319,"githubUrl":"https://github.com/grafana/k6/blob/8d06114777191d21ef885d05c5f8aa9e1ed838ae/internal/js/modules/k6/browser/browser/frame_mapping.go#L283-L319","documentation":"Thrown when `frame.isVisible(selector, opts)` options fail to parse into FrameIsVisibleOptions — struct contains only `strict` (no timeout; visibility is checked immediately). Parse is currently coercive, so this branch cannot fire; unknown keys like `timeout` are silently ignored.","triggerScenarios":"No current input triggers it; only a validating Parse would. A `timeout` key is dropped without error.","commonSituations":"Expecting isVisible to wait/retry like an assertion — it is an instantaneous check; users porting waitFor patterns onto isVisible hit logic bugs rather than this error.","solutions":["Use only { strict: bool } for isVisible","For waiting behavior use frame.waitForSelector with state: 'visible' and a timeout","Keep option objects minimal to avoid silent key dropping"],"exampleFix":"// before\nawait frame.isVisible('#el', { timeout: 5000 }); // timeout ignored\n\n// after\nawait frame.waitForSelector('#el', { state: 'visible', timeout: 5000 });","handlingStrategy":"try-catch","validationCode":"const opts = { strict: false };\nif ('timeout' in opts) console.warn('isVisible does not support timeout; it returns immediately');","typeGuard":"function isVisibleOptions(o) {\n  return o == null || (typeof o === 'object' && (o.strict === undefined || typeof o.strict === 'boolean'));\n}","tryCatchPattern":"try {\n  const visible = await frame.isVisible(sel, { strict: true });\n} catch (e) {\n  if (String(e).includes('parse isVisible options')) { /* fix opts */ } else { throw e; }\n}","preventionTips":["isVisible is instantaneous; do not add timeout","Use waitForSelector for retry-until-visible semantics","strict is the only option key this method reads"],"tags":["k6","browser","frame","is-visible","options","strict"],"backgroundTag":"invalid-options-argument","analyzedSha":"8d06114777191d21ef885d05c5f8aa9e1ed838ae","analyzedAt":"2026-09-14T20:10:14.619Z","contentChangedAt":"2026-09-14T20:10:14.619Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}