{"record":{"id":"958d6288afd8c2b4","repo":"SeleniumHQ/selenium","slug":"cookieheader-must-be-an-instance-of-header-receiv-958d62","errorCode":null,"errorMessage":"CookieHeader must be an instance of Header. Received:'${header}'","messagePattern":"CookieHeader must be an instance of Header\\. Received:'(.+?)'","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"javascript/selenium-webdriver/bidi/provideResponseParameters.js","lineNumber":58,"sourceCode":"    if (!(value instanceof BytesValue)) {\n      throw new Error(`Value must be an instance of BytesValue. Received: ${typeof value} with value: ${value}`)\n    }\n    this.#map.set('body', Object.fromEntries(value.asMap()))\n    return this\n  }\n\n  /**\n   * Sets the cookie headers for the response.\n   *\n   * @param {Header[]} cookieHeaders - An array of cookie headers.\n   * @returns {ProvideResponseParameters} - Returns the ProvideResponseParameters object for chaining.\n   * @throws {Error} - Throws an error if a cookie header is not an instance of Header.\n   */\n  cookies(cookieHeaders) {\n    const cookies = []\n    cookieHeaders.forEach((header) => {\n      if (!(header instanceof Header)) {\n        throw new Error(`CookieHeader must be an instance of Header. Received:'${header}'`)\n      }\n      cookies.push(Object.fromEntries(header.asMap()))\n    })\n\n    this.#map.set('cookies', cookies)\n    return this\n  }\n\n  /**\n   * Sets the headers for the response.\n   *\n   * @param {Header[]} headers - The headers to be set.\n   * @returns {ProvideResponseParameters} - Returns the ProvideResponseParameters object for chaining.\n   * @throws {Error} - If the provided header is not an instance of Header.\n   */\n  headers(headers) {\n    const headerList = []\n    headers.forEach((header) => {","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/SeleniumHQ/selenium/blob/aa36b38e696a0909e973bdf5e2f9031ffe842c4b/javascript/selenium-webdriver/bidi/provideResponseParameters.js#L40-L76","documentation":"Thrown by ProvideResponseParameters.cookies() when any element of the cookieHeaders array is not an instance of the Header class. The method iterates and serializes each via header.asMap(), so each must be a real Header. A plain object, string, or a PartialCookie is rejected because it lacks the asMap() contract.","triggerScenarios":"Calling params.cookies(['Set-Cookie: a=1']) (raw strings), params.cookies([{name:'a',value:{...}}]) (plain objects), or params.cookies([partialCookieInstance]) (a PartialCookie, not a Header).","commonSituations":"Passing Set-Cookie header strings parsed from an existing response; reusing PartialCookie objects (which are for storage.setCookie) instead of Headers; deserializing cookie JSON into plain objects.","solutions":["Build Header instances for each cookie: params.cookies([new Header('Set-Cookie', new BytesValue(BytesValue.Type.STRING, 'a=1; Path=/'))]).","Ensure every element is a Header (instanceof Header), not a PartialCookie or plain object.","If converting from parsed header strings, map each into a new Header with a BytesValue value."],"exampleFix":"// before\nconst params = new ProvideResponseParameters(id).cookies(['Set-Cookie: a=1'])\n\n// after\nconst { Header, BytesValue } = require('selenium-webdriver/bidi/networkTypes')\nconst params = new ProvideResponseParameters(id).cookies([\n  new Header('Set-Cookie', new BytesValue(BytesValue.Type.STRING, 'a=1; Path=/')),\n])","handlingStrategy":"type-guard","validationCode":"const allHeaders = cookieHeaders.every((h) => h instanceof Header)\nif (!allHeaders) throw new TypeError('every cookie header must be a Header instance')","typeGuard":"function isHeaderArray(v) {\n  return Array.isArray(v) && v.every((h) => h instanceof Header)\n}","tryCatchPattern":null,"preventionTips":["Do not pass Set-Cookie strings or PartialCookie objects to cookies().","Map parsed header strings into Header instances with BytesValue values.","Keep Header and PartialCookie usages clearly separated."],"tags":["bidi","network","provide-response","header","cookie","type-validation","javascript"],"backgroundTag":null,"analyzedSha":"aa36b38e696a0909e973bdf5e2f9031ffe842c4b","analyzedAt":"2026-08-14T02:32:32.244Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}