Cypress. Test "Rotated bounding boxes" (#3961)

* Added test for "Rotated bounding boxes"

* Update he test to use toFixed()

* Fix typo

* Applying comments.

* Some reworks

* Change assert

Co-authored-by: dvkruchinin <dvkruchinin@gmail.com>
main
Dmitry Kruchinin 4 years ago committed by GitHub
parent 1d952acee8
commit 45f9fdcecd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,133 @@
// Copyright (C) 2021 Intel Corporation
//
// SPDX-License-Identifier: MIT
/// <reference types="cypress" />
import { labelName, taskName } from '../../support/const';
context('Rotated bounding boxes.', () => {
const caseId = '108';
const createRectangleShape2Points = {
points: 'By 2 Points',
type: 'Shape',
labelName,
firstX: 250,
firstY: 350,
secondX: 350,
secondY: 450,
};
const createRectangleTrack2Points = {
points: 'By 2 Points',
type: 'Track',
labelName,
firstX: createRectangleShape2Points.firstX,
firstY: createRectangleShape2Points.firstY - 150,
secondX: createRectangleShape2Points.secondX,
secondY: createRectangleShape2Points.secondY - 150,
};
function testShapeRotate(shape, x, y, expectedRotate, pressShift) {
cy.get(shape)
.trigger('mousemove')
.trigger('mouseover')
.should('have.class', 'cvat_canvas_shape_activated');
cy.get('.svg_select_points_rot')
.should('be.visible')
.and('have.length', 1)
.trigger('mousemove')
.trigger('mouseover');
if (pressShift) {
cy.get('body').type('{shift}', { release: false });
}
cy.get('.svg_select_points_rot').trigger('mousedown', { button: 0 });
cy.get('.cvat-canvas-container').trigger('mousemove', x, y);
cy.get('#cvat_canvas_text_content').should('contain.text', expectedRotate);
cy.get('.cvat-canvas-container').trigger('mouseup');
cy.get(shape).should('have.attr', 'transform');
}
function testCompareRotate(shape, toFrame) {
for (let frame = 8; frame >= toFrame; frame--) {
cy.get(shape).invoke('css', 'transform').then(($transform) => {
cy.goToPreviousFrame(frame);
cy.get(shape).invoke('css', 'transform').then(($transform2) => {
expect($transform).not.eq($transform2);
});
});
}
}
before(() => {
cy.openTask(taskName);
cy.openJob();
Cypress.config('scrollBehavior', false);
cy.createRectangle(createRectangleShape2Points);
cy.createRectangle(createRectangleTrack2Points);
cy.goCheckFrameNumber(1);
cy.createRectangle(createRectangleShape2Points);
cy.goCheckFrameNumber(0);
});
describe(`Testing case "${caseId}"`, () => {
it('Check that bounding boxes can be rotated.', () => {
testShapeRotate('#cvat_canvas_shape_1', 350, 150, '11.4°');
testShapeRotate('#cvat_canvas_shape_2', 350, 150, '26.6°');
});
it('Check interpolation, merging/splitting rotated shapes.', () => {
// Check track roration on all frames
cy.get('#cvat_canvas_shape_2').invoke('css', 'transform').then((shape2) => {
for (let frame = 1; frame < 10; frame++) {
cy.goToNextFrame(frame);
cy.get('#cvat_canvas_shape_2').invoke('css', 'transform').then((shape2Next) => {
expect(shape2).to.be.eq(shape2Next);
});
}
});
testShapeRotate('#cvat_canvas_shape_2', 350, 250, '91.9°');
// Comparison of the values of the shape attribute of the current frame with the previous frame
testCompareRotate('#cvat_canvas_shape_2', 0);
// Merge shapes
cy.goCheckFrameNumber(0);
cy.get('.cvat-merge-control').click();
cy.get('#cvat_canvas_shape_1').click();
cy.goCheckFrameNumber(1);
cy.get('#cvat_canvas_shape_3').click();
cy.get('body').type('m');
cy.goCheckFrameNumber(2);
cy.get('#cvat_canvas_shape_4').should('be.hidden');
cy.get('#cvat-objects-sidebar-state-item-4')
.should('contain', '4')
.and('contain', 'RECTANGLE TRACK')
.within(() => {
cy.get('.cvat-object-item-button-keyframe').click();
cy.get('.cvat-object-item-button-keyframe-enabled').should('not.exist');
});
cy.get('#cvat_canvas_shape_4').should('be.visible');
cy.goCheckFrameNumber(9);
testShapeRotate('#cvat_canvas_shape_4', 350, 250, '18.5°');
// Comparison of the values of the shape attribute of the current frame with the previous frame
testCompareRotate('#cvat_canvas_shape_4', 2);
cy.goCheckFrameNumber(3);
// Split tracks
cy.get('.cvat-split-track-control').click();
// A single click does not reproduce the split a track scenario in cypress test.
cy.get('#cvat_canvas_shape_2').click().click();
cy.get('#cvat_canvas_shape_5').should('have.attr', 'transform').then((shapeTransform) => {
cy.get('#cvat_canvas_shape_6').should('have.attr', 'transform', shapeTransform);
});
});
it('Check rotation with hold Shift button.', () => {
cy.goCheckFrameNumber(0);
testShapeRotate('#cvat_canvas_shape_4', 350, 150, '15.0°', true);
testShapeRotate('#cvat_canvas_shape_4', 400, 150, '30.0°', true);
});
});
});
Loading…
Cancel
Save