public IEnumerator UssCopyBufferCannotBePastedInHierarchyPane() { // Load Test UXML File yield return(LoadTestUXMLDocument(k_ChildTestUXMLPath)); yield return(null); var selector = BuilderTestsHelper.GetExplorerItemWithName(styleSheetsPane, ".unity-button"); yield return(UIETestEvents.Mouse.SimulateClick(selector)); yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Copy)); Assert.That(BuilderEditorUtility.IsUss(BuilderEditorUtility.systemCopyBuffer)); var panel = builder.rootVisualElement.panel as BaseVisualElementPanel; var menu = panel.contextualMenuManager as BuilderTestContextualMenuManager; yield return(UIETestEvents.Mouse.SimulateClick(hierarchy, MouseButton.RightMouse)); Assert.That(menu.menuIsDisplayed, Is.True); var pasteMenuItem = menu.FindMenuAction("Paste"); Assert.AreEqual(DropdownMenuAction.Status.Disabled, pasteMenuItem.status); }
// By default opens in isolation mode protected IEnumerator OpenChildTemplateContainerAsSubDocument(BuilderTestContextualMenuManager menu, string nameOfChildSubDocument, bool inPlace = false) { hierarchy.elementHierarchyView.ExpandAllItems(); // Open child var childInHierarchy = BuilderTestsHelper.GetExplorerItemsWithName(hierarchy, nameOfChildSubDocument); Assert.NotZero(childInHierarchy.Count); // Simulate right click on child TemplateContainer yield return(UIETestEvents.Mouse.SimulateClick(childInHierarchy[0], MouseButton.RightMouse)); Assert.That(menu.menuIsDisplayed, Is.True); DropdownMenuAction subdocumentClick; if (inPlace) { subdocumentClick = menu.FindMenuAction(BuilderConstants.ExplorerHierarchyPaneOpenSubDocumentInPlace); } else { subdocumentClick = menu.FindMenuAction(BuilderConstants.ExplorerHierarchyPaneOpenSubDocument); } Assert.That(subdocumentClick, Is.Not.Null); subdocumentClick.Execute(); }
public virtual void Setup() { if (EditorApplication.isPlaying) { builder = EditorWindow.GetWindow <Builder>(); } else { builder = BuilderTestsHelper.MakeNewBuilderWindow(); } selection = builder.selection; canvas = builder.rootVisualElement.Q <BuilderCanvas>(); library = builder.rootVisualElement.Q <BuilderLibrary>(); hierarchy = builder.rootVisualElement.Q <BuilderHierarchy>(); styleSheetsPane = builder.rootVisualElement.Q <BuilderStyleSheets>(); viewport = builder.rootVisualElement.Q <BuilderViewport>(); toolbar = viewport.Q <BuilderToolbar>(); inspector = builder.rootVisualElement.Q <BuilderInspector>(); if (EditorApplication.isPlaying) { return; } BuilderProjectSettings.Reset(); ForceNewDocument(); var createSelectorField = styleSheetsPane.Q <TextField>(); createSelectorField.visualInput.Blur(); library.SetViewMode(BuilderLibrary.LibraryViewMode.TreeView); }
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 CreateSelectorFieldBehaviour() { 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)); yield return(UIETestEvents.KeyBoard.SimulateTyping(BuilderWindow, TestSelectorName)); yield return(UIETestEvents.KeyBoard.SimulateKeyDown(BuilderWindow, KeyCode.Return)); createSelectorField.visualInput.Blur(); var newSelector = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, TestSelectorName); Assert.That(newSelector, Is.Not.Null); createSelectorField.visualInput.Focus(); yield return(UIETestEvents.KeyBoard.SimulateTyping(BuilderWindow, TestSelectorName2)); var addButton = StyleSheetsPane.Query <Button>().Where(b => b.text.Equals("Add")).First(); yield return(UIETestEvents.Mouse.SimulateClick(addButton)); newSelector = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, TestSelectorName2); Assert.That(newSelector, Is.Not.Null); }
public IEnumerator DisplayNameStyleAndRenameOption() { const string testItemName = "test_name"; AddElementCodeOnly(); var hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(VisualElement)); var documentElement = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItem); var nameLabel = hierarchyItem.Q <Label>(className: BuilderConstants.ExplorerItemLabelClassName); Assert.That(nameLabel.text, Is.EqualTo(nameof(VisualElement))); Assert.That(nameLabel.classList, Contains.Item(BuilderConstants.ElementTypeClassName)); yield return(UIETestEvents.Mouse.SimulateDoubleClick(hierarchyItem)); yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, testItemName)); yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builder, KeyCode.Return)); Assert.That(documentElement.name, Is.EqualTo(testItemName)); hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, BuilderConstants.UssSelectorNameSymbol + testItemName); nameLabel = hierarchyItem.Q <Label>(className: BuilderConstants.ExplorerItemLabelClassName); Assert.That(nameLabel.classList, Contains.Item(BuilderConstants.ElementNameClassName)); hierarchyItem = GetFirstExplorerItem(); yield return(UIETestEvents.Mouse.SimulateDoubleClick(hierarchyItem)); yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, "invalid&name")); yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builder, KeyCode.Return)); Assert.That(documentElement.name, Is.EqualTo(testItemName)); }
public IEnumerator 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 OutsideClickWillCommitRename() { const string testItemName = "test_name"; yield return(AddVisualElement()); var hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(VisualElement)); var documentElement = BuilderTestsHelper.GetLinkedDocumentElement(hierarchyItem); var nameLabel = hierarchyItem.Q <Label>(className: BuilderConstants.ExplorerItemLabelClassName); Assert.That(nameLabel.text, Is.EqualTo(nameof(VisualElement))); Assert.That(nameLabel.classList, Contains.Item(BuilderConstants.ElementTypeClassName)); yield return(UIETestEvents.Mouse.SimulateDoubleClick(hierarchyItem)); yield return(UIETestEvents.KeyBoard.SimulateTyping(BuilderWindow, testItemName)); yield return(UIETestEvents.Mouse.SimulateClick(ViewportPane)); Assert.That(documentElement.name, Is.EqualTo(testItemName)); hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, BuilderConstants.UssSelectorNameSymbol + testItemName); nameLabel = hierarchyItem.Q <Label>(className: BuilderConstants.ExplorerItemLabelClassName); Assert.That(nameLabel.classList, Contains.Item(BuilderConstants.ElementNameClassName)); }
public IEnumerator ReparentFlowWhenDraggingOntoCSharpTypeElement() { yield return(AddTextFieldElement()); yield return(AddVisualElement()); var textFieldItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(TextField)); var visualElementItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(VisualElement)); var visualElementDocItem = BuilderTestsHelper.GetLinkedDocumentElement(visualElementItem); yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow, visualElementItem.worldBound.center, textFieldItem.worldBound.center)); Assert.That(visualElementDocItem.parent, Is.InstanceOf <TextField>()); ForceNewDocument(); yield return(AddTextFieldElement()); yield return(AddVisualElement()); textFieldItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(TextField)); visualElementItem = BuilderTestsHelper.GetExplorerItemWithName(HierarchyPane, nameof(VisualElement)); visualElementDocItem = BuilderTestsHelper.GetLinkedDocumentElement(visualElementItem); var textFieldDocItem = BuilderTestsHelper.GetLinkedDocumentElement(textFieldItem); yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow, visualElementItem.worldBound.center, textFieldDocItem.worldBound.center)); Assert.That(visualElementDocItem.parent, Is.InstanceOf <TextField>()); }
public IEnumerator PastingAddsSelectorToActiveStyleSheet() { yield return(CodeOnlyAddUSSToDocument(k_ColorsTestUSSPath)); yield return(CodeOnlyAddUSSToDocument(k_LayoutTestUSSPath)); // Copy Selector. var unityButtonSelectors = BuilderTestsHelper.GetExplorerItemsWithName(StyleSheetsPane, ".unity-button"); yield return(UIETestEvents.Mouse.SimulateClick(unityButtonSelectors[0])); yield return(UIETestEvents.ExecuteCommand(BuilderWindow, UIETestEvents.Command.Copy)); // Activate the second StyleSheet. var layoutExplorerItem = BuilderTestsHelper.GetExplorerItemWithName(StyleSheetsPane, k_LayoutTestUSSFileName); Assert.That(layoutExplorerItem, Is.Not.Null); var layoutStyleSheet = GetStyleSheetFromExplorerItem(layoutExplorerItem, k_LayoutTestUSSPath); var previousNumberOfSelectors = layoutStyleSheet.complexSelectors.Length; BuilderStyleSheetsUtilities.SetActiveUSS(Selection, StyleSheetsPane.paneWindow, layoutStyleSheet); Assert.That(BuilderWindow.document.activeStyleSheet, Is.EqualTo(layoutStyleSheet)); // Paste Selector. yield return(UIETestEvents.ExecuteCommand(BuilderWindow, UIETestEvents.Command.Paste)); Assert.That(layoutStyleSheet.complexSelectors.Length, Is.EqualTo(previousNumberOfSelectors + 2)); // 2 for the extra fake rule added to the stylesheet for the pasted selector. see BuilderSharedStyles.CreateNewSelectorElement }
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 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 CheckAllTogglesForOverridesInUss() { yield return(LoadTestUXMLDocument(k_AllStylePropertiesTestFilePath)); yield return(null); var selector = BuilderTestsHelper.GetExplorerItemWithName(styleSheetsPane, ".all-properties-set"); yield return(UIETestEvents.Mouse.SimulateClick(selector)); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("display", "flex")); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("visibility", "visible")); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("overflow", "visible")); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("flex-direction", "row-reverse")); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("flex-wrap", "nowrap")); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("align-items", "flex-end")); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("justify-content", "space-between")); // Text align is split in two strips yield return(CheckStyleToggleFieldValue <TextAlignStrip>("-unity-text-align", "lower", true)); yield return(CheckStyleToggleFieldValue <TextAlignStrip>("-unity-text-align", "right", true)); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("white-space", "normal")); yield return(CheckStyleToggleFieldValue <ToggleButtonStrip>("-unity-background-scale-mode", "scale-to-fit")); }
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 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 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 CSharpTypeTemplateChildrenMustBeGrayedOutAndNotEditable() { AddElementCodeOnly <TextField>(); var hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, 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)); inspector.Query <ToggleButtonStrip>().ForEach(toggleButtonStrip => { Assert.That(toggleButtonStrip.enabledInHierarchy, Is.False); }); inspector.Query <PercentSlider>().ForEach(percentSlider => { Assert.That(percentSlider.enabledInHierarchy, Is.False); }); }
public virtual void Setup() { if (EditorApplication.isPlaying) { BuilderWindow = EditorWindow.GetWindow <Builder>(); } else { BuilderWindow = BuilderTestsHelper.MakeNewBuilderWindow(); } Selection = BuilderWindow.selection; Canvas = BuilderWindow.rootVisualElement.Q <BuilderCanvas>(); LibraryPane = BuilderWindow.rootVisualElement.Q <BuilderLibrary>(); HierarchyPane = BuilderWindow.rootVisualElement.Q <BuilderHierarchy>(); StyleSheetsPane = BuilderWindow.rootVisualElement.Q <BuilderStyleSheets>(); ViewportPane = BuilderWindow.rootVisualElement.Q <BuilderViewport>(); InspectorPane = BuilderWindow.rootVisualElement.Q <BuilderInspector>(); if (EditorApplication.isPlaying) { return; } BuilderProjectSettings.Reset(); ForceNewDocument(); var createSelectorField = StyleSheetsPane.Q <TextField>(); createSelectorField.visualInput.Blur(); LibraryPane.SetViewMode(BuilderLibrary.LibraryViewMode.TreeView); }
public IEnumerator DragOntoHierarchyElementToCreateAsSibling() { AddElementCodeOnly(); AddElementCodeOnly(); // Set 500% zoom so we also test that element gets dragged into Hierarchy and not the Canvas (behind the Hierarchy). viewport.zoomScale = 5f; viewport.contentOffset = new Vector2(-400, 0); var firstVisualElementItem = GetFirstExplorerItem(); yield return(SelectLibraryTreeItemWithName("Text Field")); var textFieldLibrary = BuilderTestsHelper.GetLabelWithName(library, "Text Field"); var veBottomPosition = new Vector2(firstVisualElementItem.worldBound.center.x, firstVisualElementItem.worldBound.yMin); yield return(UIETestEvents.Mouse.SimulateMouseEvent(builder, EventType.MouseDown, textFieldLibrary.worldBound.center)); yield return(UIETestEvents.Mouse.SimulateMouseMove(builder, textFieldLibrary.worldBound.center, firstVisualElementItem.worldBound.center)); yield return(UIETestEvents.Mouse.SimulateMouseMove(builder, firstVisualElementItem.worldBound.center, veBottomPosition)); yield return(UIETestEvents.Mouse.SimulateMouseEvent(builder, EventType.MouseUp, veBottomPosition)); Assert.That(viewport.documentRootElement.childCount, Is.EqualTo(3)); Assert.NotNull(viewport.documentRootElement.Q <TextField>()); }
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 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 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 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 StandardShortCuts() { yield return(AddVisualElement()); var explorerItems = BuilderTestsHelper.GetExplorerItems(hierarchy); Assert.That(explorerItems.Count, Is.EqualTo(1)); yield return(UIETestEvents.Mouse.SimulateClick(explorerItems[0])); // Rename const string renameString = "renameString"; yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Rename)); yield return(UIETestEvents.KeyBoard.SimulateTyping(builder, renameString)); yield return(UIETestEvents.Mouse.SimulateClick(viewport)); explorerItems = BuilderTestsHelper.GetExplorerItems(hierarchy); var explorerItemLabel = explorerItems[0].Q <Label>(); Assert.That(explorerItemLabel.text, Is.EqualTo("#" + renameString)); yield return(UIETestEvents.Mouse.SimulateClick(explorerItems[0])); // Duplicate yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Duplicate)); explorerItems = BuilderTestsHelper.GetExplorerItems(hierarchy); Assert.That(explorerItems.Count, Is.EqualTo(2)); // Copy/Paste yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Copy)); yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Paste)); explorerItems = BuilderTestsHelper.GetExplorerItems(hierarchy); Assert.That(explorerItems.Count, Is.EqualTo(3)); // Delete yield return(UIETestEvents.KeyBoard.SimulateKeyDown(builder, KeyCode.Delete)); explorerItems = BuilderTestsHelper.GetExplorerItems(hierarchy); Assert.That(explorerItems.Count, Is.EqualTo(2)); // Pasted as children of the parent of the currently selected element. AddElementCodeOnly <TextField>(); var textField = viewport.documentRootElement.Q <TextField>(); Assert.That(textField.childCount, Is.EqualTo(2)); yield return(UIETestEvents.ExecuteCommand(builder, UIETestEvents.Command.Paste)); Assert.That(textField.childCount, Is.EqualTo(2)); }
protected IEnumerator AddElement(string elementLabel) { var label = BuilderTestsHelper.GetLabelWithName(LibraryPane, elementLabel); yield return(UIETestEvents.Mouse.SimulateDragAndDrop(BuilderWindow, label.worldBound.center, HierarchyPane.worldBound.center)); yield return(UIETestHelpers.Pause(1)); }
public IEnumerator CanDoubleClickToCreateNewElement() { Assert.That(viewport.documentRootElement.childCount, Is.EqualTo(0)); var label = BuilderTestsHelper.GetLabelWithName(library, nameof(VisualElement)); Assert.That(label, Is.Not.Null); yield return(UIETestEvents.Mouse.SimulateDoubleClick(label)); Assert.That(viewport.documentRootElement.childCount, Is.EqualTo(1)); }