typescript - Utför anpassade åtgärder vid omförsök av Cypress-test


Jag använder omförsök i mitt Cypress-test. Varje gång ett test körs om vill jag utföra en åtgärd (t.ex. logga detaljer om felet i en fil).

Jag tänkte att command:retry från händelsekatalogen kanske kunde vara användbart, men jag är inte säker på vad parametern betyder och hur jag kan använda den.

Svar #1

Du kanske tycker att command:retry är lite för detaljerat, prova on fail-händelsen.

Cypress.on('fail', (error, runnable) => {
  debugger
  
  // take a look at the parameters
  console.log('error', error.message)
  console.log('runnable', runnable)

  // for example
  let currentTest = runnable.ctx.currentTest
  let title = runnable.title

  throw error // throw error to have test still fail
})

Om försök igen

Det körbara objekt som skickas till on('fail')-händelsen har ett par egenskaper som ger användbar information om omförsöken.

Säg att du sätter {retries: 2} på testet, fail-händelsen kallas för varje försök som misslyckas.

Vid första och andra körningen är runnable.final === false.

På det tredje och sista försöket är runnable.final === true plus runnable.prevAttempts en array med de två tidigare (misslyckade) försöken.

Jag har inte kollat vad man får om, säg, tredje försöket lyckas.

Svar #2

Det finns ett Cyclope-plugin som kan täcka det du vill göra med testfel. Detta plugin inkluderar en hjälpfunktion savePageIfTestFailed, som du kan anropa i en afterEach() i din support/index.js-fil.