public IEnumerator SelectorRenameWithCommandAndContextMenu()
        {
            yield return(EnsureSelectorsCanBeAddedAndReloadBuilder());

            yield return(AddSelector(TestSelectorName));

            var createdSelector = GetStyleSelectorNodeWithName(TestSelectorName);

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

            // Rename with command.
            yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Rename));

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

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

            yield return(UIETestHelpers.Pause(2));

            Assert.That(BuilderTestsHelper.GetExplorerItemsWithName(styleSheetsPane, TestSelectorName).Count, Is.EqualTo(0));
            Assert.That(BuilderTestsHelper.GetExplorerItemsWithName(styleSheetsPane, TestSelectorName2).Count, Is.EqualTo(1));

            // Test invalid selector rename.
            yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Rename));

            yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, "invalid%%selector@$name"));

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

            yield return(UIETestHelpers.Pause(2));

            Assert.That(BuilderTestsHelper.GetExplorerItemsWithName(styleSheetsPane, TestSelectorName2).Count, Is.EqualTo(1));

            // Try renaming with contextual menu option.
            var panel = builder.rootVisualElement.panel as BaseVisualElementPanel;
            var menu  = panel.contextualMenuManager as BuilderTestContextualMenuManager;

            Assert.That(menu, Is.Not.Null);
            Assert.That(menu.menuIsDisplayed, Is.False);

            createdSelector = GetStyleSelectorNodeWithName(TestSelectorName2);
            yield return(UIETestEvents.Mouse.SimulateClick(createdSelector, MouseButton.RightMouse));

            var renameClick = menu.FindMenuAction("Rename");

            Assert.That(renameClick, Is.Not.Null);

            renameClick.Execute();
            yield return(UIETestHelpers.Pause(1));

            // Rename back to original selector name.
            yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, TestSelectorName));

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

            yield return(UIETestHelpers.Pause(2));

            Assert.That(BuilderTestsHelper.GetExplorerItemsWithName(styleSheetsPane, TestSelectorName2).Count, Is.EqualTo(0));
            Assert.That(BuilderTestsHelper.GetExplorerItemsWithName(styleSheetsPane, TestSelectorName).Count, Is.EqualTo(1));
        }
        public IEnumerator DragStylePillOntoTemplateElementInHierarchy()
        {
            yield return(AddTextFieldElement());

            var documentElement = GetFirstDocumentElement();

            yield return(AddSelector(TestSelectorName));

            var createdSelector = GetStyleSelectorNodeWithName(TestSelectorName);

            yield return(UIETestHelpers.Pause(1));

            var hierarchyTreeView = HierarchyPane.Q <TreeView>();

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

            var textFieldLabel = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(Label)).Q <Label>();

            yield return(UIETestHelpers.Pause(1));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 createdSelector.Q <Label>().worldBound.center,
                                                                 textFieldLabel.worldBound.center));

            Assert.That(documentElement.classList, Is.Not.Contain(TestSelectorName.TrimStart('.')));
        }
        protected IEnumerator CodeOnlyAddUSSToDocument(string path)
        {
            var builderWindow = this.builder;

#if UNITY_2019_4
            // Need to have at least one element in the asset.
            if (builderWindow.document.visualTreeAsset.IsEmpty())
            {
                AddElementCodeOnly("TestElement");
            }
#endif

            yield return(UIETestHelpers.Pause(1));

            // Make sure there's no modified version in memory.
            AssetDatabase.ImportAsset(
                k_TestEmptyUSSFilePath,
                ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport);

            yield return(UIETestHelpers.Pause(1));

            BuilderStyleSheetsUtilities.AddUSSToAsset(builderWindow, path);

            yield return(UIETestHelpers.Pause(1));

            styleSheetsPane.elementHierarchyView.ExpandRootItems();
            hierarchy.elementHierarchyView.ExpandRootItems();
        }
        public IEnumerator CreateTemplateInstancesFromUXML()
        {
            var testUXMLTreeViewItem = GetTestAssetsUXMLFileNode();
            var libraryTreeView      = LibraryPane.Q <TreeView>();

            yield return(libraryTreeView.SelectAndScrollToItemWithId(testUXMLTreeViewItem.id));

            yield return(UIETestHelpers.Pause(1));

            var testUXMLLabel = libraryTreeView.Query <Label>(null, "unity-builder-library__tree-item-label")
                                .Where(label => label.text.Equals(k_TestUXMLFileName)).First();

            Assert.That(testUXMLLabel, Is.Not.Null);

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

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 testUXMLLabel.worldBound.center,
                                                                 HierarchyPane.worldBound.center));

            Assert.That(ViewportPane.documentElement.childCount, Is.EqualTo(2));
            foreach (var child in ViewportPane.documentElement.Children())
            {
                Assert.That(child, Is.TypeOf <TemplateContainer>());
            }
        }
        public IEnumerator DragStylePillToViewport()
        {
            yield return(AddVisualElement());

            var documentElement = GetFirstDocumentElement();

            yield return(AddSelector(TestSelectorName + " " + TestSelectorName2));

            var createdSelector = GetStyleSelectorNodeWithName(TestSelectorName);

            yield return(UIETestHelpers.Pause(1));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 createdSelector.Q <Label>().worldBound.center,
                                                                 documentElement.worldBound.center));

            Assert.That(documentElement.classList.Count, Is.EqualTo(1));
            Assert.That(documentElement.classList[0], Is.EqualTo(TestSelectorName.TrimStart('.')));

            var secondClassNameLabel = BuilderTestsHelper.GetLabelWithName(createdSelector, TestSelectorName2);

            yield return(UIETestHelpers.Pause(100));

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

            Assert.That(documentElement.classList.Count, Is.EqualTo(2));
            Assert.That(documentElement.classList, Contains.Item(TestSelectorName2.TrimStart('.')));
        }
Beispiel #6
0
        public IEnumerator DeleteSelectorViaRightClickMenu()
        {
            yield return(EnsureSelectorsCanBeAddedAndReloadBuilder());

            yield return(AddSelector(TestSelectorName));

            var explorerItems = BuilderTestsHelper.GetExplorerItemsWithName(styleSheetsPane, TestSelectorName);

            Assert.That(explorerItems.Count, Is.EqualTo(1));

            var panel = builder.rootVisualElement.panel as BaseVisualElementPanel;
            var menu  = panel.contextualMenuManager as BuilderTestContextualMenuManager;

            Assert.That(menu, Is.Not.Null);
            Assert.That(menu.menuIsDisplayed, Is.False);

            yield return(UIETestEvents.Mouse.SimulateClick(explorerItems[0], MouseButton.RightMouse));

            Assert.That(menu.menuIsDisplayed, Is.True);

            var deleteMenuItem = menu.FindMenuAction("Delete");

            Assert.That(deleteMenuItem, Is.Not.Null);

            deleteMenuItem.Execute();

            yield return(UIETestHelpers.Pause(1));

            var newUSSExplorerItems = BuilderTestsHelper.GetExplorerItemsWithName(styleSheetsPane, TestSelectorName);

            Assert.That(newUSSExplorerItems.Count, Is.EqualTo(0));
        }
        public IEnumerator DraggingChildElementsOfATemplateShouldNotWork()
        {
            yield return(AddTextFieldElement());

            var hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(TextField));

            yield return(UIETestHelpers.ExpandTreeViewItem(hierarchyItem));

            yield return(AddVisualElement());

            var textField              = ViewportPane.documentElement[0];
            var textFieldLabel         = textField.Q <Label>();
            var visualElement          = ViewportPane.documentElement[1];
            var textFieldLabelExplorer = BuilderTestsHelper.GetLinkedExplorerItem(textFieldLabel);
            var visualElementExplorer  = BuilderTestsHelper.GetLinkedExplorerItem(visualElement);

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 visualElementExplorer.worldBound.center,
                                                                 textFieldLabelExplorer.worldBound.center));

            Assert.That(visualElement.parent, Is.EqualTo(ViewportPane.documentElement));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 textFieldLabelExplorer.worldBound.center,
                                                                 visualElementExplorer.worldBound.center));

            Assert.That(textFieldLabel.parent, Is.EqualTo(textField));
        }
        public IEnumerator NewSelectorWithNoUSSCreatesNewUSS()
        {
            AddElementCodeOnly("TestElement");

            var createSelectorField = StyleSheetsPane.Q <TextField>();

            createSelectorField.visualInput.Blur();
            Assert.That(createSelectorField.text, Is.EqualTo(BuilderConstants.ExplorerInExplorerNewClassSelectorInfoMessage));

            createSelectorField.visualInput.Focus();
            Assert.That(createSelectorField.text, Is.EqualTo("."));
            Assert.That(createSelectorField.cursorIndex, Is.EqualTo(1));

            bool hasSaveDialogBeenOpened = false;

            BuilderStyleSheetsUtilities.s_SaveFileDialogCallback = () =>
            {
                hasSaveDialogBeenOpened = true;
                return(k_TestUSSFilePath);
            };

            yield return(UIETestEvents.KeyBoard.SimulateTyping(BuilderWindow, ".new-selector"));

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

            Assert.That(hasSaveDialogBeenOpened, Is.True);

            yield return(UIETestHelpers.Pause(1));

            var unityButtonSelectors = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, ".new-selector");

            Assert.That(unityButtonSelectors.Count, Is.EqualTo(1));
        }
        public IEnumerator ClickToSelect()
        {
            const string testElementName = "test_element_name";

            AddElementCodeOnly <TextField>(testElementName);
            Selection.ClearSelection(null);

            yield return(UIETestHelpers.Pause());

            var hierarchyCreatedItem = GetHierarchyExplorerItemByElementName(testElementName);

            Assert.That(hierarchyCreatedItem, Is.Not.Null);

            var hierarchyTreeView = HierarchyPane.Q <TreeView>();

            Assert.That(hierarchyTreeView.GetSelectedItem(), Is.Null);
            Assert.That(Selection.isEmpty, Is.True);

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

            var documentElement = GetFirstDocumentElement();

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

            var selectedItem = (TreeViewItem <VisualElement>)hierarchyTreeView.GetSelectedItem();

            Assert.That(documentElement, Is.EqualTo(selectedItem.data));
            Assert.That(Selection.selection.First(), Is.EqualTo(documentElement));
        }
        public IEnumerator AddExistingUSSViaRightClickMenu()
        {
            AddElementCodeOnly("TestElement");

            var panel = BuilderWindow.rootVisualElement.panel as BaseVisualElementPanel;
            var menu  = panel.contextualMenuManager as BuilderTestContextualMenuManager;

            Assert.That(menu, Is.Not.Null);
            Assert.That(menu.menuIsDisplayed, Is.False);

            yield return(UIETestEvents.Mouse.SimulateClick(StyleSheetsPane, MouseButton.RightMouse));

            Assert.That(menu.menuIsDisplayed, Is.True);
            var existingUSS = menu.FindMenuAction(BuilderConstants.ExplorerStyleSheetsPaneAddExistingUSSMenu);

            Assert.That(existingUSS, Is.Not.Null);

            bool hasOpenDialogBeenOpened = false;

            BuilderStyleSheetsUtilities.s_OpenFileDialogCallback = () =>
            {
                hasOpenDialogBeenOpened = true;
                return(k_ColorsTestUSSPath);
            };

            existingUSS.Execute();
            Assert.That(hasOpenDialogBeenOpened, Is.True);

            yield return(UIETestHelpers.Pause(1));

            var newUSSExplorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, k_ColorsTestUSSFileName);

            Assert.That(newUSSExplorerItems.Count, Is.EqualTo(1));
        }
        public IEnumerator RemoveUSSViaRightClickMenu()
        {
            yield return(CodeOnlyAddUSSToDocument(k_ColorsTestUSSPath));

            var panel = BuilderWindow.rootVisualElement.panel as BaseVisualElementPanel;
            var menu  = panel.contextualMenuManager as BuilderTestContextualMenuManager;

            Assert.That(menu, Is.Not.Null);
            Assert.That(menu.menuIsDisplayed, Is.False);

            var newUSSExplorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, k_ColorsTestUSSFileName);

            Assert.That(newUSSExplorerItems.Count, Is.EqualTo(1));

            yield return(UIETestEvents.Mouse.SimulateClick(newUSSExplorerItems[0], MouseButton.RightMouse));

            Assert.That(menu.menuIsDisplayed, Is.True);
            var removeUSS = menu.FindMenuAction(BuilderConstants.ExplorerStyleSheetsPaneRemoveUSSMenu);

            Assert.That(removeUSS, Is.Not.Null);
            Assert.That(removeUSS.status, Is.EqualTo(DropdownMenuAction.Status.Normal));

            bool checkedForUnsavedChanges = false;

            BuilderStyleSheetsUtilities.s_CheckForUnsavedChanges = BuilderPaneWindow => checkedForUnsavedChanges = true;
            removeUSS.Execute();
            Assert.That(checkedForUnsavedChanges, Is.True);

            yield return(UIETestHelpers.Pause(1));

            newUSSExplorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, k_ColorsTestUSSFileName);
            Assert.That(newUSSExplorerItems.Count, Is.EqualTo(0));
        }
        public IEnumerator AddExistingUSSViaPlusMenu()
        {
            AddElementCodeOnly("TestElement");

            var addMenu      = StyleSheetsPane.Q <ToolbarMenu>("add-uss-menu");
            var addMenuItems = addMenu.menu.MenuItems();

            Assert.AreEqual(addMenuItems.Count, 2);
            var actionMenuItem = addMenuItems[1] as DropdownMenuAction;

            Assert.AreEqual(actionMenuItem.name, BuilderConstants.ExplorerStyleSheetsPaneAddExistingUSSMenu);

            bool hasOpenDialogBeenOpened = false;

            BuilderStyleSheetsUtilities.s_OpenFileDialogCallback = () =>
            {
                hasOpenDialogBeenOpened = true;
                return(k_ColorsTestUSSPath);
            };

            actionMenuItem.Execute();
            Assert.That(hasOpenDialogBeenOpened, Is.True);

            yield return(UIETestHelpers.Pause(1));

            var newUSSExplorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, k_ColorsTestUSSFileName);

            Assert.That(newUSSExplorerItems.Count, Is.EqualTo(1));
        }
        public IEnumerator UnloadSubDocumentsOnFileOpen()
        {
            var panel = builder.rootVisualElement.panel as BaseVisualElementPanel;
            var menu  = panel.contextualMenuManager as BuilderTestContextualMenuManager;

            Assert.That(menu, Is.Not.Null);
            Assert.That(menu.menuIsDisplayed, Is.False);

            // Load Test UXML File
            yield return(LoadTestUXMLDocument(k_ParentTestUXMLPath));

            // Open child
            string nameOfChildSubDocument = "#ChildTestUXMLDocument";
            var    childInHierarchy       = BuilderTestsHelper.GetExplorerItemsWithName(hierarchy, nameOfChildSubDocument);

            // Simulate right click on child TemplateContainer
            yield return(UIETestEvents.Mouse.SimulateClick(childInHierarchy[0], MouseButton.RightMouse));

            Assert.That(menu.menuIsDisplayed, Is.True);

            var subdocumentClick = menu.FindMenuAction(BuilderConstants.ExplorerHierarchyPaneOpenSubDocument);

            Assert.That(subdocumentClick, Is.Not.Null);

            subdocumentClick.Execute();
            yield return(UIETestHelpers.Pause(1));

            // Main part: opening NewDocument makes it the only document
            Assert.AreEqual(2, builder.document.openUXMLFiles.Count);
            builder.rootVisualElement.Q <BuilderToolbar>().NewDocument();
            Assert.AreEqual(1, builder.document.openUXMLFiles.Count);
        }
Beispiel #14
0
        public IEnumerator EnsureChangesToUXMLMadeExternallyAreReloaded()
        {
            const string testLabelName = "externally-added-label";

            CreateTestUXMLFile();

            yield return(LoadTestUXMLDocument(k_TestUXMLFilePath));

            var assetCount = builder.document.visualTreeAsset.visualElementAssets.Count;

            yield return(AddTextFieldElement());

            Assert.AreEqual(assetCount + 1, builder.document.visualTreeAsset.visualElementAssets.Count);

            // Save
            builder.document.SaveUnsavedChanges(k_TestUXMLFilePath, false);

            var vtaCopy    = builder.document.visualTreeAsset.DeepCopy();
            var newElement = new VisualElementAsset(typeof(Label).ToString());

            VisualTreeAssetUtilities.InitializeElement(newElement);
            newElement.AddProperty("name", testLabelName);
            vtaCopy.AddElement(vtaCopy.GetRootUXMLElement(), newElement);
            var vtaCopyUXML = vtaCopy.GenerateUXML(k_TestUXMLFilePath, true);

            File.WriteAllText(k_TestUXMLFilePath, vtaCopyUXML);
            AssetDatabase.ImportAsset(k_TestUXMLFilePath, ImportAssetOptions.ForceUpdate);

            yield return(UIETestHelpers.Pause(1));

            // Make sure the UI Builder reloaded.
            var label = builder.documentRootElement.Q <Label>(testLabelName);

            Assert.NotNull(label);
        }
Beispiel #15
0
        public IEnumerator DragStylePillToHierarchy()
        {
            AddElementCodeOnly();

            // Ensure we can add selectors.
            yield return(EnsureSelectorsCanBeAddedAndReloadBuilder());

            yield return(AddSelector(TestSelectorName));

            var createdSelector = GetStyleSelectorNodeWithName(TestSelectorName);

            var hierarchyCreatedItem = GetFirstExplorerVisualElementNode(nameof(VisualElement));

            yield return(UIETestHelpers.Pause(1));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder,
                                                                 createdSelector.Q <Label>().worldBound.center,
                                                                 hierarchyCreatedItem.worldBound.center));

            var documentElement =
                (VisualElement)hierarchyCreatedItem.GetProperty(BuilderConstants.ElementLinkedDocumentVisualElementVEPropertyName);

            Assert.That(documentElement.classList.Count, Is.EqualTo(1));
            Assert.That(documentElement.classList[0], Is.EqualTo(TestSelectorName.TrimStart('.')));
        }
        public IEnumerator ReparentFlowWhenDraggingOntoCSharpTypeElement()
        {
            AddElementCodeOnly <TextField>();
            AddElementCodeOnly();
            yield return(UIETestHelpers.Pause());

            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();
            AddElementCodeOnly <TextField>();
            AddElementCodeOnly();
            yield return(UIETestHelpers.Pause());

            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>());
        }
Beispiel #17
0
        public IEnumerator DragStylePillOntoTemplateElementInHierarchy()
        {
            AddElementCodeOnly <TextField>();

            // Ensure we can add selectors.
            yield return(EnsureSelectorsCanBeAddedAndReloadBuilder());

            yield return(AddSelector(TestSelectorName));

            var createdSelector = GetStyleSelectorNodeWithName(TestSelectorName);

            yield return(UIETestHelpers.Pause(1));

            var hierarchyTreeView = hierarchy.Q <TreeView>();

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

            var textFieldLabel = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(Label)).Q <Label>();

            yield return(UIETestHelpers.Pause(1));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder,
                                                                 createdSelector.Q <Label>().worldBound.center,
                                                                 textFieldLabel.worldBound.center));

            var documentElement = GetFirstDocumentElement();

            Assert.That(documentElement.classList, Is.Not.Contain(TestSelectorName.TrimStart('.')));
        }
Beispiel #18
0
            public static IEnumerator SimulateMouseEvent(EditorWindow window, EventType eventType, Vector2 position, MouseButton button = MouseButton.LeftMouse, EventModifiers modifiers = EventModifiers.None)
            {
                var mouseEvent = MakeEvent(eventType, position, button, modifiers);

                window.rootVisualElement.SendEvent(mouseEvent);
                yield return(UIETestHelpers.Pause());
            }
        public IEnumerator CSharpTypeTemplateChildrenMustBeGrayedOutAndNotEditable()
        {
            yield return(AddTextFieldElement());

            var hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(TextField));

            yield return(UIETestHelpers.ExpandTreeViewItem(hierarchyItem));

            var textFieldDocumentElement = GetFirstDocumentElement();

            Assert.That(textFieldDocumentElement.childCount, Is.GreaterThan(0));
            BuilderExplorerItem lastChild = null;

            foreach (var child in textFieldDocumentElement.Children())
            {
                lastChild = BuilderTestsHelper.GetLinkedExplorerItem(child);
                Assert.That(lastChild.row().classList, Contains.Item(BuilderConstants.ExplorerItemHiddenClassName));
            }

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

            InspectorPane.Query <ToggleButtonStrip>().ForEach(toggleButtonStrip =>
            {
                Assert.That(toggleButtonStrip.enabledInHierarchy, Is.False);
            });

            InspectorPane.Query <PercentSlider>().ForEach(percentSlider =>
            {
                Assert.That(percentSlider.enabledInHierarchy, Is.False);
            });
        }
Beispiel #20
0
            public static IEnumerator SimulateMouseMove(EditorWindow window, Vector2 positionFrom, Vector2 positionTo, MouseButton button = MouseButton.LeftMouse, EventModifiers modifiers = EventModifiers.None)
            {
                const int dragSamples     = 10;
                const int moveFramesDelay = 1;
                var       dragDistance    = Vector2.Distance(positionFrom, positionTo);
                var       dragSpeed       = Mathf.Max(1f, dragDistance / dragSamples);

                var normalizedDirection  = (positionTo - positionFrom).normalized;
                var currentMousePosition = positionFrom;

                do
                {
                    currentMousePosition += dragSpeed * normalizedDirection;
                    var moveEvt = new Event
                    {
                        type          = EventType.MouseMove,
                        mousePosition = currentMousePosition,
                        delta         = normalizedDirection,
                        button        = (int)button,
                        modifiers     = modifiers
                    };

                    window.rootVisualElement.SendEvent(UIETestEvents.MakeEvent(moveEvt));
                    yield return(UIETestHelpers.Pause(moveFramesDelay));
                } while (Vector2.Distance(currentMousePosition, positionTo) > 1f);
            }
Beispiel #21
0
        IEnumerator CheckStyleToggleFieldValue <TField>(string styleName, string newValue, bool useContains = false) where TField : BaseField <string>, IToggleButtonStrip
        {
            var styleRow = inspector.styleFields.m_StyleFields[styleName].First();
            var field    = styleRow.Q <TField>();
            var button   = field.Q <Button>(newValue);

            var foldout = button.GetFirstAncestorOfType <PersistedFoldout>();

            foldout.value = true;
            yield return(UIETestHelpers.Pause());

            var scrollView = button.GetFirstAncestorOfType <ScrollView>();

            scrollView.ScrollTo(button);
            yield return(UIETestHelpers.Pause());

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

            if (useContains)
            {
                Assert.IsTrue(field.value.Contains(newValue));
            }
            else
            {
                Assert.AreEqual(newValue, field.value);
            }
        }
Beispiel #22
0
        public static IEnumerator ExecuteCommand(EditorWindow window, Command command)
        {
            var evt = MakeCommandEvent(EventType.ExecuteCommand, command.ToString());

            window.rootVisualElement.SendEvent(evt);
            yield return(UIETestHelpers.Pause());
        }
Beispiel #23
0
        public IEnumerator HasVariableIndicator()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            yield return(UIETestHelpers.Pause(1));

            HierarchyPane.elementHierarchyView.ExpandAllChildren();
            StyleSheetsPane.elementHierarchyView.ExpandAllChildren();

            yield return(UIETestHelpers.Pause(1));

            // Select test-selector-1
            var selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

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

            var textFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Text")).First();

            textFoldout.value = true;

            var colorField = FindStyleField(textFoldout, "Color");

            Assert.IsTrue(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableClassName));

            var sizeField = FindStyleField(textFoldout, "Size");

            Assert.IsFalse(sizeField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableClassName));

            yield return(null);
        }
Beispiel #24
0
        protected IEnumerator AddSelector(string selectorName)
        {
            // TODO: No idea why but the artificial way of adding selectors with AddSelector() produces
            // selector elements that have no layout. I don't know why they don't layout even
            // though they are part of the hierarchy and have a panel! The Inspector remains blank because
            // it needs elements to be layed out.

            var builderWindow = BuilderWindow;

            var inputField = StyleSheetsPane.Q <TextField>(className: BuilderNewSelectorField.s_TextFieldUssClassName);

            inputField.visualInput.Focus();

            // Make
            yield return(UIETestEvents.KeyBoard.SimulateTyping(builderWindow, selectorName));

            // TODO: I noticed many times the same key events being sent again (twice).
            yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builderWindow, KeyCode.Return));

            // TODO: This does not always fire. Most of the time, the Blur event never makes
            // it to the control.
            inputField.visualInput.Blur();

            yield return(UIETestHelpers.Pause(1));
        }
        public IEnumerator SelectorCopyPasteDuplicateDelete()
        {
            yield return(AddSelector(TestSelectorName));

            var explorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, TestSelectorName);

            Assert.That(explorerItems.Count, Is.EqualTo(1));

            yield return(UIETestEvents.Mouse.SimulateClick(explorerItems[0]));

            // Duplicate
            yield return(UIETestEvents.ExecuteCommand(BuilderWindow, UIETestEvents.Command.Duplicate));

            explorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, TestSelectorName);
            Assert.That(explorerItems.Count, Is.EqualTo(2));

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

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

            explorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, TestSelectorName);
            Assert.That(explorerItems.Count, Is.EqualTo(3));

            // Delete
            yield return(UIETestEvents.KeyBoard.SimulateKeyDown(BuilderWindow, KeyCode.Delete));

            yield return(UIETestHelpers.Pause(1));

            explorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, TestSelectorName);
            Assert.That(explorerItems.Count, Is.EqualTo(2));
        }
Beispiel #26
0
        public IEnumerator ZoomWithMouseScrollAndRightClick()
        {
            var toolbar      = ViewportPane.Q <BuilderToolbar>();
            var zoomMenuItem = toolbar.Query <ToolbarMenu>().Where(menu => menu.Q <TextElement>().text == "100%").First();

            Assert.That(zoomMenuItem, Is.Not.Null);

            // Zoom With Scroll Wheel
            yield return(UIETestEvents.Mouse.SimulateClick(ViewportPane));

            yield return(UIETestEvents.Mouse.SimulateScroll(ViewportPane, Vector2.one * 100, ViewportPane.worldBound.center));

            yield return(UIETestEvents.Mouse.SimulateMouseEvent(BuilderWindow,
                                                                EventType.MouseDown,
                                                                ViewportPane.worldBound.center,
                                                                MouseButton.RightMouse,
                                                                EventModifiers.Alt));

            yield return(UIETestEvents.Mouse.SimulateMouseMove(BuilderWindow,
                                                               ViewportPane.worldBound.center,
                                                               ViewportPane.worldBound.center + Vector2.one * 20,
                                                               MouseButton.RightMouse,
                                                               EventModifiers.Alt));

            yield return(UIETestHelpers.Pause(1));

            Assert.That(zoomMenuItem.text, Is.Not.EqualTo("100%"));
        }
        public IEnumerator SelectorNameValidation()
        {
            var createSelectorField = StyleSheetsPane.Q <TextField>();

            createSelectorField.visualInput.Focus();
            yield return(UIETestEvents.KeyBoard.SimulateTyping(BuilderWindow, "invalid%%selector@$name"));

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

            yield return(UIETestHelpers.Pause(2));

            Assert.That(createSelectorField.text, Is.EqualTo(".invalid%%selector@$name"));

            // 1 because title is BuilderExplorerItem as well. So 1 means empty in this context
            Assert.That(StyleSheetsPane.Query <BuilderExplorerItem>().ToList().Count, Is.EqualTo(1));

            // Test that we haven't lost field focus and can type valid name.
            yield return(UIETestEvents.KeyBoard.SimulateTyping(BuilderWindow, TestSelectorName));

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

            var explorerItems = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, TestSelectorName);

            Assert.That(explorerItems.Count, Is.EqualTo(1));
        }
Beispiel #28
0
        public IEnumerator DragStylePillToViewport()
        {
            AddElementCodeOnly <TextField>();

            // Ensure we can add selectors.
            yield return(EnsureSelectorsCanBeAddedAndReloadBuilder());

            yield return(AddSelector(TestSelectorName + " " + TestSelectorName2));

            var createdSelector = GetStyleSelectorNodeWithName(TestSelectorName);

            // Now it's safe to get a reference to an element in the canvas.
            var documentElement = GetFirstDocumentElement();

            yield return(UIETestHelpers.Pause(1));

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder,
                                                                 createdSelector.Q <Label>().worldBound.center,
                                                                 documentElement.worldBound.center));

            var currentClassCount = documentElement.classList.Count;

            Assert.That(documentElement.classList, Contains.Item(TestSelectorName.TrimStart('.')));

            var secondClassNameLabel = BuilderTestsHelper.GetLabelWithName(createdSelector, TestSelectorName2);

            yield return(UIETestHelpers.Pause(100));

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

            Assert.That(documentElement.classList.Count, Is.EqualTo(currentClassCount + 1));
            Assert.That(documentElement.classList, Contains.Item(TestSelectorName2.TrimStart('.')));
        }
        protected IEnumerator EnsureSelectorsCanBeAddedAndReloadBuilder()
        {
            var builderWindow = this.builder;

            // Need to have at least one element in the asset.
            if (builderWindow.document.visualTreeAsset.IsEmpty())
            {
                AddElementCodeOnly("TestElement");
            }

            yield return(UIETestHelpers.Pause(1));

            // If the builder currently has no stylesheets,
            // we add the test one so we can add selectors.
            if (builderWindow.document.firstStyleSheet == null)
            {
                // Make sure there's no modified version in memory.
                AssetDatabase.ImportAsset(
                    k_TestEmptyUSSFilePath,
                    ImportAssetOptions.ForceUpdate | ImportAssetOptions.ForceSynchronousImport);

                yield return(UIETestHelpers.Pause(1));

                BuilderStyleSheetsUtilities.AddUSSToAsset(builderWindow, k_TestEmptyUSSFilePath);
            }

            yield return(UIETestHelpers.Pause(1));

            styleSheetsPane.elementHierarchyView.ExpandRootItems();
            hierarchy.elementHierarchyView.ExpandRootItems();
        }
Beispiel #30
0
        public IEnumerator MultipleSelectedElementsHaveNoBlueBorderOrHeaderDisplayed()
        {
            const string buttonOneName = "ButtonOne";
            const string buttonTwoName = "ButtonTwo";

            AddElementCodeOnly <Button>(buttonOneName);
            AddElementCodeOnly <Button>(buttonTwoName);
            var selector = ViewportPane.Q("selection-indicator");
            var header   = ViewportPane.Q("selection-indicator").Q("header");

            BuilderWindow.selection.ClearSelection(null);
            yield return(UIETestHelpers.Pause());

            Assert.That(selector.resolvedStyle.display, Is.EqualTo(DisplayStyle.None));
            Assert.That(header.layout.size.magnitude, Is.Zero);

            BuilderWindow.selection.AddToSelection(null, ViewportPane.Q(buttonOneName));
            yield return(UIETestHelpers.Pause());

            Assert.That(selector.resolvedStyle.display, Is.EqualTo(DisplayStyle.Flex));
            Assert.That(header.layout.size.magnitude, Is.Not.Zero);

            BuilderWindow.selection.AddToSelection(null, ViewportPane.Q(buttonTwoName));
            yield return(UIETestHelpers.Pause());

            Assert.That(selector.resolvedStyle.display, Is.EqualTo(DisplayStyle.None));
            Assert.That(header.layout.size.magnitude, Is.Zero);
        }