Vincular pruebas de Cypress con casos
Cada resultado va a un caso de prueba de Probara. Una prueba que nombra su caso se vincula con él; una prueba que no nombra ninguno se asocia por su clave de automatización, y su caso se crea la primera vez que se reporta. Vincula las pruebas cuando sus casos ya existen en Probara (escritos a mano o importados).
Dos formas de nombrar un caso
Sección titulada «Dos formas de nombrar un caso»| Forma | Ejemplo | Cuándo |
|---|---|---|
Un ID de caso en un it o un describe | it('SHOP-12 pays with a card', ...) | La forma habitual; también con pruebas omitidas |
probara.id() en la prueba o un hook | probara.id('SHOP-14'), probara.id(['A', 'B']) | Sin tocar el título |
describe('Checkout', () => { it('SHOP-12 pays with a card', () => { cy.get('.pay-card').click(); });
describe('SHOP-13 Vouchers', () => { it('pays with a voucher', () => { cy.get('.pay-voucher').click(); }); });
it('pays with a gift card', () => { probara.id('SHOP-14'); cy.get('.pay-gift').click(); });
it('shows the total', () => { // No case named: matched by its key, created the first time. cy.get('.total').should('be.visible'); });});Probara recibe un resultado por prueba, cada uno con su caso, y la clave que tendría sin los IDs:
[ { "caseDisplayId": "SHOP-12", "automationKey": "cypress/e2e/checkout.cy.js > Checkout pays with a card" }, { "caseDisplayId": "SHOP-13", "automationKey": "cypress/e2e/checkout.cy.js > Checkout Vouchers pays with a voucher" }, { "caseDisplayId": "SHOP-14", "automationKey": "cypress/e2e/checkout.cy.js > Checkout pays with a gift card" }, { "automationKey": "cypress/e2e/checkout.cy.js > Checkout shows the total" }]- Los IDs en los títulos son los IDs del proyecto reportado (y de
projects) en el título de undescribeo de unit. Un ID en undescribevincula todas las pruebas que contiene. Se quitan de la clave, así que añadir uno nunca cambia una clave. Un ID de un proyecto que el reporter no conoce, comoWEB-3sinprojects: ['WEB'], se queda en el título y en la clave como texto. probara.id()acepta un ID o una lista, y vincula la prueba en curso; en unbeforeEach, vincula todas las pruebas del bloque. Necesita el plugin y el archivo de soporte. Una prueba omitida antes de ejecutarse (it.skip) nunca ejecuta su cuerpo: vincúlala con un ID en el título. La selección de pruebas tampoco veprobara.id(): decide antes de que la prueba se ejecute.
Los IDs son el ID visible del caso: el ID del Proyecto, un guion y el número que muestra Probara
(SHOP-12). Un ID que Probara no conoce no se registra: el registro lo nombra como no asociado
(solución de problemas).
Varios IDs, en los títulos o en probara.id(), vinculan la prueba con varios casos, y la prueba se
registra una vez por caso.
Claves de automatización
Sección titulada «Claves de automatización»Una prueba que no nombra ningún caso se asocia por su clave de automatización: la misma clave
encuentra el mismo caso en cada ejecución, y una clave nueva crea un caso nuevo. La clave es la que
probara import junit da a la prueba en el informe del reporter junit de Cypress o de
cypress-junit:
<ruta de la spec, relativa a la raíz del proyecto> > <el título completo de la prueba>| Parte | De dónde sale | Ejemplo |
|---|---|---|
| La ruta de la spec | Relativa a rootDir (el projectRoot de Cypress), con separadores /, mientras keyIncludesFile esté activado | cypress/e2e/cart.cy.js |
| El título completo | Los títulos de los describe y el del it unidos por un espacio, como un solo segmento, sin los IDs de caso | Cart Checkout pays |
describe('SHOP-12 Cart', () => { describe('Checkout', () => { it('pays by card', () => { cy.get('.pay').click(); }); });});cypress/e2e/cart.cy.js > Cart Checkout pays by cardQué cambia una clave
Sección titulada «Qué cambia una clave»| Qué | Por qué |
|---|---|
Renombrar una spec, un describe o un it | La ruta de la spec y los títulos son la clave |
| Mover una spec | Su ruta es la clave |
Lanzar cypress run desde otro directorio | La ruta es relativa al projectRoot de Cypress |
Cambiar keyIncludesFile o rootDir | Deciden si la ruta de la spec está en la clave, y respecto a qué se expresa |
Nada más llega a una clave: ni el navegador (un parámetro browser del resultado), ni el intento,
ni un parámetro, una etiqueta o un paso, ni el build de CI, la máquina, --spec o
excludeSpecPattern. Nombra los casos en los títulos antes de renombrar, para que las pruebas los
conserven.
Trampas en Cypress
Sección titulada «Trampas en Cypress»- Dos pruebas con el mismo título completo son un solo caso. Mocha permite
it('adds an item')dos veces en un mismodescribe, ya b›cjunto aa›b ctiene el mismo título completoa b c. Ambas se registran en un caso, y lo que dijeron sus llamadasprobara.*se omite en lugar de dárselo a la prueba equivocada. Da a cada prueba su propio título. it.onlydeja fuera lo que no ejecuta. Cypress quita las demás pruebas de su árbol antes de ejecutar nada, así que no se reportan en absoluto, ni siquiera como omitidas. Lo mismo vale para las specs que--specdeja fuera.- Un hook que falla es una prueba propia, a la que Cypress, y también la importación, llama
"before each" hook for "…". Su clave es la que contiene un informe JUnit (hooks). - Una spec que Cypress no puede analizar es un resultado llamado
Spec failed to run(specs que no se pueden ejecutar).
Casos que faltan
Sección titulada «Casos que faltan»Una prueba cuya clave no coincide con ningún caso crea uno, con el nombre de la prueba (sin los
IDs), bajo suiteUlid (la raíz del proyecto por defecto), en una ruta de suites formada por el
archivo de la spec y los bloques describe que contienen la prueba:
cypress/e2e/cart.cy.js › Cart › Checkout. Una prueba fuera de cualquier describe queda solo en la
spec. Con keyIncludesFile: false, la spec sale también de la ruta de suites. Con
createMissingCases: false (PROBARA_CREATE_MISSING_CASES=false) una prueba así no registra nada y
se registra como no asociada: solo los casos existentes reciben resultados.
probara.title() y probara.suite()
eligen el nombre y la suite de un caso creado.
Las mismas claves que probara import junit
Sección titulada «Las mismas claves que probara import junit»Un proyecto que enviaba el JUnit XML de Cypress con probara import junit puede pasar al reporter y
conservar cada caso: el reporter construye las mismas claves y lee los mismos IDs de los títulos.
| El informe JUnit | Ajuste del reporter |
|---|---|
Escrito por el reporter junit de Cypress o cypress-junit, opciones por defecto | Nada: keyIncludesFile está activado |
Escrito sin el atributo file de su suite raíz | keyIncludesFile: false |
La única diferencia visible es dónde queda un caso creado: el reporter lo pone bajo la spec y
sus bloques describe, la importación solo bajo la spec, porque un informe JUnit no puede separar los
títulos de los describe de un único título. Un caso existente nunca se mueve
(migrar desde la importación JUnit).
Relacionado: Metadatos y enlaces · Sharding y proyectos · Actualizar · Fuente: linking.md