diff --git a/tests/cypress/integration/actions_tasks_objects/case_70_mutable_attribute.js b/tests/cypress/integration/actions_tasks_objects/case_70_mutable_attribute.js new file mode 100644 index 00000000..7064da72 --- /dev/null +++ b/tests/cypress/integration/actions_tasks_objects/case_70_mutable_attribute.js @@ -0,0 +1,76 @@ +// Copyright (C) 2021 Intel Corporation +// +// SPDX-License-Identifier: MIT + +// /// + +import { taskName } from '../../support/const'; + +context('Mutable attribute.', () => { + const caseId = '70'; + const labelTrack = `Case ${caseId}`; + const additionalAttrsLabelShape = [ + { additionalAttrName: 'tree', additionalValue: 'birch tree', typeAttribute: 'Text', mutable: true }, + ]; + + const createRectangleTrack2Points = { + points: 'By 2 Points', + type: 'Track', + labelName: labelTrack, + firstX: 260, + firstY: 200, + secondX: 360, + secondY: 250, + }; + + const attrValueSecondFrame = 'aspen'; + const attrValueThirdFrame = 'oak'; + + function testChangingAttributeValue(expectedValue, value) { + cy.get('.cvat-player-next-button').click(); + cy.get('.attribute-annotation-sidebar-attr-elem-wrapper') + .find('[type="text"]') + .should('have.value', expectedValue) + .clear() + .type(value); + } + + function checkObjectDetailValue(frameNum, expectedValue) { + cy.get('.cvat-player-next-button').click(); + cy.goCheckFrameNumber(frameNum); + cy.contains(expectedValue).should('exist').and('be.visible'); + } + + before(() => { + cy.openTask(taskName); + cy.addNewLabel(labelTrack, additionalAttrsLabelShape); + cy.openJob(); + cy.createRectangle(createRectangleTrack2Points); + }); + + describe(`Testing case "${caseId}"`, () => { + it('Go to AAM. For the 2nd and 3rd frames, change the attribute value.', () => { + cy.changeWorkspace('Attribute annotation', labelTrack); + testChangingAttributeValue(additionalAttrsLabelShape[0].additionalValue, attrValueSecondFrame); + testChangingAttributeValue(attrValueSecondFrame, attrValueThirdFrame); + }); + + it('Go to Standard mode. The object detaild have correct values on the corresponding frames.', () => { + cy.changeWorkspace('Standard'); + cy.get('#cvat_canvas_shape_1') + .trigger('mousemove', { scrollBehavior: false }) + .should('have.class', 'cvat_canvas_shape_activated'); + [ + [ + 0, + `${additionalAttrsLabelShape[0].additionalAttrName}: ${additionalAttrsLabelShape[0].additionalValue}`, + ], + [1, `${additionalAttrsLabelShape[0].additionalAttrName}: ${attrValueSecondFrame}`], + [2, `${additionalAttrsLabelShape[0].additionalAttrName}: ${attrValueThirdFrame}`], + [3, `${additionalAttrsLabelShape[0].additionalAttrName}: ${attrValueThirdFrame}`], + ].forEach(([num, val]) => { + checkObjectDetailValue(num, val); + }); + }); + }); +}); diff --git a/tests/cypress/support/commands.js b/tests/cypress/support/commands.js index c5630e01..f75f13ad 100644 --- a/tests/cypress/support/commands.js +++ b/tests/cypress/support/commands.js @@ -420,6 +420,10 @@ Cypress.Commands.add('updateAttributes', (multiAttrParams) => { cy.get(`.ant-select-item-option[title="${multiAttrParams.additionalValue}"]`).click(); }); } + if (multiAttrParams.mutable) { + cy.get('.cvat-attribute-mutable-checkbox') + .find('[type="checkbox"]').should('not.be.checked').check().should('be.checked'); + } }); });