Bin
2025-12-16 9e0b2ba2c317b1a86212f24cbae3195ad1f3dbfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Feature("Outliner regions drag and drop").tag("@regress");
 
const CONFIG = `<View>
    <Labels name="label" toName="text">
        <Label value="Label" background="purple"/>
    </Labels>
    <Text name="text" value="$text" inline="true"/>
</View>`;
 
const TEXT = "qwertyuiopasdfghjklzxcvbnm";
 
function generateResults(n) {
  const results = [];
 
  for (let k = 0; k < n; k++) {
    results.push({
      id: `${k}`,
      from_name: "label",
      to_name: "text",
      type: "labels",
      origin: "manual",
      value: {
        start: k,
        end: k + 1,
        text: TEXT.split("")[k],
        labels: ["Label"],
      },
    });
  }
  return results;
}
 
Scenario("Dnd at the outliner after switching annotations", async ({ I, LabelStudio, AtOutliner, AtTopbar }) => {
  I.amOnPage("/");
  LabelStudio.init({
    annotations: [
      {
        id: "test_02",
        result: generateResults(10),
      },
      {
        id: "test_01",
        result: generateResults(10),
      },
    ],
    config: CONFIG,
    data: { text: TEXT },
  });
 
  AtOutliner.seeRegions(10);
 
  I.say("Check that drag and drop interaction works");
  await AtOutliner.dragAndDropRegion(7, 3);
 
  I.say("Switch annotation");
  AtTopbar.openAnnotaions();
  AtTopbar.selectAnnotationAt(2);
  AtOutliner.seeRegions(10);
 
  I.say("Check that we still able to drag and drop regions");
  await AtOutliner.dragAndDropRegion(7, 3);
 
  // The potential errors should be caught by `errorsCollector` plugin
});