From 24b4d0071a2b9535d1cf9e6985dff50245bf98fc Mon Sep 17 00:00:00 2001 From: pablone Date: Sun, 23 Feb 2025 12:57:57 +0100 Subject: [PATCH] feat: enhance item tags with data attributes for improved testing --- src/pages/Item/Card/ItemTags.vue | 6 ++- test/cypress/integration/item/itemTag.spec.js | 41 ++++++++++--------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/pages/Item/Card/ItemTags.vue b/src/pages/Item/Card/ItemTags.vue index 5876cf8dc..5a7d7f818 100644 --- a/src/pages/Item/Card/ItemTags.vue +++ b/src/pages/Item/Card/ItemTags.vue @@ -87,7 +87,7 @@ const insertTag = (rows) => { tagFk: undefined, }" :default-remove="false" - :filter="{ + :user-filter="{ fields: ['id', 'itemFk', 'tagFk', 'value', 'priority'], where: { itemFk: route.params.id }, include: { @@ -119,6 +119,7 @@ const insertTag = (rows) => { " :required="true" :rules="validate('itemTag.tagFk')" + :data-cy="`tag${row?.tag?.name}`" /> { :label="t('itemTags.value')" :is-clearable="false" @keyup.enter.stop="(data) => itemTagsRef.onSubmit(data)" + :data-cy="`tag${row?.tag?.name}Value`" /> { name="delete" size="sm" dense + :data-cy="`deleteTag${row?.tag?.name}`" > {{ t('itemTags.removeTag') }} @@ -177,6 +180,7 @@ const insertTag = (rows) => { icon="add" shortcut="+" fab + data-cy="createNewTag" > {{ t('itemTags.addTag') }} diff --git a/test/cypress/integration/item/itemTag.spec.js b/test/cypress/integration/item/itemTag.spec.js index 10d68d08a..17423bc51 100644 --- a/test/cypress/integration/item/itemTag.spec.js +++ b/test/cypress/integration/item/itemTag.spec.js @@ -1,33 +1,36 @@ -/// describe('Item tag', () => { beforeEach(() => { cy.viewport(1920, 1080); cy.login('developer'); cy.visit(`/#/item/1/tags`); + cy.get('.q-page').should('be.visible'); + cy.waitForElement('[data-cy="itemTags"]'); }); + const createNewTag = 'createNewTag'; + const saveBtn = 'crudModelDefaultSaveBtn'; + const newTag = 'tagundefined'; + it('should throw an error adding an existent tag', () => { - cy.get('.q-page').should('be.visible'); - cy.get('.q-page-sticky > div').click(); - cy.get('.q-page-sticky > div').click(); - cy.dataCy('Tag_select').eq(7).type('Tallos'); - cy.get('.q-menu .q-item').contains('Tallos').click(); - cy.get(':nth-child(8) > [label="Value"]').type('1'); - +cy.dataCy('crudModelDefaultSaveBtn').click(); - cy.checkNotification("The tag or priority can't be repeated for an item"); + cy.dataCy(createNewTag).click(); + cy.dataCy(newTag).should('be.visible').click().type('Genero{enter}'); + cy.dataCy('tagGeneroValue').eq(1).should('be.visible'); + cy.dataCy(saveBtn).click(); + cy.get('.q-notification__message').should( + 'have.text', + "The tag or priority can't be repeated for an item", + ); }); it('should add a new tag', () => { - cy.get('.q-page').should('be.visible'); - cy.get('.q-page-sticky > div').click(); - cy.get('.q-page-sticky > div').click(); - cy.dataCy('Tag_select').eq(7).click(); - cy.get('.q-menu .q-item').contains('Ancho de la base').type('{enter}'); - cy.get(':nth-child(8) > [label="Value"]').type('50'); - cy.dataCy('crudModelDefaultSaveBtn').click(); + cy.dataCy(createNewTag).click(); + cy.dataCy(newTag).should('be.visible').click().type('Forma{enter}'); + cy.dataCy('tagFormaValue').should('be.visible').type('50'); + cy.dataCy(saveBtn).click(); + cy.checkNotification('Data saved'); - cy.dataCy('itemTags').children(':nth-child(8)').find('.justify-center > .q-icon').click(); - cy.dataCy('VnConfirm_confirm').click(); + cy.dataCy('deleteTagForma').should('be.visible').click(); + cy.dataCy('VnConfirm_confirm').should('be.visible').click(); cy.checkNotification('Data saved'); }); -}); \ No newline at end of file +});