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 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()); }
protected IEnumerator CodeOnlyAddUSSToDocument(string path) { var builderWindow = BuilderWindow; // Need to have at least one element in the asset. if (builderWindow.document.visualTreeAsset.IsEmpty()) { AddElementCodeOnly("TestElement"); } 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.ExpandAllChildren(); HierarchyPane.elementHierarchyView.ExpandAllChildren(); }
protected IEnumerator EnsureSelectorsCanBeAddedAndReloadBuilder() { var builderWindow = BuilderWindow; // 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.ExpandAllChildren(); HierarchyPane.elementHierarchyView.ExpandAllChildren(); }
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)); }
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('.'))); }
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>()); }
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('.'))); }
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 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 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 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); }
public static IEnumerator ExecuteCommand(EditorWindow window, Command command) { var evt = MakeCommandEvent(EventType.ExecuteCommand, command.ToString()); window.rootVisualElement.SendEvent(evt); yield return(UIETestHelpers.Pause()); }
public IEnumerator CreateTemplateInstancesFromUXML() { var testUXMLTreeViewItem = GetTestAssetsUXMLFileNode(); var libraryTreeView = library.Q <TreeView>(); yield return(libraryTreeView.SelectAndScrollToItemWithId(testUXMLTreeViewItem.id)); yield return(UIETestHelpers.Pause()); var testUXMLLabel = libraryTreeView.Query <Label>(null, "unity-builder-library__tree-item-label") .Where(label => label.text.Equals(k_TestUXMLFileName)).ToList().First(); Assert.That(testUXMLLabel, Is.Not.Null); yield return(UIETestEvents.Mouse.SimulateDoubleClick(testUXMLLabel)); yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder, testUXMLLabel.worldBound.center, hierarchy.worldBound.center)); Assert.That(viewport.documentRootElement.childCount, Is.EqualTo(2)); foreach (var child in viewport.documentRootElement.Children()) { Assert.That(child, Is.TypeOf <TemplateContainer>()); } }
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); }
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('.'))); }
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 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('.'))); }
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 SelectorNameValidation() { yield return(EnsureSelectorsCanBeAddedAndReloadBuilder()); var createSelectorField = styleSheetsPane.Q <TextField>(); createSelectorField.visualInput.Focus(); yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, "invalid%%selector@$name")); yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builder, 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(builder, TestSelectorName)); yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builder, KeyCode.Return)); var explorerItems = BuilderTestsHelper.GetExplorerItemsWithName(styleSheetsPane, TestSelectorName); Assert.That(explorerItems.Count, Is.EqualTo(1)); }
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 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); }
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); }
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 = hierarchy.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 DraggingChildElementsOfATemplateShouldNotWork() { AddElementCodeOnly <TextField>(); AddElementCodeOnly(); var hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(TextField)); yield return(UIETestHelpers.ExpandTreeViewItem(hierarchyItem)); yield return(UIETestHelpers.Pause()); var textField = viewport.documentRootElement[0]; var textFieldLabel = textField.Q <Label>(); var visualElement = viewport.documentRootElement[1]; var textFieldLabelExplorer = BuilderTestsHelper.GetLinkedExplorerItem(textFieldLabel); var visualElementExplorer = BuilderTestsHelper.GetLinkedExplorerItem(visualElement); yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder, visualElementExplorer.worldBound.center, textFieldLabelExplorer.worldBound.center)); Assert.That(visualElement.parent, Is.EqualTo(viewport.documentRootElement)); yield return(UIETestEvents.Mouse.SimulateDragAndDrop(builder, textFieldLabelExplorer.worldBound.center, visualElementExplorer.worldBound.center)); Assert.That(textFieldLabel.parent, Is.EqualTo(textField)); }
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(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 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); }
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); } }
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 static IEnumerator SimulateTyping(VisualElement visualElement, string text) { foreach (var character in text) { var evt = MakeEvent(EventType.KeyDown, character); visualElement.SendEvent(evt); } yield return(UIETestHelpers.Pause()); }