public void SetUpSteps()
        {
            AddStep("setup dependencies", () =>
            {
                performer.Reset();
                notificationOverlay.Reset();

                performer.Setup(g => g.PerformFromScreen(It.IsAny <Action <IScreen> >(), It.IsAny <IEnumerable <Type> >()))
                .Callback((Action <IScreen> action, IEnumerable <Type> types) => action(null));

                notificationOverlay.Setup(n => n.Post(It.IsAny <Notification>()))
                .Callback((Notification n) => lastNotification = n);
            });

            AddStep("add overlay", () =>
            {
                Child = overlay = new FirstRunSetupOverlay
                {
                    State = { Value = Visibility.Visible }
                };
            });
        }
        public void TestDoesntOpenOnSecondRun()
        {
            AddStep("set first run", () => LocalConfig.SetValue(OsuSetting.ShowFirstRunSetup, true));

            AddUntilStep("step through", () =>
            {
                if (overlay.CurrentScreen?.IsLoaded != false)
                {
                    overlay.NextButton.TriggerClick();
                }
                return(overlay.State.Value == Visibility.Hidden);
            });

            AddAssert("first run false", () => !LocalConfig.Get <bool>(OsuSetting.ShowFirstRunSetup));

            AddStep("add overlay", () =>
            {
                Child = overlay = new FirstRunSetupOverlay();
            });

            AddWaitStep("wait some", 5);

            AddAssert("overlay didn't show", () => overlay.State.Value == Visibility.Hidden);
        }