cvat/tests/cypress/e2e/actions_tasks2/fit_image_different_res.js

95 lines
3.3 KiB
JavaScript
Raw Permalink Normal View History

2025-09-16 01:19:40 +00:00
// Copyright (C) CVAT.ai Corporation
//
// SPDX-License-Identifier: MIT
/// <reference types="cypress" />
context('Correct behaviour of fit when navigating between frames with different resolution', { scrollBehavior: false }, () => {
const taskName = 'Fit different resolutions';
const serverFiles = ['test_different_resolutions/image_1.jpg', 'test_different_resolutions/image_2.jpg'];
let taskID = null;
let jobID = null;
before(() => {
cy.visit('/auth/login');
cy.login();
cy.url().should('contain', '/tasks');
cy.headlessCreateTask({
labels: [{ name: 'mask label', attributes: [], type: 'any' }],
name: taskName,
project_id: null,
source_storage: { location: 'local' },
target_storage: { location: 'local' },
}, {
server_files: serverFiles,
image_quality: 70,
use_zip_chunks: true,
use_cache: true,
sorting_method: 'lexicographical',
}).then((response) => {
taskID = response.taskID;
[jobID] = response.jobIDs;
});
});
after(() => {
cy.logout();
cy.getAuthKey().then((response) => {
const authKey = response.body.key;
cy.request({
method: 'DELETE',
url: `/api/tasks/${taskID}`,
headers: {
Authorization: `Token ${authKey}`,
},
});
});
});
beforeEach(() => {
cy.intercept('GET', `/tasks/${taskID}/jobs/${jobID}`).as('visitAnnotationView');
cy.visit(`/tasks/${taskID}/jobs/${jobID}`);
cy.wait('@visitAnnotationView');
cy.get('.cvat-canvas-container').should('exist').and('be.visible');
});
function checkBackgroundIsVisible(resetZoom) {
let rectBefore = null;
cy.get('#cvat_canvas_background').then(([el]) => {
rectBefore = el.getBoundingClientRect();
});
cy.openSettings();
if (resetZoom) {
cy.get('.cvat-player-settings-reset-zoom-checkbox').within(() => {
cy.get('[type="checkbox"]').check();
cy.get('[type="checkbox"]').should('be.checked');
});
} else {
cy.get('.cvat-player-settings-reset-zoom-checkbox').within(() => {
cy.get('[type="checkbox"]').uncheck();
cy.get('[type="checkbox"]').should('not.be.checked');
});
}
cy.closeSettings();
cy.goCheckFrameNumber(1);
cy.get('#cvat_canvas_background').then(([el]) => {
const rectAfter = el.getBoundingClientRect();
expect(rectBefore.width).to.be.approximately(rectAfter.width, 1);
expect(rectBefore.height).to.be.approximately(rectAfter.height, 1);
expect(rectBefore.top).to.be.approximately(rectAfter.top, 5);
expect(rectBefore.left).to.be.approximately(rectAfter.left, 5);
});
}
describe('Check fitting when moving between frames. Image should be visible regardless of "reset zoom" option', () => {
it('Fitting when reset zoom is checked', () => {
checkBackgroundIsVisible(true);
});
it('Fitting when reset zoom is unchecked', () => {
checkBackgroundIsVisible(false);
});
});
});