Cypress test. Project export feature. (#3539)

* Add css class for modal export input

* Added cypress test. Added command.

* Update tests/cypress/support/commands_projects.js

Co-authored-by: Dmitry Kalinin <dmitry.kalinin@intel.com>

* Update cvat-ui/src/components/export-dataset/export-dataset-modal.tsx

Co-authored-by: Dmitry Kalinin <dmitry.kalinin@intel.com>

Co-authored-by: Dmitry Kalinin <dmitry.kalinin@intel.com>
main
Dmitry Kruchinin 5 years ago committed by GitHub
parent 97a49d7d2b
commit ca4563513b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -135,7 +135,7 @@ function ExportDatasetModal(): JSX.Element {
<Checkbox>Save images</Checkbox>
</Form.Item>
<Form.Item label='Custom name' name='customName'>
<Input placeholder='Custom name for a dataset' suffix='.zip' />
<Input placeholder='Custom name for a dataset' suffix='.zip' className='cvat-modal-export-filename-input' />
</Form.Item>
</Form>
</Modal>

@ -0,0 +1,113 @@
// Copyright (C) 2021 Intel Corporation
//
// SPDX-License-Identifier: MIT
/// <reference types="cypress" />
import { projectName, labelName } from '../../support/const_project';
context('Export project dataset.', { browser: '!firefox' }, () => {
const caseID = 103;
const taskName = `Task case ${caseID}`;
const attrName = `Attr for ${labelName}`;
const textDefaultValue = 'Some value for type Text';
const imagesCount = 1;
const imageFileName = `image_${taskName.replace(/\s+/g, '_').toLowerCase()}`;
const width = 800;
const height = 800;
const posX = 10;
const posY = 10;
const color = 'white';
const archiveName = `${imageFileName}.zip`;
const archivePath = `cypress/fixtures/${archiveName}`;
const imagesFolder = `cypress/fixtures/${imageFileName}`;
const directoryToArchive = imagesFolder;
const advancedConfigurationParams = false;
const forProject = true;
const attachToProject = false;
const multiAttrParams = false;
let projectID = '';
function getProjectID(projectName) {
cy.contains('.cvat-project-name', projectName)
.parents('.cvat-project-details')
.should('have.attr', 'cvat-project-id')
.then(($projectID) => {
projectID = $projectID;
});
}
function testCheckFile(file) {
cy.task('listFiles', 'cypress/fixtures').each((fileName) => {
if (fileName.match(file)) {
cy.readFile(`cypress/fixtures/${fileName}`).should('exist');
}
});
}
before(() => {
cy.imageGenerator(imagesFolder, imageFileName, width, height, color, posX, posY, labelName, imagesCount);
cy.createZipArchive(directoryToArchive, archivePath);
cy.openProject(projectName);
getProjectID(projectName);
cy.createAnnotationTask(
taskName,
labelName,
attrName,
textDefaultValue,
archiveName,
multiAttrParams,
advancedConfigurationParams,
forProject,
attachToProject,
projectName,
);
});
after(() => {
cy.goToProjectsList();
cy.deleteProject(projectName, projectID);
});
describe(`Testing "Case ${caseID}"`, () => {
it('Export project dataset. Annotation.', () => {
cy.goToProjectsList();
const exportAnnotation = {
projectName: projectName,
as: 'exportAnnotations',
type: 'annotations',
dumpType: 'CVAT for images',
};
cy.exportProject(exportAnnotation);
const regex = new RegExp(`^project_${projectName.toLowerCase()}-.*-${exportAnnotation.dumpType.toLowerCase()}.*.zip$`);
testCheckFile(regex);
});
it('Export project dataset. Dataset.', () => {
cy.goToProjectsList();
const exportDataset = {
projectName: projectName,
as: 'exportDataset',
type: 'dataset',
dumpType: 'CVAT for video',
};
cy.exportProject(exportDataset);
const regex = new RegExp(`^project_${projectName.toLowerCase()}-.*-${exportDataset.dumpType.toLowerCase()}.*.zip$`);
testCheckFile(regex);
});
it('Export project dataset. Annotation. Rename a archive.', () => {
cy.goToProjectsList();
const exportAnnotationsRenameArchive = {
projectName: projectName,
as: 'exportAnnotationsRenameArchive',
type: 'annotations',
dumpType: 'CVAT for images',
archiveCustomeName: 'export_project_annotation',
};
cy.exportProject(exportAnnotationsRenameArchive);
const regex = new RegExp(`^${exportAnnotationsRenameArchive.archiveCustomeName}.zip$`);
testCheckFile(regex);
});
});
});

@ -42,7 +42,7 @@ Cypress.Commands.add('openProject', (projectName) => {
cy.get('.cvat-project-details').should('exist');
});
Cypress.Commands.add('deleteProject', (projectName, projectID, expectedResult = 'success') => {
Cypress.Commands.add('projectActions', (projectName) => {
cy.contains('.cvat-projects-project-item-title', projectName)
.parents('.cvat-projects-project-item-card')
.within(() => {
@ -50,6 +50,10 @@ Cypress.Commands.add('deleteProject', (projectName, projectID, expectedResult =
cy.get('[type="button"]').trigger('mouseover');
});
});
});
Cypress.Commands.add('deleteProject', (projectName, projectID, expectedResult = 'success') => {
cy.projectActions(projectName);
cy.get('.cvat-project-actions-menu').contains('Delete').click();
cy.get('.cvat-modal-confirm-remove-project')
.should('contain', `The project ${projectID} will be deleted`)
@ -63,6 +67,25 @@ Cypress.Commands.add('deleteProject', (projectName, projectID, expectedResult =
}
});
Cypress.Commands.add('exportProject', ({ projectName, as, type, dumpType, archiveCustomeName }) => {
cy.projectActions(projectName);
cy.intercept('GET', `/api/v1/projects/**/${type}**`).as(as);
cy.get('.cvat-project-actions-menu').contains('Export project dataset').click();
cy.get('.cvat-modal-export-project').find('.cvat-modal-export-select').click();
cy.contains('.cvat-modal-export-option-item', dumpType).click();
cy.get('.cvat-modal-export-select').should('contain.text', dumpType);
if (type === 'dataset') {
cy.get('.cvat-modal-export-project').find('[type="checkbox"]').should('not.be.checked').check();
}
if (archiveCustomeName) {
cy.get('.cvat-modal-export-project').find('.cvat-modal-export-filename-input').type(archiveCustomeName);
}
cy.get('.cvat-modal-export-project').contains('button', 'OK').click();
cy.get('.cvat-notification-notice-export-project-start').should('be.visible');
cy.wait(`@${as}`, { timeout: 5000 }).its('response.statusCode').should('equal', 202);
cy.wait(`@${as}`).its('response.statusCode').should('equal', 201);
});
Cypress.Commands.add('deleteProjectViaActions', (projectName) => {
cy.get('.cvat-project-top-bar-actions').trigger('mouseover');
cy.get('.cvat-project-actions-menu').within(() => {

Loading…
Cancel
Save