const assert = require("assert"); Feature("Richtext regions interactions"); Scenario( "Setting correct cursor on regions in relation creating mode", async ({ I, LabelStudio, AtOutliner, AtDetails }) => { I.amOnPage("/"); LabelStudio.init({ config: ` `, data: { text: "Here is some text.", }, annotations: [ { id: "test", result: [ { id: "A", from_name: "label", to_name: "text", type: "labels", value: { start: 0, end: 4, labels: ["Label"] }, }, { id: "B", from_name: "label", to_name: "text", type: "labels", value: { start: 5, end: 7, labels: ["Label"] }, }, { id: "C", from_name: "label", to_name: "text", type: "labels", value: { start: 5, end: 7, labels: ["Label"] }, }, { id: "D", from_name: "label", to_name: "text", type: "labels", value: { start: 8, end: 12, labels: ["Label"] }, }, ], }, ], }); LabelStudio.waitForObjectsReady(); AtOutliner.seeRegions(4); I.say("Hide last region"); AtOutliner.toggleRegionVisibility(4); I.say("Go into the relation creating mode from the first region"); AtOutliner.clickRegion(1); AtDetails.clickCreateRelation(); I.say("Cursor should be equal to `crosshair` when element is hovered and it is relation creating mode and visible"); { I.say("Check the same region"); const elementLocator = locate('[class*="htx-highlight-A"]'); I.moveCursorTo(elementLocator); const cursor = await I.grabCssPropertyFrom(elementLocator, "cursor"); assert.strictEqual(cursor, "crosshair"); } { I.say("Check second region"); const elementLocator = locate('[class*="htx-highlight-B"]'); I.moveCursorTo(elementLocator); const cursor = await I.grabCssPropertyFrom(elementLocator, "cursor"); assert.strictEqual(cursor, "crosshair"); } { I.say("Check the hidden region"); const elementLocator = locate('[class*="htx-highlight-D"]'); I.moveCursorTo(elementLocator); const cursor = await I.grabCssPropertyFrom(elementLocator, "cursor"); assert.notStrictEqual(cursor, "crosshair"); } AtDetails.clickCreateRelation(); I.say("It's not relation creating mode so there should be cursor equal to `pointer`"); { I.say("Check the same region"); const elementLocator = locate('[class*="htx-highlight-A"]'); I.moveCursorTo(elementLocator); const cursor = await I.grabCssPropertyFrom(elementLocator, "cursor"); assert.strictEqual(cursor, "pointer"); } { I.say("Check second region"); const elementLocator = locate('[class*="htx-highlight-B"]'); I.moveCursorTo(elementLocator); const cursor = await I.grabCssPropertyFrom(elementLocator, "cursor"); assert.strictEqual(cursor, "pointer"); } { I.say("Check the hidden region"); const elementLocator = locate('[class*="htx-highlight-D"]'); I.moveCursorTo(elementLocator); const cursor = await I.grabCssPropertyFrom(elementLocator, "cursor"); assert.notStrictEqual(cursor, "pointer"); } }, ); Scenario("Hidden region interactions", async ({ I, LabelStudio, AtOutliner, AtDetails }) => { I.amOnPage("/"); LabelStudio.init({ config: ` `, data: { text: "Here is some text.", }, annotations: [ { id: "test", result: [ { id: "a", from_name: "label", to_name: "text", type: "labels", value: { start: 0, end: 4, labels: ["Label"] }, }, { id: "hidden_1", from_name: "label", to_name: "text", type: "labels", value: { start: 2, end: 3, labels: ["Label"] }, }, { id: "hidden_2", from_name: "label", to_name: "text", type: "labels", value: { start: 5, end: 7, labels: ["Label"] }, }, { id: "hidden_3", from_name: "label", to_name: "text", type: "labels", value: { start: 8, end: 12, labels: ["Label"] }, }, { id: "b", from_name: "label", to_name: "text", type: "labels", value: { start: 9, end: 11, labels: ["Label"] }, }, ], }, ], }); LabelStudio.waitForObjectsReady(); I.say("Hide last regions"); AtOutliner.toggleRegionVisibility(2); AtOutliner.toggleRegionVisibility(3); AtOutliner.toggleRegionVisibility(4); I.say("Try to select the first hidden element"); I.click(locate(".htx-highlight").withText("r")); I.say("It should select other visible element"); I.dontSeeElement(locate(".htx-highlight.__hidden.__active").withText("r")); I.seeElement(locate(".htx-highlight.__active").withChild(locate(".htx-highlight.__hidden").withText("r"))); I.say("Reset selection"); I.pressKey("u"); I.say("Try to select the second hidden element"); I.click(locate(".htx-highlight").withText("is")); I.say("It should not select anything"); I.dontSeeElement(locate(".htx-highlight.__active")); I.say("Try to select the visible element over the third hidden one"); I.click(locate(".htx-highlight:not(.__hidden)").withText("om")); I.say("It should become selected"); I.dontSeeElement(locate(".htx-highlight.__hidden.__active").withChild(locate(".htx-highlight").withText("om"))); I.seeElement(locate(".htx-highlight.__active:not(.__hidden)").withText("om")); });