未验证 提交 675ef964 编写于 作者: D Dmitry Kruchinin 提交者: GitHub

Cypress tests. Move a task between/to projects. (#3287)

* Add css classes

* add/adaptation commands

* Cypress test. Move a task to a project.

* Remove a comment

* Cypress test. Moving a task between projects.
上级 3f8bc9db
...@@ -147,6 +147,7 @@ export default function CreateProjectContent(): JSX.Element { ...@@ -147,6 +147,7 @@ export default function CreateProjectContent(): JSX.Element {
notification.info({ notification.info({
message: 'The project has been created', message: 'The project has been created',
btn, btn,
className: 'cvat-notification-create-project-success',
}); });
} }
......
...@@ -45,6 +45,7 @@ export default function LabelMapperItem(props: LabelMapperItemProps): JSX.Elemen ...@@ -45,6 +45,7 @@ export default function LabelMapperItem(props: LabelMapperItemProps): JSX.Elemen
</Col> </Col>
<Col> <Col>
<Select <Select
className='cvat-move-task-label-mapper-item-select'
disabled={typeof projectLabels === 'undefined'} disabled={typeof projectLabels === 'undefined'}
value={value.newLabelName || ''} value={value.newLabelName || ''}
onChange={(_value) => onChange={(_value) =>
......
// Copyright (C) 2021 Intel Corporation
//
// SPDX-License-Identifier: MIT
/// <reference types="cypress" />
context('Move a task between projects.', () => {
const caseID = 94;
const firtsProject = {
name: `Firts project case ${caseID}`,
label: 'car',
attrName: 'color',
attrVaue: 'red',
multiAttrParams: false
}
const secondProject = {
name: `Second project case ${caseID}`,
label: 'bicycle',
attrName: 'color',
attrVaue: 'yellow',
multiAttrParams: false
}
const taskName = `Task case ${caseID}`;
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;
function checkTask (project, expectedResult) {
cy.goToProjectsList();
cy.openProject(project);
cy.get('.cvat-tasks-list-item').should(expectedResult);
}
before(() => {
cy.imageGenerator(imagesFolder, imageFileName, width, height, color, posX, posY, firtsProject.label, imagesCount);
cy.createZipArchive(directoryToArchive, archivePath);
cy.visit('/');
cy.login();
});
beforeEach(() => {
cy.goToProjectsList();
cy.createProjects(firtsProject.name, firtsProject.label, firtsProject.attrName, firtsProject.attrVaue, firtsProject.multiAttrParams);
cy.createProjects(secondProject.name, secondProject.label, secondProject.attrName, secondProject.attrVaue, secondProject.multiAttrParams);
cy.openProject(firtsProject.name);
cy.createAnnotationTask(
taskName,
firtsProject.label,
firtsProject.attrName,
firtsProject.attrVaue,
archiveName,
multiAttrParams,
advancedConfigurationParams,
forProject,
attachToProject.no,
firtsProject.name,
);
});
afterEach(() => {
cy.goToProjectsList();
cy.openProject(firtsProject.name);
cy.deleteProjectViaActions(firtsProject.name);
cy.openProject(secondProject.name);
cy.deleteProjectViaActions(secondProject.name);
});
describe(`Testing "Case ${caseID}"`, () => {
// Waiting to fix https://github.com/openvinotoolkit/cvat/issues/3281
it.skip('Move a task between projects from a project.', () => {
checkTask(secondProject.name, 'not.exist');
checkTask(firtsProject.name, 'exist');
cy.movingTask(taskName, secondProject.name, firtsProject.label, secondProject.label);
checkTask(firtsProject.name, 'not.exist');
checkTask(secondProject.name, 'exist');
});
it('Move a task between projects from task list.', () => {
cy.goToTaskList();
cy.movingTask(taskName, secondProject.name, firtsProject.label, secondProject.label);
checkTask(firtsProject.name, 'not.exist');
checkTask(secondProject.name, 'exist');
});
it('Move a task between projects from a task.', () => {
cy.goToTaskList();
cy.openTask(taskName);
cy.movingTask(taskName, secondProject.name, firtsProject.label, secondProject.label, true);
checkTask(firtsProject.name, 'not.exist');
checkTask(secondProject.name, 'exist');
});
});
});
// Copyright (C) 2021 Intel Corporation
//
// SPDX-License-Identifier: MIT
/// <reference types="cypress" />
context('Move a task to a project.', () => {
const caseID = '95';
const task = {
name: `Case ${caseID}`,
label: 'Tree',
attrName: 'Kind',
attrValue: 'Oak',
}
const project = {
name: `Case ${caseID}`,
label: 'Tree',
attrName: 'Kind',
attrVaue: 'Oak'
}
const imagesCount = 1;
const imageFileName = `image_${task.name.replace(' ', '_').toLowerCase()}`;
const width = 800;
const height = 800;
const posX = 10;
const posY = 10;
const color = 'gray';
const archiveName = `${imageFileName}.zip`;
const archivePath = `cypress/fixtures/${archiveName}`;
const imagesFolder = `cypress/fixtures/${imageFileName}`;
const directoryToArchive = imagesFolder;
before(() => {
cy.visit('/');
cy.login();
cy.imageGenerator(imagesFolder, imageFileName, width, height, color, posX, posY, task.name, imagesCount);
cy.createZipArchive(directoryToArchive, archivePath);
});
beforeEach(() => {
cy.goToTaskList();
cy.createAnnotationTask(task.name, task.label, task.attrName, task.attrValue, archiveName);
cy.goToProjectsList();
cy.createProjects(project.name, project.label, project.attrName, project.attrVaue);
});
afterEach(() => {
cy.goToProjectsList();
cy.openProject(project.name);
cy.deleteProjectViaActions(project.name);
});
describe(`Testing "Case ${caseID}"`, () => {
it('Move a task from task list.', () => {
cy.openProject(project.name);
cy.get('.cvat-tasks-list-item').should('not.exist');
cy.goToTaskList();
cy.movingTask(task.name, project.name, task.label, project.label);
cy.goToProjectsList();
cy.openProject(project.name);
cy.get('.cvat-tasks-list-item').should('exist');
});
it('Move a task from task.', () => {
cy.openProject(project.name);
cy.get('.cvat-tasks-list-item').should('not.exist');
cy.goToTaskList();
cy.openTask(task.name);
cy.movingTask(task.name, project.name, task.label, project.label, true);
cy.goToProjectsList();
cy.openProject(project.name);
cy.get('.cvat-tasks-list-item').should('exist');
});
});
});
...@@ -133,7 +133,9 @@ Cypress.Commands.add( ...@@ -133,7 +133,9 @@ Cypress.Commands.add(
} }
cy.contains('button', 'Submit').click(); cy.contains('button', 'Submit').click();
if (expectedResult === 'success') { if (expectedResult === 'success') {
cy.contains('The task has been created'); cy.get('.cvat-notification-create-task-success')
.should('exist')
.find('[data-icon="close"]').click();
} }
if (!forProject) { if (!forProject) {
cy.goToTaskList(); cy.goToTaskList();
......
...@@ -29,9 +29,11 @@ Cypress.Commands.add( ...@@ -29,9 +29,11 @@ Cypress.Commands.add(
cy.contains('Submit').click(); cy.contains('Submit').click();
}); });
if (expectedResult == 'success') { if (expectedResult == 'success') {
cy.contains('The project has been created').should('exist'); cy.get('.cvat-notification-create-project-success')
.should('exist')
.find('[data-icon="close"]').click();
} else if (expectedResult == 'fail') { } else if (expectedResult == 'fail') {
cy.contains('The project has been created').should('not.exist'); cy.get('.cvat-notification-create-project-success').should('not.exist');
} }
cy.goToProjectsList(); cy.goToProjectsList();
}, },
...@@ -90,3 +92,35 @@ Cypress.Commands.add('closeNotification', (className) => { ...@@ -90,3 +92,35 @@ Cypress.Commands.add('closeNotification', (className) => {
cy.get(className).find('span[aria-label="close"]').click(); cy.get(className).find('span[aria-label="close"]').click();
cy.get(className).should('not.exist'); cy.get(className).should('not.exist');
}); });
Cypress.Commands.add('movingTask', (taskName, projectName, labelMappingFrom, labelMappingTo, fromTask) => {
if (fromTask) {
cy.contains('.cvat-text-color', 'Actions').click();
cy.get('.ant-dropdown').not('.ant-dropdown-hidden').within(() => {
cy.contains('Move to project').click();
});
} else {
cy.contains('strong', taskName).parents('.cvat-tasks-list-item').find('.cvat-menu-icon').click();
cy.get('.ant-dropdown').not('.ant-dropdown-hidden').within(() => {
cy.contains('Move to project').click();
});
}
cy.get('.cvat-task-move-modal').find('.cvat-project-search-field').click();
cy.get('.ant-select-dropdown').not('.ant-select-dropdown-hidden').within(() => {
cy.get(`[title="${projectName}"]`).click();
});
if (labelMappingFrom !== labelMappingTo) {
cy.get('.cvat-move-task-label-mapper-item').within(() => {
cy.contains(labelMappingFrom).should('exist');
cy.get('.cvat-move-task-label-mapper-item-select').click();
});
cy.get('.ant-select-dropdown').not('.ant-select-dropdown-hidden').find(`[title="${labelMappingTo}"]`).click();
} else {
cy.get('.cvat-move-task-label-mapper-item').within(() => {
cy.get('.cvat-move-task-label-mapper-item-select').should('have.text', labelMappingFrom);
});
}
cy.get('.cvat-task-move-modal').within(() => {
cy.contains('button', 'OK').click();
})
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册