Skip to content

Commit 1fdb3fd

Browse files
authored
Updated command to create headless objects in Cypress (#9024)
1 parent 2e35538 commit 1fdb3fd

File tree

5 files changed

+78
-29
lines changed

5 files changed

+78
-29
lines changed

tests/cypress/e2e/actions_objects/regression_tests.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ context('Regression tests', () => {
2929
};
3030

3131
const rectanglePayload = {
32-
shapeType: 'rectangle',
32+
type: 'rectangle',
3333
occluded: false,
3434
labelName: taskPayload.labels[0].name,
3535
};
@@ -42,14 +42,22 @@ context('Regression tests', () => {
4242
taskID = response.taskID;
4343
[jobID] = response.jobIDs;
4444

45-
cy.headlessCreateObjects([
46-
{
47-
...rectanglePayload, frame: 99, points: [250, 64, 491, 228], objectType: 'shape',
48-
},
49-
{
50-
...rectanglePayload, frame: 0, points: [10, 10, 30, 30], objectType: 'track',
51-
},
52-
], jobID);
45+
cy.headlessCreateObjects([{
46+
...rectanglePayload,
47+
frame: 99,
48+
points: [250, 64, 491, 228],
49+
objectType: 'shape',
50+
}, {
51+
labelName: rectanglePayload.labelName,
52+
objectType: 'track',
53+
frame: 0,
54+
shapes: [{
55+
type: rectanglePayload.type,
56+
frame: 0,
57+
occluded: rectanglePayload.occluded,
58+
points: [10, 10, 30, 30],
59+
}],
60+
}], jobID);
5361
});
5462
});
5563

tests/cypress/e2e/features/ground_truth_jobs.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -440,9 +440,9 @@ context('Ground truth jobs', () => {
440440
return cy.headlessCreateObjects(groundTruthFrames.map((frame, index) => {
441441
const gtRect = groundTruthRectangles[index];
442442
return {
443-
labelName,
444443
objectType: 'shape',
445-
shapeType: 'rectangle',
444+
labelName,
445+
type: 'rectangle',
446446
occluded: false,
447447
frame,
448448
points: [gtRect.firstX, gtRect.firstY, gtRect.secondX, gtRect.secondY],

tests/cypress/e2e/features/requests_page.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,16 @@ context('Requests page', () => {
1414
manifest: 'manifest.jsonl',
1515
endpointUrl: Cypress.config('minioUrl'),
1616
};
17+
1718
const rectanglePayload = {
18-
frame: 0,
1919
objectType: 'shape',
20-
shapeType: 'rectangle',
20+
labelName: mainLabelName,
21+
frame: 0,
22+
type: 'rectangle',
2123
points: [250, 64, 491, 228],
2224
occluded: false,
23-
labelName: mainLabelName,
2425
};
26+
2527
const attrName = 'requests_attr';
2628
const imagesCount = 3;
2729
const imageFileName = `image_${mainLabelName}`;

tests/cypress/e2e/issues_prs2/issue_1568_cuboid_dump_annotation.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ context('Dump annotation if cuboid created.', () => {
3333
[jobID] = response.jobIDs;
3434

3535
const cuboidPayload = {
36-
frame: 0,
3736
objectType: 'shape',
38-
shapeType: 'cuboid',
3937
labelName,
38+
frame: 0,
39+
type: 'cuboid',
4040
points: [
4141
38, 58, 38, 174, 173,
4242
58, 173, 174, 186, 46,

tests/cypress/support/commands.js

Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -287,23 +287,62 @@ Cypress.Commands.add('headlessLogin', ({
287287
});
288288

289289
Cypress.Commands.add('headlessCreateObjects', (objects, jobID) => {
290+
const convertShape = ($win, job) => (shape) => ({
291+
frame: shape.frame,
292+
type: shape.type,
293+
points: $win.Array.from(shape.points),
294+
label_id: job.labels.find((label) => label.name === shape.labelName).id,
295+
occluded: shape.occluded || false,
296+
outside: shape.outside || false,
297+
source: shape.source || 'manual',
298+
attributes: $win.Array.from(shape.attributes || []),
299+
elements: $win.Array.from(shape.elements ? shape.elements.map(convertShape) : []),
300+
rotation: shape.rotation || 0,
301+
group: shape.group || 0,
302+
z_order: shape.zOrder || 0,
303+
});
304+
305+
const convertTag = ($win, job) => (tag) => ({
306+
frame: tag.frame,
307+
label_id: job.labels.find((label) => label.name === tag.labelName).id,
308+
source: tag.source || 'manual',
309+
attributes: $win.Array.from(tag.attributes || []),
310+
group: tag.group || 0,
311+
});
312+
313+
const convertTrack = ($win, job) => (track) => ({
314+
frame: track.frame,
315+
label_id: job.labels.find((label) => label.name === track.labelName).id,
316+
group: track.group || 0,
317+
source: track.source || 'manual',
318+
attributes: $win.Array.from(track.attributes || []),
319+
elements: $win.Array.from(track.elements ? track.elements.map(convertTrack) : []),
320+
shapes: track.shapes.map((shape) => ({
321+
attributes: $win.Array.from(shape.attributes || []),
322+
points: $win.Array.from(shape.points),
323+
frame: shape.frame,
324+
occluded: shape.occluded || false,
325+
outside: shape.outside || false,
326+
rotation: shape.rotation || 0,
327+
type: shape.type,
328+
z_order: shape.zOrder || 0,
329+
})),
330+
});
331+
290332
cy.window().then(async ($win) => {
291333
const job = (await $win.cvat.jobs.get({ jobID }))[0];
292334
await job.annotations.clear({ reload: true });
293335

294-
const objectStates = objects
295-
.map((object) => new $win.cvat.classes
296-
.ObjectState({
297-
frame: object.frame,
298-
objectType: object.objectType,
299-
shapeType: object.shapeType,
300-
points: $win.Array.from(object.points),
301-
occluded: object.occluded,
302-
label: job.labels.find((label) => label.name === object.labelName),
303-
zOrder: 0,
304-
}));
305-
306-
await job.annotations.put($win.Array.from(objectStates));
336+
const shapes = objects.filter((object) => object.objectType === 'shape').map(convertShape($win, job));
337+
const tracks = objects.filter((object) => object.objectType === 'track').map(convertTrack($win, job));
338+
const tags = objects.filter((object) => object.objectType === 'tag').map(convertTag($win, job));
339+
340+
await job.annotations.import({
341+
shapes: $win.Array.from(shapes),
342+
tracks: $win.Array.from(tracks),
343+
tags: $win.Array.from(tags),
344+
});
345+
307346
await job.annotations.save();
308347
return cy.wrap();
309348
});

0 commit comments

Comments
 (0)