{"record":{"id":"09f77c35f2a69a0c","repo":"microsoft/playwright","slug":"malformed-test-id-selector-selector","errorCode":null,"errorMessage":"Malformed test id selector: ${selector}","messagePattern":"Malformed test id selector: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/injected/src/injectedScript.ts","lineNumber":518,"sourceCode":"\n  private _createNamedAttributeEngine(): SelectorEngine {\n    const queryAll = (root: SelectorRoot, selector: string): Element[] => {\n      const parsed = parseAttributeSelector(selector, true);\n      if (parsed.name || parsed.attributes.length !== 1)\n        throw new Error('Malformed attribute selector: ' + selector);\n      const { name } = parsed.attributes[0];\n      const matcher = createAttributeMatcher(parsed.attributes[0]);\n      const elements = this._evaluator._queryCSS({ scope: root as Document | Element, pierceShadow: true }, `[${name}]`);\n      return elements.filter(e => matcher(e.getAttribute(name)!));\n    };\n    return { queryAll };\n  }\n\n  private _createTestIdEngine(): SelectorEngine {\n    const queryAll = (root: SelectorRoot, selector: string): Element[] => {\n      const parsed = parseAttributeSelector(selector, true);\n      if (parsed.name || parsed.attributes.length !== 1)\n        throw new Error('Malformed test id selector: ' + selector);\n      const names = splitTestIdAttributeNames(parsed.attributes[0].name);\n      const matcher = createAttributeMatcher(parsed.attributes[0]);\n      const cssQuery = names.map(n => `[${n}]`).join(',');\n      const elements = this._evaluator._queryCSS({ scope: root as Document | Element, pierceShadow: true }, cssQuery);\n      return elements.filter(e => names.some(n => {\n        const actual = e.getAttribute(n);\n        return actual !== null && matcher(actual);\n      }));\n    };\n    return { queryAll };\n  }\n\n  private _createDescribeEngine(): SelectorEngine {\n    const queryAll = (root: SelectorRoot): Element[] => {\n      if (root.nodeType !== 1 /* Node.ELEMENT_NODE */)\n        return [];\n      return [root as Element];\n    };","sourceCodeStart":500,"sourceCodeEnd":536,"githubUrl":"https://github.com/microsoft/playwright/blob/c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6/packages/injected/src/injectedScript.ts#L500-L536","documentation":"Error \"Malformed test id selector: ${selector}\" thrown in microsoft/playwright.","triggerScenarios":"Thrown at packages/injected/src/injectedScript.ts:518 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6","analyzedAt":"2026-08-12T07:26:36.950Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}