Estoy creando una prueba en cypress donde necesito extraer parte de una etiqueta en un botón (ya tengo un selector para eso), almacenarlo y usarlo más tarde en la prueba para un .should('contain', label) afirmación.
He intentado hacer lo siguiente:
cy.assertObjectIsFocused(selector[Cypress.env(common.APP_NAME)].newPlayer.btnNextEpisode); cy.get(selector[Cypress.env(common.APP_NAME)].newPlayer.btnNextEpisodeLabel) .invoke('attr', common.TEXTURE_TEXT) .and('match', /S\d+ E\d+/) .as('nextEpisodeLabel'); ... cy.get('@nextEpisodeLabel').then((label) => { cy.get( selector[Cypress.env(common.APP_NAME)].newPlayer.playerAssetEpisodeAndSeasonNumbers, ) .invoke('attr', common.TEXTURE_TEXT) .should('contain', label); }); Pero no está extrayendo la expresión regular, está comparando la etiqueta completa (esperaba .and('match', /S\d+ E\d+/).as('nextEpisodeLabel'); almacenaría como un alias solo la expresión regular de la cadena, pero no, almacena toda la cadena.
¿Cómo puedo extraer solo la parte necesaria de la cadena para poder usarla luego en la afirmación?
Puedes hacer algo como esto:
cy.assertObjectIsFocused( selector[Cypress.env(common.APP_NAME)].newPlayer.btnNextEpisode ) cy.get(selector[Cypress.env(common.APP_NAME)].newPlayer.btnNextEpisodeLabel) .invoke('attr', common.TEXTURE_TEXT) .as('nextEpisodeLabel') ... cy.get('@nextEpisodeLabel').then((label) => { cy.wrap(label).should('match', /S\d+ E\d+/) cy.get( selector[Cypress.env(common.APP_NAME)].newPlayer .playerAssetEpisodeAndSeasonNumbers ) .invoke('attr', common.TEXTURE_TEXT) .should('contain', label) })O, si desea agregar el alias en función de si la etiqueta extraída coincide con la expresión regular o no, puede hacer lo siguiente:
cy.assertObjectIsFocused( selector[Cypress.env(common.APP_NAME)].newPlayer.btnNextEpisode ) cy.get(selector[Cypress.env(common.APP_NAME)].newPlayer.btnNextEpisodeLabel) .invoke('attr', common.TEXTURE_TEXT) .then(($nextEpisodeLabel) => { if ($nextEpisodeLabel.match(/S\d+ E\d+/)) { cy.wrap($nextEpisodeLabel).as('nextEpisodeLabel') } }) ... cy.get('@nextEpisodeLabel').then((label) => { cy.get( selector[Cypress.env(common.APP_NAME)].newPlayer .playerAssetEpisodeAndSeasonNumbers ) .invoke('attr', common.TEXTURE_TEXT) .should('contain', label) })