# Vincular casos de prueba

> Cómo un escenario de Cucumber encuentra su caso de Probara, por su clave de automatización o su etiqueta @probara:<ID>, con esquemas de escenario y casos que todavía no existen.

Un resultado llega a un caso de Probara de una de dos maneras: su **clave de automatización** coincide con la
clave de un caso sincronizado, o su escenario lleva una **etiqueta `@probara:<ID>`** que nombra el caso. Ambas
son las reglas que usa `probara sync gherkin`, así que un escenario sincronizado una vez y reportado muchas
veces siempre llega al mismo caso.

## La clave

La clave de un escenario es `<ruta> > <Feature> > <Scenario>`, la misma clave que construye `probara sync gherkin`:

- `<ruta>` es el archivo `.feature` relativo a `rootDir`, el directorio desde donde corre cucumber-js salvo que
  lo cambies, con separadores `/`, como `features/checkout/pay.feature`.
- La clave es la [clave v1](https://github.com/cynch-me/probara-sdk/blob/main/packages/core/README.md#the-automation-key-v1),
  la clave de automatización de todos los reporters de Probara.
- Un `Rule:` no forma parte de la clave: un escenario bajo una Rule se identifica bajo su Feature.
- Un esquema de escenario tiene una sola clave, con sus marcadores tal como están escritos: `Pay with <method>`.
  Cada fila de sus Examples es un resultado aparte, registrado en el caso de ejecución con los valores de la fila
  (`method: visa`). No forman parte de la clave.
- La clave usa los nombres tal como están escritos en el archivo `.feature`. Renombrar un archivo, su Feature o
  un escenario cambia su clave. Sincroniza el cambio, y el caso se mueve con él cuando
  [la sincronización](https://docs.probara.net/es/guides/syncing-feature-files-from-git/#movimientos-renombres-y-vínculos) lo encuentra.

Ejecuta el formateador desde el directorio al que son relativas las rutas de los archivos, o define `rootDir` en
la raíz del repositorio. La sincronización y el formateador deben usar la misma raíz, o las claves no coinciden.

## Etiquetas del caso

Un escenario etiquetado con `@probara:<ID>` reporta al caso con ese identificador visible, sea cual sea su clave:

```gherkin
@probara:SHOP-12
Scenario: Pay with the saved card
```

- Solo cuentan las etiquetas del propio escenario. Una etiqueta de su Feature o de su Rule no se aplica a sus escenarios.
- Varias etiquetas vinculan el resultado a varios casos: se envía un resultado a cada caso.
- Una etiqueta cuyo ID no es un identificador visible, como `@probara:shop-3`, se ignora, con una advertencia en stderr.
- El caso debe pertenecer al proyecto de la ejecución, o a un proyecto de la lista `projects`. No se reporta a un caso
  de otro proyecto: el reporter lo descarta, con un recuento en el resumen.
- Las etiquetas de otras herramientas, como `@TEST_ABC-12`, `@QaseID=12` o `@C123`, no vinculan nada.

## Escenarios sin caso sincronizado

Un resultado cuya clave no coincide con ningún caso crea un caso, como hace cualquier reporte. Eso es
`createMissingCases`, activado por defecto. El caso es entonces el que `probara sync gherkin` encontraría
también por su clave, una vez sincronizado el escenario. Sincroniza antes de las pruebas, para que los
resultados lleguen a los casos sincronizados.

## Comprobar el enlace

Tras una ejecución, el caso de cada escenario muestra el resultado de la ejecución. Si un resultado llega a un
caso nuevo, es que la sincronización no se ha ejecutado desde que renombraste el escenario, o que el formateador
y la sincronización usan raíces distintas. [Solución de problemas](https://docs.probara.net/es/developers/ci-integrations/cucumber/troubleshooting/#los-resultados-no-llegan-a-los-casos-sincronizados)
enumera las comprobaciones en orden.
