Skip to content

Commit

Permalink
Merge branch 'develop' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
zhiltsov-max authored Mar 28, 2024
2 parents ba80042 + 6273b48 commit 4574911
Show file tree
Hide file tree
Showing 2 changed files with 148 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
// Copyright (C) 2024 CVAT.ai Corporation
//
// SPDX-License-Identifier: MIT

/// <reference types="cypress" />

import { taskName, labelName } from '../../support/const';

context('Incorrect cloud storage filename used in subsequent import.', () => {
const annotationsArchiveNameCloud = 'bazquux';
const annotationsArchiveNameLocal = 'foobar';
let createdCloudStorageId;
const issueId = '7428';
const exportFormat = 'CVAT for images';
const rectangleShape2Points = {
points: 'By 2 Points',
type: 'Shape',
labelName,
firstX: 400,
firstY: 100,
secondX: 500,
secondY: 200,
};

const serverHost = Cypress.config('baseUrl').includes('3000') ? 'localhost' : 'minio';

const cloudStorageData = {
displayName: 'Demo bucket',
resource: 'public',
manifest: 'manifest.jsonl',
endpointUrl: `http://${serverHost}:9000`,
};

function uploadToTask({
useDefaultLocation = true,
annotationsArchiveName,
CloudStorageId,
}) {
cy.clickInTaskMenu('Upload annotations', true);
cy.get('.cvat-modal-import-dataset').find('.cvat-modal-import-select').click();
cy.contains('.cvat-modal-import-dataset-option-item', 'CVAT 1.1').click();
cy.get('.cvat-modal-import-select').should('contain.text', 'CVAT 1.1');
if (!useDefaultLocation) {
cy.get('.cvat-modal-import-dataset')
.find('.cvat-modal-import-switch-use-default-storage')
.click();
cy.get('.cvat-select-source-storage').within(() => {
cy.get('.ant-select-selection-item').click();
});
cy.contains('.cvat-select-source-storage-location', 'Cloud storage')
.should('be.visible')
.click();
if (CloudStorageId) {
cy.get('.cvat-search-source-storage-cloud-storage-field').click();
cy.get('.cvat-cloud-storage-select-provider').click();
}
cy.get('.cvat-modal-import-dataset')
.find('.cvat-modal-import-filename-input')
.type(annotationsArchiveName);
} else {
cy.get('input[type="file"]').attachFile(annotationsArchiveName, { subjectType: 'drag-n-drop' });
cy.get(`[title="${annotationsArchiveName}"]`).should('be.visible');
}
cy.contains('button', 'OK').click();
cy.get('.cvat-modal-content-load-task-annotation')
.should('be.visible')
.within(() => {
cy.contains('button', 'Update').click();
});
cy.get('.cvat-notification-notice-import-annotation-start').should('be.visible');
cy.closeNotification('.cvat-notification-notice-import-annotation-start');
cy.verifyNotification();
cy.get('.cvat-notification-notice-upload-annotations-fail').should('not.exist');
}

before(() => {
createdCloudStorageId = cy.attachS3Bucket(cloudStorageData);
cy.goToTaskList();
cy.openTaskJob(taskName);
cy.createRectangle(rectangleShape2Points);
cy.saveJob('PATCH', 200, 'saveJobExportDataset');
cy.goToTaskList();
cy.openTask(taskName);
});

after(() => {
cy.contains('.cvat-header-button', 'Cloud Storages').should('be.visible').click();
cy.url().should('include', '/cloudstorages');
cy.deleteCloudStorage(cloudStorageData.displayName);
});

describe(`Testing issue "${issueId}"`, () => {
it('Export Annotation to the local storage', () => {
const exportParams = {
type: 'annotations',
format: exportFormat,
archiveCustomName: annotationsArchiveNameLocal,
};
cy.exportTask(exportParams);
cy.waitForDownload();
});

it('Export Annotation to the cloud storage', () => {
const exportParams = {
type: 'annotations',
format: exportFormat,
archiveCustomName: annotationsArchiveNameCloud,
targetStorage: {
location: 'Cloud storage',
cloudStorageId: createdCloudStorageId,
},
useDefaultLocation: false,
};
cy.exportTask(exportParams);
cy.waitForFileUploadToCloudStorage();
});

it('Import Annotation from the local storage', () => {
const importParams = {
useDefaultLocation: true,
annotationsArchiveName: `${annotationsArchiveNameLocal}.zip`,
};
uploadToTask(importParams);
});
it('Import Annotation from the cloud storage', () => {
const importParams = {
useDefaultLocation: false,
annotationsArchiveName: `${annotationsArchiveNameCloud}.zip`,
CloudStorageId: createdCloudStorageId,
};
uploadToTask(importParams);
});
});
});
15 changes: 14 additions & 1 deletion tests/cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -1168,8 +1168,9 @@ Cypress.Commands.add('closeModalUnsupportedPlatform', () => {

Cypress.Commands.add('exportTask', ({
type, format, archiveCustomName,
targetStorage = null, useDefaultLocation = true,
}) => {
cy.interactMenu('Export task dataset');
cy.clickInTaskMenu('Export task dataset', true);
cy.get('.cvat-modal-export-task').should('be.visible').find('.cvat-modal-export-select').click();
cy.contains('.cvat-modal-export-option-item', format).should('be.visible').click();
cy.get('.cvat-modal-export-task').find('.cvat-modal-export-select').should('contain.text', format);
Expand All @@ -1179,6 +1180,18 @@ Cypress.Commands.add('exportTask', ({
if (archiveCustomName) {
cy.get('.cvat-modal-export-task').find('.cvat-modal-export-filename-input').type(archiveCustomName);
}
if (!useDefaultLocation) {
cy.get('.cvat-modal-export-task').find('.cvat-settings-switch').click();
cy.get('.cvat-select-target-storage').within(() => {
cy.get('.ant-select-selection-item').click();
});
cy.contains('.cvat-select-target-storage-location', targetStorage.location).should('be.visible').click();

if (targetStorage.cloudStorageId) {
cy.get('.cvat-search-target-storage-cloud-storage-field').click();
cy.get('.cvat-cloud-storage-select-provider').click();
}
}
cy.contains('button', 'OK').click();
cy.get('.cvat-notification-notice-export-task-start').should('be.visible');
cy.closeNotification('.cvat-notification-notice-export-task-start');
Expand Down

0 comments on commit 4574911

Please sign in to comment.