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)); }
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); }
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); }
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); }
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)); }