public IEnumerator DisplayNameStyleAndRenameOption()
        {
            const string testItemName = "test_name";

            AddElementCodeOnly();
            var hierarchyItem   = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(VisualElement));
            var documentElement = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItem);
            var nameLabel       = hierarchyItem.Q <Label>(className: BuilderConstants.ExplorerItemLabelClassName);

            Assert.That(nameLabel.text, Is.EqualTo(nameof(VisualElement)));
            Assert.That(nameLabel.classList, Contains.Item(BuilderConstants.ElementTypeClassName));

            yield return(UIETestEvents.Mouse.SimulateDoubleClick(hierarchyItem));

            yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, testItemName));

            yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builder, KeyCode.Return));

            Assert.That(documentElement.name, Is.EqualTo(testItemName));

            hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, BuilderConstants.UssSelectorNameSymbol + testItemName);
            nameLabel     = hierarchyItem.Q <Label>(className: BuilderConstants.ExplorerItemLabelClassName);
            Assert.That(nameLabel.classList, Contains.Item(BuilderConstants.ElementNameClassName));

            hierarchyItem = GetFirstExplorerItem();
            yield return(UIETestEvents.Mouse.SimulateDoubleClick(hierarchyItem));

            yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, "invalid&name"));

            yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builder, KeyCode.Return));

            Assert.That(documentElement.name, Is.EqualTo(testItemName));
        }
        public IEnumerator ReparentFlowWhenDraggingOntoCSharpTypeElement()
        {
            yield return(AddTextFieldElement());

            yield return(AddVisualElement());

            var textFieldItem        = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(TextField));
            var visualElementItem    = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(VisualElement));
            var visualElementDocItem = BuilderTestsHelper.GetLinkedDocumentElement(visualElementItem);

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 visualElementItem.worldBound.center,
                                                                 textFieldItem.worldBound.center));

            Assert.That(visualElementDocItem.parent, Is.InstanceOf <TextField>());

            ForceNewDocument();
            yield return(AddTextFieldElement());

            yield return(AddVisualElement());

            textFieldItem        = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(TextField));
            visualElementItem    = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(VisualElement));
            visualElementDocItem = BuilderTestsHelper.GetLinkedDocumentElement(visualElementItem);
            var textFieldDocItem = BuilderTestsHelper.GetLinkedDocumentElement(textFieldItem);

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 visualElementItem.worldBound.center,
                                                                 textFieldDocItem.worldBound.center));

            Assert.That(visualElementDocItem.parent, Is.InstanceOf <TextField>());
        }
        public IEnumerator OutsideClickWillCommitRename()
        {
            const string testItemName = "test_name";

            yield return(AddVisualElement());

            var hierarchyItem   = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(VisualElement));
            var documentElement = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItem);
            var nameLabel       = hierarchyItem.Q <Label>(className: BuilderConstants.ExplorerItemLabelClassName);

            Assert.That(nameLabel.text, Is.EqualTo(nameof(VisualElement)));
            Assert.That(nameLabel.classList, Contains.Item(BuilderConstants.ElementTypeClassName));

            yield return(UIETestEvents.Mouse.SimulateDoubleClick(hierarchyItem));

            yield return(UIETestEvents.KeyBoard.SimulateTyping(BuilderWindow, testItemName));

            yield return(UIETestEvents.Mouse.SimulateClick(ViewportPane));

            Assert.That(documentElement.name, Is.EqualTo(testItemName));

            hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, BuilderConstants.UssSelectorNameSymbol + testItemName);
            nameLabel     = hierarchyItem.Q <Label>(className: BuilderConstants.ExplorerItemLabelClassName);
            Assert.That(nameLabel.classList, Contains.Item(BuilderConstants.ElementNameClassName));
        }
        public IEnumerator CopyPasteUXML()
        {
            AddElementCodeOnly();
            AddElementCodeOnly();
            yield return(UIETestHelpers.Pause());

            var hierarchyItems = BuilderTestsHelper.GetExplorerItemsWithName(hierarchy, nameof(VisualElement));
            var hierarchyItem1 = hierarchyItems[0];
            var hierarchyItem2 = hierarchyItems[1];

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder,
                                                                 hierarchyItem1.worldBound.center,
                                                                 hierarchyItem2.worldBound.center));

            var complexItem = GetFirstExplorerItem();

            var newlineFixedExpectedUXML = m_ExpectedUXMLString;

            if (BuilderConstants.NewlineChar != BuilderConstants.newlineCharFromEditorSettings)
            {
                newlineFixedExpectedUXML = newlineFixedExpectedUXML.Replace(
                    BuilderConstants.NewlineChar,
                    BuilderConstants.newlineCharFromEditorSettings);
            }

            // Copy to UXML
            yield return(UIETestEvents.Mouse.SimulateClick(complexItem));

            yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Copy));

            Assert.That(BuilderEditorUtility.systemCopyBuffer, Is.EqualTo(newlineFixedExpectedUXML));

            ForceNewDocument();
            BuilderEditorUtility.systemCopyBuffer = string.Empty;
            yield return(UIETestEvents.Mouse.SimulateClick(hierarchy));

            yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Paste));

            var explorerItems = BuilderTestsHelper.GetExplorerItems(hierarchy);

            Assert.That(explorerItems, Is.Empty);

            BuilderEditorUtility.systemCopyBuffer = newlineFixedExpectedUXML;
            yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Paste));

            // var newItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(VisualElement));
            var hierarchyTreeView = hierarchy.Q <TreeView>();

            hierarchyTreeView.ExpandItem(hierarchyTreeView.items.ToList()[1].id);

            explorerItems = BuilderTestsHelper.GetExplorerItems(hierarchy);
            Assert.That(explorerItems.Count, Is.EqualTo(2));
            Assert.That(BuilderTestsHelper.GetLinkedDocumentElement(explorerItems[1]).parent, Is.EqualTo(BuilderTestsHelper.GetLinkedDocumentElement(explorerItems[0])));
        }
        public IEnumerator CopyPasteUXML()
        {
            yield return(AddVisualElement());

            yield return(AddVisualElement());

            var hierarchyItems = BuilderTestsHelper.GetExplorerItemsWithName(HierarchyPane, nameof(VisualElement));
            var hierarchyItem1 = hierarchyItems[0];
            var hierarchyItem2 = hierarchyItems[1];

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 hierarchyItem1.worldBound.center,
                                                                 hierarchyItem2.worldBound.center));

            var complexItem = GetFirstExplorerItem();

            // Copy to UXML
            yield return(UIETestEvents.Mouse.SimulateClick(complexItem));

            yield return(UIETestEvents.ExecuteCommand(BuilderWindow, UIETestEvents.Command.Copy));

            Assert.That(BuilderEditorUtility.SystemCopyBuffer, Is.EqualTo(m_ExpectedUXMLString));

            ForceNewDocument();
            BuilderEditorUtility.SystemCopyBuffer = string.Empty;
            yield return(UIETestEvents.Mouse.SimulateClick(HierarchyPane));

            yield return(UIETestEvents.ExecuteCommand(BuilderWindow, UIETestEvents.Command.Paste));

            var explorerItems = BuilderTestsHelper.GetExplorerItems(HierarchyPane);

            Assert.That(explorerItems, Is.Empty);

            BuilderEditorUtility.SystemCopyBuffer = m_ExpectedUXMLString;
            yield return(UIETestEvents.ExecuteCommand(BuilderWindow, UIETestEvents.Command.Paste));

            // var newItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(VisualElement));
            var hierarchyTreeView = HierarchyPane.Q <TreeView>();

            hierarchyTreeView.ExpandItem(hierarchyTreeView.items.ToList()[1].id);

            explorerItems = BuilderTestsHelper.GetExplorerItems(HierarchyPane);
            Assert.That(explorerItems.Count, Is.EqualTo(2));
            Assert.That(BuilderTestsHelper.GetLinkedDocumentElement(explorerItems[1]).parent, Is.EqualTo(BuilderTestsHelper.GetLinkedDocumentElement(explorerItems[0])));
        }
        public IEnumerator DragOntoHierarchyElementToCreateAsChild()
        {
            yield return(AddVisualElement());

            var explorerItem = GetFirstExplorerItem();

            var veLabel = BuilderTestsHelper.GetLabelWithName(LibraryPane, nameof(VisualElement));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 veLabel.worldBound.center,
                                                                 explorerItem.worldBound.center));

            var hierarchyItems   = BuilderTestsHelper.GetExplorerItemsWithName(HierarchyPane, nameof(VisualElement));
            var documentElement1 = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItems[0]);
            var documentElement2 = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItems[1]);

            Assert.That(documentElement2.parent, Is.EqualTo(documentElement1));
        }
        public IEnumerator DragOntoViewportElementToCreateNewInstanceAsChild()
        {
            AddElementCodeOnly();
            var documentElement = viewport.documentRootElement[0];

            var veLabel = BuilderTestsHelper.GetLabelWithName(library, nameof(VisualElement));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder,
                                                                 veLabel.worldBound.center,
                                                                 documentElement.worldBound.center));

            var hierarchyItems = BuilderTestsHelper.GetExplorerItemsWithName(hierarchy, nameof(VisualElement));

            documentElement = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItems[0]);
            var documentElement1 = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItems[1]);

            Assert.That(documentElement1.parent, Is.EqualTo(documentElement));
            Assert.That(builder.rootVisualElement.focusController.focusedElement, Is.EqualTo(viewport));
        }
        public IEnumerator DragOntoViewportElementToCreateNewInstanceAsChild()
        {
            yield return(AddVisualElement());

            var documentElement = ViewportPane.documentElement[0];

            var veLabel = BuilderTestsHelper.GetLabelWithName(LibraryPane, nameof(VisualElement));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 veLabel.worldBound.center,
                                                                 documentElement.worldBound.center));

            var hierarchyItems = BuilderTestsHelper.GetExplorerItemsWithName(HierarchyPane, nameof(VisualElement));

            documentElement = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItems[0]);
            var documentElement1 = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItems[1]);

            Assert.That(documentElement1.parent, Is.EqualTo(documentElement));
            Assert.That(BuilderWindow.rootVisualElement.focusController.focusedElement, Is.EqualTo(ViewportPane));
        }
        public IEnumerator DragOntoHierarchyElementToCreateAsChild()
        {
            AddElementCodeOnly();
            yield return(UIETestHelpers.Pause());

            var explorerItem = GetFirstExplorerItem();

            var veLabel = BuilderTestsHelper.GetLabelWithName(library, nameof(VisualElement));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder,
                                                                 veLabel.worldBound.center,
                                                                 explorerItem.worldBound.center));

            hierarchy.elementHierarchyView.ExpandRootItems();

            var hierarchyItems   = BuilderTestsHelper.GetExplorerItemsWithName(hierarchy, nameof(VisualElement));
            var documentElement1 = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItems[0]);
            var documentElement2 = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItems[1]);

            Assert.That(documentElement2.parent, Is.EqualTo(documentElement1));
        }
        public IEnumerator EscKeyWillCancelRename()
        {
            const string testItemName = "test_name";

            AddElementCodeOnly();
            var hierarchyItem   = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(VisualElement));
            var documentElement = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItem);

            Assert.That(string.IsNullOrEmpty(documentElement.name));

            yield return(UIETestEvents.Mouse.SimulateDoubleClick(hierarchyItem));

            yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, testItemName));

            yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builder, KeyCode.Escape));

            // Test that not only the name has not changed to the new value entered...
            hierarchyItem   = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(VisualElement));
            documentElement = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItem);
            Assert.AreNotEqual(documentElement.name, testItemName);
            // But is also equal to its original name
            Assert.That(string.IsNullOrEmpty(documentElement.name));
        }
        public IEnumerator ReparentFlowWhenDraggingOntoCSharpTypeElement()
        {
            AddElementCodeOnly <TextField>();
            AddElementCodeOnly();
            yield return(UIETestHelpers.Pause());

            var textFieldItem        = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(TextField));
            var visualElementItem    = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(VisualElement));
            var visualElementDocItem = BuilderTestsHelper.GetLinkedDocumentElement(visualElementItem);

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder,
                                                                 visualElementItem.worldBound.center,
                                                                 textFieldItem.worldBound.center));

            Assert.That(visualElementDocItem.parent, Is.InstanceOf <TextField>());

            ForceNewDocument();
            AddElementCodeOnly <TextField>();
            AddElementCodeOnly();
            yield return(UIETestHelpers.Pause());

            textFieldItem        = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(TextField));
            visualElementItem    = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(VisualElement));
            visualElementDocItem = BuilderTestsHelper.GetLinkedDocumentElement(visualElementItem);
            var textFieldDocItem = BuilderTestsHelper.GetLinkedDocumentElement(textFieldItem);

            // Need to make it taller to avoid the placement indicator triggering:
            textFieldDocItem.style.height = 200;
            yield return(UIETestHelpers.Pause());

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder,
                                                                 visualElementItem.worldBound.center,
                                                                 textFieldDocItem.worldBound.center));

            Assert.That(visualElementDocItem.parent, Is.InstanceOf <TextField>());
        }
Beispiel #12
0
 internal BuilderExplorerItem GetHierarchyExplorerItemByElementName(string name)
 {
     return(HierarchyPane.Query <BuilderExplorerItem>()
            .Where(item => BuilderTestsHelper.GetLinkedDocumentElement(item).name == name).ToList().First());
 }
        public IEnumerator SampleTest()
        {
            // A new Builder window created when the test started.
            // The created window will be destroyed during the teardown stage.
            Assert.That(BuilderWindow, Is.Not.Null);

            // Fast access to the main builder panes.
            Assert.That(StyleSheetsPane, Is.Not.Null);
            Assert.That(HierarchyPane, Is.Not.Null);
            Assert.That(LibraryPane, Is.Not.Null);
            Assert.That(ViewportPane, Is.Not.Null);
            Assert.That(InspectorPane, Is.Not.Null);

            // Use the following methods to add standard controls to the document.
            AddElementCodeOnly();
            AddElementCodeOnly <TextField>();
            AddElementCodeOnly <Button>();

            // Get created element.
            var createdButton = ViewportPane.documentElement.Q <Button>();

            // Get linked hierarchy item.
            var buttonHierarchyNode = BuilderTestsHelper.GetLinkedExplorerItem(createdButton);

            // Create New selector.
            // There's a requirement that a USS file has already been added to
            // the document in order to add selectors. This function will make
            // sure the document is ready to have new selectors created.
            yield return(EnsureSelectorsCanBeAddedAndReloadBuilder());

            yield return(AddSelector(".my-selector"));

            // Retrieve created selector explorer node.
            var mySelectorNode = GetStyleSelectorNodeWithName(".my-selector");

            // Drag and drop sample. Drag selector onto created button.
            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 mySelectorNode.Q <Label>().worldBound.center,
                                                                 buttonHierarchyNode.worldBound.center));

            // Selected created TextField node and inline change style.
            // Avoid using ListView / TreeView / VisualElement API to select / focus an item.
            // Simulate how a user would do it with UIETestEvents API.
            var textFieldHierarchyNode = BuilderTestsHelper.GetLinkedExplorerItem(ViewportPane.documentElement.Q <TextField>());

            yield return(UIETestEvents.Mouse.SimulateClick(textFieldHierarchyNode));

            // Make sure you unfold style properties group before accessing the properties.
            // Keep in mind the amount of time that will be spent by your test. Try to keep it as low as possible.
            // In the code sample below, instead of simulating user interaction, we will just set controls values directly.
            // However, there are no strict rules when you should skip user interaction simulation, use your judgment.
            var displayFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Display")).First();

            displayFoldout.value = true;

            var percentSlider = displayFoldout.Query <PercentSlider>().Where(t => t.label.Equals("Opacity")).First();

            percentSlider.value = 0.5f;

            yield return(UIETestHelpers.Pause());

            var textFieldDocumentItem = BuilderTestsHelper.GetLinkedDocumentElement(textFieldHierarchyNode);

            Assert.That(textFieldDocumentItem.opacity, Is.EqualTo(percentSlider.value));
        }