---
name: cdp_click_text
kind: function
lang: go
domain: browser
version: 0.1.0
purity: impure
signature: "func CdpClickText(c *CDPConn, text string, opts FindByTextOpts) error"
description: "Localiza el primer elemento cuyo innerText matchea el texto dado y le hace click. Composicion de CdpFindByText + CdpClick. Mas robusto que click por selector CSS porque el texto visible cambia menos que la estructura del DOM."
tags: [browser, cdp, click, locator, accessibility]
uses_functions:
  - cdp_find_by_text_go_browser
  - cdp_click_go_browser
uses_types: []
returns: []
returns_optional: false
error_type: error_go_core
imports: []
example: |
  c, _ := browser.CdpConnect(9222)
  defer browser.CdpClose(c, 0)
  err := browser.CdpClickText(c, "Sign in", browser.FindByTextOpts{Tag: "button"})
  if err != nil {
      log.Fatal(err)
  }
tested: true
tests: ["TestCdpClickText_returnsErrorOnEmpty"]
test_file_path: "functions/browser/cdp_click_text_test.go"
file_path: "functions/browser/cdp_click_text.go"
notes: |
  - Devuelve error si no encuentra ningun elemento con ese texto — fail-loud, no falso positivo.
  - Reusa la heuristica leafmost de CdpFindByText (click va al elemento mas interno con el texto).
  - Para multiples coincidencias (ej. dos botones "OK"), pasar opts.Tag o usar un texto mas especifico.
documentation: |
  Patron `getByText(...).click()` de Playwright. Reduce mantenimiento de
  tests e2e: cuando el frontend renombra clases CSS o reordena DOM, el
  test sigue funcionando si el texto visible no cambia.
params:
  - name: c
    desc: "Conexion CDP activa."
  - name: text
    desc: "Texto del elemento a clickar."
  - name: opts
    desc: "FindByTextOpts (mismos campos que CdpFindByText)."
output: "nil si click OK, error con descripcion si no encuentra elemento o click falla."
---
