# Migración y actualización

> Pasa una configuración de Cucumber desde probara import cucumber, o desde el reporter de cucumber-js de Qase, a @probara/cucumber-reporter, y actualiza el reporter.

## Desde `probara import cucumber`

Si ya envías el reporte JSON de Cucumber con `probara import cucumber`, el reporter encuentra los mismos casos. Construye
las mismas claves que la sincronización y la importación, así que al cambiar cada escenario conserva su caso y su historial.

El cambio son tres pasos:

1. Instala el reporter junto a cucumber-js: `npm install --save-dev @probara/cucumber-reporter`.
2. Añádelo a `format` en `cucumber.js`, con tu ID de proyecto en `formatOptions.probara`, como muestra el
   [inicio rápido](https://docs.probara.net/es/developers/ci-integrations/cucumber/).
3. Quita del pipeline el paso `cucumber-js --format json:...` y el paso `probara import cucumber`. Conserva el paso de
   sincronización.

Quita el paso de importación en cuanto el reporter funcione. Una importación después de una ejecución que el reporter ya
reportó crea una segunda ejecución con los mismos resultados.

Lo que cambia:

- Los resultados se envían al final de la ejecución, desde el mismo comando, no en un paso posterior.
- Se suben los archivos que un escenario adjunta con `this.attach`, `this.log` y `this.link`. La importación no envía adjuntos.

Mantén `probara import cucumber` para los reportes de Cucumber-JVM, playwright-bdd y otras herramientas que escriben JSON
de Cucumber. El reporter es para cucumber-js. La [página de la CLI](https://docs.probara.net/es/developers/cli/#importar-resultados-de-cucumber)
describe ese comando.

## Desde el reporter de cucumber-js de Qase

[`qase-cucumberjs`](https://github.com/qase-tms/qase-javascript/tree/main/qase-cucumberjs) vincula un escenario con un caso
de Qase mediante una etiqueta, y envía sus resultados a Qase. Este reporter hace lo mismo con Probara, con dos diferencias:
los escenarios llegan desde Git mediante `probara sync gherkin`, y el vínculo es la etiqueta `@probara:<ID>`.

| Qué                   | Qase                                             | Probara                                                                   |
| --------------------- | ------------------------------------------------ | ------------------------------------------------------------------------- |
| Paquete               | `qase-cucumberjs`                                | `@probara/cucumber-reporter`, con `@cucumber/cucumber`                    |
| Vincular un escenario | `@QaseID=12`                                     | `@probara:SHOP-12` (el identificador visible del caso)                    |
| Token y proyecto      | `QASE_TESTOPS_API_TOKEN`, `QASE_TESTOPS_PROJECT` | `PROBARA_API_TOKEN`, `PROBARA_PROJECT`                                    |
| Casos                 | Creados por los reportes                         | Sincronizados desde los archivos `.feature`, y luego vinculados por clave |
| Adjuntos              | Enviados por el reporter                         | Enviados por el reporter, con `this.attach`, `this.log` y `this.link`     |

1. Quita `qase-cucumberjs` y su entrada de `cucumber.js`.
2. Instala el reporter: `npm install --save-dev @probara/cucumber-reporter`.
3. Añádelo a `format` y define `projectId` en `formatOptions.probara`, como muestra el
   [inicio rápido](https://docs.probara.net/es/developers/ci-integrations/cucumber/).
4. Sustituye cada etiqueta `@QaseID=<n>` por `@probara:<ID>`, con el identificador visible del caso en Probara. La
   etiqueta no es una etiqueta del caso: solo vincula el escenario.
5. Sincroniza los archivos `.feature` en la rama principal: `npx @probara/cli sync gherkin "features/**/*.feature"`.
   Un escenario llega entonces a su caso por su clave, incluso antes de tener etiqueta.

## Actualizar el reporter

Antes de la 1.0, una versión menor puede traer cambios incompatibles. Fija la versión de `@probara/cucumber-reporter` en tu
lockfile, y lee el [changelog](https://github.com/cynch-me/probara-sdk/blob/main/packages/cucumber-reporter/CHANGELOG.md)
antes de actualizar.
