Feature("Readonly Regions"); const imageExamples = new DataTable(["example", "regionIndex"]); imageExamples.add([require("../../../examples/audio-regions"), 1]); Data(imageExamples).Scenario("Audio Readonly Regions", async ({ I, current, LabelStudio, AtOutliner, AtAudioView }) => { LabelStudio.setFeatureFlags({ ff_front_dev_2715_audio_3_280722_short: true, }); I.amOnPage("/"); const { config, result: r, data } = current.example; // mark first result as readonly const result = r.map((r, i) => (i === 0 ? { ...r, readonly: true } : r)); // extracts label regions only const regions = result.filter((r) => r.type.match("labels")); LabelStudio.init({ annotations: [ { id: "test", result, }, ], config, data, }); await AtAudioView.waitForAudio(); await AtAudioView.lookForStage(); I.say("Check region is selectable"); AtOutliner.seeRegions(regions.length); AtOutliner.clickRegion(current.regionIndex); I.say("Attempt to move a readonly region"); const readonlyRegionId = regions[0].id; await AtAudioView.moveRegion(readonlyRegionId, 100); I.say("Results are equal after modification attempt"); await LabelStudio.resultsNotChanged(result); I.say("Attempt to move a non-readonly region (and it will be selected after this)"); const nonReadonlyRegionId = regions[1].id; await AtAudioView.moveRegion(nonReadonlyRegionId, 100); I.say("Results are not equal after modification attempt"); await LabelStudio.resultsChanged(result); I.pressKey("CommandOrControl+z"); AtOutliner.clickRegion(current.regionIndex); I.pressKey("Backspace"); I.say("Results are equal after attempt to delete readonly region"); await LabelStudio.resultsNotChanged(result); // There was a test that we can draw over readonly region, // but that's not the case fo v3 anymore, so it was removed. });