├── .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 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/TestApplications/TestSilverlightApplication/WindowLaunchers.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | namespace TestSilverlightApplication
4 | {
5 | public partial class WindowLaunchers
6 | {
7 | public WindowLaunchers()
8 | {
9 | InitializeComponent();
10 | }
11 |
12 | private void LaunchHorizontalGridSplitter(object sender, RoutedEventArgs e)
13 | {
14 | new HorizontalGridSplitter().Show();
15 | }
16 |
17 | private void LaunchVerticalGridSplitter(object sender, RoutedEventArgs e)
18 | {
19 | new VerticalGridSplitter().Show();
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/ComplexNumber.cs:
--------------------------------------------------------------------------------
1 | namespace WindowsFormsTestApplication
2 | {
3 | public class ComplexNumber
4 | {
5 | public ComplexNumber(int real, int imaginary)
6 | {
7 | Real = real;
8 | Imaginary = imaginary;
9 | }
10 |
11 | public ComplexNumber() { }
12 |
13 | public int Real { get; set; }
14 | public int Imaginary { get; set; }
15 | }
16 | }
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/InputControls.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace WindowsFormsTestApplication
4 | {
5 | public partial class InputControls : UserControl
6 | {
7 | public InputControls()
8 | {
9 | InitializeComponent();
10 | }
11 |
12 | private void InputControls_EnabledChanged(object sender, System.EventArgs e)
13 | {
14 | DatePicker.Enabled = Enabled;
15 | CheckBox.Enabled = Enabled;
16 | TextBox.Enabled = Enabled;
17 | MultiLineTextBox.Enabled = Enabled;
18 | }
19 |
20 | private void TextBox_TextChanged(object sender, System.EventArgs e)
21 | {
22 | TextBox.AccessibleDescription = "Text Changed";
23 | }
24 |
25 | private void UnmaskPasswordButton_Click(object sender, System.EventArgs e)
26 | {
27 | PasswordBox.UseSystemPasswordChar = false;
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/ListControls.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace WindowsFormsTestApplication
4 | {
5 | public partial class ListControls : UserControl
6 | {
7 | public ListControls()
8 | {
9 | InitializeComponent();
10 | }
11 |
12 | private void ListControls_EnabledChanged(object sender, System.EventArgs e)
13 | {
14 | AComboBox.Enabled = Enabled;
15 | EditableComboBox.Enabled = Enabled;
16 | CheckedListBox.Enabled = Enabled;
17 | }
18 |
19 | private void mainToolStripMenuItem_Click(object sender, System.EventArgs e)
20 | {
21 | ListBoxWithVScrollBar.AccessibleDescription = "Root2 Clicked";
22 | }
23 |
24 | private void level2ToolStripMenuItem_Click(object sender, System.EventArgs e)
25 | {
26 | ListBoxWithVScrollBar.AccessibleDescription = "Level 2 Clicked";
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/ListViewWindow.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace WindowsFormsTestApplication
5 | {
6 | public partial class ListViewWindow : Form
7 | {
8 | public ListViewWindow()
9 | {
10 | InitializeComponent();
11 | }
12 |
13 | private void ListView_SelectedIndexChanged(object sender, EventArgs e)
14 | {
15 | if (ListView.SelectedIndices.Count == 0) return;
16 | ListView.AccessibleDescription = "ListView item selected - " + ListView.SelectedIndices[0];
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace WindowsFormsTestApplication
5 | {
6 | static class Program
7 | {
8 | ///
9 | /// The main entry point for the application.
10 | ///
11 | [STAThread]
12 | static void Main()
13 | {
14 | Application.EnableVisualStyles();
15 | Application.SetCompatibleTextRenderingDefault(false);
16 | Application.Run(new Form1());
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Scenarios/CustomUIItem/CustomUIItemScenario.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace WindowsFormsTestApplication.Scenarios.CustomUIItem
11 | {
12 | public partial class CustomUIItemScenario : Form
13 | {
14 | public CustomUIItemScenario()
15 | {
16 | InitializeComponent();
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Scenarios/CustomUIItem/MyDateControl.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace WindowsFormsTestApplication.Scenarios.CustomUIItem
4 | {
5 | public partial class MyDateControl : UserControl
6 | {
7 | public MyDateControl()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Scenarios/DragAndDropTestWindow.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace WindowsFormsTestApplication.Scenarios
4 | {
5 | public partial class DragAndDropTestWindow : Form
6 | {
7 | public DragAndDropTestWindow()
8 | {
9 | InitializeComponent();
10 | }
11 |
12 | private void TextBox_MouseDown(object sender, MouseEventArgs e)
13 | {
14 | TextBox.DoDragDrop("Foo", DragDropEffects.Move);
15 | }
16 |
17 | private void Button_DragEnter(object sender, DragEventArgs e)
18 | {
19 | DragDropResults.Text = "TextBoxDraggedOntoButton";
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Scenarios/FormWithoutScrollAndItemOutside.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace WindowsFormsTestApplication.Scenarios
4 | {
5 | public partial class FormWithoutScrollAndItemOutside : Form
6 | {
7 | public FormWithoutScrollAndItemOutside()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Scenarios/GetMultiple.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace WindowsFormsTestApplication.Scenarios
4 | {
5 | public partial class GetMultiple : Form
6 | {
7 | public GetMultiple()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Scenarios/WindowWithAmperstand.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace WindowsFormsTestApplication.Scenarios
11 | {
12 | public partial class WindowWithAmperstand : Form
13 | {
14 | public WindowWithAmperstand()
15 | {
16 | InitializeComponent();
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Scenarios/WindowWithNoTitleBar.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace WindowsFormsTestApplication.Scenarios
4 | {
5 | public partial class WindowWithNoTitleBar : Form
6 | {
7 | public WindowWithNoTitleBar()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/Scenarios/WindowWithScrollbars.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace WindowsFormsTestApplication.Scenarios
5 | {
6 | public partial class WindowWithScrollbars : Form
7 | {
8 | public WindowWithScrollbars()
9 | {
10 | InitializeComponent();
11 | }
12 |
13 | private void ButtonBackUpTop_Click(object sender, EventArgs e)
14 | {
15 | ButtonBackUpTop.AccessibleDescription = "ButtonBackUpTopClicked";
16 | }
17 |
18 | private void HiddenButton_Click(object sender, EventArgs e)
19 | {
20 | HiddenButton.AccessibleDescription = "HiddenButtonClicked";
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/TestItem.cs:
--------------------------------------------------------------------------------
1 | namespace WindowsFormsTestApplication
2 | {
3 | public class TestItem
4 | {
5 | public int Id { get; set; }
6 | public string Contents { get; set; }
7 | public string Description { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/White.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/src/TestApplications/WindowsFormsTestApplication/White.jpg
--------------------------------------------------------------------------------
/src/TestApplications/WindowsFormsTestApplication/WindowsFormsTestApplication.csproj.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | No
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/App.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Windows;
7 |
8 | namespace WpfTestApplication
9 | {
10 | ///
11 | /// Interaction logic for App.xaml
12 | ///
13 | public partial class App : Application
14 | {
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Custom controls/CustomItemAutiomationPeer.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Automation.Peers;
2 |
3 | namespace WpfTestApplication
4 | {
5 | public class CustomItemAutiomationPeer : UIElementAutomationPeer
6 | {
7 | private readonly CustomItem _customItem;
8 |
9 | public CustomItemAutiomationPeer(CustomItem customItem)
10 | : base (customItem)
11 | {
12 | _customItem = customItem;
13 | }
14 |
15 | protected override string GetClassNameCore()
16 | {
17 | return _customItem.GetType().Name;
18 | }
19 |
20 | protected override string GetNameCore()
21 | {
22 | return _customItem.Name;
23 | }
24 |
25 | protected override string GetAutomationIdCore()
26 | {
27 | return _customItem.GetType().Name;
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/ListViewData.cs:
--------------------------------------------------------------------------------
1 | namespace WpfTestApplication
2 | {
3 | public class ListViewData
4 | {
5 | public ListViewData()
6 | {
7 | }
8 |
9 | public ListViewData(string key, string value)
10 | {
11 | Key = key;
12 | Value = value;
13 | }
14 |
15 | public string Key { get; set; }
16 | public string Value { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Person.cs:
--------------------------------------------------------------------------------
1 | namespace WpfTestApplication
2 | {
3 | public class Person
4 | {
5 | public Person(string name, string country, bool alive, string display, string details)
6 | {
7 | Name = name;
8 | Country = country;
9 | Alive = alive;
10 | Display = display;
11 | Details = details;
12 | }
13 |
14 | public string Name { get; set; }
15 | public string Country { get; set; }
16 | public bool Alive { get; set; }
17 | public string Display { get; set; }
18 | public string Details { get; set; }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/CustomUIItem/CustomUIItemScenario.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/CustomUIItem/CustomUIItemScenario.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Data;
8 | using System.Windows.Documents;
9 | using System.Windows.Input;
10 | using System.Windows.Media;
11 | using System.Windows.Media.Imaging;
12 | using System.Windows.Shapes;
13 |
14 | namespace WpfTestApplication.Scenarios.CustomUIItem
15 | {
16 | ///
17 | /// Interaction logic for CustomUIItemScenario.xaml
18 | ///
19 | public partial class CustomUIItemScenario : Window
20 | {
21 | public CustomUIItemScenario()
22 | {
23 | InitializeComponent();
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/CustomUIItem/MyDateControl.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/CustomUIItem/MyDateControl.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Data;
8 | using System.Windows.Documents;
9 | using System.Windows.Input;
10 | using System.Windows.Media;
11 | using System.Windows.Media.Imaging;
12 | using System.Windows.Navigation;
13 | using System.Windows.Shapes;
14 |
15 | namespace WpfTestApplication.Scenarios.CustomUIItem
16 | {
17 | ///
18 | /// Interaction logic for MyDateControl.xaml
19 | ///
20 | public partial class MyDateControl : UserControl
21 | {
22 | public MyDateControl()
23 | {
24 | InitializeComponent();
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/DragAndDropTestWindow.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/DragAndDropTestWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Input;
3 |
4 | namespace WpfTestApplication
5 | {
6 | public partial class DragAndDropTestWindow
7 | {
8 | public DragAndDropTestWindow()
9 | {
10 | InitializeComponent();
11 | }
12 |
13 | private void ButtonOnDrop(object sender, DragEventArgs e)
14 | {
15 | DragDropResults.Content = "TextBoxDraggedOntoButton";
16 | }
17 |
18 | private void TextBox_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
19 | {
20 | DragDrop.DoDragDrop(TextBox, "Foo", DragDropEffects.Move);
21 | e.Handled = true;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/FormWithoutScrollAndItemOutside.xaml:
--------------------------------------------------------------------------------
1 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/FormWithoutScrollAndItemOutside.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Windows;
6 | using System.Windows.Controls;
7 | using System.Windows.Data;
8 | using System.Windows.Documents;
9 | using System.Windows.Input;
10 | using System.Windows.Media;
11 | using System.Windows.Media.Imaging;
12 | using System.Windows.Shapes;
13 |
14 | namespace WpfTestApplication
15 | {
16 | ///
17 | /// Interaction logic for FormWithoutScrollAndControlOutside.xaml
18 | ///
19 | public partial class FormWithoutScrollAndControlOutside : Window
20 | {
21 | public FormWithoutScrollAndControlOutside()
22 | {
23 | InitializeComponent();
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/GetMultiple.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace WpfTestApplication
2 | {
3 | public partial class GetMultiple
4 | {
5 | public GetMultiple()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/HorizontalGridSplitter.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/HorizontalGridSplitter.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace WpfTestApplication
2 | {
3 | public partial class HorizontalGridSplitter
4 | {
5 | public HorizontalGridSplitter()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/VerticalGridSplitter.xaml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/VerticalGridSplitter.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace WpfTestApplication
2 | {
3 | public partial class VerticalGridSplitter
4 | {
5 | public VerticalGridSplitter()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/WindowWithScrollbars.xaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/Scenarios/WindowWithScrollbars.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 | using System.Windows.Automation;
3 |
4 | namespace WpfTestApplication.Scenarios
5 | {
6 | public partial class WindowWithScrollbars
7 | {
8 | public WindowWithScrollbars()
9 | {
10 | InitializeComponent();
11 | }
12 |
13 | private void ButtonBackUpTop_OnClick(object sender, RoutedEventArgs e)
14 | {
15 | AutomationProperties.SetHelpText(ButtonBackUpTop, "ButtonBackUpTopClicked");
16 | }
17 |
18 | private void HiddenButton_OnClick(object sender, RoutedEventArgs e)
19 | {
20 | AutomationProperties.SetHelpText(HiddenButton, "HiddenButtonClicked");
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/TestApplications/WpfTestApplication/White.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/src/TestApplications/WpfTestApplication/White.jpg
--------------------------------------------------------------------------------
/src/TestStack.White.Reporting/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/TestStack.White.Reporting/Configuration/ReportingConfiguration.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.Reporting.Configuration
2 | {
3 | public interface ReportingConfiguration
4 | {
5 | bool PublishTestReports { get; }
6 | }
7 | }
--------------------------------------------------------------------------------
/src/TestStack.White.Reporting/Domain/IReport.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace TestStack.White.Reporting.Domain
4 | {
5 | public interface IReport
6 | {
7 | void Begin(string name);
8 | void Next(Type type);
9 | void Act();
10 | void Finish();
11 | }
12 | }
--------------------------------------------------------------------------------
/src/TestStack.White.Reporting/Domain/NullSessionReport.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace TestStack.White.Reporting.Domain
4 | {
5 | public class NullSessionReport : IReport
6 | {
7 | public virtual void Begin(string name) { }
8 | public virtual void Next(Type type) { }
9 | public virtual void Act() { }
10 | public virtual void Finish() { }
11 | }
12 | }
--------------------------------------------------------------------------------
/src/TestStack.White.Reporting/Domain/ReportWriter.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using TestStack.White.Reporting.Utility;
3 |
4 | namespace TestStack.White.Reporting.Domain
5 | {
6 | public class ReportWriter
7 | {
8 | public static void Write(SubFlows subFlows, string location)
9 | {
10 | if (!subFlows.IsEmpty())
11 | {
12 | string fileName = string.Format(@"{0}\{1}-{2}.html", location, "Report", subFlows.FlowName);
13 | File.WriteAllText(fileName, HtmlGenerator.GenerateReport(subFlows));
14 | }
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/src/TestStack.White.Reporting/Domain/ScreenShot.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.Reporting.Domain
2 | {
3 | public class ScreenShot
4 | {
5 | private readonly string snapShotPath;
6 | private readonly string thumbNailPath;
7 |
8 | public ScreenShot(string snapShotPath, string thumbNailPath)
9 | {
10 | this.snapShotPath = snapShotPath;
11 | this.thumbNailPath = thumbNailPath;
12 | }
13 |
14 | public virtual string SnapShotPath
15 | {
16 | get { return snapShotPath; }
17 | }
18 |
19 | public virtual string ThumbNailPath
20 | {
21 | get { return thumbNailPath; }
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/TestStack.White.Reporting/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/TestStack.White.Reporting/white.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/src/TestStack.White.Reporting/white.snk
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects.UITests/DummyScreen.cs:
--------------------------------------------------------------------------------
1 | using TestStack.White.UIItems.WindowItems;
2 |
3 | namespace TestStack.White.ScreenObjects.UITests
4 | {
5 | public class DummyScreen : AppScreen
6 | {
7 | public DummyScreen(Window window, ScreenRepository screenRepository) : base(window, screenRepository) {}
8 | }
9 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects.UITests/Testing/BaseScreen.cs:
--------------------------------------------------------------------------------
1 | using TestStack.White.UIItems;
2 | using TestStack.White.UIItems.WindowItems;
3 |
4 | namespace TestStack.White.ScreenObjects.UITests.Testing
5 | {
6 | public class BaseScreen : AppScreen
7 | {
8 | protected Button Button = null;
9 |
10 | public BaseScreen(Window window, ScreenRepository screenRepository) : base(window, screenRepository) { }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects.UITests/Testing/MainProgressBars.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 | using TestStack.White.UIItems;
3 | using TestStack.White.UIItems.WindowItems;
4 |
5 | namespace TestStack.White.ScreenObjects.UITests.Testing
6 | {
7 | public class MainProgressBars : AppScreenComponent
8 | {
9 | protected ProgressBar ProgressBar;
10 |
11 | protected MainProgressBars() {}
12 |
13 | public MainProgressBars(Window window, ScreenRepository screenRepository) : base(window, screenRepository) {}
14 |
15 | public virtual void Check()
16 | {
17 | Assert.That(ProgressBar.Value, Is.EqualTo(50));
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects.UITests/Testing/ModalScreen.cs:
--------------------------------------------------------------------------------
1 | using TestStack.White.UIItems.WindowItems;
2 |
3 | namespace TestStack.White.ScreenObjects.UITests.Testing
4 | {
5 | public class ModalScreen : AppScreen
6 | {
7 | public ModalScreen(Window window, ScreenRepository screenRepository) : base(window, screenRepository) {}
8 | }
9 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects.UITests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/AppScreenComponent.cs:
--------------------------------------------------------------------------------
1 | using TestStack.White.UIItems.WindowItems;
2 |
3 | namespace TestStack.White.ScreenObjects
4 | {
5 | public class AppScreenComponent : RepositoryComponent
6 | {
7 | protected AppScreenComponent() {}
8 | public AppScreenComponent(Window window, ScreenRepository screenRepository) : base(window, screenRepository) {}
9 |
10 | public override string ToString()
11 | {
12 | return GetType().Name;
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/AppWindow.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.ScreenObjects
2 | {
3 | public class AppWindow
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Configuration/RepositoryConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 |
3 | namespace TestStack.White.ScreenObjects.Configuration
4 | {
5 | //TODO: Power management
6 | public interface RepositoryConfiguration
7 | {
8 | bool RecordFlow { get; }
9 | DirectoryInfo ServiceCallHistoryLocation { get; }
10 | bool UseHistory { get; }
11 | }
12 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/EntityMapping/EntityFieldNotFoundException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.Serialization;
3 |
4 | namespace TestStack.White.ScreenObjects.EntityMapping
5 | {
6 | [Serializable]
7 | public class EntityFieldNotFoundException : Exception
8 | {
9 | public EntityFieldNotFoundException() { }
10 | public EntityFieldNotFoundException(string message) : base(message) { }
11 | public EntityFieldNotFoundException(string message, Exception exception) : base(message, exception) { }
12 | protected EntityFieldNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context) { }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/EntityMapping/NestedEntities.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace TestStack.White.ScreenObjects.EntityMapping
5 | {
6 | [Serializable]
7 | public class NestedEntities : List
8 | {
9 | public NestedEntities(Entity entity)
10 | {
11 | TraverseAndAdd(entity);
12 | }
13 |
14 | private void TraverseAndAdd(Entity entity)
15 | {
16 | if (Contains(entity)) return;
17 |
18 | Add(entity);
19 | var entityType = entity.GetType();
20 | foreach (var fieldInfo in entityType.GetFields(Entity.BindingFlag))
21 | {
22 | if (typeof(Entity).IsAssignableFrom(fieldInfo.FieldType))
23 | {
24 | var nestedEntity = fieldInfo.GetValue(entity) as Entity;
25 | if (nestedEntity != null) TraverseAndAdd(nestedEntity);
26 | }
27 | }
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/IFieldMap.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace TestStack.White.ScreenObjects
4 | {
5 | public interface IFieldMap
6 | {
7 | ///
8 | /// Derives the field on the Entity, which would be populated for the given controlName and controlType
9 | ///
10 | ///
11 | ///
12 | ///
13 | string GetFieldNameFor(string controlName, Type controlType);
14 | }
15 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Interceptors/ScreenInterceptors.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.ScreenObjects.Interceptors
2 | {
3 | public class ScreenInterceptors
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Interceptors/ScreenObjectInterceptor.cs:
--------------------------------------------------------------------------------
1 | using Castle.DynamicProxy;
2 |
3 | namespace TestStack.White.ScreenObjects.Interceptors
4 | {
5 | public class ScreenObjectInterceptor : IInterceptor
6 | {
7 | private readonly AppScreen appScreen;
8 |
9 | public ScreenObjectInterceptor(AppScreen appScreen)
10 | {
11 | this.appScreen = appScreen;
12 | }
13 |
14 | public virtual void Intercept(IInvocation invocation)
15 | {
16 | invocation.Method.Invoke(appScreen, invocation.Arguments);
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Interceptors/WindowInterceptor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Castle.DynamicProxy;
3 | using TestStack.White.UIItems.WindowItems;
4 |
5 | namespace TestStack.White.ScreenObjects.Interceptors
6 | {
7 | public class WindowInterceptor : IInterceptor
8 | {
9 | private readonly Window window;
10 | private readonly ScreenRepositoryListener listener;
11 |
12 | public WindowInterceptor(Window window, ScreenRepositoryListener listener)
13 | {
14 | this.window = window;
15 | this.listener = listener;
16 | }
17 |
18 | public virtual void Intercept(IInvocation invocation)
19 | {
20 | try
21 | {
22 | invocation.Method.Invoke(window, invocation.Arguments);
23 | }
24 | catch (Exception)
25 | {
26 | listener.ScreenChanged();
27 | }
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/RepositoryComponent.cs:
--------------------------------------------------------------------------------
1 | using TestStack.White.UIItems.WindowItems;
2 |
3 | namespace TestStack.White.ScreenObjects
4 | {
5 | public class RepositoryComponent
6 | {
7 | protected readonly Window Window;
8 | protected readonly ScreenRepository ScreenRepository;
9 |
10 | protected RepositoryComponent() {}
11 |
12 | public RepositoryComponent(Window window, ScreenRepository screenRepository)
13 | {
14 | Window = window;
15 | ScreenRepository = screenRepository;
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/ScreenAttributes/AutomationIdAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using TestStack.White.UIItems.Finders;
3 |
4 | namespace TestStack.White.ScreenObjects.ScreenAttributes
5 | {
6 | [AttributeUsage(AttributeTargets.Field)]
7 | public class AutomationIdAttribute : SearchCriteriaAttribute
8 | {
9 | private readonly string name;
10 |
11 | public AutomationIdAttribute(string name)
12 | {
13 | this.name = name;
14 | }
15 |
16 | public override void Apply(SearchCriteria searchCriteria)
17 | {
18 | searchCriteria.AndAutomationId(name);
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/ScreenAttributes/FrameworkIdAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using TestStack.White.UIItems;
3 | using TestStack.White.UIItems.Finders;
4 |
5 | namespace TestStack.White.ScreenObjects.ScreenAttributes
6 | {
7 | [AttributeUsage(AttributeTargets.Field)]
8 | public class FrameworkIdAttribute : SearchCriteriaAttribute
9 | {
10 | private readonly WindowsFramework framework;
11 |
12 | public FrameworkIdAttribute(string id)
13 | {
14 | framework = WindowsFrameworkExtensions.FromFrameworkId(id);
15 | }
16 |
17 | public FrameworkIdAttribute(WindowsFramework framework)
18 | {
19 | this.framework = framework;
20 | }
21 |
22 | public override void Apply(SearchCriteria searchCriteria)
23 | {
24 | searchCriteria.AndOfFramework(framework);
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/ScreenAttributes/IndexAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using TestStack.White.UIItems.Finders;
3 |
4 | namespace TestStack.White.ScreenObjects.ScreenAttributes
5 | {
6 | [AttributeUsage(AttributeTargets.Field)]
7 | public class IndexAttribute : SearchCriteriaAttribute
8 | {
9 | private readonly int index;
10 |
11 | public IndexAttribute(int index)
12 | {
13 | this.index = index;
14 | }
15 |
16 | public override void Apply(SearchCriteria searchCriteria)
17 | {
18 | searchCriteria.AndIndex(index);
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/ScreenAttributes/SearchCriteriaAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using TestStack.White.UIItems.Finders;
3 |
4 | namespace TestStack.White.ScreenObjects.ScreenAttributes
5 | {
6 | public abstract class SearchCriteriaAttribute : Attribute
7 | {
8 | public abstract void Apply(SearchCriteria searchCriteria);
9 | }
10 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/ScreenAttributes/TextAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using TestStack.White.UIItems.Finders;
3 |
4 | namespace TestStack.White.ScreenObjects.ScreenAttributes
5 | {
6 | [AttributeUsage(AttributeTargets.Field)]
7 | public class TextAttribute : SearchCriteriaAttribute
8 | {
9 | private readonly string name;
10 |
11 | public TextAttribute(string name)
12 | {
13 | this.name = name;
14 | }
15 |
16 | public override void Apply(SearchCriteria searchCriteria)
17 | {
18 | searchCriteria.AndByText(name);
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/ScreenFlow/ScreenIdentity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace TestStack.White.ScreenObjects.ScreenFlow
4 | {
5 | public class ScreenIdentity
6 | {
7 | private readonly Type type;
8 | private string title;
9 |
10 | public ScreenIdentity(Type type, string title)
11 | {
12 | this.type = type;
13 | this.title = title;
14 | }
15 |
16 | public virtual Type Type
17 | {
18 | get { return type; }
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/ScreenFlow/WorkFlow.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/src/TestStack.White.ScreenObjects/ScreenFlow/WorkFlow.cs
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/ScreenRepositoryListener.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace TestStack.White.ScreenObjects
4 | {
5 | public interface ScreenRepositoryListener
6 | {
7 | void NewScreen(Type screenType, string title);
8 | void MessageBox(string title);
9 | void Disposing();
10 | void ScreenChanged();
11 | }
12 |
13 | public class NullScreenRepositoryListener : ScreenRepositoryListener
14 | {
15 | public virtual void NewScreen(Type screenType, string title) {}
16 |
17 | public virtual void MessageBox(string title) { }
18 |
19 | public virtual void Disposing() { }
20 |
21 | public virtual void ScreenChanged() {}
22 | }
23 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Services/IWorkEnvironment.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.ScreenObjects.Services
2 | {
3 | public interface IWorkEnvironment
4 | {
5 | object TakeSnapshot();
6 | void RevertToSnapshot(object snapshotId);
7 | void DropSnapshot(object snapshotId);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Services/LastServiceCallStatus.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.ScreenObjects.Services
2 | {
3 | public class LastServiceCallStatus
4 | {
5 | private readonly object returnValue;
6 |
7 | public LastServiceCallStatus(object returnValue)
8 | {
9 | this.returnValue = returnValue;
10 | }
11 |
12 | protected LastServiceCallStatus() {}
13 |
14 | public virtual bool WasExecuted
15 | {
16 | get { return true; }
17 | }
18 |
19 | public virtual object ReturnValue
20 | {
21 | get { return returnValue; }
22 | }
23 | }
24 |
25 | public class NullLastServiceCallStatus : LastServiceCallStatus
26 | {
27 | public override bool WasExecuted
28 | {
29 | get { return false; }
30 | }
31 |
32 | public override object ReturnValue
33 | {
34 | get { return null; }
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Services/NullExecutionHistory.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.ScreenObjects.Services
2 | {
3 | public class NullExecutionHistory : ExecutionHistory
4 | {
5 | public override void Add(ServiceCall serviceCall) {}
6 |
7 | public override ServiceCalls FindCalls(ServiceCall match)
8 | {
9 | return new ServiceCalls();
10 | }
11 |
12 | public override object Data
13 | {
14 | get { return null; }
15 | set { }
16 | }
17 |
18 | public override object LastSnapshot
19 | {
20 | set { }
21 | get { return null; }
22 | }
23 |
24 | public override bool HasError
25 | {
26 | get { return false; }
27 | set {}
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Services/NullServiceExecution.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 |
4 | namespace TestStack.White.ScreenObjects.Services
5 | {
6 | public class NullServiceExecution : ServiceExecution
7 | {
8 | public override LastServiceCallStatus Invoking(Service service, MethodInfo methodInfo)
9 | {
10 | return new NullLastServiceCallStatus();
11 | }
12 |
13 | public override void Invoked(object returnValue)
14 | {
15 | }
16 |
17 | public override void TakeSnapshot()
18 | {
19 | }
20 |
21 | public override void Error()
22 | {
23 | }
24 |
25 | public override void Dispose()
26 | {
27 | }
28 |
29 | public override T CreateData(params object[] objs)
30 | {
31 | return (T)Activator.CreateInstance(typeof(T), objs);
32 | }
33 |
34 | public override void RevertToSnapshot()
35 | {
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Services/NullWorkEnvironment.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.ScreenObjects.Services
2 | {
3 | public class NullWorkEnvironment : IWorkEnvironment
4 | {
5 | public virtual object TakeSnapshot()
6 | {
7 | return null;
8 | }
9 |
10 | public virtual void RevertToSnapshot(object snapshotId) { }
11 |
12 | public virtual void DropSnapshot(object snapshotId) { }
13 | }
14 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Services/Service.cs:
--------------------------------------------------------------------------------
1 | namespace TestStack.White.ScreenObjects.Services
2 | {
3 | public interface Service {}
4 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Services/ServiceCalls.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | namespace TestStack.White.ScreenObjects.Services
6 | {
7 | public class ServiceCalls : List
8 | {
9 | public ServiceCalls(IEnumerable entities) : base(entities.OfType()) {}
10 | public ServiceCalls() {}
11 |
12 | public virtual ServiceCalls Matching(ServiceCall match)
13 | {
14 | return new ServiceCalls(FindAll(obj => obj.Equals(match)));
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Services/WorkSnapshotAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace TestStack.White.ScreenObjects.Services
4 | {
5 | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
6 | public class WorkSnapshotAttribute : Attribute {}
7 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/Sessions/WorkConfiguration.cs:
--------------------------------------------------------------------------------
1 | using TestStack.White.Reporting.Configuration;
2 | using TestStack.White.Reporting.Domain;
3 |
4 | namespace TestStack.White.ScreenObjects.Sessions
5 | {
6 | public class WorkConfiguration
7 | {
8 | private string archiveLocation;
9 | private string name;
10 |
11 | public virtual string ArchiveLocation
12 | {
13 | get { return archiveLocation; }
14 | set { archiveLocation = value; }
15 | }
16 |
17 | public virtual string Name
18 | {
19 | get { return name; }
20 | set { name = value; }
21 | }
22 |
23 | public virtual IReport CreateSessionReport()
24 | {
25 | if (ReportingAppXmlConfiguration.Instance.PublishTestReports)
26 | return new SessionReport(archiveLocation, name);
27 | return new NullSessionReport();
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/TestStack.White.ScreenObjects/white.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TestStack/White/e328fd23e3ff7947477dcb4100efe61463245ae6/src/TestStack.White.ScreenObjects/white.snk
--------------------------------------------------------------------------------
/src/TestStack.White.UITests/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/TestStack.White.UITests/ControlTests/GroupBoxTests.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 | using TestStack.White.UIItems;
3 |
4 | namespace TestStack.White.UITests.ControlTests
5 | {
6 | [TestFixture(WindowsFramework.WinForms)]
7 | [TestFixture(WindowsFramework.Wpf)]
8 | public class GroupBoxTests : WhiteUITestBase
9 | {
10 | public GroupBoxTests(WindowsFramework framework)
11 | : base(framework)
12 | {
13 | }
14 |
15 | [Test]
16 | public void FindTest()
17 | {
18 | var groupBox = MainWindow.Get("ScenariosPane");
19 | Assert.That(groupBox, Is.Not.Null);
20 | }
21 |
22 | [Test]
23 | public void GetItemTest()
24 | {
25 | var groupBox = MainWindow.Get("ScenariosPane");
26 | var button = groupBox.Get