{"record":{"id":"b10ba4e8def8ef8f","repo":"microsoft/playwright","slug":"malformed-attribute-selector-selector","errorCode":null,"errorMessage":"Malformed attribute selector: ${selector}","messagePattern":"Malformed attribute selector: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/injected/src/injectedScript.ts","lineNumber":505,"sourceCode":"  }\n\n  private _createInternalLabelEngine(): SelectorEngine {\n    return {\n      queryAll: (root: SelectorRoot, selector: string): Element[] => {\n        const { matcher } = createTextMatcher(selector, true);\n        const allElements = this._evaluator._queryCSS({ scope: root as Document | Element, pierceShadow: true }, '*');\n        return allElements.filter(element => {\n          return getElementLabels(this._evaluator._cacheText, element).some(label => matcher(label));\n        });\n      }\n    };\n  }\n\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 => {","sourceCodeStart":487,"sourceCodeEnd":523,"githubUrl":"https://github.com/microsoft/playwright/blob/c8fc3bf8d31542d59b4d4d9eaab1df93ff541dc6/packages/injected/src/injectedScript.ts#L487-L523","documentation":"Error \"Malformed attribute selector: ${selector}\" thrown in microsoft/playwright.","triggerScenarios":"Thrown at packages/injected/src/injectedScript.ts:505 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"}