├── .gitattributes ├── .gitignore ├── Build.bat ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SetDevelopmentEnvironment.bat ├── Test.bat ├── azure-pipelines.yml ├── build ├── ApplyVersionToAssemblies.ps1 ├── Chocolatey │ └── CopyChocolateyLogs.ps1 ├── DownloadAndInstallDependencies.ps1 ├── Firefox │ ├── local-settings.js │ ├── mozilla.cfg │ └── override.ini ├── ProcessRunner.ps1 └── TeamViewer │ ├── EnableRemoteConnection.ps1 │ ├── TeamViewer_Settings.reg │ └── WaitForRemoteConnection.ps1 ├── deps.lock ├── images ├── CUITe.bmp ├── CUITe_128x128.png ├── CUITe_16x16.png ├── CUITe_256x256.png ├── CUITe_32x32.png ├── CUITe_64x64.png ├── NuGet_16x16.png └── NuGet_32x32.png ├── src ├── .nuget │ ├── NuGet.Config │ └── NuGet.exe ├── Build.proj ├── CUITe.IntegrationTests │ ├── App.config │ ├── CUITe.IntegrationTests.csproj │ ├── NuGet │ │ ├── App.config │ │ ├── AssemblyResourceLoader.cs │ │ ├── CodedUITestBinding.cs │ │ ├── CustomFeatureContext.cs │ │ ├── HtmlTests.cs │ │ ├── MessageFilter.cs │ │ ├── MsTestCodedUiGeneratorProvider .cs │ │ ├── NuGet.feature │ │ ├── NuGet.feature.custom.cs │ │ ├── NuGetFeatureSteps.cs │ │ ├── OpenTestSettingsFileWindow.cs │ │ ├── SolutionEventsListener.cs │ │ ├── TempDirectory.cs │ │ ├── TempFile.cs │ │ ├── TemporaryEnvironmentVariable.cs │ │ ├── VisualStudio2010 │ │ │ └── vstst.cs │ │ ├── VisualStudio2012 │ │ │ └── vstst.cs │ │ ├── VisualStudio2013 │ │ │ └── vstst.cs │ │ ├── VisualStudio2015 │ │ │ └── vstst.cs │ │ ├── VisualStudio2017 │ │ │ └── vstst.cs │ │ ├── VisualStudioAutomation.cs │ │ └── VisualStudioScreen.cs │ ├── ObjectRecorder │ │ ├── Features │ │ │ ├── Recording.feature │ │ │ └── Recording.feature.custom.cs │ │ ├── Screens │ │ │ ├── MainScreen.cs │ │ │ └── Notepad.cs │ │ └── Steps │ │ │ └── RecordingSteps.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── packages.config ├── CUITe.Silverlight │ ├── CUITe.Silverlight.VS2010.nuspec │ ├── CUITe.Silverlight.VS2012.nuspec │ ├── CUITe.Silverlight.VS2013.nuspec │ ├── CUITe.Silverlight.VS2015.nuspec │ ├── CUITe.Silverlight.VS2017.nuspec │ ├── CUITe.Silverlight.VS2019.nuspec │ ├── CUITe.Silverlight.VS2022.nuspec │ ├── CUITe.Silverlight.csproj │ ├── Controls │ │ └── SilverlightControls │ │ │ ├── SilverlightButton.cs │ │ │ ├── SilverlightCalendar.cs │ │ │ ├── SilverlightCell.cs │ │ │ ├── SilverlightCheckBox.cs │ │ │ ├── SilverlightChildWindow.cs │ │ │ ├── SilverlightComboBox.cs │ │ │ ├── SilverlightControl.cs │ │ │ ├── SilverlightControlOfT.cs │ │ │ ├── SilverlightDataPager.cs │ │ │ ├── SilverlightDatePicker.cs │ │ │ ├── SilverlightEdit.cs │ │ │ ├── SilverlightHyperlink.cs │ │ │ ├── SilverlightImage.cs │ │ │ ├── SilverlightLabel.cs │ │ │ ├── SilverlightList.cs │ │ │ ├── SilverlightListItem.cs │ │ │ ├── SilverlightPassword.cs │ │ │ ├── SilverlightProgressBar.cs │ │ │ ├── SilverlightRadioButton.cs │ │ │ ├── SilverlightSlider.cs │ │ │ ├── SilverlightSpinner.cs │ │ │ ├── SilverlightTab.cs │ │ │ ├── SilverlightTabItem.cs │ │ │ ├── SilverlightTable.cs │ │ │ ├── SilverlightTableSearchOptions.cs │ │ │ ├── SilverlightText.cs │ │ │ └── SilverlightTree.cs │ └── Properties │ │ └── AssemblyInfo.cs ├── CUITe.sln ├── CUITe.sln.DotSettings ├── CUITe.snk ├── CUITe.vsmdi ├── CUITe │ ├── Browsers │ │ ├── Browser.cs │ │ ├── Chrome.cs │ │ ├── Firefox.cs │ │ ├── IBrowser.cs │ │ └── InternetExplorer.cs │ ├── CUITe for Visual Studio 2010.nuspec │ ├── CUITe for Visual Studio 2012.nuspec │ ├── CUITe for Visual Studio 2013.nuspec │ ├── CUITe for Visual Studio 2015.nuspec │ ├── CUITe for Visual Studio 2017.nuspec │ ├── CUITe for Visual Studio 2019.nuspec │ ├── CUITe for Visual Studio 2022.nuspec │ ├── CUITe.csproj │ ├── Caches │ │ └── PropertyNamesCache.cs │ ├── Controls │ │ ├── ControlBase.cs │ │ ├── ControlBaseFactory.cs │ │ ├── ControlBaseOfT.cs │ │ ├── GenericException.cs │ │ ├── HtmlControls │ │ │ ├── BrowserDialogUnderTest.cs │ │ │ ├── BrowserWindowUnderTest.cs │ │ │ ├── DynamicBrowserWindowUnderTest.cs │ │ │ ├── HtmlAreaHyperlink.cs │ │ │ ├── HtmlAudio.cs │ │ │ ├── HtmlButton.cs │ │ │ ├── HtmlCell.cs │ │ │ ├── HtmlCheckBox.cs │ │ │ ├── HtmlComboBox.cs │ │ │ ├── HtmlControl.cs │ │ │ ├── HtmlCustom.cs │ │ │ ├── HtmlCustomListItem.cs │ │ │ ├── HtmlDiv.cs │ │ │ ├── HtmlDocument.cs │ │ │ ├── HtmlEdit.cs │ │ │ ├── HtmlEditableDiv.cs │ │ │ ├── HtmlEditableSpan.cs │ │ │ ├── HtmlFileInput.cs │ │ │ ├── HtmlFrame.cs │ │ │ ├── HtmlHeaderCell.cs │ │ │ ├── HtmlHeading1.cs │ │ │ ├── HtmlHeading2.cs │ │ │ ├── HtmlHeading3.cs │ │ │ ├── HtmlHeading4.cs │ │ │ ├── HtmlHeading5.cs │ │ │ ├── HtmlHeading6.cs │ │ │ ├── HtmlHyperlink.cs │ │ │ ├── HtmlIFrame.cs │ │ │ ├── HtmlImage.cs │ │ │ ├── HtmlInputButton.cs │ │ │ ├── HtmlIns.cs │ │ │ ├── HtmlLabel.cs │ │ │ ├── HtmlList.cs │ │ │ ├── HtmlListItem.cs │ │ │ ├── HtmlMedia.cs │ │ │ ├── HtmlOrderedList.cs │ │ │ ├── HtmlParagraph.cs │ │ │ ├── HtmlPassword.cs │ │ │ ├── HtmlProgressBar.cs │ │ │ ├── HtmlRadioButton.cs │ │ │ ├── HtmlRow.cs │ │ │ ├── HtmlScrollBar.cs │ │ │ ├── HtmlSlider.cs │ │ │ ├── HtmlSpan.cs │ │ │ ├── HtmlTable.cs │ │ │ ├── HtmlTableSearchOptions.cs │ │ │ ├── HtmlTextArea.cs │ │ │ ├── HtmlUnorderedList.cs │ │ │ ├── HtmlVideo.cs │ │ │ ├── HtmlXml.cs │ │ │ ├── IHasInnerText.cs │ │ │ └── Telerik │ │ │ │ └── ComboBox.cs │ │ ├── InvalidTraversalException.cs │ │ ├── ModifierKeysLifetime.cs │ │ ├── UITesting │ │ │ ├── ApplicationUnderTest.cs │ │ │ └── BrowserWindow.cs │ │ ├── UIWindowsSecurityWindow.cs │ │ ├── WinControls │ │ │ ├── WinButton.cs │ │ │ ├── WinCalendar.cs │ │ │ ├── WinCell.cs │ │ │ ├── WinCheckBox.cs │ │ │ ├── WinCheckBoxTreeItem.cs │ │ │ ├── WinClient.cs │ │ │ ├── WinColumnHeader.cs │ │ │ ├── WinComboBox.cs │ │ │ ├── WinControl.cs │ │ │ ├── WinControlOfT.cs │ │ │ ├── WinCustom.cs │ │ │ ├── WinDateTimePicker.cs │ │ │ ├── WinEdit.cs │ │ │ ├── WinGroup.cs │ │ │ ├── WinHyperlink.cs │ │ │ ├── WinList.cs │ │ │ ├── WinListItem.cs │ │ │ ├── WinMenu.cs │ │ │ ├── WinMenuBar.cs │ │ │ ├── WinMenuItem.cs │ │ │ ├── WinPane.cs │ │ │ ├── WinProgressBar.cs │ │ │ ├── WinRadioButton.cs │ │ │ ├── WinRow.cs │ │ │ ├── WinRowHeader.cs │ │ │ ├── WinScrollBar.cs │ │ │ ├── WinSeparator.cs │ │ │ ├── WinSlider.cs │ │ │ ├── WinSpinner.cs │ │ │ ├── WinSplitButton.cs │ │ │ ├── WinStatusBar.cs │ │ │ ├── WinTabList.cs │ │ │ ├── WinTabPage.cs │ │ │ ├── WinTable.cs │ │ │ ├── WinText.cs │ │ │ ├── WinTitleBar.cs │ │ │ ├── WinToolBar.cs │ │ │ ├── WinToolTip.cs │ │ │ ├── WinTree.cs │ │ │ ├── WinTreeItem.cs │ │ │ └── WinWindow.cs │ │ └── WpfControls │ │ │ ├── WpfButton.cs │ │ │ ├── WpfCalendar.cs │ │ │ ├── WpfCell.cs │ │ │ ├── WpfCheckBox.cs │ │ │ ├── WpfComboBox.cs │ │ │ ├── WpfControl.cs │ │ │ ├── WpfControlOfT.cs │ │ │ ├── WpfCustom.cs │ │ │ ├── WpfDatePicker.cs │ │ │ ├── WpfEdit.cs │ │ │ ├── WpfExpander.cs │ │ │ ├── WpfGroup.cs │ │ │ ├── WpfHyperlink.cs │ │ │ ├── WpfImage.cs │ │ │ ├── WpfList.cs │ │ │ ├── WpfListItem.cs │ │ │ ├── WpfMenu.cs │ │ │ ├── WpfMenuItem.cs │ │ │ ├── WpfPane.cs │ │ │ ├── WpfProgressBar.cs │ │ │ ├── WpfRadioButton.cs │ │ │ ├── WpfRow.cs │ │ │ ├── WpfScrollBar.cs │ │ │ ├── WpfSeparator.cs │ │ │ ├── WpfSlider.cs │ │ │ ├── WpfStatusBar.cs │ │ │ ├── WpfTabList.cs │ │ │ ├── WpfTabPage.cs │ │ │ ├── WpfTable.cs │ │ │ ├── WpfText.cs │ │ │ ├── WpfTitleBar.cs │ │ │ ├── WpfToggleButton.cs │ │ │ ├── WpfToolBar.cs │ │ │ ├── WpfToolTip.cs │ │ │ ├── WpfTree.cs │ │ │ ├── WpfTreeItem.cs │ │ │ └── WpfWindow.cs │ ├── DataSources │ │ ├── DataBlockIdNotFoundException.cs │ │ ├── XmlDataSource.cs │ │ └── XmlDataSourceNotFoundException.cs │ ├── Extensions │ │ └── Microsoft │ │ │ └── VisualStudio │ │ │ └── TestTools │ │ │ └── UITesting │ │ │ └── UITestControlExtensions.cs │ ├── PageObjects │ │ ├── Page.cs │ │ ├── PageObject.cs │ │ ├── PageObjectOfT.cs │ │ └── ViewObject.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── ScreenObjects │ │ ├── Screen.cs │ │ ├── ScreenObject.cs │ │ └── ScreenObjectOfT.cs │ ├── SearchConfigurations │ │ ├── AutomationIdConfigurator.cs │ │ ├── By.cs │ │ ├── ClassConfigurator.cs │ │ ├── ClassNameConfigurator.cs │ │ ├── ControlIdConfigurator.cs │ │ ├── ControlNameConfigurator.cs │ │ ├── ControlTypeConfigurator.cs │ │ ├── ISearchConfigurator.cs │ │ ├── IdConfigurator.cs │ │ ├── InstanceConfigurator.cs │ │ ├── InvalidSearchPropertiesFormatException.cs │ │ ├── NameConfigurator.cs │ │ ├── SearchConfigurator.cs │ │ ├── SearchPropertiesConfigurator.cs │ │ ├── TagNameConfigurator.cs │ │ └── ValueAttributeConfigurator.cs │ ├── Workflows │ │ └── Workflow.cs │ └── packages.config ├── CUITeTest │ ├── CUITeTest.csproj │ ├── Cache │ │ └── PropertyNamesCacheTest.cs │ ├── Controls │ │ └── ControlBaseFactoryTest.cs │ ├── DataSources │ │ ├── XmlDataSource.xml │ │ └── XmlDataSourceTest.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── SearchConfigurations │ │ ├── AutomationIdConfiguratorTest.cs │ │ ├── BaseConfiguratorTest.cs │ │ ├── ByTest.cs │ │ ├── ClassConfiguratorTest.cs │ │ ├── ClassNameConfiguratorTest.cs │ │ ├── ControlIdConfiguratorTest.cs │ │ ├── ControlNameConfiguratorTest.cs │ │ ├── IdConfiguratorTest.cs │ │ ├── NameConfiguratorTest.cs │ │ ├── SearchPropertiesConfiguratorTest.cs │ │ ├── TagNameConfiguratorTest.cs │ │ └── ValueAttributeConfiguratorTest.cs ├── CUITe_ObjectRecorder │ ├── App.ico │ ├── CUITe_ObjectRecorder.csproj │ ├── CodeLanguage.cs │ ├── Form1.Designer.cs │ ├── Form1.cs │ ├── Form1.resx │ ├── Images │ │ ├── Copy.jpg │ │ ├── Delete.jpg │ │ ├── clear.gif │ │ ├── record.jpg │ │ ├── showcode.jpg │ │ └── table.jpg │ ├── Program.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── app.config ├── CommonAssemblyInfo.cs ├── DefineNetFxCompilationConstants.prop ├── Local.testsettings ├── Local_CUITv10.runsettings ├── Local_CUITv11.runsettings ├── Local_CUITv12.runsettings ├── Local_CUITv14.runsettings ├── Local_CUITv15.runsettings ├── Local_CUITv16.runsettings ├── Local_CUITv17.runsettings ├── Project.props ├── SystemsUnderTest │ ├── DefineNetFxCompilationConstants.prop │ ├── Sut.Html.PageObjectsTest │ │ ├── PageObjects │ │ │ ├── AboutPage.cs │ │ │ ├── LowerLeftPageObject.cs │ │ │ ├── LowerRightPageObject.cs │ │ │ ├── MainPage.cs │ │ │ ├── MiddlePageObject.cs │ │ │ ├── RebasedLowerLeftPageObject.cs │ │ │ ├── RebasedLowerRightPageObject.cs │ │ │ ├── RebasedUpperLeftPageObject.cs │ │ │ ├── RebasedUpperRightPageObject.cs │ │ │ ├── UpperLeftPageObject.cs │ │ │ └── UpperRightPageObject.cs │ │ ├── PageObjectsTest.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── Sut.Html.PageObjectsTest.csproj │ ├── Sut.Html.WorkflowsTest │ │ ├── PageObjects │ │ │ ├── AddressPage.cs │ │ │ ├── FinishedPage.cs │ │ │ └── NamePage.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Sut.Html.WorkflowsTest.csproj │ │ ├── Workflows │ │ │ └── WizardWorkflow.cs │ │ └── WorkflowsTest.cs │ ├── Sut.HtmlTest │ │ ├── App.config │ │ ├── BrowserWindowTests.cs │ │ ├── CrossBrowserHtmlControlTests.cs │ │ ├── DynamicBrowserWindowTitle.1.html │ │ ├── DynamicBrowserWindowTitle.2.html │ │ ├── DynamicBrowserWindowTitle.html │ │ ├── HtmlControlTests.cs │ │ ├── PageObjects │ │ │ ├── GoogleHomePageWithInvalidControlSearchProperties.cs │ │ │ ├── HtmlTestPage.Div1.cs │ │ │ ├── HtmlTestPage.Div2.cs │ │ │ ├── HtmlTestPage.cs │ │ │ ├── HtmlTestPageFeeds.cs │ │ │ ├── TeleriksASPNETComboBoxPage.cs │ │ │ └── TestHtmlPage.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Sut.HtmlTest.csproj │ │ ├── TestHtmlPage.html │ │ ├── iframe.html │ │ └── iframe_test.html │ ├── Sut.PeripheralInput │ │ ├── App.config │ │ ├── App.ico │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── KeyboardInputControl.xaml │ │ ├── KeyboardInputControl.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── MainWindowResources.xaml │ │ ├── MouseInputControl.xaml │ │ ├── MouseInputControl.xaml.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── Sut.PeripheralInput.csproj │ ├── Sut.PeripheralInputTest │ │ ├── KeyboardTest.cs │ │ ├── MouseTest.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ScreenObjects │ │ │ └── MainScreen.cs │ │ └── Sut.PeripheralInputTest.csproj │ ├── Sut.Silverlight.PageObjects │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Dialog.xaml │ │ ├── Dialog.xaml.cs │ │ ├── MainPage.xaml │ │ ├── MainPage.xaml.cs │ │ ├── Properties │ │ │ ├── AppManifest.xml │ │ │ └── AssemblyInfo.cs │ │ └── Sut.Silverlight.PageObjects.csproj │ ├── Sut.Silverlight.PageObjectsTest │ │ ├── PageFromProcessTests.cs │ │ ├── PageObjects │ │ │ ├── DialogPage.cs │ │ │ ├── LowerLeftPageObject.cs │ │ │ ├── LowerRightPageObject.cs │ │ │ ├── MainPage.cs │ │ │ ├── MiddlePageObject.cs │ │ │ ├── RebasedLowerLeftPageObject.cs │ │ │ ├── RebasedLowerRightPageObject.cs │ │ │ ├── RebasedUpperLeftPageObject.cs │ │ │ ├── RebasedUpperRightPageObject.cs │ │ │ ├── UpperLeftPageObject.cs │ │ │ └── UpperRightPageObject.cs │ │ ├── PageObjectsTest.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Sut.Silverlight.PageObjects.html │ │ ├── Sut.Silverlight.PageObjectsTest.csproj │ │ └── packages.config │ ├── Sut.Silverlight.Workflows │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── MainPage.xaml │ │ ├── MainPage.xaml.cs │ │ ├── MainPageResources.xaml │ │ ├── MainWindowViewModel.cs │ │ ├── Pages │ │ │ ├── AddressPage.xaml │ │ │ ├── AddressPage.xaml.cs │ │ │ ├── AddressPageViewModel.cs │ │ │ ├── FinishedPage.xaml │ │ │ ├── FinishedPage.xaml.cs │ │ │ ├── FinishedPageViewModel.cs │ │ │ ├── NamePage.xaml │ │ │ ├── NamePage.xaml.cs │ │ │ └── NamePageViewModel.cs │ │ ├── Properties │ │ │ ├── AppManifest.xml │ │ │ └── AssemblyInfo.cs │ │ ├── RelayCommand.cs │ │ └── Sut.Silverlight.Workflows.csproj │ ├── Sut.Silverlight.WorkflowsTest │ │ ├── PageObjects │ │ │ ├── AddressPage.cs │ │ │ ├── FinishedPage.cs │ │ │ └── NamePage.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Sut.Silverlight.Workflows.html │ │ ├── Sut.Silverlight.WorkflowsTest.csproj │ │ ├── Workflows │ │ │ └── WizardWorkflow.cs │ │ ├── WorkflowsTest.cs │ │ └── packages.config │ ├── Sut.Silverlight │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Assets │ │ │ ├── Images │ │ │ │ └── CUITe.jpg │ │ │ └── Styles.xaml │ │ ├── MainPage.xaml │ │ ├── MainPage.xaml.cs │ │ ├── Properties │ │ │ ├── AppManifest.xml │ │ │ └── AssemblyInfo.cs │ │ ├── Sut.Silverlight.csproj │ │ ├── TestChildWindow.xaml │ │ ├── TestChildWindow.xaml.cs │ │ └── Views │ │ │ ├── About.xaml │ │ │ ├── About.xaml.cs │ │ │ ├── ErrorWindow.xaml │ │ │ ├── ErrorWindow.xaml.cs │ │ │ ├── Home.xaml │ │ │ └── Home.xaml.cs │ ├── Sut.SilverlightTest │ │ ├── PageObjects │ │ │ └── TestPage.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── SilverlightControlTests.cs │ │ ├── Sut.Silverlight.html │ │ ├── Sut.SilverlightTest.csproj │ │ └── packages.config │ ├── Sut.WinForms.Controls │ │ ├── App.config │ │ ├── App.ico │ │ ├── MainForm.Designer.cs │ │ ├── MainForm.cs │ │ ├── MainForm.resx │ │ ├── Models │ │ │ ├── Gender.cs │ │ │ ├── Mocked.cs │ │ │ └── Person.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── Sut.WinForms.Controls.csproj │ ├── Sut.WinForms.ControlsTest │ │ ├── ControlTests.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ScreenObjects │ │ │ └── MainScreen.cs │ │ └── Sut.WinForms.ControlsTest.csproj │ ├── Sut.WinForms.ScreenObjects │ │ ├── App.config │ │ ├── App.ico │ │ ├── Dialog.Designer.cs │ │ ├── Dialog.cs │ │ ├── Dialog.resx │ │ ├── IdenticalButtonContentDialog.Designer.cs │ │ ├── IdenticalButtonContentDialog.cs │ │ ├── IdenticalButtonContentDialog.resx │ │ ├── MainForm.Designer.cs │ │ ├── MainForm.cs │ │ ├── MainForm.resx │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── Sut.WinForms.ScreenObjects.csproj │ ├── Sut.WinForms.ScreenObjectsTest │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ScreenObjects │ │ │ ├── DialogScreen.cs │ │ │ ├── IdenticalButtonContentScreen.cs │ │ │ ├── LowerLeftScreenObject.cs │ │ │ ├── LowerRightScreenObject.cs │ │ │ ├── MainScreen.cs │ │ │ ├── MiddleScreenObject.cs │ │ │ ├── RebasedLowerLeftScreenObject.cs │ │ │ ├── RebasedLowerRightScreenObject.cs │ │ │ ├── RebasedUpperLeftScreenObject.cs │ │ │ ├── RebasedUpperRightScreenObject.cs │ │ │ ├── UpperLeftScreenObject.cs │ │ │ └── UpperRightScreenObject.cs │ │ ├── ScreenObjectsTest.cs │ │ └── Sut.WinForms.ScreenObjectsTest.csproj │ ├── Sut.WinForms.Workflows │ │ ├── App.config │ │ ├── App.ico │ │ ├── MainForm.Designer.cs │ │ ├── MainForm.cs │ │ ├── MainForm.resx │ │ ├── Pages │ │ │ ├── AddressPage.Designer.cs │ │ │ ├── AddressPage.cs │ │ │ ├── AddressPage.resx │ │ │ ├── FinishedPage.Designer.cs │ │ │ ├── FinishedPage.cs │ │ │ ├── FinishedPage.resx │ │ │ ├── NamePage.Designer.cs │ │ │ ├── NamePage.cs │ │ │ └── NamePage.resx │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── Sut.WinForms.Workflows.csproj │ ├── Sut.WinForms.WorkflowsTest │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ScreenObjects │ │ │ ├── AddressWizardPage.cs │ │ │ ├── FinishedWizardPage.cs │ │ │ └── NameWizardPage.cs │ │ ├── Sut.WinForms.WorkflowsTest.csproj │ │ ├── Workflows │ │ │ └── WizardWorkflow.cs │ │ └── WorkflowsTest.cs │ ├── Sut.Wpf.Controls │ │ ├── App.config │ │ ├── App.ico │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Controls │ │ │ ├── ButtonControl.xaml │ │ │ ├── ButtonControl.xaml.cs │ │ │ ├── CalendarControl.xaml │ │ │ ├── CalendarControl.xaml.cs │ │ │ ├── CheckBoxControl.xaml │ │ │ ├── CheckBoxControl.xaml.cs │ │ │ ├── ComboBoxControl.xaml │ │ │ ├── ComboBoxControl.xaml.cs │ │ │ ├── CustomControl.cs │ │ │ ├── CustomControlAutomationPeer.cs │ │ │ ├── CustomControlControl.xaml │ │ │ ├── CustomControlControl.xaml.cs │ │ │ ├── DataGridControl.xaml │ │ │ ├── DataGridControl.xaml.cs │ │ │ ├── DatePickerControl.xaml │ │ │ ├── DatePickerControl.xaml.cs │ │ │ ├── ExpanderControl.xaml │ │ │ ├── ExpanderControl.xaml.cs │ │ │ ├── FrameControl.xaml │ │ │ ├── FrameControl.xaml.cs │ │ │ ├── GroupBoxControl.xaml │ │ │ ├── GroupBoxControl.xaml.cs │ │ │ ├── HyperlinkControl.xaml │ │ │ ├── HyperlinkControl.xaml.cs │ │ │ ├── ImageControl.xaml │ │ │ ├── ImageControl.xaml.cs │ │ │ ├── LabelControl.xaml │ │ │ ├── LabelControl.xaml.cs │ │ │ ├── ListBoxControl.xaml │ │ │ ├── ListBoxControl.xaml.cs │ │ │ ├── ListViewControl.xaml │ │ │ ├── ListViewControl.xaml.cs │ │ │ ├── MenuControl.xaml │ │ │ ├── MenuControl.xaml.cs │ │ │ ├── PasswordBoxControl.xaml │ │ │ ├── PasswordBoxControl.xaml.cs │ │ │ ├── ProgressBarControl.xaml │ │ │ ├── ProgressBarControl.xaml.cs │ │ │ ├── RadioButtonControl.xaml │ │ │ ├── RadioButtonControl.xaml.cs │ │ │ ├── RichTextBoxControl.xaml │ │ │ ├── RichTextBoxControl.xaml.cs │ │ │ ├── ScrollBarControl.xaml │ │ │ ├── ScrollBarControl.xaml.cs │ │ │ ├── ScrollViewerControl.xaml │ │ │ ├── ScrollViewerControl.xaml.cs │ │ │ ├── SeparatorControl.xaml │ │ │ ├── SeparatorControl.xaml.cs │ │ │ ├── SliderControl.xaml │ │ │ ├── SliderControl.xaml.cs │ │ │ ├── StatusBarControl.xaml │ │ │ ├── StatusBarControl.xaml.cs │ │ │ ├── TabControlControl.xaml │ │ │ ├── TabControlControl.xaml.cs │ │ │ ├── TextBlockControl.xaml │ │ │ ├── TextBlockControl.xaml.cs │ │ │ ├── TextBoxControl.xaml │ │ │ ├── TextBoxControl.xaml.cs │ │ │ ├── ToggleButtonControl.xaml │ │ │ ├── ToggleButtonControl.xaml.cs │ │ │ ├── ToolBarControl.xaml │ │ │ ├── ToolBarControl.xaml.cs │ │ │ ├── TreeViewControl.xaml │ │ │ └── TreeViewControl.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── MainWindowResources.xaml │ │ ├── Models │ │ │ ├── Gender.cs │ │ │ ├── Mocked.cs │ │ │ └── Person.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ │ └── Sample.png │ │ ├── Sut.Wpf.Controls.csproj │ │ └── Themes │ │ │ └── Generic.xaml │ ├── Sut.Wpf.ControlsTest │ │ ├── ControlTests.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ScreenObjects │ │ │ └── MainScreen.cs │ │ └── Sut.Wpf.ControlsTest.csproj │ ├── Sut.Wpf.ScreenObjects │ │ ├── App.config │ │ ├── App.ico │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Dialog.xaml │ │ ├── Dialog.xaml.cs │ │ ├── IdenticalButtonContentDialog.xaml │ │ ├── IdenticalButtonContentDialog.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── Sut.Wpf.ScreenObjects.csproj │ ├── Sut.Wpf.ScreenObjectsTest │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ScreenComponentsTest.cs │ │ ├── ScreenObjects │ │ │ ├── DialogScreen.cs │ │ │ ├── IdenticalButtonContentScreen.cs │ │ │ ├── LowerLeftScreenObject.cs │ │ │ ├── LowerRightScreenObject.cs │ │ │ ├── MainScreen.cs │ │ │ ├── MiddleScreenObject.cs │ │ │ ├── RebasedLowerLeftScreenObject.cs │ │ │ ├── RebasedLowerRightScreenObject.cs │ │ │ ├── RebasedUpperLeftScreenObject.cs │ │ │ ├── RebasedUpperRightScreenObject.cs │ │ │ ├── UpperLeftScreenObject.cs │ │ │ └── UpperRightScreenObject.cs │ │ └── Sut.Wpf.ScreenObjectsTest.csproj │ ├── Sut.Wpf.Workflows │ │ ├── App.config │ │ ├── App.ico │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ ├── MainWindowResources.xaml │ │ ├── MainWindowViewModel.cs │ │ ├── Pages │ │ │ ├── AddressPage.xaml │ │ │ ├── AddressPage.xaml.cs │ │ │ ├── AddressPageViewModel.cs │ │ │ ├── FinishedPage.xaml │ │ │ ├── FinishedPage.xaml.cs │ │ │ ├── FinishedPageViewModel.cs │ │ │ ├── NamePage.xaml │ │ │ ├── NamePage.xaml.cs │ │ │ └── NamePageViewModel.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── RelayCommand.cs │ │ └── Sut.Wpf.Workflows.csproj │ ├── Sut.Wpf.WorkflowsTest │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── ScreenObjects │ │ │ ├── AddressWizardPage.cs │ │ │ ├── FinishedWizardPage.cs │ │ │ └── NameWizardPage.cs │ │ ├── Sut.Wpf.WorkflowsTest.csproj │ │ ├── Workflows │ │ │ └── WizardWorkflow.cs │ │ └── WorkflowsTest.cs │ └── TestHelpers │ │ ├── ProcessRunner.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── RunResult.cs │ │ ├── TempWebPage.cs │ │ └── TestHelpers.csproj ├── Targets │ ├── CUIT.Silverlight.targets │ ├── CUIT.targets │ ├── CodedUITests.targets │ └── SilverlightUIAutomationHelper.targets └── ThirdParty │ └── CUIT │ ├── v10 │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.xml │ ├── Microsoft.VisualStudio.TestTools.UITesting.dll │ └── Microsoft.VisualStudio.TestTools.UITesting.xml │ ├── v11 │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.xml │ ├── Microsoft.VisualStudio.TestTools.UITesting.dll │ └── Microsoft.VisualStudio.TestTools.UITesting.xml │ ├── v12 │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.xml │ ├── Microsoft.VisualStudio.TestTools.UITesting.dll │ └── Microsoft.VisualStudio.TestTools.UITesting.xml │ ├── v14 │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.xml │ ├── Microsoft.VisualStudio.TestTools.UITesting.dll │ └── Microsoft.VisualStudio.TestTools.UITesting.xml │ ├── v15 │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.dll │ └── Microsoft.VisualStudio.TestTools.UITesting.dll │ ├── v16 │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.dll │ └── Microsoft.VisualStudio.TestTools.UITesting.dll │ └── v17 │ ├── Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Common.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.dll │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.Silverlight.xml │ ├── Microsoft.VisualStudio.TestTools.UITest.Extension.dll │ └── Microsoft.VisualStudio.TestTools.UITesting.dll └── tools ├── UIAVerify ├── README.md ├── UIAVerify_x64 │ ├── IQueryString.dll │ ├── Interop.UIAutomationClient.dll │ ├── UIAComWrapper.dll │ ├── VisualUIAVerifyNative.exe │ ├── VisualUIAVerifyNative.resources.dll │ ├── WUIALoggerXml.dll │ ├── WUIALogging.dll │ └── WUIATestLibrary.dll └── UIAVerify_x86 │ ├── IQueryString.dll │ ├── Interop.UIAutomationClient.dll │ ├── UIAComWrapper.dll │ ├── VisualUIAVerifyNative.exe │ ├── VisualUIAVerifyNative.resources.dll │ ├── WUIALoggerXml.dll │ ├── WUIALogging.dll │ └── WUIATestLibrary.dll └── UISpy └── UISpy.exe /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | # http://davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/ 3 | * text=auto 4 | 5 | *.cs diff=csharp 6 | 7 | -------------------------------------------------------------------------------- /Build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | call %~dp0SetDevelopmentEnvironment.bat 4 | 5 | rem Parameters 6 | set PROJECT=%~dp0src\Build.proj 7 | 8 | set ConfigurationName=%1 9 | 10 | if '%ConfigurationName%'=='' set ConfigurationName=Release 11 | 12 | rem Build 13 | msbuild.exe %PROJECT% /t:Build /p:ConfigurationName=%ConfigurationName% 14 | if %errorlevel% neq 0 ( 15 | goto error 16 | ) 17 | 18 | msbuild.exe %PROJECT% /t:Pack /p:ConfigurationName=%ConfigurationName% 19 | if %errorlevel% neq 0 ( 20 | goto error 21 | ) 22 | 23 | goto end: 24 | 25 | :error 26 | echo An error has occurred. 27 | pause 28 | exit /b 1 29 | 30 | :end 31 | echo Finished successfully. 32 | pause 33 | exit /b 0 -------------------------------------------------------------------------------- /Test.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | call SetDevelopmentEnvironment.bat 4 | 5 | rem Parameters 6 | set PROJECT=.\src\Build.proj 7 | 8 | rem Build 9 | msbuild.exe %PROJECT% /t:Build 10 | msbuild.exe %PROJECT% /t:Test 11 | 12 | pause -------------------------------------------------------------------------------- /build/Chocolatey/CopyChocolateyLogs.ps1: -------------------------------------------------------------------------------- 1 | # Enable -Verbose option 2 | [CmdletBinding()] 3 | 4 | # Set a flag to force verbose as a default 5 | $VerbosePreference ='Continue' # equiv to -verbose 6 | 7 | if (Test-Path "$env:ChocolateyInstall\logs") 8 | { 9 | Copy-Item -Path "$env:ChocolateyInstall\logs" -Destination "$env:BUILD_ARTIFACTSTAGINGDIRECTORY" –Recurse 10 | } 11 | 12 | if (Test-Path "$env:TEMP\chocolatey") 13 | { 14 | Copy-Item -Path "$env:TEMP\chocolatey" -Destination "$env:BUILD_ARTIFACTSTAGINGDIRECTORY" –Recurse 15 | } 16 | 17 | if (Test-Path "$env:ChocolateyInstall\config") 18 | { 19 | Copy-Item -Path "$env:ChocolateyInstall\config" -Destination "$env:BUILD_ARTIFACTSTAGINGDIRECTORY" –Recurse 20 | } -------------------------------------------------------------------------------- /build/Firefox/local-settings.js: -------------------------------------------------------------------------------- 1 | // 2 | pref('general.config.filename', 'mozilla.cfg'); 3 | pref('general.config.obscure_value', 0); -------------------------------------------------------------------------------- /build/Firefox/mozilla.cfg: -------------------------------------------------------------------------------- 1 | // Disable checking if firefox is default browser 2 | pref('browser.shell.checkDefaultBrowser', false); 3 | pref('browser.startup.homepage_override.mstone','ignore'); 4 | pref('browser.usedOnWindows10', true); 5 | 6 | // disable application updates 7 | pref('app.update.auto', false); 8 | pref('app.update.enabled', false); -------------------------------------------------------------------------------- /build/Firefox/override.ini: -------------------------------------------------------------------------------- 1 | [XRE] 2 | EnableProfileMigrator=0 -------------------------------------------------------------------------------- /build/TeamViewer/EnableRemoteConnection.ps1: -------------------------------------------------------------------------------- 1 | # Enable -Verbose option 2 | [CmdletBinding()] 3 | 4 | # Set a flag to force verbose as a default 5 | $VerbosePreference ='Continue' # equiv to -verbose 6 | 7 | . "$Env:BUILD_SOURCESDIRECTORY\build\ProcessRunner.ps1" 8 | 9 | $exitCode = Run-Process -FilePath "reg.exe" -ArgumentList "import ""$Env:BUILD_SOURCESDIRECTORY\build\TeamViewer\TeamViewer_Settings.reg""" 10 | if ($exitCode -ne 0) 11 | { 12 | throw "Command failed with exit code $exitCode." 13 | } 14 | 15 | # Install TeamViewer 16 | $exitCode = Run-Process -FilePath "choco.exe" -ArgumentList "install teamviewer -y" 17 | if ($exitCode -ne 0) 18 | { 19 | throw "Command failed with exit code $exitCode." 20 | } 21 | 22 | Start-Process -FilePath "${env:ProgramFiles}\TeamViewer\TeamViewer.exe" 23 | 24 | # get User ID 25 | $key = 'HKLM:\SOFTWARE\TeamViewer' 26 | 27 | while (!(Get-ItemProperty -Path $key -Name "ClientID" -ErrorAction SilentlyContinue)) 28 | { 29 | start-sleep -seconds 5 30 | } 31 | 32 | $clientId = (Get-ItemProperty -Path $key -Name "ClientID").ClientID 33 | 34 | Write-Host "TeamViewer connection details:" -ForegroundColor Yellow 35 | Write-Host " Partner ID: $clientId" -ForegroundColor Gray -------------------------------------------------------------------------------- /build/TeamViewer/TeamViewer_Settings.reg: -------------------------------------------------------------------------------- 1 | Windows Registry Editor Version 5.00 2 | 3 | [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer\Temp] 4 | "SecurityPasswordExported"=hex:dc,ae,d3,6e,d0,e6,4b,6d,93,22,0c,fb,99,07,31,8c,69,ce,50,39,de,ee,97,11,d5,26,8b,92,a5,d8,81,c9 5 | 6 | -------------------------------------------------------------------------------- /build/TeamViewer/WaitForRemoteConnection.ps1: -------------------------------------------------------------------------------- 1 | # Enable -Verbose option 2 | [CmdletBinding()] 3 | 4 | # Set a flag to force verbose as a default 5 | $VerbosePreference ='Continue' # equiv to -verbose 6 | 7 | $path = "$($env:USERPROFILE)\Desktop\Delete me to continue build.txt" 8 | # create "lock" file. 9 | Set-Content -Path $path -Value '' 10 | Write-Warning "Build paused. To resume it, open a remote session to delete 'Delete me to continue build.txt' file on Desktop." 11 | 12 | # Start process so it pops up to indicate that we're waiting for a remote connection 13 | Start-Process -FilePath "${env:ProgramFiles(x86)}\TeamViewer\TeamViewer.exe" 14 | 15 | # wait until "lock" file is deleted by user. 16 | while(Test-Path $path) { 17 | Start-Sleep -Seconds 1 18 | } 19 | Write-Host "Build lock file has been deleted. Resuming build." -------------------------------------------------------------------------------- /deps.lock: -------------------------------------------------------------------------------- 1 | VS2013_RTM_PREM_ENU.iso 2 | UITestPluginForSilverlightVS2013.msi 3 | vs2015.3.ent_enu.iso 4 | UITestPluginForSilverlightVS2015.msi 5 | UITestPluginForSilverlightVS2017.msi 6 | Silverlight_x64.exe 7 | silverlight_sdk.exe 8 | Silverlight_5_Toolkit_December_2011.msi 9 | Silverlight_Developer_x64.exe 10 | Firefox Setup 47.0.1.exe 11 | CodedUITestCrossBrowserSetup.msi 12 | chromedriver_win32.zip 13 | geckodriver-v0.17.0-win32.zip -------------------------------------------------------------------------------- /images/CUITe.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/images/CUITe.bmp -------------------------------------------------------------------------------- /images/CUITe_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/images/CUITe_128x128.png -------------------------------------------------------------------------------- /images/CUITe_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/images/CUITe_16x16.png -------------------------------------------------------------------------------- /images/CUITe_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/images/CUITe_256x256.png -------------------------------------------------------------------------------- /images/CUITe_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/images/CUITe_32x32.png -------------------------------------------------------------------------------- /images/CUITe_64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/images/CUITe_64x64.png -------------------------------------------------------------------------------- /images/NuGet_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/images/NuGet_16x16.png -------------------------------------------------------------------------------- /images/NuGet_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/images/NuGet_32x32.png -------------------------------------------------------------------------------- /src/.nuget/NuGet.Config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/.nuget/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/.nuget/NuGet.exe -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/NuGet/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/NuGet/CustomFeatureContext.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UnitTesting; 2 | 3 | namespace CUITe.IntegrationTests.NuGet 4 | { 5 | /// 6 | /// Custom Feature Context 7 | /// 8 | public class CustomFeatureContext 9 | { 10 | /// 11 | /// Gets or sets the test context. 12 | /// 13 | /// 14 | /// The test context. 15 | /// 16 | public static TestContext TestContext { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/NuGet/HtmlTests.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.IntegrationTests.NuGet 2 | { 3 | using CUITe.Controls.HtmlControls; 4 | using Microsoft.VisualStudio.TestTools.UITesting; 5 | using Microsoft.VisualStudio.TestTools.UnitTesting; 6 | using TestHelpers; 7 | 8 | [CodedUITest] 9 | public class HtmlTests 10 | { 11 | [TestMethod] 12 | public void SetText_OnHtmlEdit_Succeeds() 13 | { 14 | // Arrange 15 | using (var webPage = new TempWebPage( 16 | @" 17 | 18 | test 19 | 20 | 21 | 22 | 23 | ")) 24 | { 25 | var browserWindow = BrowserWindow.Launch(webPage.FilePath); 26 | HtmlEdit inputTextBox = browserWindow.Find(); 27 | 28 | // Act 29 | inputTextBox.Text = "text"; 30 | 31 | // Assert 32 | Assert.AreEqual("text", inputTextBox.Text); 33 | 34 | browserWindow.Close(); 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/NuGet/TempFile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace CUITe.IntegrationTests.NuGet 4 | { 5 | using System.IO; 6 | 7 | /// 8 | /// Temporary file 9 | /// 10 | /// 11 | public class TempFile : IDisposable 12 | { 13 | readonly string tempFilePath = Path.GetTempFileName(); 14 | 15 | /// 16 | /// Gets the file path. 17 | /// 18 | /// 19 | /// The file path. 20 | /// 21 | public string FilePath 22 | { 23 | get 24 | { 25 | return this.tempFilePath; 26 | } 27 | } 28 | 29 | /// 30 | /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. 31 | /// 32 | public void Dispose() 33 | { 34 | if (File.Exists(this.tempFilePath)) 35 | { 36 | File.Delete(this.tempFilePath); 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/ObjectRecorder/Features/Recording.feature: -------------------------------------------------------------------------------- 1 | Feature: Recording 2 | 3 | Scenario: Record 4 | Given an html file with the contents 5 | """ 6 | 7 | 8 | test 9 | 10 | 11 |
12 | 13 |
14 | 15 | 16 | """ 17 | And the html file is launched with the recorder 18 | When recording is started 19 | And the textbox is clicked 20 | Then the generated file should contain 21 | """ 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Linq; 25 | using System.Text; 26 | using CUITe.SearchConfigurations; 27 | using Microsoft.VisualStudio.TestTools.UITesting; 28 | using CUITe.Controls.HtmlControls; 29 | using CUITe.PageObjects; 30 | 31 | namespace $ProjectNameSpace$.PageObjects 32 | { 33 | public class test : Page 34 | { 35 | public HtmlEdit txtUndefined { get { return Find(By.SearchProperties("")); } } 36 | } 37 | } 38 | """ 39 | -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/ObjectRecorder/Features/Recording.feature.custom.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UnitTesting; 2 | 3 | namespace CUITe.IntegrationTests.ObjectRecorder.Features 4 | { 5 | #if DEBUG 6 | [DeploymentItem(@".\CUITe_ObjectRecorder\bin\Debug\CUITe_ObjectRecorder.exe")] 7 | #else 8 | [DeploymentItem(@".\CUITe_ObjectRecorder\bin\Release\CUITe_ObjectRecorder.exe")] 9 | #endif 10 | public partial class RecordingFeature 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/ObjectRecorder/Screens/Notepad.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.WinControls; 2 | using CUITe.ScreenObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace CUITe.IntegrationTests.ObjectRecorder.Screens 6 | { 7 | /// 8 | /// Notepad 9 | /// 10 | /// 11 | public class Notepad : Screen 12 | { 13 | private WinWindow MainWindow 14 | { 15 | get { return Find(By.ControlId("15")); } 16 | } 17 | 18 | /// 19 | /// Gets the text box. 20 | /// 21 | /// 22 | /// The text box. 23 | /// 24 | public WinEdit TextBox 25 | { 26 | get { return MainWindow.Find(); } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/CUITe.IntegrationTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | [assembly: AssemblyTitle("CUITe.IntegrationTests")] -------------------------------------------------------------------------------- /src/CUITe.Silverlight/Controls/SilverlightControls/SilverlightTableSearchOptions.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.Controls.SilverlightControls 2 | { 3 | /// 4 | /// Enum describing how cells are searched for in . 5 | /// 6 | public enum SilverlightTableSearchOptions 7 | { 8 | /// 9 | /// The cell value should be equal to the value to search for. 10 | /// 11 | Normal, 12 | 13 | /// 14 | /// The trimmed cell value should be equal to the value to search for. 15 | /// 16 | NormalTight, 17 | 18 | /// 19 | /// The cell value should contain the value to search for. 20 | /// 21 | Greedy, 22 | 23 | /// 24 | /// The cell value should start with the value to search for. 25 | /// 26 | StartsWith, 27 | 28 | /// 29 | /// The cell value should end with the value to search for. 30 | /// 31 | EndsWith 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/CUITe.Silverlight/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("CUITe.Silverlight")] 5 | [assembly: Guid("d1a89de1-ee51-4e5b-94d6-0e2e7de1b726")] -------------------------------------------------------------------------------- /src/CUITe.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/CUITe.snk -------------------------------------------------------------------------------- /src/CUITe.vsmdi: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/CUITe/Browsers/Chrome.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.Browsers 2 | { 3 | /// 4 | /// Chrome web browser 5 | /// 6 | public class Chrome : Browser, IBrowser 7 | { 8 | /// 9 | /// The name 10 | /// 11 | public new const string Name = "chrome"; 12 | 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public Chrome() 17 | : base(Name, "Chrome_WidgetWin_1") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITe/Browsers/Firefox.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.Browsers 2 | { 3 | /// 4 | /// Firefox web browser 5 | /// 6 | public class Firefox : Browser, IBrowser 7 | { 8 | /// 9 | /// The name 10 | /// 11 | public new const string Name = "firefox"; 12 | 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public Firefox() 17 | : base(Name, "MozillaWindowClass") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITe/Browsers/IBrowser.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.Browsers 2 | { 3 | /// 4 | /// Web browser 5 | /// 6 | public interface IBrowser 7 | { 8 | /// 9 | /// Gets or sets the name. 10 | /// 11 | /// 12 | /// The name. 13 | /// 14 | string Name { get; set; } 15 | 16 | /// 17 | /// Gets or sets the name of the process. 18 | /// 19 | /// 20 | /// The name of the process. 21 | /// 22 | string ProcessName { get; set; } 23 | 24 | /// 25 | /// Gets or sets the name of the window class. 26 | /// 27 | /// 28 | /// The name of the window class. 29 | /// 30 | string WindowClassName { get; set; } 31 | 32 | /// 33 | /// Gets or sets the name of the dialog class. 34 | /// 35 | /// 36 | /// The name of the dialog class. 37 | /// 38 | string DialogClassName { get; set; } 39 | } 40 | } -------------------------------------------------------------------------------- /src/CUITe/Controls/GenericException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace CUITe.Controls 4 | { 5 | /// 6 | /// Generic exception 7 | /// 8 | public class GenericException : Exception 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// The message. 14 | public GenericException(string message) 15 | : base(message) 16 | { 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/CUITe/Controls/HtmlControls/BrowserDialogUnderTest.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.Controls.HtmlControls 2 | { 3 | /// 4 | /// Represents a Web browser dialog for Web page user interface (UI) testing. 5 | /// 6 | public class BrowserDialogUnderTest : BrowserWindowUnderTest 7 | { 8 | /// 9 | /// Initializes a new instance of the class. 10 | /// 11 | public BrowserDialogUnderTest() 12 | { 13 | SearchProperties[PropertyNames.ClassName] = GetCurrentBrowser().DialogClassName; 14 | WindowTitles.Add(WindowTitle); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/CUITe/Controls/HtmlControls/DynamicBrowserWindowUnderTest.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.Controls.HtmlControls 2 | { 3 | /// 4 | /// Represents a Web browser window with a specific title for Web page user interface (UI) 5 | /// testing. 6 | /// 7 | public class DynamicBrowserWindowUnderTest : BrowserWindowUnderTest 8 | { 9 | /// 10 | /// Initializes a new instance of the class. 11 | /// 12 | /// The window title. 13 | public DynamicBrowserWindowUnderTest(string title) 14 | : base(title) 15 | { 16 | SetWindowTitle(title); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/CUITe/Controls/HtmlControls/HtmlTableSearchOptions.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.Controls.HtmlControls 2 | { 3 | /// 4 | /// Enum describing how cells are searched for in . 5 | /// 6 | public enum HtmlTableSearchOptions 7 | { 8 | /// 9 | /// The cell value should be equal to the value to search for. 10 | /// 11 | Normal, 12 | 13 | /// 14 | /// The trimmed cell value should be equal to the value to search for. 15 | /// 16 | NormalTight, 17 | 18 | /// 19 | /// The cell value should contain the value to search for. 20 | /// 21 | Greedy, 22 | 23 | /// 24 | /// The cell value should start with the value to search for. 25 | /// 26 | StartsWith, 27 | 28 | /// 29 | /// The cell value should end with the value to search for. 30 | /// 31 | EndsWith 32 | } 33 | } -------------------------------------------------------------------------------- /src/CUITe/Controls/HtmlControls/IHasInnerText.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe.Controls.HtmlControls 2 | { 3 | /// 4 | /// Interface describing that the HTML control has a inner text. 5 | /// 6 | public interface IHasInnerText 7 | { 8 | /// 9 | /// Gets the inner text. 10 | /// 11 | string InnerText { get; } 12 | } 13 | } -------------------------------------------------------------------------------- /src/CUITe/Controls/InvalidTraversalException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace CUITe.Controls 4 | { 5 | /// 6 | /// Exception thrown when trying to traverse to a UI test control that isn't found in the UI 7 | /// tree. 8 | /// 9 | public class InvalidTraversalException : Exception 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | /// The UI test control type not found. 15 | public InvalidTraversalException(string controlTypeNotFound) 16 | : base(string.Format("The control '{0}' was not found when traversing the UI tree", controlTypeNotFound)) 17 | { 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/CUITe/DataSources/DataBlockIdNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace CUITe.DataSources 4 | { 5 | /// 6 | /// Exception thrown by when requesting a data block with id that 7 | /// isn't found. 8 | /// 9 | public class DataBlockIdNotFoundException : Exception 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | /// The data block id. 15 | public DataBlockIdNotFoundException(string id) 16 | : base(string.Format("A data block id '{0}' wasn't found.", id)) 17 | { 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/CUITe/DataSources/XmlDataSourceNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | 4 | namespace CUITe.DataSources 5 | { 6 | /// 7 | /// Exception thrown by when the specified XML data source isn't 8 | /// found. 9 | /// 10 | public class XmlDataSourceNotFoundException : Exception 11 | { 12 | /// 13 | /// Initializes a new instance of the class. 14 | /// 15 | /// The assembly. 16 | /// The type. 17 | /// Name of the file. 18 | public XmlDataSourceNotFoundException(Assembly assembly, Type type, string fileName) 19 | : base(string.Format("Failed to get resource '{0}' from type '{1}' in assembly '{2}'.", fileName, type, assembly.FullName)) 20 | { 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/CUITe/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | [assembly: AssemblyTitle("CUITe")] 6 | [assembly: Guid("2507eeaf-8012-479e-a803-1f86b194baa9")] 7 | 8 | [assembly: InternalsVisibleTo("CUITe.Silverlight, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e7f86c86f0d1a8d523b2b389facb26fe65ded15eff2da37c4593a2798bb2c8b048612bc36904e83ecba664078b9cd5e7303bff98d6eaf4e74a8284383ee2e4834563e382db44c3563b753470116086ddb582195191dd96d0e9993b3300cb851b19a43c23aab85fa8840f3915ded9ab6d2a4539c8b51de2cb881c73306e185bb0")] 9 | [assembly: InternalsVisibleTo("CUITeTest, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e7f86c86f0d1a8d523b2b389facb26fe65ded15eff2da37c4593a2798bb2c8b048612bc36904e83ecba664078b9cd5e7303bff98d6eaf4e74a8284383ee2e4834563e382db44c3563b753470116086ddb582195191dd96d0e9993b3300cb851b19a43c23aab85fa8840f3915ded9ab6d2a4539c8b51de2cb881c73306e185bb0")] -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/AutomationIdConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | using Microsoft.VisualStudio.TestTools.UITesting.WpfControls; 3 | 4 | namespace CUITe.SearchConfigurations 5 | { 6 | /// 7 | /// Class capable of configuring a set of search properties with information about automation 8 | /// ids. 9 | /// 10 | internal class AutomationIdConfigurator : SearchConfigurator 11 | { 12 | /// 13 | /// Initializes a new instance of the class. 14 | /// 15 | /// The automation id. 16 | /// 17 | /// The operator to use to compare the values (either the values are equal or the property 18 | /// value contains the provided property value). 19 | /// 20 | internal AutomationIdConfigurator(string automationId, PropertyExpressionOperator conditionOperator) 21 | : base(WpfControl.PropertyNames.AutomationId, automationId, conditionOperator) 22 | { 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/ClassConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | using Microsoft.VisualStudio.TestTools.UITesting.HtmlControls; 3 | 4 | namespace CUITe.SearchConfigurations 5 | { 6 | /// 7 | /// Class capable of configuring a set of search properties with information about classes. 8 | /// 9 | internal class ClassConfigurator : SearchConfigurator 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | /// The class. 15 | /// 16 | /// The operator to use to compare the values (either the values are equal or the property 17 | /// value contains the provided property value). 18 | /// 19 | internal ClassConfigurator(string @class, PropertyExpressionOperator conditionOperator) 20 | : base(HtmlControl.PropertyNames.Class, @class, conditionOperator) 21 | { 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/ClassNameConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | 3 | namespace CUITe.SearchConfigurations 4 | { 5 | /// 6 | /// Class capable of configuring a set of search properties with information about class names. 7 | /// 8 | internal class ClassNameConfigurator : SearchConfigurator 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// The class name. 14 | /// 15 | /// The operator to use to compare the values (either the values are equal or the property 16 | /// value contains the provided property value). 17 | /// 18 | internal ClassNameConfigurator(string className, PropertyExpressionOperator conditionOperator) 19 | : base(UITestControl.PropertyNames.ClassName, className, conditionOperator) 20 | { 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/ControlIdConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | using Microsoft.VisualStudio.TestTools.UITesting.WinControls; 3 | 4 | namespace CUITe.SearchConfigurations 5 | { 6 | /// 7 | /// Class capable of configuring a set of search properties with information about control ids. 8 | /// 9 | internal class ControlIdConfigurator : SearchConfigurator 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | /// The control id. 15 | /// 16 | /// The operator to use to compare the values (either the values are equal or the property 17 | /// value contains the provided property value). 18 | /// 19 | internal ControlIdConfigurator(string controlId, PropertyExpressionOperator conditionOperator) 20 | : base(WinControl.PropertyNames.ControlId, controlId, conditionOperator) 21 | { 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/ControlNameConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | using Microsoft.VisualStudio.TestTools.UITesting.WinControls; 3 | 4 | namespace CUITe.SearchConfigurations 5 | { 6 | /// 7 | /// Class capable of configuring a set of search properties with information about control 8 | /// names. 9 | /// 10 | internal class ControlNameConfigurator : SearchConfigurator 11 | { 12 | /// 13 | /// Initializes a new instance of the class. 14 | /// 15 | /// The control name. 16 | /// 17 | /// The operator to use to compare the values (either the values are equal or the property 18 | /// value contains the provided property value). 19 | /// 20 | internal ControlNameConfigurator(string controlName, PropertyExpressionOperator conditionOperator) 21 | : base(WinControl.PropertyNames.ControlName, controlName, conditionOperator) 22 | { 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/ControlTypeConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | 3 | namespace CUITe.SearchConfigurations 4 | { 5 | /// 6 | /// Class capable of configuring a set of search properties with information about the control type 7 | /// names. 8 | /// 9 | internal class ControlTypeConfigurator : SearchConfigurator 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | /// The control type. 15 | /// 16 | /// The operator to use to compare the values (either the values are equal or the property 17 | /// value contains the provided property value). 18 | /// 19 | internal ControlTypeConfigurator(string controlType, PropertyExpressionOperator conditionOperator) 20 | : base(UITestControl.PropertyNames.ControlType, controlType, conditionOperator) 21 | { 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/ISearchConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | 3 | namespace CUITe.SearchConfigurations 4 | { 5 | /// 6 | /// Interface capable of configuring a set of search properties according to the rules on the 7 | /// implemented class. 8 | /// 9 | internal interface ISearchConfigurator 10 | { 11 | /// 12 | /// Configures the specified search properties. 13 | /// 14 | /// The search properties. 15 | void Configure(PropertyExpressionCollection searchProperties); 16 | } 17 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/IdConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | using Microsoft.VisualStudio.TestTools.UITesting.HtmlControls; 3 | 4 | namespace CUITe.SearchConfigurations 5 | { 6 | /// 7 | /// Class capable of configuring a set of search properties with information about ids. 8 | /// 9 | internal class IdConfigurator : SearchConfigurator 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | /// The id. 15 | /// 16 | /// The operator to use to compare the values (either the values are equal or the property 17 | /// value contains the provided property value). 18 | /// 19 | internal IdConfigurator(string id, PropertyExpressionOperator conditionOperator) 20 | : base(HtmlControl.PropertyNames.Id, id, conditionOperator) 21 | { 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/InstanceConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | using Microsoft.VisualStudio.TestTools.UITesting.WinControls; 3 | 4 | namespace CUITe.SearchConfigurations 5 | { 6 | /// 7 | /// Class capable of configuring a set of search properties with information about the instance. 8 | /// 9 | internal class InstanceConfigurator : SearchConfigurator 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | /// The control instance (1-based). 15 | /// 16 | /// The operator to use to compare the values (either the values are equal or the property 17 | /// value contains the provided property value). 18 | /// 19 | internal InstanceConfigurator(string instance, PropertyExpressionOperator conditionOperator) 20 | : base(WinControl.PropertyNames.Instance, instance, conditionOperator) 21 | { 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/InvalidSearchPropertiesFormatException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace CUITe.SearchConfigurations 4 | { 5 | /// 6 | /// Exception thrown when search properties aren't correctly formatted. 7 | /// 8 | public class InvalidSearchPropertiesFormatException : Exception 9 | { 10 | /// 11 | /// Initializes a new instance of the 12 | /// class. 13 | /// 14 | /// The invalid formatted search properties. 15 | public InvalidSearchPropertiesFormatException(string searchProperties) 16 | : base(string.Format( 17 | "Search properties format is not valid -> '{0}', should be like 'Key1=Value1;Key2=Value2;'.", 18 | searchProperties)) 19 | { 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/NameConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | 3 | namespace CUITe.SearchConfigurations 4 | { 5 | /// 6 | /// Class capable of configuring a set of search properties with information about names. 7 | /// 8 | internal class NameConfigurator : SearchConfigurator 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// The name. 14 | /// 15 | /// The operator to use to compare the values (either the values are equal or the property 16 | /// value contains the provided property value). 17 | /// 18 | internal NameConfigurator(string name, PropertyExpressionOperator conditionOperator) 19 | : base(UITestControl.PropertyNames.Name, name, conditionOperator) 20 | { 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/TagNameConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | using Microsoft.VisualStudio.TestTools.UITesting.HtmlControls; 3 | 4 | namespace CUITe.SearchConfigurations 5 | { 6 | /// 7 | /// Class capable of configuring a set of search properties with information about tag names. 8 | /// 9 | internal class TagNameConfigurator : SearchConfigurator 10 | { 11 | /// 12 | /// Initializes a new instance of the class. 13 | /// 14 | /// The tag name. 15 | /// 16 | /// The operator to use to compare the values (either the values are equal or the property 17 | /// value contains the provided property value). 18 | /// 19 | internal TagNameConfigurator(string tagName, PropertyExpressionOperator conditionOperator) 20 | : base(HtmlControl.PropertyNames.TagName, tagName, conditionOperator) 21 | { 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/CUITe/SearchConfigurations/ValueAttributeConfigurator.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UITesting; 2 | using Microsoft.VisualStudio.TestTools.UITesting.HtmlControls; 3 | 4 | namespace CUITe.SearchConfigurations 5 | { 6 | /// 7 | /// Class capable of configuring a set of search properties with information about value 8 | /// attributes. 9 | /// 10 | internal class ValueAttributeConfigurator : SearchConfigurator 11 | { 12 | /// 13 | /// Initializes a new instance of the class. 14 | /// 15 | /// The value attribute. 16 | /// 17 | /// The operator to use to compare the values (either the values are equal or the property 18 | /// value contains the provided property value). 19 | /// 20 | internal ValueAttributeConfigurator(string valueAttribute, PropertyExpressionOperator conditionOperator) 21 | : base(HtmlControl.PropertyNames.ValueAttribute, valueAttribute, conditionOperator) 22 | { 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /src/CUITe/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/CUITeTest/DataSources/XmlDataSource.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Suresh 7 | Balasubramanian 8 | 9 | 10 | 04/19/1973 11 | 38 12 | 13 | 14 |
Kondapur, Hyderabad
15 | Indian 16 |
17 | 18 | 19 | 20 | 2 21 | 22 | 23 | 3 24 | 25 |
-------------------------------------------------------------------------------- /src/CUITeTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("CUITeTest")] 8 | 9 | // The following GUID is for the ID of the typelib if this project is exposed to COM 10 | [assembly: Guid("4f87144e-210a-4312-b621-fbc5537a75f5")] -------------------------------------------------------------------------------- /src/CUITeTest/SearchConfigurations/AutomationIdConfiguratorTest.cs: -------------------------------------------------------------------------------- 1 | using CUITe.SearchConfigurations; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | 4 | namespace CUITeTest.SearchConfigurations 5 | { 6 | /// 7 | /// Automation Id Configurator Test 8 | /// 9 | /// 10 | [TestClass] 11 | public class AutomationIdConfiguratorTest : BaseConfiguratorTest 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public AutomationIdConfiguratorTest() 17 | : base(typeof(AutomationIdConfigurator), "AutomationId", "SomeId") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITeTest/SearchConfigurations/ClassConfiguratorTest.cs: -------------------------------------------------------------------------------- 1 | using CUITe.SearchConfigurations; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | 4 | namespace CUITeTest.SearchConfigurations 5 | { 6 | /// 7 | /// Class Configurator Test 8 | /// 9 | /// 10 | [TestClass] 11 | public class ClassConfiguratorTest : BaseConfiguratorTest 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public ClassConfiguratorTest() 17 | : base(typeof(ClassConfigurator), "Class", "SomeClass") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITeTest/SearchConfigurations/ClassNameConfiguratorTest.cs: -------------------------------------------------------------------------------- 1 | using CUITe.SearchConfigurations; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | 4 | namespace CUITeTest.SearchConfigurations 5 | { 6 | /// 7 | /// Class Name Configurator Test 8 | /// 9 | /// 10 | [TestClass] 11 | public class ClassNameConfiguratorTest : BaseConfiguratorTest 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public ClassNameConfiguratorTest() 17 | : base(typeof(ClassNameConfigurator), "ClassName", "SomeClassName") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITeTest/SearchConfigurations/ControlIdConfiguratorTest.cs: -------------------------------------------------------------------------------- 1 | using CUITe.SearchConfigurations; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | 4 | namespace CUITeTest.SearchConfigurations 5 | { 6 | /// 7 | /// Control Id Configurator Test 8 | /// 9 | /// 10 | [TestClass] 11 | public class ControlIdConfiguratorTest : BaseConfiguratorTest 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public ControlIdConfiguratorTest() 17 | : base(typeof(ControlIdConfigurator), "ControlId", "SomeControlId") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITeTest/SearchConfigurations/ControlNameConfiguratorTest.cs: -------------------------------------------------------------------------------- 1 | using CUITe.SearchConfigurations; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | 4 | namespace CUITeTest.SearchConfigurations 5 | { 6 | /// 7 | /// Control Name Configurator Test 8 | /// 9 | /// 10 | [TestClass] 11 | public class ControlNameConfiguratorTest : BaseConfiguratorTest 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public ControlNameConfiguratorTest() 17 | : base(typeof(ControlNameConfigurator), "ControlName", "SomeControlName") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITeTest/SearchConfigurations/IdConfiguratorTest.cs: -------------------------------------------------------------------------------- 1 | using CUITe.SearchConfigurations; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | 4 | namespace CUITeTest.SearchConfigurations 5 | { 6 | /// 7 | /// Id Configurator Test 8 | /// 9 | /// 10 | [TestClass] 11 | public class IdConfiguratorTest : BaseConfiguratorTest 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public IdConfiguratorTest() 17 | : base(typeof(IdConfigurator), "Id", "SomeId") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITeTest/SearchConfigurations/NameConfiguratorTest.cs: -------------------------------------------------------------------------------- 1 | using CUITe.SearchConfigurations; 2 | using Microsoft.VisualStudio.TestTools.UnitTesting; 3 | 4 | namespace CUITeTest.SearchConfigurations 5 | { 6 | /// 7 | /// Name Configurator Test 8 | /// 9 | /// 10 | [TestClass] 11 | public class NameConfiguratorTest : BaseConfiguratorTest 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public NameConfiguratorTest() 17 | : base(typeof(NameConfigurator), "Name", "SomeName") 18 | { 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/App.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/CUITe_ObjectRecorder/App.ico -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/CodeLanguage.cs: -------------------------------------------------------------------------------- 1 | namespace CUITe_ObjectRecorder 2 | { 3 | public enum CodeLanguage 4 | { 5 | CSharp, 6 | VB 7 | } 8 | } -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/Images/Copy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/CUITe_ObjectRecorder/Images/Copy.jpg -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/Images/Delete.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/CUITe_ObjectRecorder/Images/Delete.jpg -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/Images/clear.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/CUITe_ObjectRecorder/Images/clear.gif -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/Images/record.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/CUITe_ObjectRecorder/Images/record.jpg -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/Images/showcode.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/CUITe_ObjectRecorder/Images/showcode.jpg -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/Images/table.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icnocop/cuite/8821255afaf53cf3cc8305350f740d519c232655/src/CUITe_ObjectRecorder/Images/table.jpg -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace CUITe_ObjectRecorder 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/CUITe_ObjectRecorder/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("CUITe_ObjectRecorder")] 5 | [assembly: Guid("459cbe04-8060-48e6-8224-6edfc01b7830")] 6 | -------------------------------------------------------------------------------- /src/CUITe_ObjectRecorder/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/CommonAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyDescription("Coded UI Test enhanced Framework (CUITe) https://github.com/icnocop/cuite")] 5 | [assembly: AssemblyConfiguration("")] 6 | [assembly: AssemblyCompany("Suresh Balasubramanian, Matt Gray, Rami Abughazaleh, Mattias Kindborg, and contributors")] 7 | [assembly: AssemblyProduct("CUITe")] 8 | [assembly: AssemblyCopyright("Copyright © Suresh Balasubramanian, Matt Gray, Rami Abughazaleh, Mattias Kindborg, and contributors 2011 - 2015")] 9 | [assembly: AssemblyTrademark("")] 10 | [assembly: AssemblyCulture("")] 11 | 12 | [assembly: ComVisible(false)] 13 | 14 | [assembly: AssemblyVersion("2.0.0.0")] 15 | [assembly: AssemblyFileVersion("2.0.0.0")] 16 | [assembly: AssemblyInformationalVersion("2.0.0.0")] -------------------------------------------------------------------------------- /src/Local.testsettings: -------------------------------------------------------------------------------- 1 |  2 | 3 | These are default test settings for a local test run. 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Local_CUITv10.runsettings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Local_CUITv11.runsettings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Local_CUITv12.runsettings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Local_CUITv14.runsettings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Local_CUITv15.runsettings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Local_CUITv16.runsettings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Local_CUITv17.runsettings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/AboutPage.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// About Page 9 | /// 10 | /// 11 | public class AboutPage : Page 12 | { 13 | /// 14 | /// Gets a value indicating whether the framework message exists. 15 | /// 16 | /// 17 | /// true if the framework message exists; otherwise, false. 18 | /// 19 | public bool FrameworkMessageExists 20 | { 21 | get { return Find(By.Id("framework")).Exists; } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/LowerLeftPageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Lower Left Page Object 9 | /// 10 | /// 11 | public class LowerLeftPageObject : PageObject 12 | { 13 | /// 14 | /// Gets a value indicating whether the radio button exists. 15 | /// 16 | /// 17 | /// true if the radio button exists; otherwise, false. 18 | /// 19 | public bool RadioButtonExists 20 | { 21 | get { return Find(By.Id("lowerleft")).Exists; } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/LowerRightPageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Lower Right Page Object 9 | /// 10 | /// 11 | public class LowerRightPageObject : PageObject 12 | { 13 | /// 14 | /// Gets a value indicating whether the radio button exists. 15 | /// 16 | /// 17 | /// true if the radio button exists; otherwise, false. 18 | /// 19 | public bool RadioButtonExists 20 | { 21 | get { return Find(By.Id("lowerright")).Exists; } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/MiddlePageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Middle Page Object 9 | /// 10 | /// 11 | public class MiddlePageObject : PageObject 12 | { 13 | /// 14 | /// Navigates to about page. 15 | /// 16 | /// 17 | public AboutPage NavigateToAboutPage() 18 | { 19 | Find(By.Id("navigatetoabout")).Click(); 20 | return NavigateTo(); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/RebasedLowerLeftPageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Rebased Lower Left Page Object 9 | /// 10 | /// 11 | public class RebasedLowerLeftPageObject : PageObject 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public RebasedLowerLeftPageObject() 17 | : base(By.Id("lowerdiv")) 18 | { 19 | } 20 | 21 | /// 22 | /// Gets a value indicating whether the radio button exists. 23 | /// 24 | /// 25 | /// true if [RadioButton exists]; otherwise, false. 26 | /// 27 | public bool RadioButtonExists 28 | { 29 | get { return Find(By.Id("lowerleft")).Exists; } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/RebasedLowerRightPageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Rebased Lower Right Page Object 9 | /// 10 | /// 11 | public class RebasedLowerRightPageObject : PageObject 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public RebasedLowerRightPageObject() 17 | : base(By.Id("lowerdiv")) 18 | { 19 | } 20 | 21 | /// 22 | /// Gets a value indicating whether the radio button exists. 23 | /// 24 | /// 25 | /// true if the radio button exists; otherwise, false. 26 | /// 27 | public bool RadioButtonExists 28 | { 29 | get { return Find(By.Id("lowerright")).Exists; } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/RebasedUpperLeftPageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Rebased Upper Left Page Object 9 | /// 10 | /// 11 | public class RebasedUpperLeftPageObject : PageObject 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public RebasedUpperLeftPageObject() 17 | : base(By.Id("upperdiv")) 18 | { 19 | } 20 | 21 | /// 22 | /// Gets a value indicating whether the check box exists. 23 | /// 24 | /// 25 | /// true if the check box exists; otherwise, false. 26 | /// 27 | public bool CheckBoxExists 28 | { 29 | get { return Find(By.Id("upperleft")).Exists; } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/RebasedUpperRightPageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Rebased Upper Right Page Object 9 | /// 10 | /// 11 | public class RebasedUpperRightPageObject : PageObject 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public RebasedUpperRightPageObject() 17 | : base(By.Id("upperdiv")) 18 | { 19 | } 20 | 21 | /// 22 | /// Gets a value indicating whether the check box exists. 23 | /// 24 | /// 25 | /// true if the check box exists; otherwise, false. 26 | /// 27 | public bool CheckBoxExists 28 | { 29 | get { return Find(By.Id("upperright")).Exists; } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/UpperLeftPageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Upper Left Page Object 9 | /// 10 | /// 11 | public class UpperLeftPageObject : PageObject 12 | { 13 | /// 14 | /// Gets a value indicating whether the check box exists. 15 | /// 16 | /// 17 | /// true if the check box exists; otherwise, false. 18 | /// 19 | public bool CheckBoxExists 20 | { 21 | get { return Find(By.Id("upperleft")).Exists; } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/PageObjects/UpperRightPageObject.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.PageObjectsTest.PageObjects 6 | { 7 | /// 8 | /// Upper Right Page Object 9 | /// 10 | /// 11 | public class UpperRightPageObject : PageObject 12 | { 13 | /// 14 | /// Gets a value indicating whether the check box exists. 15 | /// 16 | /// 17 | /// true if the check box exists; otherwise, false. 18 | /// 19 | public bool CheckBoxExists 20 | { 21 | get { return Find(By.Id("upperright")).Exists; } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.PageObjectsTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Sut.Html.PageObjectsTest")] 8 | 9 | // The following GUID is for the ID of the typelib if this project is exposed to COM 10 | [assembly: Guid("aa20083e-ed25-47c6-9c3b-3e093678bdf1")] -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.WorkflowsTest/PageObjects/FinishedPage.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.Html.WorkflowsTest.PageObjects 6 | { 7 | /// 8 | /// Finished Page 9 | /// 10 | /// 11 | public class FinishedPage : Page 12 | { 13 | /// 14 | /// Gets a value indicating whether the congratulations paragraph exists. 15 | /// 16 | /// 17 | /// true if the congratulations paragraph exists; otherwise, false. 18 | /// 19 | public bool CongratulationsExists 20 | { 21 | get { return Find(By.Id("congratulations")).Exists; } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.Html.WorkflowsTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Sut.Html.WorkflowsTest")] 8 | 9 | // The following GUID is for the ID of the typelib if this project is exposed to COM 10 | [assembly: Guid("f57ee6df-ec0b-4f79-96b0-dca4a33d9b8f")] -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/DynamicBrowserWindowTitle.1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | window title 1 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/DynamicBrowserWindowTitle.2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | window title 2 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/DynamicBrowserWindowTitle.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Clicking the buttons changes the window title 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/PageObjects/GoogleHomePageWithInvalidControlSearchProperties.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.HtmlTest.PageObjects 6 | { 7 | /// 8 | /// Google Home Page With Invalid Control Search Properties 9 | /// 10 | /// 11 | public class GoogleHomePageWithInvalidControlSearchProperties : Page 12 | { 13 | /// 14 | /// Gets the control with invalid search properties. 15 | /// 16 | /// 17 | /// The control with invalid search properties. 18 | /// 19 | public HtmlDiv ControlWithInvalidSearchProperties 20 | { 21 | get { return Find(By.SearchProperties("blanblah=res")); } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/PageObjects/HtmlTestPage.Div1.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.HtmlTest.PageObjects 6 | { 7 | /// 8 | /// Div 1 9 | /// 10 | /// 11 | public class Div1 : PageObject 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public Div1() 17 | : base(By.Id("div1")) 18 | { 19 | } 20 | 21 | /// 22 | /// Gets the div2. 23 | /// 24 | /// 25 | /// The div2. 26 | /// 27 | public Div2 Div2 28 | { 29 | get { return GetPageObject(); } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/PageObjects/HtmlTestPage.Div2.cs: -------------------------------------------------------------------------------- 1 | using CUITe.Controls.HtmlControls; 2 | using CUITe.PageObjects; 3 | using CUITe.SearchConfigurations; 4 | 5 | namespace Sut.HtmlTest.PageObjects 6 | { 7 | /// 8 | /// Div 2 9 | /// 10 | /// 11 | public class Div2 : PageObject 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public Div2() 17 | : base(By.Id("div2")) 18 | { 19 | } 20 | 21 | /// 22 | /// Gets the edit box. 23 | /// 24 | /// 25 | /// The edit box. 26 | /// 27 | public HtmlEdit Edit 28 | { 29 | get { return Find(By.Id("edit")); } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/PageObjects/HtmlTestPage.cs: -------------------------------------------------------------------------------- 1 | using CUITe.PageObjects; 2 | 3 | namespace Sut.HtmlTest.PageObjects 4 | { 5 | /// 6 | /// HTML Test Page 7 | /// 8 | /// 9 | public class HtmlTestPage : Page 10 | { 11 | /// 12 | /// Gets the div1. 13 | /// 14 | /// 15 | /// The div1. 16 | /// 17 | public Div1 Div1 18 | { 19 | get { return GetPageObject(); } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Sut.HtmlTest")] 8 | 9 | // The following GUID is for the ID of the typelib if this project is exposed to COM 10 | [assembly: Guid("f29e1013-f2ef-4c2f-b0b7-148417ebc47d")] -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/iframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | iframe Test 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/SystemsUnderTest/Sut.HtmlTest/iframe_test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | iframe Test Main 6 | 7 | 8 |