From a7a23d4bfad0e84710dcd6adbaca1d648e896e54 Mon Sep 17 00:00:00 2001 From: DmitriyOparin <35344996+DmitriyOparin@users.noreply.github.com> Date: Mon, 11 Jan 2021 10:45:11 +0300 Subject: [PATCH] Update cypress test. Create task fail. Update task fail. Delete task fail. (#2622) * add test * add className for elements and chage cvat-ui version * change ant to cvat cssSelector * fix test if it is running at firefox * improvements by comments * fix fail Co-authored-by: Dmitriy Oparin --- .../components/actions-menu/actions-menu.tsx | 1 + .../components/labels-editor/label-form.tsx | 10 ++--- cvat-ui/src/reducers/notifications-reducer.ts | 3 ++ .../case_4_assign_taks_job_users.js | 45 ++++++++++++++++--- tests/cypress/support/commands.js | 9 ++-- 5 files changed, 55 insertions(+), 13 deletions(-) diff --git a/cvat-ui/src/components/actions-menu/actions-menu.tsx b/cvat-ui/src/components/actions-menu/actions-menu.tsx index 644f2945..ad7b6d55 100644 --- a/cvat-ui/src/components/actions-menu/actions-menu.tsx +++ b/cvat-ui/src/components/actions-menu/actions-menu.tsx @@ -83,6 +83,7 @@ export default function ActionsMenuComponent(props: Props): JSX.Element { Modal.confirm({ title: `The task ${taskID} will be deleted`, content: 'All related data (images, annotations) will be lost. Continue?', + className: 'cvat-modal-confirm-delete-task', onOk: () => { onClickMenu(copyParams); }, diff --git a/cvat-ui/src/components/labels-editor/label-form.tsx b/cvat-ui/src/components/labels-editor/label-form.tsx index 9573a729..e8e73880 100644 --- a/cvat-ui/src/components/labels-editor/label-form.tsx +++ b/cvat-ui/src/components/labels-editor/label-form.tsx @@ -135,11 +135,11 @@ export default class LabelForm extends React.Component { diff --git a/cvat-ui/src/reducers/notifications-reducer.ts b/cvat-ui/src/reducers/notifications-reducer.ts index 7ca5a845..cf3caec3 100644 --- a/cvat-ui/src/reducers/notifications-reducer.ts +++ b/cvat-ui/src/reducers/notifications-reducer.ts @@ -376,6 +376,7 @@ export default function (state = defaultState, action: AnyAction): Notifications updating: { message: `Could not update task ${taskID}`, reason: action.payload.error.toString(), + className: 'cvat-notification-notice-update-task-failed', }, }, }, @@ -412,6 +413,7 @@ export default function (state = defaultState, action: AnyAction): Notifications 'Could not delete the ' + `task ${taskID}`, reason: action.payload.error.toString(), + className: 'cvat-notification-notice-delete-task-failed', }, }, }, @@ -427,6 +429,7 @@ export default function (state = defaultState, action: AnyAction): Notifications creating: { message: 'Could not create the task', reason: action.payload.error.toString(), + className: 'cvat-notification-notice-create-task-failed', }, }, }, diff --git a/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js b/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js index 4fc1ef3a..27226a2e 100644 --- a/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js +++ b/tests/cypress/integration/actions_users/registration_involved/case_4_assign_taks_job_users.js @@ -37,6 +37,11 @@ context('Multiple users. Assign task, job.', () => { password: 'Fv5Df3#f55g', }; + before(() => { + cy.imageGenerator(imagesFolder, imageFileName, width, height, color, posX, posY, labelName, imagesCount); + cy.createZipArchive(directoryToArchive, archivePath); + }); + after(() => { cy.login(); cy.getTaskID(taskName).then(($taskID) => { @@ -46,7 +51,7 @@ context('Multiple users. Assign task, job.', () => { describe(`Testing case "${caseId}"`, () => { // First user is "admin". - it('Register second user and logout.', () => { + it('Register second user, tries to create task and logout.', () => { cy.visit('auth/register'); cy.url().should('include', '/auth/register'); cy.userRegistration( @@ -56,6 +61,21 @@ context('Multiple users. Assign task, job.', () => { secondUser.emailAddr, secondUser.password, ); + cy.createAnnotationTask( + taskName, + labelName, + attrName, + textDefaultValue, + archiveName, + null, + null, + false, + false, + null, + 'fail', + ); + cy.closeNotification('.cvat-notification-notice-create-task-failed'); + cy.contains('.cvat-item-task-name', `${taskName}`).should('not.exist'); cy.logout(secondUserName); }); it('Register third user and logout.', () => { @@ -70,13 +90,21 @@ context('Multiple users. Assign task, job.', () => { ); cy.logout(thirdUserName); }); - it('First user login and create a task', () => { + it('First user login, create a task and logout', () => { cy.login(); - cy.imageGenerator(imagesFolder, imageFileName, width, height, color, posX, posY, labelName, imagesCount); - cy.createZipArchive(directoryToArchive, archivePath); cy.createAnnotationTask(taskName, labelName, attrName, textDefaultValue, archiveName); + cy.logout(); + }); + it('Second user login, tries to add label and logout', () => { + cy.login(secondUserName, secondUser.password); + cy.openTask(taskName); + cy.addNewLabel('failAddLabel'); + cy.closeNotification('.cvat-notification-notice-update-task-failed'); + cy.contains('.cvat-constructor-viewer-item', 'failAddLabel').should('not.exist'); + cy.logout(secondUserName); }); it('Assign the task to the second user and logout', () => { + cy.login(); cy.openTask(taskName); cy.assignTaskToUser(secondUserName); cy.logout(); @@ -98,9 +126,16 @@ context('Multiple users. Assign task, job.', () => { cy.assignJobToUser(0, thirdUserName); cy.logout(); }); - it('Third user login. The task can be opened.', () => { + it('Third user login. Tries to delete task. The task can be opened.', () => { cy.login(thirdUserName, thirdUser.password); cy.contains('strong', taskName).should('exist'); + cy.getTaskID(taskName).then(($taskID) => { + cy.deleteTask(taskName, $taskID); + }); + cy.closeNotification('.cvat-notification-notice-delete-task-failed'); + cy.contains('.cvat-item-task-name', taskName) + .parents('.cvat-tasks-list-item') + .should('not.have.attr', 'style'); cy.openTask(taskName); cy.logout(thirdUserName); }); diff --git a/tests/cypress/support/commands.js b/tests/cypress/support/commands.js index a90058e5..4a1d494f 100644 --- a/tests/cypress/support/commands.js +++ b/tests/cypress/support/commands.js @@ -54,6 +54,7 @@ Cypress.Commands.add( forProject = false, attachToProject = false, projectName, + expectedResult = 'success', ) => { cy.get('#cvat-create-task-button').click({ force: true }); cy.url().should('include', '/tasks/create'); @@ -64,7 +65,7 @@ Cypress.Commands.add( cy.get('.cvat-new-attribute-button').click(); cy.get('[placeholder="Name"]').type(attrName); cy.get('.cvat-attribute-type-input').click(); - cy.get('.ant-select-item-option').contains('Text').click(); + cy.get('.cvat-attribute-type-input-text').click(); cy.get('[placeholder="Default value"]').type(textDefaultValue); if (multiAttrParams) { cy.updateAttributes(multiAttrParams); @@ -89,7 +90,9 @@ Cypress.Commands.add( cy.advancedConfiguration(advancedConfigurationParams); } cy.contains('button', 'Submit').click(); - cy.contains('The task has been created'); + if (expectedResult === 'success') { + cy.contains('The task has been created'); + } if (!forProject) { cy.goToTaskList(); } else { @@ -394,7 +397,7 @@ Cypress.Commands.add('getTaskID', (taskName) => { Cypress.Commands.add('deleteTask', (taskName, taskID) => { cy.contains('strong', taskName).parents('.cvat-tasks-list-item').find('.cvat-menu-icon').trigger('mouseover'); cy.get('.cvat-actions-menu').contains('Delete').click(); - cy.get('.ant-modal-content') + cy.get('.cvat-modal-confirm-delete-task') .should('contain', `The task ${taskID} will be deleted`) .within(() => { cy.contains('button', 'Delete').click();