public async Task HasNoItemsExpanderVisibility_SetOnTreeView_ChangesVisibiliyOnExpanders(Visibility visibility)
    {
        await using var recorder = new TestRecorder(App);

        var treeView = await LoadXaml <TreeView>($@"
<TreeView materialDesign:TreeViewAssist.HasNoItemsExpanderVisibility=""{visibility}"">
    <TreeViewItem Header=""NoChild"" />
    
    <TreeViewItem Header=""HasChild"">
        <TreeViewItem Header=""Child"" />
    </TreeViewItem>
</TreeView>");

        var expander = await GetExpanderForHeader("NoChild");

        Assert.Equal(visibility, await expander.GetVisibility());

        expander = await GetExpanderForHeader("HasChild");

        Assert.Equal(Visibility.Visible, await expander.GetVisibility());

        recorder.Success();

        async Task <IVisualElement <ToggleButton> > GetExpanderForHeader(string header)
        {
            var item = await treeView !.GetElement(ElementQuery.PropertyExpression <TreeViewItem>(x => x.Header, header));

            return(await item.GetElement <ToggleButton>());
        }
    }
    public async Task OnEditableComboBox_WithDefaultContextMenu_ShowsCutCopyPaste()
    {
        await using var recorder = new TestRecorder(App);

        var comboBox = await LoadXaml <ComboBox>(@"
<ComboBox IsEditable=""True"" Width=""200"" Style=""{StaticResource MaterialDesignComboBox}"">
    <ComboBoxItem Content=""Select1"" />
    <ComboBoxItem>Select2</ComboBoxItem>
    <ComboBoxItem>Select3</ComboBoxItem>
    <ComboBoxItem>Select4</ComboBoxItem>
    <ComboBoxItem>Select5</ComboBoxItem>
</ComboBox>");

        await comboBox.RightClick();

        IVisualElement <ContextMenu>?contextMenu = await comboBox.GetContextMenu();

        Assert.True(contextMenu is not null, "No context menu set on the ComboBox");

        await AssertMenu("Cut");
        await AssertMenu("Copy");
        await AssertMenu("Paste");

        recorder.Success();

        async Task AssertMenu(string menuHeader)
        {
            var menuItem = await contextMenu !.GetElement(ElementQuery.PropertyExpression <MenuItem>(x => x.Header, menuHeader));

            Assert.True(menuItem is not null, $"{menuHeader} menu item not found");
        }
    }
    public async Task HasNoItemsExpanderVisibility_ChangesVisibiliyOnExpander()
    {
        await using var recorder = new TestRecorder(App);

        var treeView = await LoadXaml <TreeView>(@"
<TreeView>
    <TreeViewItem Header=""Item1"" />
    <TreeViewItem Header=""Item2"" materialDesign:TreeViewAssist.HasNoItemsExpanderVisibility=""Hidden"" />
    <TreeViewItem Header=""Item3"" materialDesign:TreeViewAssist.HasNoItemsExpanderVisibility=""Collapsed"" />
    <TreeViewItem Header=""Item4"" materialDesign:TreeViewAssist.HasNoItemsExpanderVisibility=""Visible"" />

    <TreeViewItem Header=""Item5"">
        <TreeViewItem Header=""Child"" />
    </TreeViewItem>
    <TreeViewItem Header=""Item6"" materialDesign:TreeViewAssist.HasNoItemsExpanderVisibility=""Hidden"">
        <TreeViewItem Header=""Child"" />
    </TreeViewItem>
    <TreeViewItem Header=""Item7"" materialDesign:TreeViewAssist.HasNoItemsExpanderVisibility=""Collapsed"">
        <TreeViewItem Header=""Child"" />
    </TreeViewItem>
    <TreeViewItem Header=""Item8"" materialDesign:TreeViewAssist.HasNoItemsExpanderVisibility=""Visible"">
        <TreeViewItem Header=""Child"" />
    </TreeViewItem>
</TreeView>");

        var expander = await GetExpanderForHeader("Item1");

        Assert.Equal(Visibility.Hidden, await expander.GetVisibility());

        expander = await GetExpanderForHeader("Item2");

        Assert.Equal(Visibility.Hidden, await expander.GetVisibility());

        expander = await GetExpanderForHeader("Item3");

        Assert.Equal(Visibility.Collapsed, await expander.GetVisibility());

        expander = await GetExpanderForHeader("Item4");

        Assert.Equal(Visibility.Visible, await expander.GetVisibility());

        expander = await GetExpanderForHeader("Item5");

        Assert.Equal(Visibility.Visible, await expander.GetVisibility());

        expander = await GetExpanderForHeader("Item6");

        Assert.Equal(Visibility.Visible, await expander.GetVisibility());

        expander = await GetExpanderForHeader("Item7");

        Assert.Equal(Visibility.Visible, await expander.GetVisibility());

        expander = await GetExpanderForHeader("Item8");

        Assert.Equal(Visibility.Visible, await expander.GetVisibility());

        recorder.Success();

        async Task <IVisualElement <ToggleButton> > GetExpanderForHeader(string header)
        {
            var item = await treeView !.GetElement(ElementQuery.PropertyExpression <TreeViewItem>(x => x.Header, header));

            return(await item.GetElement <ToggleButton>());
        }
    }