From d2ea06306f93462645e9b607890aefdf185b4e64 Mon Sep 17 00:00:00 2001 From: Dmitry Kruchinin Date: Mon, 31 Jan 2022 16:53:07 +0300 Subject: [PATCH] Cypress. Update the test for project export dataset. Add import dataset. (#4233) --- .../case_103_project_export.js | 77 +++++++++++++++---- .../case_104_project_export_3d.js | 38 ++++++--- tests/cypress/support/commands_projects.js | 21 +++++ 3 files changed, 111 insertions(+), 25 deletions(-) diff --git a/tests/cypress/integration/actions_projects_models/case_103_project_export.js b/tests/cypress/integration/actions_projects_models/case_103_project_export.js index 5f1b3f15..d8062b1f 100644 --- a/tests/cypress/integration/actions_projects_models/case_103_project_export.js +++ b/tests/cypress/integration/actions_projects_models/case_103_project_export.js @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2021-2022 Intel Corporation // // SPDX-License-Identifier: MIT @@ -34,16 +34,7 @@ context('Export project dataset.', { browser: '!firefox' }, () => { const imagesFolder = `cypress/fixtures/${imageFileName}`; const directoryToArchive = imagesFolder; - let projectID = ''; - - function getProjectID() { - cy.contains('.cvat-project-name', projectName) - .parents('.cvat-project-details') - .should('have.attr', 'cvat-project-id') - .then(($projectID) => { - projectID = $projectID; - }); - } + let datasetArchiveName; function checkCounTasksInXML(projectParams, expectedCount) { cy.exportProject(projectParams); @@ -59,7 +50,6 @@ context('Export project dataset.', { browser: '!firefox' }, () => { cy.imageGenerator(imagesFolder, imageFileName, width, height, color, posX, posY, labelName, imagesCount); cy.createZipArchive(directoryToArchive, archivePath); cy.openProject(projectName); - getProjectID(); cy.createAnnotationTask( task.nameSecond, task.labelSecond, @@ -88,8 +78,10 @@ context('Export project dataset.', { browser: '!firefox' }, () => { }); after(() => { - cy.goToProjectsList(); - cy.deleteProject(projectName, projectID); + cy.logout(); + cy.getAuthKey().then((authKey) => { + cy.deleteProjects(authKey, [projectName]); + }); }); describe(`Testing "Case ${caseID}"`, () => { @@ -102,7 +94,10 @@ context('Export project dataset.', { browser: '!firefox' }, () => { dumpType: 'CVAT for images', }; cy.exportProject(exportAnnotation); - cy.waitForDownload(); + cy.getDownloadFileName().then((file) => { + datasetArchiveName = file; + cy.verifyDownload(datasetArchiveName); + }); }); it('Export project dataset. Dataset.', () => { @@ -111,7 +106,7 @@ context('Export project dataset.', { browser: '!firefox' }, () => { projectName, as: 'exportDataset', type: 'dataset', - dumpType: 'CVAT for video', + dumpType: 'CVAT for images', }; cy.exportProject(exportDataset); cy.waitForDownload(); @@ -133,5 +128,55 @@ context('Export project dataset.', { browser: '!firefox' }, () => { cy.goToProjectsList(); checkCounTasksInXML(exportAnnotationsRenameArchive, 1); }); + + it('Import dataset.', () => { + cy.openProject(projectName); + cy.deleteTask(task.name); + cy.get('.cvat-tasks-list-item') + .should('have.length', 1) + .should('have.attr', 'style') + .and('contain', 'pointer-events: none; opacity: 0.5;'); + cy.goToProjectsList(); + const importDataset = { + projectName, + format: 'CVAT 1.1', + archive: datasetArchiveName, + }; + cy.importProject(importDataset); + cy.openProject(projectName); + cy.get('.cvat-tasks-list-item').should('have.length', 1); + }); + + it('Import dataset to project without labels.', () => { + // Deleting the task + cy.get('.cvat-item-task-name').then((name) => { + cy.deleteTask(name.text()); + }); + cy.get('.cvat-tasks-list-item') + .should('have.length', 1) + .should('have.attr', 'style') + .and('contain', 'pointer-events: none; opacity: 0.5;'); + // Deleting the label + cy.get('.cvat-constructor-viewer-item') + .should('have.length', 1) + .find('[aria-label="close"]') + .click(); + cy.get('.cvat-modal-delete-label') + .contains('button', 'OK') + .click(); + cy.get('.cvat-modal-delete-label').should('not.exist'); + cy.goToProjectsList(); + const importDataset = { + projectName, + format: 'CVAT 1.1', + archive: datasetArchiveName, + }; + cy.importProject(importDataset); + cy.openProject(projectName); + cy.get('.cvat-tasks-list-item').should('have.length', 1); + cy.get('.cvat-constructor-viewer-item') + .should('have.length', 1) + .should('have.text', labelName); + }); }); }); diff --git a/tests/cypress/integration/actions_projects_models/case_104_project_export_3d.js b/tests/cypress/integration/actions_projects_models/case_104_project_export_3d.js index 5e664378..9974caaa 100644 --- a/tests/cypress/integration/actions_projects_models/case_104_project_export_3d.js +++ b/tests/cypress/integration/actions_projects_models/case_104_project_export_3d.js @@ -1,4 +1,4 @@ -// Copyright (C) 2021 Intel Corporation +// Copyright (C) 2021-2022 Intel Corporation // // SPDX-License-Identifier: MIT @@ -20,14 +20,12 @@ context('Export project dataset with 3D task.', { browser: '!firefox' }, () => { multiAttrParams: false, }; let projectID = ''; + let datasetArchiveName; function getProjectID() { - cy.contains('.cvat-project-name', projectName) - .parents('.cvat-project-details') - .should('have.attr', 'cvat-project-id') - .then(($projectID) => { - projectID = $projectID; - }); + cy.url().then((url) => { + projectID = Number(url.split('/').slice(-1)[0].split('?')[0]); + }); } before(() => { @@ -74,7 +72,10 @@ context('Export project dataset with 3D task.', { browser: '!firefox' }, () => { dumpType: 'Sly Point Cloud Format', }; cy.exportProject(exportDataset3d); - cy.waitForDownload(); + cy.getDownloadFileName().then((file) => { + datasetArchiveName = file; + cy.verifyDownload(datasetArchiveName); + }); }); it('Export project with 3D task. Annotation. Rename a archive.', () => { @@ -83,11 +84,30 @@ context('Export project dataset with 3D task.', { browser: '!firefox' }, () => { projectName, as: 'exportAnnotations3dRenameArchive', type: 'annotations', - dumpType: 'Kitti Raw Format', + dumpType: 'Datumaro 3D', archiveCustomeName: 'export_project_3d_annotation', }; cy.exportProject(exportAnnotations3dRenameArchive); cy.waitForDownload(); }); + + // FIXME: Activate after implementation + it.skip('Import dataset.', () => { + cy.openProject(projectName); + cy.deleteTask(task.name3d); + cy.get('.cvat-tasks-list-item') + .should('have.length', 1) + .should('have.attr', 'style') + .and('contain', 'pointer-events: none; opacity: 0.5;'); + cy.goToProjectsList(); + const importDataset = { + projectName, + format: 'Sly Point Cloud Format', + archive: datasetArchiveName, + }; + cy.importProject(importDataset); + cy.openProject(projectName); + cy.get('.cvat-tasks-list-item').should('have.length', 1); + }); }); }); diff --git a/tests/cypress/support/commands_projects.js b/tests/cypress/support/commands_projects.js index e0544c38..29273ad8 100644 --- a/tests/cypress/support/commands_projects.js +++ b/tests/cypress/support/commands_projects.js @@ -112,6 +112,27 @@ Cypress.Commands.add('exportProject', ({ cy.get('.cvat-notification-notice-export-project-start').should('be.visible'); }); +Cypress.Commands.add('importProject', ({ + projectName, format, archive, +}) => { + cy.projectActions(projectName); + cy.get('.cvat-project-actions-menu').contains('Import dataset').click(); + cy.get('.cvat-modal-import-dataset').find('.cvat-modal-import-select').click(); + if (format === 'Sly Point Cloud Format') { + cy.get('.ant-select-dropdown') + .not('.ant-select-dropdown-hidden') + .trigger('wheel', { deltaY: 1000 }); + } + cy.contains('.cvat-modal-import-dataset-option-item', format).click(); + cy.get('.cvat-modal-import-select').should('contain.text', format); + cy.get('input[type="file"]').last().attachFile(archive, { subjectType: 'drag-n-drop' }); + cy.get(`[title="${archive}"]`).should('be.visible'); + cy.contains('button', 'OK').click(); + cy.get('.cvat-modal-import-dataset-status').should('be.visible'); + cy.get('.cvat-notification-notice-import-dataset-start').should('be.visible'); + cy.get('.cvat-modal-import-dataset-status').should('not.exist'); +}); + Cypress.Commands.add('backupProject', (projectName) => { cy.projectActions(projectName); cy.get('.cvat-project-actions-menu').contains('Backup Project').click();