typescript - Skapa anpassat kommando i Cypress som innehåller assert-/kedjekommandon


Jag vill skapa ett anpassat kommando som innehåller statuskodpåståenden:

cy.wait('@interceptedEndpoint')
    .its('response.statusCode')
    .should('eq', 200)

de två sista raderna är vad jag vill ha inuti det anpassade kommandot

.its('response.statusCode')
.should('eq', 200)

Min initiala idé är nedan, vilket uppenbarligen inte skulle fungera

Cypress.commands.add('checkResponse', {prevSubject: 'element'}, () => {
    .its('response.statusCode')
    .should('eq', 200)
})

Vad saknar jag ovan för att göra skapandet av det anpassade kommandot korrekt?

REDIGERA: Utöver Udo.Kiers svar. Jag behövde sätta prevSubject till true för att få det att acceptera svaret för det förväntade påståendet.

Svar #1

Du kan försöka lägga till subject-parametern,

Cypress.commands.add('checkResponse', {prevSubject: true}, (subject) => {
  cy.wrap(subject)
    .its('response.statusCode')
    .should('eq', 200)
})

...

cy.wait('@interceptedEndpoint').checkResponse()

Alternativt, med väntan inuti anpassad kommando:

Cypress.commandsCommands.add('waitAndCheckResponse', (subjectAlias) => {
  cy.wait(subjectAlias)
    .its('response.statusCode')
    .should('eq', 200);
})

...

cy.waitAndCheckResponse('@interceptedEndpoint')