Skip to content
This repository was archived by the owner on Apr 18, 2024. It is now read-only.

Commit 9b1f3c7

Browse files
authored
fix: LSDV-4968: Fix remaining transformer of selected region outside of lifespan (#1345)
* fix: LSDV-4968: Fix remaining transformer of selected region outside of lifespan * Update testing library * test: LSDV-4968: Add tests for video regions and their transformer * Update testing library * Fix video segmentation tests * Try to fix coverageReport bug * Update @heartexlabs/ls-test * Update @heartexlabs/ls-test
1 parent 8f96319 commit 9b1f3c7

File tree

5 files changed

+134
-6
lines changed

5 files changed

+134
-6
lines changed

src/tags/object/Video/VideoRegions.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ const VideoRegionsPure = ({
4646
const [newRegion, setNewRegion] = useState();
4747
const [isDrawing, setDrawingMode] = useState(false);
4848

49-
const selected = regions.filter((reg) => (reg.selected || reg.inSelection) && !reg.hidden && !reg.isReadOnly());
49+
const selected = regions.filter((reg) => {
50+
return (reg.selected || reg.inSelection) && !reg.hidden && !reg.isReadOnly() && reg.isInLifespan(item.frame);
51+
});
5052
const listenToEvents = !locked;
5153

5254
// if region is not in lifespan, it's not rendered,
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
export const simpleVideoData = { video: '/files/opossum_intro.webm' };
2+
3+
export const simpleVideoConfig = `<View>
4+
<Video name="video" value="$video" />
5+
<VideoRectangle name="box" toName="video" />
6+
<Labels name="tag" toName="video">
7+
<Label value="Label 1" background="green" hotkey="1"/>
8+
<Label value="Label 2" background="blue" hotkey="2"/>
9+
</Labels>
10+
</View>`;
11+
12+
export const simpleVideoResult = [
13+
{
14+
'value': {
15+
'framesCount': 131,
16+
'duration': 5.425,
17+
'sequence': [
18+
{
19+
'frame': 1,
20+
'enabled': true,
21+
'rotation': 0,
22+
'x': 20.54721030042918,
23+
'y': 15.665236051502147,
24+
'width': 58.90557939914163,
25+
'height': 68.6695278969957,
26+
'time': 0.041666666666666664,
27+
},
28+
{
29+
'x': 20.54721030042918,
30+
'y': 15.665236051502147,
31+
'width': 58.90557939914163,
32+
'height': 68.6695278969957,
33+
'rotation': 0,
34+
'enabled': false,
35+
'frame': 3,
36+
'time': 0.125,
37+
},
38+
],
39+
'labels': [
40+
'Label 1',
41+
],
42+
},
43+
'id': 'RRxnu061g3',
44+
'from_name': 'box',
45+
'to_name': 'video',
46+
'type': 'videorectangle',
47+
'origin': 'manual',
48+
},
49+
];

tests/functional/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"cvg:summary": "nyc report --temp-dir=.nyc_output --reporter=text-summary --cwd=. --exclude-after-remap false"
1919
},
2020
"dependencies": {
21-
"@heartexlabs/ls-test": "git+ssh://[email protected]/heartexlabs/ls-frontend-test#a0e92fc"
21+
"@heartexlabs/ls-test": "git+ssh://[email protected]/heartexlabs/ls-frontend-test#1bc78f64a4c0217969af8688c6d7fad30fd61754"
2222
},
2323
"devDependencies": {
2424
"ts-loader": "^9.4.2",
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import { Labels, LabelStudio, Sidebar, VideoView } from '@heartexlabs/ls-test/helpers/LSF/index';
2+
import { simpleVideoConfig, simpleVideoData, simpleVideoResult } from 'data/video_segmentation/regions';
3+
4+
describe('Video segmentation', () => {
5+
it('Should be able to draw a simple rectangle', ()=>{
6+
LabelStudio.params()
7+
.config(simpleVideoConfig)
8+
.data(simpleVideoData)
9+
.withResult([])
10+
.init();
11+
12+
LabelStudio.waitForObjectsReady();
13+
Sidebar.hasNoRegions();
14+
15+
Labels.select('Label 1');
16+
17+
VideoView.drawRectRelative(.2, .2, .6, .6);
18+
19+
Sidebar.hasRegions(1);
20+
});
21+
22+
it('Should have changes in canvas', () => {
23+
LabelStudio.params()
24+
.config(simpleVideoConfig)
25+
.data(simpleVideoData)
26+
.withResult([])
27+
.init();
28+
LabelStudio.waitForObjectsReady();
29+
Sidebar.hasNoRegions();
30+
VideoView.captureCanvas('canvas');
31+
32+
Labels.select('Label 2');
33+
VideoView.drawRectRelative(.2, .2, .6, .6);
34+
Sidebar.hasRegions(1);
35+
VideoView.canvasShouldChange('canvas', 0);
36+
});
37+
38+
describe('Rectangle', () => {
39+
it('Should be invisible out of the lifespan', () =>{
40+
LabelStudio.params()
41+
.config(simpleVideoConfig)
42+
.data(simpleVideoData)
43+
.withResult(simpleVideoResult)
44+
.init();
45+
LabelStudio.waitForObjectsReady();
46+
Sidebar.hasRegions(1);
47+
VideoView.captureCanvas('canvas');
48+
49+
VideoView.clickAtFrame(4);
50+
VideoView.canvasShouldChange('canvas', 0);
51+
});
52+
});
53+
54+
describe('Transformer', () => {
55+
it.only('Should be invisible out of the lifespan', () =>{
56+
LabelStudio.params()
57+
.config(simpleVideoConfig)
58+
.data(simpleVideoData)
59+
.withResult(simpleVideoResult)
60+
.init();
61+
LabelStudio.waitForObjectsReady();
62+
Sidebar.hasRegions(1);
63+
64+
cy.log('Remember an empty canvas state');
65+
VideoView.clickAtFrame(4);
66+
VideoView.captureCanvas('canvas');
67+
68+
VideoView.clickAtFrame(3);
69+
cy.log('Select region');
70+
VideoView.clickAtRelative(.5,.5);
71+
Sidebar.hasSelectedRegions(1);
72+
VideoView.clickAtFrame(4);
73+
Sidebar.hasSelectedRegions(1);
74+
VideoView.canvasShouldNotChange('canvas', 0);
75+
});
76+
});
77+
});

tests/functional/yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -264,9 +264,9 @@
264264
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
265265
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
266266

267-
"@heartexlabs/ls-test@git+ssh://[email protected]/heartexlabs/ls-frontend-test#8296943":
267+
"@heartexlabs/ls-test@git+ssh://[email protected]/heartexlabs/ls-frontend-test#1bc78f64a4c0217969af8688c6d7fad30fd61754":
268268
version "1.0.8"
269-
resolved "git+ssh://[email protected]/heartexlabs/ls-frontend-test#8296943a76de0fa35e48ed05236b50e9df2ce3d1"
269+
resolved "git+ssh://[email protected]/heartexlabs/ls-frontend-test#1bc78f64a4c0217969af8688c6d7fad30fd61754"
270270
dependencies:
271271
"@cypress/code-coverage" "^3.10.0"
272272
"@cypress/webpack-preprocessor" "^5.17.0"
@@ -284,9 +284,9 @@
284284
webpack-cli "^5.0.1"
285285
yargs "^17.7.1"
286286

287-
"@heartexlabs/ls-test@git+ssh://[email protected]/heartexlabs/ls-frontend-test#a0e92fc":
287+
"@heartexlabs/ls-test@git+ssh://[email protected]/heartexlabs/ls-frontend-test#4b8f05de9decb0987696492eac3150b08134c596":
288288
version "1.0.8"
289-
resolved "git+ssh://[email protected]/heartexlabs/ls-frontend-test#a0e92fcfe882e7e6e5aefad2ea9e3a2091ffccf0"
289+
resolved "git+ssh://[email protected]/heartexlabs/ls-frontend-test#4b8f05de9decb0987696492eac3150b08134c596"
290290
dependencies:
291291
"@cypress/code-coverage" "^3.10.0"
292292
"@cypress/webpack-preprocessor" "^5.17.0"

0 commit comments

Comments
 (0)