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);
            });
        }
        public IEnumerator HasVariableIndicator()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            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);
        }
        public IEnumerator SelectorToAndFromUSSConversion()
        {
            // Create and new selector and select
            yield return(AddSelector(TestSelectorName));

            var selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, TestSelectorName);

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

            // Set style
            var displayFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Display")).First();

            displayFoldout.value = true;

            var displayStrip = displayFoldout.Query <ToggleButtonStrip>().Where(t => t.label.Equals("Display")).First();

            yield return(UIETestEvents.Mouse.SimulateClick(displayStrip.Q <Button>("flex")));

            var visibilityStrip = displayFoldout.Query <ToggleButtonStrip>().Where(t => t.label.Equals("Visibility")).First();

            yield return(UIETestEvents.Mouse.SimulateClick(visibilityStrip.Q <Button>("hidden")));

            // Copy to USS
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

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

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

            // Paste from USS
            ForceNewDocument();
            BuilderEditorUtility.SystemCopyBuffer = string.Empty;
            yield return(UIETestEvents.Mouse.SimulateClick(StyleSheetsPane));

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

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

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

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

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

            // Foldout out state should be persisted, so we assume it is open already.
            displayFoldout = InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Display")).First();
            displayStrip   = displayFoldout.Query <ToggleButtonStrip>().Where(t => t.label.Equals("Display")).First();
            Assert.True(displayStrip.Q <Button>("flex").pseudoStates.HasFlag(PseudoStates.Checked));

            visibilityStrip = displayFoldout.Query <ToggleButtonStrip>().Where(t => t.label.Equals("Visibility")).First();
            Assert.True(visibilityStrip.Q <Button>("hidden").pseudoStates.HasFlag(PseudoStates.Checked));
        }
Пример #4
0
        public IEnumerator SetVariable()
        {
            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;

            // Show variable field for the Size field
            var sizeField = FindStyleField <DimensionStyleField>(textFoldout, "Size");
            var handler   = StyleVariableUtilities.GetVarHandler(sizeField);

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

            // Enter variable name
            var textField = handler.variableField.Q <TextField>();

            textField.value = k_LengthVarName;

            selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            // Click anywhere else to remove focus
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            yield return(UIETestHelpers.Pause(1));

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

            var inspector = handler.inspector;

            var styleProperty = BuilderInspectorStyleFields.GetStyleProperty(inspector.currentRule, handler.styleName);

            Assert.IsTrue(styleProperty != null && styleProperty.IsVariable());
            Assert.AreEqual(inspector.styleSheet.ReadVariable(styleProperty), k_LengthVarName);

            yield return(null);
        }
Пример #5
0
        public IEnumerator ShowHideVariableField()
        {
            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 <ColorField>(textFoldout, "Color");
            var handler    = StyleVariableUtilities.GetVarHandler(colorField);

            Assert.IsNull(handler.variableField);

            handler.ShowVariableField();

            Assert.IsTrue(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableEditingClassName));
            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.ReadOnlyStyleClassName));
            Assert.IsNotNull(handler.variableField);

            yield return(UIETestHelpers.Pause(1));

            var inputField = handler.variableField.Q(TextField.textInputUssName);

            Assert.AreEqual(handler.variableField.resolvedStyle.display, DisplayStyle.Flex);
            Assert.IsTrue(HasFocus(inputField));

            selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            // Click anywhere else to remove focus
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableEditingClassName));
            Assert.AreEqual(handler.variableField.resolvedStyle.display, DisplayStyle.None);
            yield return(null);
        }
        public IEnumerator UnsetVariable()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            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;

            // Show variable field for the Color field
            var colorField = FindStyleField <ColorField>(textFoldout, "Color");

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

            yield return(UIETestEvents.Mouse.SimulateDoubleClick(colorField.labelElement));

            yield return(UIETestHelpers.Pause(1));

            // Enter variable name
            var handler   = StyleVariableUtilities.GetVarHandler(colorField);
            var textField = handler.variableField.Q <TextField>();

            textField.value = "";

            selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);

            // Click anywhere else to remove focus
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

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

            var inspector = handler.inspector;

            var styleProperty = BuilderInspectorStyleFields.GetStyleProperty(inspector.currentRule, handler.styleName);

            Assert.IsNull(styleProperty);

            yield return(null);
        }
Пример #7
0
        public IEnumerator VisualElementArtificialSizeResetOnStyleChange()
        {
            yield return(AddVisualElement());

            var documentElement = GetFirstDocumentElement();

            Assert.That(documentElement.childCount, Is.EqualTo(1));

            // Change style.
            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;

            Assert.That(documentElement.childCount, Is.EqualTo(0));
        }
        public IEnumerator AbsolutePositionElementsCanBeMovedByClickAndDrag()
        {
            AddElementCodeOnly <Button>();
            var element = GetFirstDocumentElement();

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

            // It is important to change its Position through inspector
            InspectorPane.Query <PersistedFoldout>().Where(f => f.text.Equals("Position")).First()
            .Q <EnumField>().value = Position.Absolute;

            yield return(UIETestHelpers.Pause());

            // Moving an element a bit to trigger activation of Top and Left anchors
            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 element.worldBound.center, new Vector2(element.worldBound.center.x + k_OffsetValue,
                                                                                                        element.worldBound.center.y + k_OffsetValue)));

            var bottomAnchor = BuilderWindow.viewport.Q(null, "unity-builder-anchorer--bottom");

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

            var rightAnchor = BuilderWindow.viewport.Q(null, "unity-builder-anchorer--right");

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

            var topStyleOld    = element.resolvedStyle.top;
            var leftStyleOld   = element.resolvedStyle.left;
            var bottomStyleOld = element.resolvedStyle.bottom;
            var rightStyleOld  = element.resolvedStyle.right;

            var oldPos = element.worldBound.center;

            yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow,
                                                                 element.worldBound.center, new Vector2(element.worldBound.center.x + k_OffsetValue,
                                                                                                        element.worldBound.center.y + k_OffsetValue)));

            Assert.That(element.worldBound.center.magnitude, Is.GreaterThan(oldPos.magnitude));
            Assert.That(element.resolvedStyle.top, Is.Not.EqualTo(topStyleOld));
            Assert.That(element.resolvedStyle.left, Is.Not.EqualTo(leftStyleOld));
            Assert.That(element.resolvedStyle.bottom, Is.Not.EqualTo(bottomStyleOld));
            Assert.That(element.resolvedStyle.right, Is.Not.EqualTo(rightStyleOld));
        }
        public IEnumerator ShowHideVariableInfoPopup()
        {
            var asset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(k_NewVariableUxmlFilePath);

            BuilderWindow.LoadDocument(asset);

            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 <ColorField>(textFoldout, "Color");
            var handler    = StyleVariableUtilities.GetVarHandler(colorField);

            yield return(UIETestEvents.Mouse.SimulateClick(colorField.labelElement));

            Assert.IsTrue(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableEditingClassName));
            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.ReadOnlyStyleClassName));
            Assert.IsTrue(handler.variableInfoTooltip.visible);
            Assert.IsTrue(handler.variableInfoTooltip.IsFocused());
            Assert.IsNotNull(handler.variableInfoTooltip.currentHandler);
            Assert.AreEqual(handler.variableInfoTooltip.currentHandler, handler);

            // Click anywhere else to remove focus
            selector = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_Selector_1);
            yield return(UIETestEvents.Mouse.SimulateClick(selector));

            Assert.IsFalse(colorField.ClassListContains(BuilderConstants.InspectorLocalStyleVariableEditingClassName));
            Assert.IsFalse(handler.variableInfoTooltip.isShowing);
            Assert.IsNull(handler.variableInfoTooltip.currentHandler);
            yield return(null);
        }
Пример #10
0
        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));
        }