@ -1,4 +1,4 @@
// Copyright (C) 2020 Intel Corporation
// Copyright (C) 2020 -2021 Intel Corporation
//
//
// SPDX-License-Identifier: MIT
// SPDX-License-Identifier: MIT
@ -12,17 +12,57 @@ context('Object make a copy.', () => {
points : 'By 2 Points' ,
points : 'By 2 Points' ,
type : 'Shape' ,
type : 'Shape' ,
labelName : labelName ,
labelName : labelName ,
firstX : 4 00,
firstX : 1 00,
firstY : 100 ,
firstY : 100 ,
secondX : 50 0,
secondX : 1 50,
secondY : 20 0,
secondY : 15 0,
} ;
} ;
const createCuboidShape2Points = {
points : 'From rectangle' ,
type : 'Shape' ,
labelName : labelName ,
firstX : 200 ,
firstY : 100 ,
secondX : 250 ,
secondY : 150 ,
} ;
const createPolygonShape = {
reDraw : false ,
type : 'Shape' ,
labelName : labelName ,
pointsMap : [
{ x : 300 , y : 100 } ,
{ x : 350 , y : 100 } ,
{ x : 350 , y : 150 } ,
] ,
complete : true ,
numberOfPoints : null ,
} ;
const createPolylinesShape = {
type : 'Shape' ,
labelName : labelName ,
pointsMap : [
{ x : 400 , y : 100 } ,
{ x : 450 , y : 100 } ,
{ x : 450 , y : 150 } ,
] ,
complete : true ,
numberOfPoints : null ,
} ;
const createPointsShape = {
type : 'Shape' ,
labelName : labelName ,
pointsMap : [ { x : 500 , y : 100 } ] ,
complete : true ,
numberOfPoints : null ,
} ;
const countObject = 5 ;
function checkObjectArrSize ( expectedValue ) {
function checkObjectArrSize ( expectedValue Shape, expectedValueSidebar ) {
cy . get ( '.cvat_canvas_shape' ) . then ( ( $cvatCanvasShape ) => {
cy . get ( '.cvat_canvas_shape' ) . then ( ( $cvatCanvasShape ) => {
cy . get ( '.cvat-objects-sidebar-state-item' ) . then ( ( $cvatObjectsSidebarStateItem ) => {
cy . get ( '.cvat-objects-sidebar-state-item' ) . then ( ( $cvatObjectsSidebarStateItem ) => {
expect ( $cvatCanvasShape . length ) . be . equal ( expectedValue ) ;
expect ( $cvatCanvasShape . length ) . be . equal ( expectedValue Shape ) ;
expect ( $cvatObjectsSidebarStateItem . length ) . be . equal ( expectedValue ) ;
expect ( $cvatObjectsSidebarStateItem . length ) . be . equal ( expectedValue Sidebar ) ;
} ) ;
} ) ;
} ) ;
} ) ;
}
}
@ -47,42 +87,86 @@ context('Object make a copy.', () => {
before ( ( ) => {
before ( ( ) => {
cy . openTaskJob ( taskName ) ;
cy . openTaskJob ( taskName ) ;
cy . createRectangle ( rectangleShape2Points ) ;
cy . createRectangle ( rectangleShape2Points ) ;
cy . createCuboid ( createCuboidShape2Points ) ;
cy . createPolygon ( createPolygonShape ) ;
cy . createPolyline ( createPolylinesShape ) ;
cy . createPoint ( createPointsShape ) ;
cy . createTag ( labelName ) ;
} ) ;
} ) ;
describe ( ` Testing case " ${ caseId } " ` , ( ) => {
describe ( ` Testing case " ${ caseId } " ` , ( ) => {
it ( 'Make a copy via sidebar.' , ( ) => {
it ( 'Make a copy via sidebar.' , ( ) => {
cy . get ( '#cvat-objects-sidebar-state-item-1' ) . within ( ( ) => {
let coordX = 100 ;
cy . get ( '[aria-label="more"]' ) . trigger ( 'mouseover' ) ;
let coordY = 300 ;
} ) ;
for ( let id = 1 ; id < countObject + 2 ; id ++ ) {
cy . get ( '.cvat-object-item-menu' ) . within ( ( ) => {
cy . get ( ` #cvat-objects-sidebar-state-item- ${ id } ` ) . within ( ( ) => {
cy . contains ( 'button' , 'Make a copy' ) . click ( ) ;
cy . get ( '[aria-label="more"]' ) . trigger ( 'mouseover' ) . wait ( 300 ) ; // Wait dropdown menu transition
} ) ;
} ) ;
cy . get ( '.cvat-object-item-menu' ) . last ( ) . should ( 'be.visible' ) . contains ( 'button' , 'Make a copy' ) . click ( ) ; // Get the tast element from cvat-object-item-menu array
cy . get ( '.cvat-canvas-container' ) . click ( coordX , coordY ) ;
cy . get ( '.cvat-canvas-container' ) . click ( ) ;
cy . get ( '.cvat-canvas-container' ) . click ( ) ;
coordX += 100 ;
}
} ) ;
} ) ;
it ( 'Object attributes are the same.' , ( ) => {
it ( 'After copying via sidebar, the attributes of the objects are the same.' , ( ) => {
checkObjectArrSize ( 2 ) ;
checkObjectArrSize ( 10 , 12 ) ;
compareObjectsAttr ( '#cvat_canvas_shape_1' , '#cvat_canvas_shape_2' ) ;
for ( let id = 1 ; id < countObject ; id ++ ) {
compareObjectsSidebarAttr ( '#cvat-objects-sidebar-state-item-1' , '#cvat-objects-sidebar-state-item-2' ) ;
compareObjectsAttr ( ` #cvat_canvas_shape_ ${ id } ` , ` #cvat_canvas_shape_ ${ id + countObject + 1 } ` ) ; // Parameters id 1 equal patameters id 7, 2 to 8, etc.
}
for ( let idSidebar = 1 ; idSidebar < 7 ; idSidebar ++ ) {
compareObjectsSidebarAttr (
` #cvat-objects-sidebar-state-item- ${ idSidebar } ` ,
` #cvat-objects-sidebar-state-item- ${ idSidebar + countObject + 1 } ` ,
) ; // Parameters sidebar id 1 equal patameters sidebar id 7, 2 to 8, etc.
}
} ) ;
} ) ;
it ( 'Make a copy via object context menu.' , ( ) => {
// Disabled part of the test for the Firefox browser due to possible problems positioning the element and completing the trigger() construct for moving the mouse cursor over the element.
cy . get ( '#cvat_canvas_shape_1' )
it ( 'Make a copy via object context menu.' , { browser : '!firefox' } , ( ) => {
let coordX = 100 ;
let coordY = 400 ;
for ( let id = 1 ; id < countObject ; id ++ ) {
// Point doesn't have a context menu
if ( id === 4 ) {
cy . get ( ` #cvat_canvas_shape_ ${ id } ` )
. trigger ( 'mousemove' , 'right' )
. should ( 'have.class' , 'cvat_canvas_shape_activated' )
. rightclick ( 'right' ) ; // When click in the center of polyline: is being covered by another element: <svg xmlns="http://www.w3.org/2000/svg" ...
} else {
cy . get ( ` #cvat_canvas_shape_ ${ id } ` )
. trigger ( 'mousemove' )
. trigger ( 'mousemove' )
. should ( 'have.class' , 'cvat_canvas_shape_activated' )
. should ( 'have.class' , 'cvat_canvas_shape_activated' )
. rightclick ( ) ;
. rightclick ( ) ;
cy . get ( '.cvat-canvas-context-menu' ) . within ( ( ) => {
}
cy . get ( '[aria-label="more"]' ) . trigger ( 'mouseover' ) ;
cy . get ( '.cvat-canvas-context-menu' )
} ) ;
. last ( )
cy . get ( '.cvat-object-item-menu' ) . contains ( 'button' , 'Make a copy' ) . click ( { force : true } ) ;
. should ( 'be.visible' )
cy . get ( '.cvat-canvas-container' ) . click ( 500 , 500 ) ;
. find ( '[aria-label="more"]' )
cy . get ( '.cvat-canvas-container' ) . click ( 300 , 500 ) ; //deactivate all objects and hide context menu
. trigger ( 'mouseover' )
. wait ( 300 ) ; // Wait dropdown menu transition;
cy . get ( '.cvat-object-item-menu' ) . last ( ) . should ( 'be.visible' ) . contains ( 'button' , 'Make a copy' ) . click ( ) ; // Get the tast element from cvat-object-item-menu array
cy . get ( '.cvat-canvas-container' ) . click ( coordX , coordY ) ;
cy . get ( '.cvat-canvas-container' ) . click ( ) ; // Deactivate all objects and hide context menu
coordX += 100 ;
}
} ) ;
} ) ;
it ( 'Attributes of objects 1 and 3 are the same.' , ( ) => {
it (
checkObjectArrSize ( 3 ) ;
'After copying via object context menu, the attributes of the objects are the same.' ,
compareObjectsAttr ( '#cvat_canvas_shape_1' , '#cvat_canvas_shape_3' ) ;
{ browser : '!firefox' } ,
compareObjectsSidebarAttr ( '#cvat-objects-sidebar-state-item-1' , '#cvat-objects-sidebar-state-item-3' ) ;
( ) => {
} ) ;
checkObjectArrSize ( 14 , 16 ) ; // The point and tag was not copied via the object's context menu
for ( let id = 1 ; id < countObject ; id ++ ) {
compareObjectsAttr ( ` #cvat_canvas_shape_ ${ id } ` , ` #cvat_canvas_shape_ ${ id + countObject + 7 } ` ) ; // Parameters id 1 equal patameters id 13, 2 to 14, etc.
}
for ( let idSidebar = 1 ; idSidebar < 6 ; idSidebar ++ ) {
compareObjectsSidebarAttr (
` #cvat-objects-sidebar-state-item- ${ idSidebar } ` ,
` #cvat-objects-sidebar-state-item- ${ idSidebar + countObject + 6 } ` ,
) ; // Parameters sidebar id 1 equal patameters sidebar id 13, 2 to 14, etc.
}
} ,
) ;
} ) ;
} ) ;
} ) ;
} ) ;