Gu.Wpf.UiAutomation icon indicating copy to clipboard operation
Gu.Wpf.UiAutomation copied to clipboard

Add check that there are no trace messages. Not sure it works from out of process but chances are it does.

Open JohanLarsson opened this issue 6 years ago • 1 comments

using System.Collections.Generic;
using System.Diagnostics;

public class WpfTraceListener : TraceListener
{
    private readonly List<string> messages = new List<string>();

    public WpfTraceListener()
    {
        Register(PresentationTraceSources.AnimationSource);
        Register(PresentationTraceSources.DataBindingSource);
        Register(PresentationTraceSources.DocumentsSource);
        Register(PresentationTraceSources.DependencyPropertySource);
        Register(PresentationTraceSources.FreezableSource);
        Register(PresentationTraceSources.HwndHostSource);
        Register(PresentationTraceSources.MarkupSource);
        Register(PresentationTraceSources.NameScopeSource);
        Register(PresentationTraceSources.ResourceDictionarySource);
        Register(PresentationTraceSources.RoutedEventSource);
        Register(PresentationTraceSources.ShellSource);

        void Register(TraceSource source)
        {
            source.Listeners.Add(this);
            source.Switch.Level = SourceLevels.Warning | SourceLevels.Error;
        }
    }

    public IReadOnlyList<string> Messages => this.messages;

    public override void Write(string message)
    {
    }

    public override void WriteLine(string message)
    {
        this.messages.Add(message);
    }
}

JohanLarsson avatar Aug 22 '18 17:08 JohanLarsson

Idea for usage:

[Test]
public void ClickAllTabs()
{
    using (var listener = new ObservableTraceListener())
    {
        using (var app = Application.Launch("Gu.Wpf.FlipView.Demo.exe"))
        {
            var window = app.MainWindow;
            var tab = window.FindTabControl();
            foreach (var tabItem in tab.Items)
            {
                _ = tabItem.Select();
            }
        }

        Assert.IsEmpty(listener.Messages);
    }
}

JohanLarsson avatar Aug 22 '18 17:08 JohanLarsson