From 90ca4018a026f5453305c8f8d707e98bc867ca07 Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Wed, 23 Nov 2022 09:26:56 -0800 Subject: [PATCH] Added cypress test to create a task with only bounding boxes (#5346) --- .../components/labels-editor/label-form.tsx | 3 +- .../actions_tasks/task_rectangles_only.js | 100 ++++++++++++++++++ .../support/commands_filters_feature.js | 4 +- 3 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 tests/cypress/integration/actions_tasks/task_rectangles_only.js diff --git a/cvat-ui/src/components/labels-editor/label-form.tsx b/cvat-ui/src/components/labels-editor/label-form.tsx index e116c1cf..c851b5c0 100644 --- a/cvat-ui/src/components/labels-editor/label-form.tsx +++ b/cvat-ui/src/components/labels-editor/label-form.tsx @@ -441,6 +441,7 @@ export default class LabelForm extends React.Component { { if (event.key === 'Escape' || event.key === 'Esc' || event.keyCode === 27) { onCancel(); @@ -464,7 +465,7 @@ export default class LabelForm extends React.Component { return ( - {isSkeleton && ( + +context('Creating a task with only bounding boxes', () => { + const taskName = 'A task with bounding boxes'; + const imagesFolder = `cypress/fixtures/${taskName}`; + const archiveName = `${taskName}.zip`; + const archivePath = `cypress/fixtures/${archiveName}`; + const imageParams = { + width: 800, + height: 800, + color: 'gray', + textOffset: { x: 10, y: 10 }, + text: 'skeletons pipeline', + count: 1, + }; + const labelSpecification = { + name: 'car', + type: 'rectangle', + }; + let taskID = null; + + before(() => { + cy.visit('auth/login'); + cy.login(); + cy.imageGenerator( + imagesFolder, + taskName, + imageParams.width, + imageParams.height, + imageParams.color, + imageParams.textOffset.x, + imageParams.textOffset.y, + imageParams.text, + imageParams.count, + ); + cy.createZipArchive(imagesFolder, archivePath); + }); + + after(() => { + cy.logout(); + cy.getAuthKey().then((response) => { + const authKey = response.body.key; + cy.request({ + method: 'DELETE', + url: `/api/tasks/${taskID}`, + headers: { + Authorization: `Token ${authKey}`, + }, + }); + }); + }); + + describe('Creating a task with only bounding boxes', () => { + it('Task created, UI allows to create only bounding boxes', () => { + cy.get('.cvat-create-task-dropdown').click(); + cy.get('.cvat-create-task-button').click({ force: true }); + cy.url().should('include', '/tasks/create'); + cy.get('[id="name"]').type(taskName); + + cy.get('.cvat-constructor-viewer-new-item').click(); + cy.get('[placeholder="Label name"]').type(labelSpecification.name); + if (labelSpecification.type) { + cy.get('.cvat-label-type-input').click(); + cy.get('.ant-select-dropdown') + .not('.ant-select-dropdown-hidden') + .within(() => { + cy.get(`.cvat-label-type-option-${labelSpecification.type}`).click(); + }); + } + cy.contains('Continue').scrollIntoView().click(); + cy.get('input[type="file"]').attachFile(archiveName, { subjectType: 'drag-n-drop' }); + + cy.intercept('/api/tasks?**').as('taskPost'); + cy.contains('Submit & Open').scrollIntoView().click(); + + cy.wait('@taskPost').then((interception) => { + taskID = interception.response.body.id; + expect(interception.response.statusCode).to.be.equal(201); + cy.intercept(`/api/tasks/${taskID}?**`).as('getTask'); + cy.wait('@getTask', { timeout: 10000 }); + cy.get('.cvat-task-jobs-table-row').should('exist').and('be.visible'); + cy.openJob(); + + cy.get('.cvat-canvas-container').should('exist').and('be.visible'); + cy.get('.cvat-draw-rectangle-control').should('exist').and('be.visible'); + cy.get('.cvat-draw-polygon-control').should('not.exist'); + cy.get('.cvat-draw-polyline-control').should('not.exist'); + cy.get('.cvat-draw-points-control').should('not.exist'); + cy.get('.cvat-draw-cuboid-control').should('not.exist'); + cy.get('.cvat-draw-skeleton-control').should('not.exist'); + cy.get('.cvat-draw-ellipse-control').should('not.exist'); + cy.get('.cvat-setup-tag-control').should('not.exist'); + }); + }); + }); +}); diff --git a/tests/cypress/support/commands_filters_feature.js b/tests/cypress/support/commands_filters_feature.js index 01e4989b..f8f26996 100644 --- a/tests/cypress/support/commands_filters_feature.js +++ b/tests/cypress/support/commands_filters_feature.js @@ -82,8 +82,8 @@ Cypress.Commands.add( .not('.ant-dropdown-hidden') .contains('[role="menuitem"]', field) .trigger('mouseover'); - cy.get('.ant-dropdown-menu-sub').contains(label).trigger('mouseover'); - cy.contains('.ant-dropdown-menu-item-only-child', labelAttr).click(); + cy.get('.ant-dropdown-menu-sub').should('be.visible').contains(label).trigger('mouseover'); + cy.contains('.ant-dropdown-menu-item-only-child', labelAttr).should('be.visible').click(); } else { cy.get('.ant-dropdown').not('.ant-dropdown-hidden').contains('[role="menuitem"]', field).click(); }