cvat/tests/cypress/support/commands_canvas3d.js

56 lines
2.0 KiB
JavaScript
Raw Normal View History

2025-09-16 01:19:40 +00:00
// Copyright (C) 2021-2022 Intel Corporation
// Copyright (C) CVAT.ai Corporation
//
// SPDX-License-Identifier: MIT
/* eslint-disable cypress/no-unnecessary-waiting */
/// <reference types="cypress" />
Cypress.Commands.add('compareImagesAndCheckResult', (baseImage, afterImage, noChangesExpected) => {
cy.compareImages(baseImage, afterImage).then((diffPercent) => {
if (noChangesExpected) {
expect(diffPercent).to.be.lt(0.02);
} else {
expect(diffPercent).to.be.gt(0);
}
});
});
Cypress.Commands.add('create3DCuboid', (cuboidCreationParams) => {
const {
x, y, labelName, objectType,
} = cuboidCreationParams;
cy.interactControlButton('draw-cuboid');
cy.switchLabel(labelName, 'draw-cuboid');
cy.get('.cvat-draw-cuboid-popover').contains(objectType).click();
cy.get('.cvat-canvas3d-perspective').trigger('mousemove', x, y);
cy.get('.cvat-canvas3d-perspective').dblclick(x, y);
cy.wait(1000); // Waiting for a cuboid creation
cy.get('.cvat-draw-cuboid-popover').should('be.hidden');
});
Cypress.Commands.add('customScreenshot', (element, screenshotName) => {
cy.get(`${element} canvas`).then(([$el]) => ($el.getBoundingClientRect())).then((rect) => {
const iframe = window.parent.document
.querySelector('iframe.aut-iframe');
const parentRect = iframe.getBoundingClientRect();
const scale = parentRect.width / iframe.clientWidth;
cy.screenshot(screenshotName, {
// tricky way to make screenshots to avoid screen resizing
// we take a screenshot of the whole screen, including runner and then clip it
// according to iframe coordinates and scale in the runner
overwrite: true,
capture: 'runner',
scale: false,
clip: {
x: parentRect.x + rect.x * scale,
y: parentRect.y + rect.y * scale,
width: rect.width * scale,
height: rect.height * scale,
},
});
});
});