public IEnumerator SelectingStyleSelectorOrStyleSheetDeselectsHierarchyItems()
        {
            AddElementCodeOnly();
            yield return(EnsureSelectorsCanBeAddedAndReloadBuilder());

            yield return(AddSelector(StyleSheetsPaneTests.TestSelectorName));

            // Deselect
            yield return(UIETestEvents.Mouse.SimulateClick(hierarchy));

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

            Assert.That(hierarchyTreeView.GetSelectedItem(), Is.Null);

            // Select hierarchy item
            var hierarchyItem = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, nameof(VisualElement));

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

            Assert.That(hierarchyTreeView.GetSelectedItem(), Is.Not.Null);

            // Select test selector
            var selector = BuilderTestsHelper.GetExplorerItemWithName(styleSheetsPane, StyleSheetsPaneTests.TestSelectorName);

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

            Assert.That(hierarchyTreeView.GetSelectedItem(), Is.Null);

            // Select hierarchy item
            yield return(UIETestEvents.Mouse.SimulateClick(hierarchyItem));

            Assert.That(hierarchyTreeView.GetSelectedItem(), Is.Not.Null);

            // Select Uss file name header
            var header = BuilderTestsHelper.GetHeaderItem(styleSheetsPane);

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

            Assert.That(hierarchyTreeView.GetSelectedItem(), Is.Null);
        }
        protected IEnumerator ReturnToParentDocumentThroughEntryItem(BuilderTestContextualMenuManager menu, string parentString, string parentName = null)
        {
            // Go back to root document through 'entry' item context menu
            BuilderExplorerItem parentRoot;

            if (parentName != null)
            {
                parentRoot = BuilderTestsHelper.GetExplorerItemWithName(hierarchy, parentName);
            }
            else
            {
                parentRoot = BuilderTestsHelper.GetHeaderItem(hierarchy);
            }
            Assert.NotNull(parentRoot);
            yield return(UIETestEvents.Mouse.SimulateClick(parentRoot, MouseButton.RightMouse));

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

            var parentClick = menu.FindMenuAction(parentString);

            Assert.That(parentClick, Is.Not.Null);
            parentClick.Execute();
            yield return(UIETestHelpers.Pause(1));
        }
        public IEnumerator SubDocumentFunctionalityViaRightClickMenu()
        {
            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));

            // Check that Breadcrumbs toolbar is NOT present
            var toolbar            = viewport.Q <BuilderToolbar>();
            var breadcrumbsToolbar = toolbar.Q <Toolbar>(BuilderToolbar.BreadcrumbsToolbarName);
            var breadcrumbs        = toolbar.Q <ToolbarBreadcrumbs>(BuilderToolbar.BreadcrumbsName);

            Assert.IsNotNull(breadcrumbsToolbar);
            Assert.AreEqual((StyleEnum <DisplayStyle>)DisplayStyle.None, breadcrumbsToolbar.style.display);
            Assert.AreEqual(0, breadcrumbs.childCount);

            // Check that child is instantiated
            string nameOfChildSubDocument = "#ChildTestUXMLDocument";
            var    childInHierarchy       = BuilderTestsHelper.GetExplorerItemsWithName(hierarchy, nameOfChildSubDocument);

            Assert.AreEqual(1, childInHierarchy.Count);
            Assert.NotNull(childInHierarchy[0]);

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

            // Get parent document
            var parentRoot = BuilderTestsHelper.GetHeaderItem(hierarchy);

            Assert.NotNull(parentRoot);

            // Breadcrumbs is displaying
            Assert.AreEqual(2, breadcrumbs.childCount);
            Assert.AreEqual(breadcrumbsToolbar.style.display, (StyleEnum <DisplayStyle>)DisplayStyle.Flex);

            // Click back to get to Parent
            yield return(UIETestEvents.Mouse.SimulateClick(parentRoot, MouseButton.RightMouse));

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

            var parentTestDocumentName = "ParentTestUXMLDocument";
            var parentTestFullString   = BuilderConstants.ExplorerHierarchyReturnToParentDocument + BuilderConstants.SingleSpace + BuilderConstants.OpenBracket + parentTestDocumentName + BuilderConstants.CloseBracket;
            var parentClick            = menu.FindMenuAction(parentTestFullString);

            Assert.That(parentClick, Is.Not.Null);
            parentClick.Execute();

            yield return(UIETestHelpers.Pause(1));

            Assert.AreEqual(2, builder.documentRootElement.childCount); // test element now in test file

            Assert.AreEqual(0, breadcrumbs.childCount);
            Assert.AreEqual(breadcrumbsToolbar.style.display, (StyleEnum <DisplayStyle>)DisplayStyle.None);
        }