├── .gitattributes ├── .gitignore ├── GitVersionConfig.yaml ├── LICENSE-APACHE.txt ├── LICENSE-MIT.txt ├── LICENSE.txt ├── README.md ├── ReleaseNotes.md ├── appveyor.yml ├── docs ├── AdvancedTopics │ ├── ContinuousIntegration.md │ ├── CustomUIItems.md │ ├── Localisation.md │ ├── MouseAndKeyboard.md │ ├── PositionBasedSearch.md │ ├── SearchDepth.md │ ├── ThirdPartyControls.md │ ├── UIAv3.md │ ├── Waiting.md │ └── index.md ├── ChangeLog.md ├── Configuration.md ├── FAQ.md ├── GettingStarted.md ├── ScreenObjects │ ├── Index.md │ ├── RefactoringToUseScreenObjects.md │ ├── ScreenRepository.md │ ├── ScreensUIItemsAndEntities.md │ └── TestEntities.md ├── UIItems.md ├── Windows.md └── index.md ├── logo.png ├── mkdocs.yml ├── nuget ├── Init.ps1 ├── TestStack.White.nuspec ├── TestStack.White.psm1 └── readme.txt ├── old_docs ├── Features.txt ├── Functional Testing.ppt ├── White-Core.doc └── images │ ├── ComboAndListBox.JPG │ ├── CustomCommandSteps.png │ ├── Diagrams.pptx │ ├── ErrorProvider.jpg │ ├── ListView.JPG │ ├── MenuBar.JPG │ ├── ScreenObjectsTakingEntities.JPG │ ├── ServerSideProviders.png │ ├── Slider.JPG │ ├── Spinner.JPG │ ├── Table.JPG │ ├── TestApplicationInteraction.png │ ├── TestUsingScreenObjects.JPG │ ├── TestWrittenOnWhiteCore.JPG │ ├── TextBox.JPG │ ├── TitleBar.JPG │ ├── ToolBar.JPG │ ├── Tree.JPG │ ├── TypeMappings.png │ ├── WhitePeerUML.png │ ├── mouse.JPG │ ├── objects.JPG │ └── tw_open_source_small.png ├── src ├── Samples │ ├── Todo.Core │ │ ├── FodyWeavers.xml │ │ ├── ITaskRepository.cs │ │ ├── InMemoryTaskRepository.cs │ │ ├── NotifyPropertyChanged.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Todo.Core.csproj │ │ ├── Todo.Core.ncrunchproject │ │ ├── Todo.Core.v2.ncrunchproject │ │ ├── TodoItem.cs │ │ └── packages.config │ ├── WinForms │ │ └── WinformsTodo │ │ │ ├── Form1.Designer.cs │ │ │ ├── Form1.cs │ │ │ ├── Form1.resx │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ │ ├── WinformsTodo.csproj │ │ │ ├── WinformsTodo.ncrunchproject │ │ │ ├── WinformsTodo.v2.ncrunchproject │ │ │ └── app.config │ └── Wpf │ │ ├── WpfTodo.UITests │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Screens │ │ │ ├── NewTaskScreen.cs │ │ │ ├── Screen.cs │ │ │ ├── TodoWindow.cs │ │ │ └── UITestBase.cs │ │ ├── TodoAppTests.cs │ │ ├── WpfTodo.UITests.csproj │ │ ├── WpfTodo.UITests.ncrunchproject │ │ ├── WpfTodo.UITests.v2.ncrunchproject │ │ └── packages.config │ │ └── WpfTodo │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── BusyAutomationBehaviour.cs │ │ ├── DelegateCommand.cs │ │ ├── FodyWeavers.xml │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── MainWindowViewModel.cs │ │ ├── NewTaskViewModel.cs │ │ ├── NewTaskWindow.xaml │ │ ├── NewTaskWindow.xaml.cs │ │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ │ ├── WpfTodo.csproj │ │ ├── WpfTodo.ncrunchproject │ │ ├── WpfTodo.v2.ncrunchproject │ │ ├── app.config │ │ └── packages.config ├── TestApplications │ ├── SampleSWTApp │ │ ├── .classpath │ │ ├── .project │ │ ├── org.eclipse.swt.win32.win32.x86_3.7.0.v3735b.jar │ │ ├── org.eclipse.swt.win32.win32.x86_64_3.7.0.v3735b.jar │ │ └── src │ │ │ ├── ModalWindow.java │ │ │ └── Program.java │ ├── TestSilverlightApplication.Web │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Silverlight.js │ │ ├── TestSilverlightApplication.Web.csproj │ │ ├── TestSilverlightApplication.Web.ncrunchproject │ │ ├── TestSilverlightApplicationTestPage.aspx │ │ ├── TestSilverlightApplicationTestPage.html │ │ ├── Web.Debug.config │ │ ├── Web.Release.config │ │ └── Web.config │ ├── TestSilverlightApplication │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Controls │ │ │ ├── TestButton.cs │ │ │ └── TestComboBox.cs │ │ ├── CursorManager.cs │ │ ├── HorizontalGridSplitter.xaml │ │ ├── HorizontalGridSplitter.xaml.cs │ │ ├── ListControls.xaml │ │ ├── ListControls.xaml.cs │ │ ├── MainPage.xaml │ │ ├── MainPage.xaml.cs │ │ ├── Properties │ │ │ ├── AppManifest.xml │ │ │ └── AssemblyInfo.cs │ │ ├── TestSilverlightApplication.csproj │ │ ├── TestSilverlightApplication.ncrunchproject │ │ ├── TestSilverlightApplication.v2.ncrunchproject │ │ ├── VerticalGridSplitter.xaml │ │ ├── VerticalGridSplitter.xaml.cs │ │ ├── WindowLaunchers.xaml │ │ └── WindowLaunchers.xaml.cs │ ├── WindowsFormsTestApplication │ │ ├── BasicTypes.cs │ │ ├── ComplexNumber.cs │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── InputControls.Designer.cs │ │ ├── InputControls.cs │ │ ├── InputControls.resx │ │ ├── ListControls.Designer.cs │ │ ├── ListControls.cs │ │ ├── ListControls.resx │ │ ├── ListViewWindow.Designer.cs │ │ ├── ListViewWindow.cs │ │ ├── ListViewWindow.resx │ │ ├── Program.cs │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ ├── Scenarios │ │ │ ├── CustomUIItem │ │ │ │ ├── CustomUIItemScenario.Designer.cs │ │ │ │ ├── CustomUIItemScenario.cs │ │ │ │ ├── CustomUIItemScenario.resx │ │ │ │ ├── MyDateControl.Designer.cs │ │ │ │ ├── MyDateControl.cs │ │ │ │ └── MyDateControl.resx │ │ │ ├── DragAndDropTestWindow.Designer.cs │ │ │ ├── DragAndDropTestWindow.cs │ │ │ ├── DragAndDropTestWindow.resx │ │ │ ├── FormWithoutScrollAndItemOutside.Designer.cs │ │ │ ├── FormWithoutScrollAndItemOutside.cs │ │ │ ├── FormWithoutScrollAndItemOutside.resx │ │ │ ├── GetMultiple.Designer.cs │ │ │ ├── GetMultiple.cs │ │ │ ├── GetMultiple.resx │ │ │ ├── WindowWithAmperstand.Designer.cs │ │ │ ├── WindowWithAmperstand.cs │ │ │ ├── WindowWithAmperstand.resx │ │ │ ├── WindowWithNoTitleBar.Designer.cs │ │ │ ├── WindowWithNoTitleBar.cs │ │ │ ├── WindowWithNoTitleBar.resx │ │ │ ├── WindowWithScrollbars.Designer.cs │ │ │ ├── WindowWithScrollbars.cs │ │ │ └── WindowWithScrollbars.resx │ │ ├── TestItem.cs │ │ ├── White.jpg │ │ ├── WindowsFormsTestApplication.csproj │ │ ├── WindowsFormsTestApplication.csproj.DotSettings │ │ ├── WindowsFormsTestApplication.ncrunchproject │ │ └── WindowsFormsTestApplication.v2.ncrunchproject │ └── WpfTestApplication │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Custom controls │ │ ├── CustomItem.cs │ │ └── CustomItemAutiomationPeer.cs │ │ ├── ListControls.xaml │ │ ├── ListControls.xaml.cs │ │ ├── ListViewData.cs │ │ ├── ListViewWindow.xaml │ │ ├── ListViewWindow.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Person.cs │ │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ │ ├── Scenarios │ │ ├── CustomUIItem │ │ │ ├── CustomUIItemScenario.xaml │ │ │ ├── CustomUIItemScenario.xaml.cs │ │ │ ├── MyDateControl.xaml │ │ │ └── MyDateControl.xaml.cs │ │ ├── DragAndDropTestWindow.xaml │ │ ├── DragAndDropTestWindow.xaml.cs │ │ ├── FormWithoutScrollAndItemOutside.xaml │ │ ├── FormWithoutScrollAndItemOutside.xaml.cs │ │ ├── GetMultiple.xaml │ │ ├── GetMultiple.xaml.cs │ │ ├── HorizontalGridSplitter.xaml │ │ ├── HorizontalGridSplitter.xaml.cs │ │ ├── VerticalGridSplitter.xaml │ │ ├── VerticalGridSplitter.xaml.cs │ │ ├── WindowWithScrollbars.xaml │ │ └── WindowWithScrollbars.xaml.cs │ │ ├── White.jpg │ │ ├── WpfTestApplication.csproj │ │ ├── WpfTestApplication.ncrunchproject │ │ └── WpfTestApplication.v2.ncrunchproject ├── TestStack.White.Reporting │ ├── App.config │ ├── Configuration │ │ ├── ReportingAppXmlConfiguration.cs │ │ └── ReportingConfiguration.cs │ ├── Domain │ │ ├── IReport.cs │ │ ├── NullSessionReport.cs │ │ ├── ReportWriter.cs │ │ ├── ScreenShot.cs │ │ ├── SessionReport.cs │ │ ├── SubFlow.cs │ │ ├── SubFlowStep.cs │ │ └── SubFlows.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── TestStack.White.Reporting.csproj │ ├── TestStack.White.Reporting.ncrunchproject │ ├── TestStack.White.Reporting.v2.ncrunchproject │ ├── Utility │ │ └── HtmlGenerator.cs │ ├── packages.config │ └── white.snk ├── TestStack.White.ScreenObjects.UITests │ ├── DummyScreen.cs │ ├── DummyWindow.cs │ ├── EntityMapping │ │ └── EntitiesFromUIItemsTest.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── ScreenRepositoryTester.cs │ ├── ScreenRepositoryTests.cs │ ├── TestStack.White.ScreenObjects.UITests.csproj │ ├── TestStack.White.ScreenObjects.UITests.ncrunchproject │ ├── TestStack.White.ScreenObjects.UITests.v2.ncrunchproject │ ├── Testing │ │ ├── BaseScreen.cs │ │ ├── MainProgressBars.cs │ │ ├── MainScreen.cs │ │ └── ModalScreen.cs │ └── packages.config ├── TestStack.White.ScreenObjects │ ├── App.config │ ├── AppScreen.cs │ ├── AppScreenComponent.cs │ ├── AppScreenException.cs │ ├── AppWindow.cs │ ├── Configuration │ │ ├── RepositoryAppXmlConfiguration.cs │ │ └── RepositoryConfiguration.cs │ ├── EntityMapping │ │ ├── Entities.cs │ │ ├── Entity.cs │ │ ├── EntityField.cs │ │ ├── EntityFieldNotFoundException.cs │ │ └── NestedEntities.cs │ ├── IFieldMap.cs │ ├── Interceptors │ │ ├── ScreenInterceptors.cs │ │ ├── ScreenObjectInterceptor.cs │ │ ├── UIItemInterceptor.cs │ │ └── WindowInterceptor.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── RepositoryComponent.cs │ ├── ScreenAttributes │ │ ├── AutomationIdAttribute.cs │ │ ├── FrameworkIdAttribute.cs │ │ ├── IndexAttribute.cs │ │ ├── SearchCriteriaAttribute.cs │ │ └── TextAttribute.cs │ ├── ScreenClass.cs │ ├── ScreenFlow │ │ ├── FlowWriter.cs │ │ ├── GraphWriter.cs │ │ ├── ScreenIdentity.cs │ │ ├── StringGraphWriter.cs │ │ ├── WorkFlow.cs │ │ └── WorkReport.cs │ ├── ScreenRepository.cs │ ├── ScreenRepositoryCacheKey.cs │ ├── ScreenRepositoryListener.cs │ ├── Services │ │ ├── ExecutionHistory.cs │ │ ├── IWorkEnvironment.cs │ │ ├── LastServiceCallStatus.cs │ │ ├── NullExecutionHistory.cs │ │ ├── NullServiceExecution.cs │ │ ├── NullWorkEnvironment.cs │ │ ├── Service.cs │ │ ├── ServiceCall.cs │ │ ├── ServiceCalls.cs │ │ ├── ServiceExecution.cs │ │ ├── ServiceInterceptor.cs │ │ ├── WhiteExecution.cs │ │ └── WorkSnapshotAttribute.cs │ ├── Sessions │ │ ├── WorkConfiguration.cs │ │ └── WorkSession.cs │ ├── TestStack.White.ScreenObjects.csproj │ ├── TestStack.White.ScreenObjects.ncrunchproject │ ├── TestStack.White.ScreenObjects.nuspec │ ├── TestStack.White.ScreenObjects.v2.ncrunchproject │ ├── packages.config │ └── white.snk ├── TestStack.White.UITests │ ├── App.config │ ├── AutomationElementSearch │ │ └── RawAutomationElementFinderTests.cs │ ├── ControlTests │ │ ├── ButtonTests.cs │ │ ├── ColorTests.cs │ │ ├── CustomUIItemTests.cs │ │ ├── DataGridTests.cs │ │ ├── GroupBoxTests.cs │ │ ├── HScrollBarTests.cs │ │ ├── HotKeyTests.cs │ │ ├── HyperlinkTests.cs │ │ ├── ImageTests.cs │ │ ├── InputControls │ │ │ ├── CheckboxTests.cs │ │ │ ├── DatePickerTests.cs │ │ │ ├── PasswordTextBoxTests.cs │ │ │ ├── RadioButtonTests.cs │ │ │ ├── SpinnerTests.cs │ │ │ ├── TextBoxTests.cs │ │ │ └── TristateItemTests.cs │ │ ├── LabelTests.cs │ │ ├── ListControls │ │ │ ├── CheckedListBoxTests.cs │ │ │ ├── ComboBoxTests.cs │ │ │ ├── DataBoundComboBoxTests.cs │ │ │ ├── EditableComboBoxTests.cs │ │ │ ├── ListBoxWithScrollBarTests.cs │ │ │ └── ListViewTests.cs │ │ ├── MenuItems │ │ │ ├── MenuTests.cs │ │ │ └── PopUpMenuTests.cs │ │ ├── MyDateUIItem.cs │ │ ├── MyDateUIItemWithoutMappingDefined.cs │ │ ├── PanelTests.cs │ │ ├── ProgressBarTests.cs │ │ ├── PropertyGridTests.cs │ │ ├── SliderTests.cs │ │ ├── Splitters │ │ │ ├── HorizontalThumbTests.cs │ │ │ └── VerticalThumbTests.cs │ │ ├── TabTests.cs │ │ ├── Table │ │ │ ├── TableCellTests.cs │ │ │ ├── TableRowTests.cs │ │ │ ├── TableRowsTests.cs │ │ │ └── TableTests.cs │ │ ├── TooltipTests.cs │ │ ├── TreeItems │ │ │ ├── TreeNodeTests.cs │ │ │ └── TreeTests.cs │ │ ├── UIItemTests.cs │ │ ├── VScrollBarTests.cs │ │ └── WindowStripControls │ │ │ ├── StatusBarTests.cs │ │ │ └── StatusStripTests.cs │ ├── Factory │ │ └── InitializeOptionTests.cs │ ├── GenericScreenTypeTests.cs │ ├── Infrastructure │ │ ├── SilverlightTestConfiguration.cs │ │ ├── TestConfiguration.cs │ │ ├── TestConfigurationFactory.cs │ │ ├── WindowsConfiguration.cs │ │ ├── WinformsTestConfiguration.cs │ │ └── WpfTestConfiguration.cs │ ├── InputDevices │ │ ├── AttachedKeyboardTests.cs │ │ ├── DragAndDropTests.cs │ │ ├── KeyboardTests.cs │ │ └── MouseTests.cs │ ├── Interceptors │ │ ├── DisabledControlsTests.cs │ │ └── ScrollInterceptorTests.cs │ ├── MessageBoxTests.cs │ ├── ModalWindowTests.cs │ ├── NativeWindowTests.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Reporting │ │ ├── One.cs │ │ ├── SessionReportTests.cs │ │ ├── SubFlowTests.cs │ │ ├── SubFlowsTests.cs │ │ └── Two.cs │ ├── Repository │ │ └── WorkSessionTests.cs │ ├── Scenarios │ │ ├── GetMultipleTests.cs │ │ └── Win32Tests.cs │ ├── Screens │ │ └── MainScreen.cs │ ├── TestFailedException.cs │ ├── TestStack.White.UITests.csproj │ ├── TestStack.White.UITests.ncrunchproject │ ├── TestStack.White.UITests.v2.ncrunchproject │ ├── UIA │ │ └── AutomationElementXTests.cs │ ├── WhiteUITestBase.cs │ ├── WindowTests.cs │ ├── packages.config │ └── white.snk ├── TestStack.White.UnitTests │ ├── App.config │ ├── AutomationElementSearch │ │ ├── AutomationSearchConditionFactoryTest.cs │ │ ├── AutomationSearchConditionFactoryTests.cs │ │ ├── ElementSearchResultTest.cs │ │ ├── ElementSearchResultTests.cs │ │ ├── SearchConditionTest.cs │ │ └── SearchConditionTests.cs │ ├── ControlsActionTest.cs │ ├── CoreProjectTest.cs │ ├── CustomCommands │ │ ├── CustomButtonCommandTest.cs │ │ ├── CustomCommandResponseTest.cs │ │ ├── CustomCommandSerializerTest.cs │ │ ├── CustomListBoxCommandTest.cs │ │ └── CustomTextBoxCommandTest.cs │ ├── Drawing │ │ ├── DrawingPointXTest.cs │ │ └── DrawingPointXTests.cs │ ├── Mappings │ │ ├── ControlDictionaryTest.cs │ │ └── ControlDictionaryTests.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Repository │ │ ├── DummyScreen.cs │ │ ├── DummyWindow.cs │ │ ├── EntityMapping │ │ │ ├── Cricketer.cs │ │ │ ├── EntitiesTest.cs │ │ │ ├── EntityTest.cs │ │ │ ├── GoogleWebsite.cs │ │ │ ├── NestedEntitiesTest.cs │ │ │ ├── NestedEntity.cs │ │ │ └── TestEntity.cs │ │ ├── RepositoryCodebaseTest.cs │ │ ├── ScreenClassComponent.cs │ │ ├── ScreenClassContainingComponent.cs │ │ ├── ScreenClassTest.cs │ │ ├── ScreenRepositoryCacheTest.cs │ │ └── Services │ │ │ ├── ServiceCallTest.cs │ │ │ ├── ServiceExecutionTest.cs │ │ │ └── TestServiceForServiceCallTest.cs │ ├── ScreenMap │ │ └── WindowItemsMapTest.cs │ ├── SpanTest.cs │ ├── SpanTests.cs │ ├── SystemExtensions │ │ └── DoubleXTest.cs │ ├── TestStack.White.UnitTests.csproj │ ├── TestStack.White.UnitTests.ncrunchproject │ ├── TestStack.White.UnitTests.v2.ncrunchproject │ ├── UIA │ │ ├── RectXTest.cs │ │ └── WindowsPointXTest.cs │ ├── UIItemEvents │ │ └── UserActionTest.cs │ ├── UIItems │ │ ├── DateFormatTest.cs │ │ ├── Finders │ │ │ ├── ControlTypeConditionTest.cs │ │ │ ├── IndexConditionTest.cs │ │ │ ├── NativePropertyConditionTest.cs │ │ │ ├── SearchConditionFactoryTest.cs │ │ │ ├── SearchCriteriaTest.cs │ │ │ └── TestCustomUIItem.cs │ │ ├── PlatformSpecificItemAttributeTest.cs │ │ └── WpfComboBoxVerticalSpanCalculatorTest.cs │ ├── packages.config │ └── white.snk ├── TestStack.White.WebBrowser.UITests │ ├── BrowserFactoryTest.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Silverlight │ │ ├── SilverlightApplicationTest.cs │ │ └── SilverlightDocumentTest.cs │ ├── SilverlightTestFixture.cs │ ├── TestStack.White.WebBrowser.UITests.csproj │ ├── TestStack.White.WebBrowser.UITests.ncrunchproject │ ├── TestStack.White.WebBrowser.UITests.v2.ncrunchproject │ ├── WebBrowserCodebaseTest.cs │ └── packages.config ├── TestStack.White.WebBrowser.UnitTests │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── TestStack.White.WebBrowser.UnitTests.csproj │ ├── TestStack.White.WebBrowser.UnitTests.ncrunchproject │ ├── TestStack.White.WebBrowser.UnitTests.v2.ncrunchproject │ └── packages.config ├── TestStack.White.WebBrowser │ ├── BrowserWindow.cs │ ├── Config │ │ ├── WebBrowserAppXmlConfiguration.cs │ │ └── WebBrowserConfiguration.cs │ ├── Firefox.cs │ ├── FirefoxFactory.cs │ ├── FirefoxWindow.cs │ ├── InternetExplorer.cs │ ├── InternetExplorerFactory.cs │ ├── InternetExplorerWindow.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Silverlight │ │ └── SilverlightDocument.cs │ ├── TestStack.White.WebBrowser.csproj │ ├── TestStack.White.WebBrowser.ncrunchproject │ ├── TestStack.White.WebBrowser.nuspec │ ├── TestStack.White.WebBrowser.v2.ncrunchproject │ ├── packages.config │ └── white.snk ├── TestStack.White.sln ├── TestStack.White.sln.DotSettings ├── TestStack.White.testsettings ├── TestStack.White.v2.ncrunchsolution ├── TestStack.White │ ├── App.config │ ├── Application.cs │ ├── AutomationElementSearch │ │ ├── AutomationElementFinder.cs │ │ ├── AutomationElementSearchException.cs │ │ ├── AutomationSearchCondition.cs │ │ ├── AutomationSearchConditionFactory.cs │ │ ├── DescendantFinder.cs │ │ ├── DescendantFinderFactory.cs │ │ ├── ElementSearchResult.cs │ │ ├── IDescendantFinder.cs │ │ ├── MultiLevelAutomationElementFinder.cs │ │ └── RawAutomationElementFinder.cs │ ├── AutomationException.cs │ ├── Bricks │ │ ├── AssemblyConfiguration.cs │ │ ├── DelegateInvoker.cs │ │ ├── DynamicProxyGenerator.cs │ │ ├── DynamicProxyInterceptors.cs │ │ └── IInterceptContext.cs │ ├── CacheMode.cs │ ├── Configuration │ │ ├── ConfigurationExtensions.cs │ │ ├── CoreAppXmlConfiguration.cs │ │ ├── ICoreConfiguration.cs │ │ ├── IUIItemIdConfiguration.cs │ │ ├── IWaitHook.cs │ │ ├── UIItemIdAppXmlConfiguration.cs │ │ ├── WhiteDefaultLogger.cs │ │ └── WhiteDefaultLoggerFactory.cs │ ├── Constants.cs │ ├── Debug.cs │ ├── Desktop.cs │ ├── Drawing │ │ ├── DrawingPointX.cs │ │ └── ScreenRectangle.cs │ ├── Factory │ │ ├── ChildWindowFactory.cs │ │ ├── DictionaryMappedItemFactory.cs │ │ ├── ISpecializedWindowFactory.cs │ │ ├── IUIItemFactory.cs │ │ ├── InitializeOption.cs │ │ ├── ListViewCellFactory.cs │ │ ├── PrimaryUIItemFactory.cs │ │ ├── TableCellFactory.cs │ │ ├── TableHeaderFactory.cs │ │ ├── TableRowFactory.cs │ │ ├── ToolTipFinder.cs │ │ ├── UIItemProxyFactory.cs │ │ ├── UIItemSearchException.cs │ │ └── WindowFactory.cs │ ├── Finder │ │ ├── CachedUIItems.cs │ │ └── PositionBasedComparer.cs │ ├── HorizontalSpan.cs │ ├── IWindowControlVisitor.cs │ ├── InputDevices │ │ ├── AttachedKeyboard.cs │ │ ├── AttachedMouse.cs │ │ ├── IKeyboard.cs │ │ ├── IMouse.cs │ │ ├── Input64.cs │ │ ├── InputDeviceException.cs │ │ ├── Keyboard.cs │ │ ├── Mouse.cs │ │ ├── MouseButton.cs │ │ ├── MouseCursor.cs │ │ ├── SystemMetric.cs │ │ └── WindowsConstants.cs │ ├── Interceptors │ │ ├── CoreInterceptContext.cs │ │ ├── CoreInterceptor.cs │ │ ├── FocusInterceptor.cs │ │ ├── IWhiteInterceptor.cs │ │ └── ScrollInterceptor.cs │ ├── Mappings │ │ ├── ControlDictionary.cs │ │ ├── ControlDictionaryException.cs │ │ ├── ControlDictionaryItem.cs │ │ └── ControlDictionaryItems.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Recording │ │ ├── SafeAutomationEventHandler.cs │ │ └── UIItemEventListener.cs │ ├── ScreenCapture.cs │ ├── ScreenMap │ │ ├── AutomationPropertySurrogate.cs │ │ ├── ControlTypeSurrogate.cs │ │ ├── NullWindowItemsMap.cs │ │ ├── UIItemLocation.cs │ │ ├── WindowItemsMap.cs │ │ └── WindowsAutomationTypesSurrogates.cs │ ├── Sessions │ │ ├── ApplicationSession.cs │ │ ├── NoApplicationSession.cs │ │ ├── NullWindowSession.cs │ │ └── WindowSession.cs │ ├── Span.cs │ ├── SystemExtensions │ │ ├── DoubleX.cs │ │ ├── RectangleExtensions.cs │ │ └── TypeExtensions.cs │ ├── TestStack.White.csproj │ ├── TestStack.White.ncrunchproject │ ├── TestStack.White.v2.ncrunchproject │ ├── UIA │ │ ├── AutomationElementCollectionX.cs │ │ ├── AutomationElementX.cs │ │ ├── AutomationPatterns.cs │ │ ├── RectX.cs │ │ └── WindowsPointX.cs │ ├── UIItemEvents │ │ ├── CheckBoxEvent.cs │ │ ├── ComboBoxEvent.cs │ │ ├── EventWriter.cs │ │ ├── ExceptionEvent.cs │ │ ├── IEventOption.cs │ │ ├── ListBoxEvent.cs │ │ ├── ListControlEvent.cs │ │ ├── ListViewEvent.cs │ │ ├── MultilineTextBoxEvent.cs │ │ ├── RadioButtonEvent.cs │ │ ├── TabEvent.cs │ │ ├── TextBoxEvent.cs │ │ ├── TreeNodeClickedEvent.cs │ │ ├── TreeNodeEvent.cs │ │ ├── UIItemClickEvent.cs │ │ ├── UserAction.cs │ │ └── UserEvent.cs │ ├── UIItemList.cs │ ├── UIItems │ │ ├── ActionDetails.cs │ │ ├── Actions │ │ │ ├── Action.cs │ │ │ ├── ActionType.cs │ │ │ ├── IActionListener.cs │ │ │ └── ProcessActionListener.cs │ │ ├── Button.cs │ │ ├── CheckBox.cs │ │ ├── Container │ │ │ ├── CachedContainerItemFactory.cs │ │ │ ├── ContainerItemFactory.cs │ │ │ ├── CurrentContainerItemFactory.cs │ │ │ └── NonCachedContainerItemFactory.cs │ │ ├── Custom │ │ │ ├── ControlTypeMappingAttribute.cs │ │ │ ├── CustomControlTypeMapping.cs │ │ │ ├── CustomUIItem.cs │ │ │ ├── CustomUIItemException.cs │ │ │ └── CustomUIItemType.cs │ │ ├── DateFormat.cs │ │ ├── DateTimePicker.cs │ │ ├── DateUnit.cs │ │ ├── Error.cs │ │ ├── Finders │ │ │ ├── AutomationElementProperty.cs │ │ │ ├── ControlTypeProperty.cs │ │ │ ├── IndexCondition.cs │ │ │ ├── NotCondition.cs │ │ │ ├── OrSearchCondition.cs │ │ │ ├── SearchCondition.cs │ │ │ ├── SearchConditionFactory.cs │ │ │ ├── SearchConditions.cs │ │ │ ├── SearchCriteria.cs │ │ │ ├── SimpleSearchCondition.cs │ │ │ └── TestControlTypeX.cs │ │ ├── FormSection.cs │ │ ├── FrameworkIdAttribute.cs │ │ ├── GroupBox.cs │ │ ├── Hyperlink.cs │ │ ├── IScrollable.cs │ │ ├── IUIItem.cs │ │ ├── IUIItemContainer.cs │ │ ├── Image.cs │ │ ├── Label.cs │ │ ├── ListBoxItems │ │ │ ├── ComboBox.cs │ │ │ ├── ListBox.cs │ │ │ ├── ListControl.cs │ │ │ ├── ListItem.cs │ │ │ ├── ListItemContainer.cs │ │ │ ├── ListItems.cs │ │ │ ├── SilverlightComboBox.cs │ │ │ ├── SilverlightComboBoxVerticalSpanCalculator.cs │ │ │ ├── WPFComboBox.cs │ │ │ ├── WPFComboBoxVerticalSpanCalculator.cs │ │ │ ├── WPFListItem.cs │ │ │ ├── Win32ComboBox.cs │ │ │ ├── Win32ListItem.cs │ │ │ └── WinFormComboBox.cs │ │ ├── ListView.cs │ │ ├── ListViewCell.cs │ │ ├── ListViewCells.cs │ │ ├── ListViewItems │ │ │ ├── ISuggestionList.cs │ │ │ ├── ListViewColumn.cs │ │ │ ├── ListViewColumns.cs │ │ │ ├── ListViewFactory.cs │ │ │ ├── ListViewHeader.cs │ │ │ └── SuggestionListView.cs │ │ ├── ListViewRow.cs │ │ ├── ListViewRows.cs │ │ ├── MenuItems │ │ │ ├── Menu.cs │ │ │ ├── Menus.cs │ │ │ └── PopUpMenu.cs │ │ ├── Panel.cs │ │ ├── PlatformSpecificItemAttribute.cs │ │ ├── ProgressBar.cs │ │ ├── PropertyGridItems │ │ │ ├── PropertyGrid.cs │ │ │ ├── PropertyGridCategory.cs │ │ │ ├── PropertyGridElementFinder.cs │ │ │ └── PropertyGridProperty.cs │ │ ├── RadioButton.cs │ │ ├── Scrolling │ │ │ ├── ComboBoxScrollBars.cs │ │ │ ├── DefaultScrollBarButtonAutomationIds.cs │ │ │ ├── HScrollBar.cs │ │ │ ├── IHScrollBar.cs │ │ │ ├── IScrollBar.cs │ │ │ ├── IScrollBars.cs │ │ │ ├── IVScrollBar.cs │ │ │ ├── IVerticalSpanProvider.cs │ │ │ ├── NullHScrollBar.cs │ │ │ ├── NullScrollBar.cs │ │ │ ├── NullVScrollBar.cs │ │ │ ├── ScreenItem.cs │ │ │ ├── ScrollBar.cs │ │ │ ├── ScrollBarButtonAutomationIds.cs │ │ │ ├── ScrollBars.cs │ │ │ ├── ScrollerFactory.cs │ │ │ ├── SilverlightHScrollBarButtonAutomationIds.cs │ │ │ ├── SilverlightVScrollBarButtonAutomationIds.cs │ │ │ ├── VScrollBar.cs │ │ │ ├── WPFHScrollBar.cs │ │ │ ├── WPFScrollBar.cs │ │ │ ├── WPFScrollBars.cs │ │ │ ├── WPFVScrollBar.cs │ │ │ ├── WinFormScrollBars.cs │ │ │ ├── WpfTreeViewHScrollBar.cs │ │ │ ├── WpfTreeViewScrollBar.cs │ │ │ ├── WpfTreeViewScrollBars.cs │ │ │ └── WpfTreeViewVScrollBar.cs │ │ ├── SelectionItem.cs │ │ ├── Slider.cs │ │ ├── Spinner.cs │ │ ├── SplashWindow.cs │ │ ├── TabItems │ │ │ ├── ITabPage.cs │ │ │ ├── Tab.cs │ │ │ ├── TabPage.cs │ │ │ └── TabPages.cs │ │ ├── TableItems │ │ │ ├── ITableVerticalScrollOffset.cs │ │ │ ├── NullTableHeader.cs │ │ │ ├── Table.cs │ │ │ ├── TableCell.cs │ │ │ ├── TableCells.cs │ │ │ ├── TableColumn.cs │ │ │ ├── TableColumns.cs │ │ │ ├── TableHeader.cs │ │ │ ├── TableHorizontalScrollBar.cs │ │ │ ├── TableRow.cs │ │ │ ├── TableRowHeader.cs │ │ │ ├── TableRows.cs │ │ │ ├── TableScrollBars.cs │ │ │ └── TableVerticalScrollBar.cs │ │ ├── TextBox.cs │ │ ├── Thumb.cs │ │ ├── ToggleableItem.cs │ │ ├── ToolTip.cs │ │ ├── TooltipSafeMouse.cs │ │ ├── TreeItems │ │ │ ├── ClickedNodeVisitor.cs │ │ │ ├── ITreeNodeVisitor.cs │ │ │ ├── SelectedNodeVisitor.cs │ │ │ ├── Tree.cs │ │ │ ├── TreeNode.cs │ │ │ ├── TreeNodeSelectEvent.cs │ │ │ ├── TreeNodes.cs │ │ │ ├── WPFTreeNode.cs │ │ │ └── Win32TreeNode.cs │ │ ├── UIActionException.cs │ │ ├── UIItem.cs │ │ ├── UIItemCollection.cs │ │ ├── UIItemContainer.cs │ │ ├── UIItemExtensions.cs │ │ ├── WPFLabel.cs │ │ ├── WPFUIItems │ │ │ └── WPFUIItem.cs │ │ ├── WinFormSlider.cs │ │ ├── WinFormTextBox.cs │ │ ├── WindowItems │ │ │ ├── DisplayState.cs │ │ │ ├── SilverlightChildWindow.cs │ │ │ ├── TitleBar.cs │ │ │ ├── WPFWindow.cs │ │ │ ├── Win32Window.cs │ │ │ ├── WinFormWindow.cs │ │ │ └── Window.cs │ │ ├── WindowStripControls │ │ │ ├── ContainerStrip.cs │ │ │ ├── IMenuContainer.cs │ │ │ ├── MenuBar.cs │ │ │ ├── StatusStrip.cs │ │ │ ├── StatusStripSplitButton.cs │ │ │ ├── ToolStrip.cs │ │ │ └── WPFStatusBar.cs │ │ ├── WindowsFramework.cs │ │ ├── WindowsFrameworkExtensions.cs │ │ └── WpfDatePicker.cs │ ├── Utility │ │ ├── DelegateDisposable.cs │ │ ├── MethodNameResolver.cs │ │ ├── PropertyResolver.cs │ │ ├── Retry.cs │ │ └── SystemLanguageRetreiver.cs │ ├── VerticalSpan.cs │ ├── WhiteAssertionException.cs │ ├── WhiteException.cs │ ├── WindowsAPI │ │ ├── DisplayedItem.cs │ │ ├── Input.cs │ │ ├── InputFactory.cs │ │ ├── NativeWindow.cs │ │ ├── ThirtyTwoBitInput.cs │ │ └── WindowPlacement.cs │ ├── packages.config │ └── white.snk ├── lib │ └── Interop.SHDocVw.dll └── white.snk └── tools ├── NUnit ├── RunTests.bat ├── TestStack.White.nunit └── nunit-editor.exe ├── UISpy └── UISpy.exe └── ndoc ├── NDoc.Core.dll ├── NDoc.Documenter.Msdn2.dll ├── NDoc.Documenter.Xml.dll ├── NDoc.ExtendedUI.dll ├── NDocConsole.exe └── NDocConsole.pdb /GitVersionConfig.yaml: -------------------------------------------------------------------------------- 1 | assembly-versioning-scheme: MajorMinor 2 | mode: ContinuousDelivery 3 | next-version: 0.13.0 4 | branches: {} 5 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | TestStack.White is dual licensed to stay compatible with Whites Original Apache 2 license. 2 | 3 | You can choose either MIT or Apache 2. 4 | 5 | You don’t have to do anything special to choose one license or the other and you don’t have to notify anyone which license you are using. 6 | -------------------------------------------------------------------------------- /docs/AdvancedTopics/index.md: -------------------------------------------------------------------------------- 1 | If you would like to know more about how White works, or set it up on a build server this is the place for you -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/logo.png -------------------------------------------------------------------------------- /nuget/Init.ps1: -------------------------------------------------------------------------------- 1 | param($installPath, $toolsPath, $package) 2 | 3 | Import-Module (Join-Path $toolsPath TestStack.White.psm1) -------------------------------------------------------------------------------- /nuget/TestStack.White.psm1: -------------------------------------------------------------------------------- 1 | function Fix-WhiteNamespace() { 2 | $find = $dte.Find; 3 | $find.WaitForFindToComplete = $true; 4 | 5 | $find.FindReplace( 6 | [EnvDTE.vsFindAction]::vsFindActionReplaceAll, 7 | "White.Core", 8 | [EnvDTE.vsFindOptions]::vsFindOptionsKeepModifiedDocumentsOpen, 9 | "TestStack.White", 10 | [EnvDTE.vsFindTarget]::vsFindTargetSolution, "", "", 11 | [EnvDTE.vsFindResultsLocation]::vsFindResults2); 12 | } 13 | 14 | Export-ModuleMember Fix-WhiteNamespace -------------------------------------------------------------------------------- /old_docs/Features.txt: -------------------------------------------------------------------------------- 1 | Visual studio plugin 2 | White Spy 3 | Wrapper for desktop, word, ie, firefox, outlook, excel 4 | Documentation 5 | Graphics based test writer 6 | Silverlight 7 | 8 | Lower priority 9 | Recorder -------------------------------------------------------------------------------- /old_docs/Functional Testing.ppt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/Functional Testing.ppt -------------------------------------------------------------------------------- /old_docs/White-Core.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/White-Core.doc -------------------------------------------------------------------------------- /old_docs/images/ComboAndListBox.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/ComboAndListBox.JPG -------------------------------------------------------------------------------- /old_docs/images/CustomCommandSteps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/CustomCommandSteps.png -------------------------------------------------------------------------------- /old_docs/images/Diagrams.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/Diagrams.pptx -------------------------------------------------------------------------------- /old_docs/images/ErrorProvider.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/ErrorProvider.jpg -------------------------------------------------------------------------------- /old_docs/images/ListView.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/ListView.JPG -------------------------------------------------------------------------------- /old_docs/images/MenuBar.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/MenuBar.JPG -------------------------------------------------------------------------------- /old_docs/images/ScreenObjectsTakingEntities.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/ScreenObjectsTakingEntities.JPG -------------------------------------------------------------------------------- /old_docs/images/ServerSideProviders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/ServerSideProviders.png -------------------------------------------------------------------------------- /old_docs/images/Slider.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/Slider.JPG -------------------------------------------------------------------------------- /old_docs/images/Spinner.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/Spinner.JPG -------------------------------------------------------------------------------- /old_docs/images/Table.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/Table.JPG -------------------------------------------------------------------------------- /old_docs/images/TestApplicationInteraction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/TestApplicationInteraction.png -------------------------------------------------------------------------------- /old_docs/images/TestUsingScreenObjects.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/TestUsingScreenObjects.JPG -------------------------------------------------------------------------------- /old_docs/images/TestWrittenOnWhiteCore.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/TestWrittenOnWhiteCore.JPG -------------------------------------------------------------------------------- /old_docs/images/TextBox.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/TextBox.JPG -------------------------------------------------------------------------------- /old_docs/images/TitleBar.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/TitleBar.JPG -------------------------------------------------------------------------------- /old_docs/images/ToolBar.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/ToolBar.JPG -------------------------------------------------------------------------------- /old_docs/images/Tree.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/Tree.JPG -------------------------------------------------------------------------------- /old_docs/images/TypeMappings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/TypeMappings.png -------------------------------------------------------------------------------- /old_docs/images/WhitePeerUML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/WhitePeerUML.png -------------------------------------------------------------------------------- /old_docs/images/mouse.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/mouse.JPG -------------------------------------------------------------------------------- /old_docs/images/objects.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/objects.JPG -------------------------------------------------------------------------------- /old_docs/images/tw_open_source_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/old_docs/images/tw_open_source_small.png -------------------------------------------------------------------------------- /src/Samples/Todo.Core/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Samples/Todo.Core/ITaskRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Threading.Tasks; 3 | 4 | namespace Todo.Core 5 | { 6 | public interface ITaskRepository 7 | { 8 | Task> GetAll(); 9 | Task Add(TodoItem todoItem); 10 | Task Delete(int id); 11 | Task Get(int id); 12 | } 13 | } -------------------------------------------------------------------------------- /src/Samples/Todo.Core/NotifyPropertyChanged.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | 3 | namespace Todo.Core 4 | { 5 | public class NotifyPropertyChanged : INotifyPropertyChanged 6 | { 7 | public event PropertyChangedEventHandler PropertyChanged; 8 | 9 | protected void OnPropertyChanged(string propertyName) 10 | { 11 | var handler = PropertyChanged; 12 | if (handler == null) return; 13 | var e = new PropertyChangedEventArgs(propertyName); 14 | handler(this, e); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/Samples/Todo.Core/TodoItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Todo.Core 4 | { 5 | public class TodoItem : NotifyPropertyChanged 6 | { 7 | public string Title { get; set; } 8 | public string Description { get; set; } 9 | public DateTime? DueDate { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Samples/Todo.Core/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Samples/WinForms/WinformsTodo/Form1.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace WinformsTodo 4 | { 5 | public partial class Form1 : Form 6 | { 7 | public Form1() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Samples/WinForms/WinformsTodo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace WinformsTodo 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Samples/WinForms/WinformsTodo/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Samples/WinForms/WinformsTodo/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo.UITests/Screens/Screen.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Automation; 3 | using TestStack.White.ScreenObjects; 4 | using TestStack.White.UIItems.WindowItems; 5 | using TestStack.White.Utility; 6 | 7 | namespace WpfTodo.UITests.Screens 8 | { 9 | public class Screen : AppScreen 10 | { 11 | public Screen(Window window, ScreenRepository screenRepository) : base(window, screenRepository) 12 | { 13 | } 14 | 15 | public virtual void WaitWhileBusy() 16 | { 17 | Retry.For(ShellIsBusy, isBusy => isBusy, TimeSpan.FromSeconds(30)); 18 | } 19 | 20 | bool ShellIsBusy() 21 | { 22 | var currentPropertyValue = Window.AutomationElement.GetCurrentPropertyValue(AutomationElement.HelpTextProperty); 23 | return currentPropertyValue != null && ((string)currentPropertyValue).Contains("Busy"); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo.UITests/Screens/UITestBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Reflection; 4 | using TestStack.White; 5 | 6 | namespace WpfTodo.UITests.Screens 7 | { 8 | public abstract class UITestBase : IDisposable 9 | { 10 | public Application Application { get; private set; } 11 | 12 | protected UITestBase() 13 | { 14 | var directoryName = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath); 15 | var markpadLocation = Path.Combine(directoryName, @"WpfTodo.exe"); 16 | Application = Application.Launch(markpadLocation); 17 | } 18 | 19 | public void Dispose() 20 | { 21 | Application.Dispose(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo.UITests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Linq; 5 | using System.Windows; 6 | 7 | namespace WpfTodo 8 | { 9 | /// 10 | /// Interaction logic for App.xaml 11 | /// 12 | public partial class App : Application 13 | { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace WpfTodo 2 | { 3 | public partial class MainWindow 4 | { 5 | public MainWindow() 6 | { 7 | DataContext = new MainWindowViewModel { Owner = this }; 8 | InitializeComponent(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo/NewTaskWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using Todo.Core; 2 | 3 | namespace WpfTodo 4 | { 5 | public partial class NewTaskWindow 6 | { 7 | private readonly NewTaskViewModel newTaskViewModel; 8 | 9 | public NewTaskWindow(ITaskRepository taskRepository) 10 | { 11 | newTaskViewModel = new NewTaskViewModel(taskRepository) {Owner = this}; 12 | DataContext = newTaskViewModel; 13 | InitializeComponent(); 14 | } 15 | 16 | public TodoItem TodoItem 17 | { 18 | get { return newTaskViewModel.TodoItem; } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Samples/Wpf/WpfTodo/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/TestApplications/SampleSWTApp/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/TestApplications/SampleSWTApp/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SampleSWTApp 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jem.workbench.JavaEMFNature 16 | org.eclipse.jdt.core.javanature 17 | org.eclipse.jem.beaninfo.BeanInfoNature 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/TestApplications/SampleSWTApp/org.eclipse.swt.win32.win32.x86_3.7.0.v3735b.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/src/TestApplications/SampleSWTApp/org.eclipse.swt.win32.win32.x86_3.7.0.v3735b.jar -------------------------------------------------------------------------------- /src/TestApplications/SampleSWTApp/org.eclipse.swt.win32.win32.x86_64_3.7.0.v3735b.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/src/TestApplications/SampleSWTApp/org.eclipse.swt.win32.win32.x86_64_3.7.0.v3735b.jar -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication.Web/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/Controls/TestButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | namespace TestSilverlightApplication.Controls 4 | { 5 | public class TestButton : Button 6 | { 7 | protected override void OnClick() 8 | { 9 | CursorManager.WaitAndPerform(this, () => base.OnClick()); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/Controls/TestComboBox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Controls; 3 | using System.Windows.Input; 4 | 5 | namespace TestSilverlightApplication.Controls 6 | { 7 | public class TestComboBox : ComboBox 8 | { 9 | protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) 10 | { 11 | CursorManager.WaitAndPerform(this, () => base.OnMouseLeftButtonDown(e)); 12 | } 13 | 14 | protected override void OnDropDownClosed(EventArgs e) 15 | { 16 | CursorManager.WaitAndPerform(this, () => base.OnDropDownClosed(e)); 17 | } 18 | 19 | protected override void OnDropDownOpened(EventArgs e) 20 | { 21 | CursorManager.WaitAndPerform(this, () => base.OnDropDownOpened(e)); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/CursorManager.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Input; 3 | 4 | namespace TestSilverlightApplication 5 | { 6 | public static class CursorManager 7 | { 8 | public delegate void Do(); 9 | 10 | public static void WaitAndPerform(FrameworkElement frameworkElement, Do @do) 11 | { 12 | frameworkElement.Cursor = Cursors.Wait; 13 | try 14 | { 15 | @do(); 16 | } 17 | finally 18 | { 19 | frameworkElement.Cursor = Cursors.Arrow; 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/HorizontalGridSplitter.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/HorizontalGridSplitter.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Net; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Documents; 8 | using System.Windows.Input; 9 | using System.Windows.Media; 10 | using System.Windows.Media.Animation; 11 | using System.Windows.Shapes; 12 | 13 | namespace TestSilverlightApplication 14 | { 15 | public partial class HorizontalGridSplitter : ChildWindow 16 | { 17 | public HorizontalGridSplitter() 18 | { 19 | InitializeComponent(); 20 | } 21 | 22 | private void OKButton_Click(object sender, RoutedEventArgs e) 23 | { 24 | this.DialogResult = true; 25 | } 26 | 27 | private void CancelButton_Click(object sender, RoutedEventArgs e) 28 | { 29 | this.DialogResult = false; 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/ListControls.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace TestSilverlightApplication 2 | { 3 | public partial class ListControls 4 | { 5 | public ListControls() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/Properties/AppManifest.xml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/VerticalGridSplitter.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/VerticalGridSplitter.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Net; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Documents; 8 | using System.Windows.Input; 9 | using System.Windows.Media; 10 | using System.Windows.Media.Animation; 11 | using System.Windows.Shapes; 12 | 13 | namespace TestSilverlightApplication 14 | { 15 | public partial class VerticalGridSplitter : ChildWindow 16 | { 17 | public VerticalGridSplitter() 18 | { 19 | InitializeComponent(); 20 | } 21 | 22 | private void OKButton_Click(object sender, RoutedEventArgs e) 23 | { 24 | this.DialogResult = true; 25 | } 26 | 27 | private void CancelButton_Click(object sender, RoutedEventArgs e) 28 | { 29 | this.DialogResult = false; 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /src/TestApplications/TestSilverlightApplication/WindowLaunchers.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 |