├── .gitattributes ├── .gitignore ├── .gitmodules ├── ApplicationUnderTests ├── AppUIBasics │ ├── App.xaml │ ├── App.xaml.cs │ ├── AppUIBasics.csproj │ ├── AppUIBasics.sln │ ├── Assets │ │ ├── AppBar.png │ │ ├── AppBarButton.png │ │ ├── AppBarSeparator.png │ │ ├── AppBarToggleButton.png │ │ ├── AutoSuggestBox.png │ │ ├── Border.png │ │ ├── Button.png │ │ ├── CalendarView.png │ │ ├── Canvas.png │ │ ├── CheckBox.png │ │ ├── ComboBox.png │ │ ├── CommandBar.png │ │ ├── ContentDialog.png │ │ ├── DarkGray.png │ │ ├── DatePicker.png │ │ ├── FlipView.png │ │ ├── Flyout.png │ │ ├── Grid.png │ │ ├── GridView.png │ │ ├── HeroImage.png │ │ ├── Hub.png │ │ ├── HyperlinkButton.png │ │ ├── Image.png │ │ ├── InkCanvas.png │ │ ├── LightGray.png │ │ ├── ListBox.png │ │ ├── ListView.png │ │ ├── MediaElement.png │ │ ├── MediumGray.png │ │ ├── MenuFlyout.png │ │ ├── PasswordBox.png │ │ ├── Pivot.png │ │ ├── ProgressBar.png │ │ ├── ProgressRing.png │ │ ├── RadioButton.png │ │ ├── RelativePanel.png │ │ ├── RichEditBox.png │ │ ├── RichTextBlock.png │ │ ├── ScrollViewer.png │ │ ├── SemanticZoom.png │ │ ├── SettingsFlyout.png │ │ ├── Slices.png │ │ ├── Slices2.png │ │ ├── Slider.png │ │ ├── SplitView.png │ │ ├── StackPanel.png │ │ ├── TextBlock.png │ │ ├── TextBox.png │ │ ├── TimePicker.png │ │ ├── ToggleButton.png │ │ ├── ToggleSwitch.png │ │ ├── ToolTip.png │ │ ├── VariableSizedWrapGrid.png │ │ ├── ViewBox.png │ │ ├── WideLogo.scale-80.png │ │ ├── badgelogo.scale-100.png │ │ ├── badgelogo.scale-140.png │ │ ├── badgelogo.scale-180.png │ │ ├── cliff.jpg │ │ ├── fishes.wmv │ │ ├── grapes.jpg │ │ ├── ladybug.wmv │ │ ├── ninegrid.gif │ │ ├── rainier.jpg │ │ ├── smalltile-sdk.png │ │ ├── splash-sdk.png │ │ ├── squaretile-sdk.png │ │ ├── storelogo-sdk.png │ │ ├── sunset.jpg │ │ ├── treetops.jpg │ │ ├── valley.jpg │ │ ├── widelogo.scale-100.png │ │ ├── widelogo.scale-140.png │ │ └── widelogo.scale-180.png │ ├── Common │ │ ├── BooleanNegationConverter.cs │ │ ├── BooleanToVisibilityConverter.cs │ │ ├── ColorStringConverter.cs │ │ ├── ComboBoxItemToStringConverter.cs │ │ ├── DoubleToIntConverter.cs │ │ ├── NavigationHelper.cs │ │ ├── NullableBooleanToBooleanConverter.cs │ │ ├── ObservableDictionary.cs │ │ ├── OrientedSize.cs │ │ ├── ReadMe.txt │ │ ├── RelayCommand.cs │ │ ├── StringToBrushConverter.cs │ │ ├── SuspensionManager.cs │ │ ├── ValueToFontFamilyConverter.cs │ │ ├── ValueToStringConverter.cs │ │ └── WrapPanel.cs │ ├── ControlExample.xaml │ ├── ControlExample.xaml.cs │ ├── ControlPages │ │ ├── AppBarButtonPage.xaml │ │ ├── AppBarButtonPage.xaml.cs │ │ ├── AppBarPage.xaml │ │ ├── AppBarPage.xaml.cs │ │ ├── AppBarSeparatorPage.xaml │ │ ├── AppBarSeparatorPage.xaml.cs │ │ ├── AppBarToggleButtonPage.xaml │ │ ├── AppBarToggleButtonPage.xaml.cs │ │ ├── AutoSuggestBoxPage.xaml │ │ ├── AutoSuggestBoxPage.xaml.cs │ │ ├── BorderPage.xaml │ │ ├── BorderPage.xaml.cs │ │ ├── ButtonPage.xaml │ │ ├── ButtonPage.xaml.cs │ │ ├── CalendarViewPage.xaml │ │ ├── CalendarViewPage.xaml.cs │ │ ├── CanvasPage.xaml │ │ ├── CanvasPage.xaml.cs │ │ ├── CheckBoxPage.xaml │ │ ├── CheckBoxPage.xaml.cs │ │ ├── ComboBoxPage.xaml │ │ ├── ComboBoxPage.xaml.cs │ │ ├── CommandBarPage.xaml │ │ ├── CommandBarPage.xaml.cs │ │ ├── ContentDialogExample.xaml │ │ ├── ContentDialogExample.xaml.cs │ │ ├── ContentDialogPage.xaml │ │ ├── ContentDialogPage.xaml.cs │ │ ├── DatePickerPage.xaml │ │ ├── DatePickerPage.xaml.cs │ │ ├── FlipViewPage.xaml │ │ ├── FlipViewPage.xaml.cs │ │ ├── FlyoutPage.xaml │ │ ├── FlyoutPage.xaml.cs │ │ ├── GridPage.xaml │ │ ├── GridPage.xaml.cs │ │ ├── GridViewPage.xaml │ │ ├── GridViewPage.xaml.cs │ │ ├── HubPage.xaml │ │ ├── HubPage.xaml.cs │ │ ├── HyperlinkButtonPage.xaml │ │ ├── HyperlinkButtonPage.xaml.cs │ │ ├── ImagePage.xaml │ │ ├── ImagePage.xaml.cs │ │ ├── InkCanvasPage.xaml │ │ ├── InkCanvasPage.xaml.cs │ │ ├── ListBoxPage.xaml │ │ ├── ListBoxPage.xaml.cs │ │ ├── ListViewPage.xaml │ │ ├── ListViewPage.xaml.cs │ │ ├── MediaElementPage.xaml │ │ ├── MediaElementPage.xaml.cs │ │ ├── MenuFlyoutPage.xaml │ │ ├── MenuFlyoutPage.xaml.cs │ │ ├── PasswordBoxPage.xaml │ │ ├── PasswordBoxPage.xaml.cs │ │ ├── PivotPage.xaml │ │ ├── PivotPage.xaml.cs │ │ ├── ProgressBarPage.xaml │ │ ├── ProgressBarPage.xaml.cs │ │ ├── ProgressRingPage.xaml │ │ ├── ProgressRingPage.xaml.cs │ │ ├── RadioButtonPage.xaml │ │ ├── RadioButtonPage.xaml.cs │ │ ├── RelativePanelPage.xaml │ │ ├── RelativePanelPage.xaml.cs │ │ ├── RepeatButtonPage.xaml │ │ ├── RepeatButtonPage.xaml.cs │ │ ├── RichEditBoxPage.xaml │ │ ├── RichEditBoxPage.xaml.cs │ │ ├── RichTextBlockPage.xaml │ │ ├── RichTextBlockPage.xaml.cs │ │ ├── ScrollViewerPage.xaml │ │ ├── ScrollViewerPage.xaml.cs │ │ ├── SemanticZoomPage.xaml │ │ ├── SemanticZoomPage.xaml.cs │ │ ├── SliderPage.xaml │ │ ├── SliderPage.xaml.cs │ │ ├── SplitViewPage.xaml │ │ ├── SplitViewPage.xaml.cs │ │ ├── StackPanelPage.xaml │ │ ├── StackPanelPage.xaml.cs │ │ ├── TextBlockPage.xaml │ │ ├── TextBlockPage.xaml.cs │ │ ├── TextBoxPage.xaml │ │ ├── TextBoxPage.xaml.cs │ │ ├── TimePickerPage.xaml │ │ ├── TimePickerPage.xaml.cs │ │ ├── ToggleButtonPage.xaml │ │ ├── ToggleButtonPage.xaml.cs │ │ ├── ToggleSwitchPage.xaml │ │ ├── ToggleSwitchPage.xaml.cs │ │ ├── ToolTipPage.xaml │ │ ├── ToolTipPage.xaml.cs │ │ ├── VariableSizedWrapGridPage.xaml │ │ ├── VariableSizedWrapGridPage.xaml.cs │ │ ├── ViewBoxPage.xaml │ │ └── ViewBoxPage.xaml.cs │ ├── DataModel │ │ ├── ControlInfoData.json │ │ └── ControlInfoDataSource.cs │ ├── ItemPage.xaml │ ├── ItemPage.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Navigation │ │ ├── NavigationRootPage.xaml │ │ └── NavigationRootPage.xaml.cs │ ├── Package.appxmanifest │ ├── PageHeader.xaml │ ├── PageHeader.xaml.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ ├── README.md │ ├── SearchResultsPage.xaml │ ├── SearchResultsPage.xaml.cs │ ├── SectionPage.xaml │ ├── SectionPage.xaml.cs │ ├── Strings │ │ └── en-US │ │ │ └── Resources.resw │ └── project.json ├── Input │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── LockScreenLogo.scale-200.png │ │ ├── Rotate.png │ │ ├── SplashScreen.scale-200.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ ├── StoreLogo.png │ │ └── Wide310x150Logo.scale-200.png │ ├── Input.csproj │ ├── Input.sln │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ ├── README.md │ └── project.json ├── README.md └── custom.props ├── Docs ├── AuthoringTestScripts.md ├── CI_AzureDevOps.md ├── FAQ.md ├── RunningOnRemoteMachine.md ├── SeleniumGrid.md ├── SupportedAPIs.md ├── UsingAppium.md └── UsingUIRecorder.md ├── LICENSE ├── README.md ├── SECURITY.md ├── SUPPORT.md ├── Samples ├── .gitignore ├── C# │ ├── AlarmClockTest │ │ ├── AlarmClockSession.cs │ │ ├── AlarmClockTest.csproj │ │ ├── AlarmClockTest.sln │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── README.md │ │ ├── ScenarioAlarm.cs │ │ ├── ScenarioStopwatch.cs │ │ └── packages.config │ ├── CalculatorTest │ │ ├── CalculatorSession.cs │ │ ├── CalculatorTest.csproj │ │ ├── CalculatorTest.sln │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── README.md │ │ ├── ScenarioStandard.cs │ │ └── packages.config │ ├── CortanaTest │ │ ├── BingSearch.cs │ │ ├── CortanaTest.csproj │ │ ├── CortanaTest.sln │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── README.md │ │ └── packages.config │ ├── NotepadAndCalculatorTest │ │ ├── CalculatorSession.cs │ │ ├── MultiSession.cs │ │ ├── NotepadCalculatorTest.csproj │ │ ├── NotepadCalculatorTest.sln │ │ ├── NotepadSession.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── README.md │ │ ├── SingleSession.cs │ │ └── packages.config │ ├── NotepadTest │ │ ├── NotepadSession.cs │ │ ├── NotepadTest.csproj │ │ ├── NotepadTest.sln │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── README.md │ │ ├── ScenarioEditor.cs │ │ ├── ScenarioMenuItem.cs │ │ ├── ScenarioPopupDialog.cs │ │ └── packages.config │ ├── Paint3DTest │ │ ├── Paint3DSession.cs │ │ ├── Paint3DTest.csproj │ │ ├── Paint3DTest.sln │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── README.md │ │ ├── ScenarioDraw.cs │ │ ├── ScenarioZoom.cs │ │ └── packages.config │ ├── PaintTest │ │ ├── PaintSession.cs │ │ ├── PaintTest.csproj │ │ ├── PaintTest.sln │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── README.md │ │ ├── ScenarioDraw.cs │ │ └── packages.config │ └── StickyNotesTest │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── README.md │ │ ├── ScenarioPen.cs │ │ ├── StickyNotesSession.cs │ │ ├── StickyNotesTest.csproj │ │ ├── StickyNotesTest.sln │ │ └── packages.config ├── Java │ ├── .idea │ │ ├── Java.iml │ │ ├── misc.xml │ │ ├── modules.xml │ │ ├── vcs.xml │ │ └── workspace.xml │ └── CalculatorTest │ │ ├── .idea │ │ ├── compiler.xml │ │ ├── libraries │ │ │ ├── Maven__cglib_cglib_3_2_4.xml │ │ │ ├── Maven__cglib_cglib_nodep_3_2_4.xml │ │ │ ├── Maven__com_codeborne_phantomjsdriver_1_4_0.xml │ │ │ ├── Maven__com_google_code_gson_gson_2_8_0.xml │ │ │ ├── Maven__com_google_guava_guava_21_0.xml │ │ │ ├── Maven__commons_beanutils_commons_beanutils_1_9_2.xml │ │ │ ├── Maven__commons_codec_commons_codec_1_9.xml │ │ │ ├── Maven__commons_collections_commons_collections_3_2_2.xml │ │ │ ├── Maven__commons_digester_commons_digester_1_8_1.xml │ │ │ ├── Maven__commons_io_commons_io_2_5.xml │ │ │ ├── Maven__commons_logging_commons_logging_1_2.xml │ │ │ ├── Maven__commons_validator_commons_validator_1_5_1.xml │ │ │ ├── Maven__io_appium_java_client_5_0_0_BETA6.xml │ │ │ ├── Maven__junit_junit_4_11.xml │ │ │ ├── Maven__net_java_dev_jna_jna_4_1_0.xml │ │ │ ├── Maven__net_java_dev_jna_jna_platform_4_1_0.xml │ │ │ ├── Maven__net_sourceforge_cssparser_cssparser_0_9_21.xml │ │ │ ├── Maven__net_sourceforge_htmlunit_htmlunit_2_24.xml │ │ │ ├── Maven__net_sourceforge_htmlunit_htmlunit_core_js_2_23.xml │ │ │ ├── Maven__net_sourceforge_htmlunit_neko_htmlunit_2_24.xml │ │ │ ├── Maven__org_apache_ant_ant_1_9_6.xml │ │ │ ├── Maven__org_apache_ant_ant_launcher_1_9_6.xml │ │ │ ├── Maven__org_apache_commons_commons_exec_1_3.xml │ │ │ ├── Maven__org_apache_commons_commons_lang3_3_5.xml │ │ │ ├── Maven__org_apache_httpcomponents_httpclient_4_5_2.xml │ │ │ ├── Maven__org_apache_httpcomponents_httpcore_4_4_4.xml │ │ │ ├── Maven__org_apache_httpcomponents_httpmime_4_5_2.xml │ │ │ ├── Maven__org_aspectj_aspectjweaver_1_8_10.xml │ │ │ ├── Maven__org_eclipse_jetty_jetty_io_9_2_20_v20161216.xml │ │ │ ├── Maven__org_eclipse_jetty_jetty_util_9_2_20_v20161216.xml │ │ │ ├── Maven__org_eclipse_jetty_websocket_websocket_api_9_2_20_v20161216.xml │ │ │ ├── Maven__org_eclipse_jetty_websocket_websocket_client_9_2_20_v20161216.xml │ │ │ ├── Maven__org_eclipse_jetty_websocket_websocket_common_9_2_20_v20161216.xml │ │ │ ├── Maven__org_hamcrest_hamcrest_core_1_3.xml │ │ │ ├── Maven__org_ow2_asm_asm_5_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_htmlunit_driver_2_24.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_api_3_3_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_chrome_driver_3_3_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_edge_driver_3_3_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_firefox_driver_3_3_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_ie_driver_3_3_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_java_3_3_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_opera_driver_3_3_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_remote_driver_3_3_1.xml │ │ │ ├── Maven__org_seleniumhq_selenium_selenium_safari_driver_3_3_1.xml │ │ │ ├── Maven__org_springframework_spring_aop_4_3_5_RELEASE.xml │ │ │ ├── Maven__org_springframework_spring_beans_4_3_5_RELEASE.xml │ │ │ ├── Maven__org_springframework_spring_context_4_3_5_RELEASE.xml │ │ │ ├── Maven__org_springframework_spring_core_4_3_5_RELEASE.xml │ │ │ ├── Maven__org_springframework_spring_expression_4_3_5_RELEASE.xml │ │ │ ├── Maven__org_w3c_css_sac_1_3.xml │ │ │ ├── Maven__xalan_serializer_2_7_2.xml │ │ │ ├── Maven__xalan_xalan_2_7_2.xml │ │ │ ├── Maven__xerces_xercesImpl_2_11_0.xml │ │ │ └── Maven__xml_apis_xml_apis_1_4_01.xml │ │ ├── misc.xml │ │ ├── modules.xml │ │ ├── vcs.xml │ │ └── workspace.xml │ │ ├── CalculatorTest.iml │ │ ├── pom.xml │ │ ├── src │ │ └── test │ │ │ └── java │ │ │ └── CalculatorTest.java │ │ └── target │ │ └── test-classes │ │ └── CalculatorTest.class ├── JavaScript │ ├── .ado │ │ ├── azure-pipelines.yml │ │ └── templates │ │ │ ├── buildTestApp.yml │ │ │ └── deployTestApp.yml │ ├── .gitignore │ ├── README.md │ ├── lerna.json │ ├── package.json │ ├── packages │ │ ├── selenium-webdriver │ │ │ ├── Pages │ │ │ │ ├── BasicInputPage.ts │ │ │ │ ├── ButtonPage.ts │ │ │ │ ├── CheckBoxPage.ts │ │ │ │ └── HomePage.ts │ │ │ ├── README.md │ │ │ ├── __tests__ │ │ │ │ └── samples.test.ts │ │ │ ├── babel.config.js │ │ │ ├── jest.config.js │ │ │ └── package.json │ │ └── webdriverio │ │ │ ├── .prettierrc.json │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── pages │ │ │ ├── BasePage.ts │ │ │ ├── BasicInputPage.ts │ │ │ ├── ButtonPage.ts │ │ │ ├── CheckBoxPage.ts │ │ │ └── HomePage.ts │ │ │ ├── test │ │ │ └── samples.spec.ts │ │ │ ├── tsconfig.json │ │ │ ├── wdio.conf.js │ │ │ └── wdio.conf.winappdriver.js │ └── yarn.lock ├── Python │ ├── README.md │ └── calculatortest.py ├── Ruby │ ├── README.md │ └── features │ │ ├── standard.feature │ │ ├── step_definitions │ │ ├── setup_steps.rb │ │ └── standard_steps.rb │ │ └── support │ │ ├── env.rb │ │ └── hooks.rb └── custom.props ├── Tests ├── AbsoluteXPath │ ├── AbsoluteXPath.csproj │ ├── AbsoluteXPath.sln │ ├── Alarms.cs │ ├── Calculator.cs │ ├── DesktopSession.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── README.md │ ├── SimpleAttributeExpression.cs │ ├── ValidXPath.cs │ ├── notepad.cs │ └── packages.config ├── Input │ ├── Input.csproj │ ├── Input.sln │ ├── MultiTouchScenarios.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── README.md │ ├── TestBase.cs │ ├── TouchScenarios.cs │ ├── app.config │ └── packages.config ├── README.md ├── UWPControls │ ├── Button.cs │ ├── CheckBox.cs │ ├── ComboBox.cs │ ├── DatePicker.cs │ ├── ProgressBar.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── README.md │ ├── RadioButton.cs │ ├── Slider.cs │ ├── TextBlock.cs │ ├── TextBox.cs │ ├── ToggleButton.cs │ ├── ToggleSwitch.cs │ ├── UWPControls.csproj │ ├── UWPControls.sln │ ├── UWPControlsBase.cs │ └── packages.config ├── WebDriverAPI │ ├── Actions.cs │ ├── ActionsPen.cs │ ├── ActionsTouch.cs │ ├── AppSessionBase │ │ ├── AlarmClockBase.cs │ │ ├── CalculatorBase.cs │ │ ├── CommonTestSettings.cs │ │ ├── EdgeBase.cs │ │ ├── Utility.cs │ │ └── WebDriverApiExtensions.cs │ ├── AppiumAppClose.cs │ ├── AppiumAppLaunch.cs │ ├── Back.cs │ ├── Element.cs │ ├── ElementActive.cs │ ├── ElementAttribute.cs │ ├── ElementClear.cs │ ├── ElementClick.cs │ ├── ElementDisplayed.cs │ ├── ElementElement.cs │ ├── ElementElements.cs │ ├── ElementEnabled.cs │ ├── ElementEquals.cs │ ├── ElementLocation.cs │ ├── ElementLocationInView.cs │ ├── ElementName.cs │ ├── ElementSelected.cs │ ├── ElementSendKeys.cs │ ├── ElementSize.cs │ ├── ElementText.cs │ ├── Elements.cs │ ├── Forward.cs │ ├── Location.cs │ ├── Mouse.cs │ ├── Orientation.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── README.md │ ├── Screenshot.cs │ ├── SendKeys.cs │ ├── Session.cs │ ├── Sessions.cs │ ├── Source.cs │ ├── Status.cs │ ├── Timeouts.cs │ ├── Title.cs │ ├── TouchClick.cs │ ├── TouchDoubleClick.cs │ ├── TouchDownMoveUp.cs │ ├── TouchFlick.cs │ ├── TouchLongClick.cs │ ├── TouchScroll.cs │ ├── WebDriverAPI.csproj │ ├── WebDriverAPI.sln │ ├── Window.cs │ └── packages.config └── custom.props ├── Tools └── UIRecorder │ ├── .gitignore │ ├── README.md │ ├── SignConfig.xml │ ├── UIRecorder │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── ApplicationInsights.config │ ├── GenerateXPath.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── MouseKeyboardEventHandler.cs │ ├── MouseKeyboardHook.cs │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── RecordedUiTask.cs │ ├── Resource │ │ └── copy.png │ ├── UiTreeNode.cs │ ├── Win32API.cs │ ├── WinAppDriverUiRecorder.csproj │ ├── WindowEditNodeAttribute.xaml │ ├── WindowEditNodeAttribute.xaml.cs │ ├── XmlNodePathRecorder.cs │ └── packages.config │ ├── UIRecorderTemplate │ ├── App.config │ ├── Program.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── UIRecorderTemplate.csproj │ └── packages.config │ ├── UIXPathLib │ ├── ControlTypeId.h │ ├── UiTreeWalk.cpp │ ├── UiTreeWalk.h │ ├── UiXPathLib.cpp │ ├── UiXPathLib.def │ ├── UiXPathLib.vcxproj │ ├── dllmain.cpp │ ├── stdafx.cpp │ ├── stdafx.h │ └── targetver.h │ ├── WinAppDriverUIRecorder.sln │ └── custom.props └── WinAppDriver.pfx /.gitignore: -------------------------------------------------------------------------------- 1 | #Visual Studio files 2 | *.o 3 | *.d 4 | *.so 5 | *.[Oo]bj 6 | *.user 7 | *.aps 8 | *.pch 9 | *.vspscc 10 | *.vssscc 11 | *_i.c 12 | *_p.c 13 | *.ncb 14 | *.suo 15 | *.tlb 16 | *.tlh 17 | *.tli 18 | *.bak 19 | *.[Cc]ache 20 | *.ilk 21 | *.log 22 | *.lib 23 | *.sbr 24 | *.sdf 25 | *.sdf 26 | *.opensdf 27 | *.pdb 28 | *.idb 29 | *.ipdb 30 | *.iobj 31 | *.res 32 | *.unsuccessfulbuild 33 | *.lastbuildstate 34 | *.tlog 35 | *.intermediate 36 | *.dll 37 | *.exp 38 | *.exe 39 | *.manifest 40 | *.rc 41 | *~ 42 | .vs 43 | ipch/ 44 | obj/ 45 | [Bb]in 46 | [Aa]pp[Pp]ackages/ 47 | [Bb]undle[Aa]rtifacts/ 48 | 49 | #ignore all *.lock.json files 50 | *.lock.json 51 | 52 | # The packages folder can be ignored because of Package Restore 53 | **/packages/* 54 | 55 | # except build/, which is used as an MSBuild target. 56 | !**/packages/build/ 57 | 58 | # except Javascript examples 59 | !Samples/JavaScript/packages 60 | 61 | # Visual Studio 2015/2017 cache/options directory 62 | .vs/ 63 | 64 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "ApplicationUnderTests/Xaml-Controls-Gallery"] 2 | path = ApplicationUnderTests/Xaml-Controls-Gallery 3 | url = https://github.com/microsoft/Xaml-Controls-Gallery.git 4 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/AppBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/AppBar.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/AppBarButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/AppBarButton.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/AppBarSeparator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/AppBarSeparator.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/AppBarToggleButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/AppBarToggleButton.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/AutoSuggestBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/AutoSuggestBox.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Border.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Button.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/CalendarView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/CalendarView.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Canvas.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/CheckBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/CheckBox.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ComboBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ComboBox.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/CommandBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/CommandBar.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ContentDialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ContentDialog.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/DarkGray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/DarkGray.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/DatePicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/DatePicker.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/FlipView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/FlipView.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Flyout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Flyout.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Grid.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/GridView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/GridView.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/HeroImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/HeroImage.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Hub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Hub.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/HyperlinkButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/HyperlinkButton.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Image.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/InkCanvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/InkCanvas.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/LightGray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/LightGray.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ListBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ListBox.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ListView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ListView.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/MediaElement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/MediaElement.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/MediumGray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/MediumGray.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/MenuFlyout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/MenuFlyout.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/PasswordBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/PasswordBox.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Pivot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Pivot.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ProgressBar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ProgressBar.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ProgressRing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ProgressRing.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/RadioButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/RadioButton.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/RelativePanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/RelativePanel.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/RichEditBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/RichEditBox.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/RichTextBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/RichTextBlock.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ScrollViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ScrollViewer.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/SemanticZoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/SemanticZoom.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/SettingsFlyout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/SettingsFlyout.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Slices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Slices.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Slices2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Slices2.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/Slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/Slider.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/SplitView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/SplitView.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/StackPanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/StackPanel.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/TextBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/TextBlock.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/TextBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/TextBox.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/TimePicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/TimePicker.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ToggleButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ToggleButton.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ToggleSwitch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ToggleSwitch.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ToolTip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ToolTip.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/VariableSizedWrapGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/VariableSizedWrapGrid.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ViewBox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ViewBox.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/WideLogo.scale-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/WideLogo.scale-80.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/badgelogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/badgelogo.scale-100.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/badgelogo.scale-140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/badgelogo.scale-140.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/badgelogo.scale-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/badgelogo.scale-180.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/cliff.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/cliff.jpg -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/fishes.wmv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/fishes.wmv -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/grapes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/grapes.jpg -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ladybug.wmv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ladybug.wmv -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/ninegrid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/ninegrid.gif -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/rainier.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/rainier.jpg -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/smalltile-sdk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/smalltile-sdk.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/splash-sdk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/splash-sdk.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/squaretile-sdk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/squaretile-sdk.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/storelogo-sdk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/storelogo-sdk.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/sunset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/sunset.jpg -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/treetops.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/treetops.jpg -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/valley.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/valley.jpg -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/widelogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/widelogo.scale-100.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/widelogo.scale-140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/widelogo.scale-140.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Assets/widelogo.scale-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/AppUIBasics/Assets/widelogo.scale-180.png -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/BooleanNegationConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml.Data; 3 | 4 | namespace AppUIBasics.Common 5 | { 6 | /// 7 | /// Value converter that translates true to false and vice versa. 8 | /// 9 | public sealed class BooleanNegationConverter : IValueConverter 10 | { 11 | public object Convert(object value, Type targetType, object parameter, string language) 12 | { 13 | return !(value is bool && (bool)value); 14 | } 15 | 16 | public object ConvertBack(object value, Type targetType, object parameter, string language) 17 | { 18 | return !(value is bool && (bool)value); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/BooleanToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Linq; 5 | using System.Runtime.CompilerServices; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.Graphics.Display; 9 | using Windows.UI.ViewManagement; 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | using Windows.UI.Xaml.Data; 13 | 14 | namespace AppUIBasics.Common 15 | { 16 | /// 17 | /// Value converter that translates true to and false to 18 | /// . 19 | /// 20 | public sealed class BooleanToVisibilityConverter : IValueConverter 21 | { 22 | public object Convert(object value, Type targetType, object parameter, string language) 23 | { 24 | return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed; 25 | } 26 | 27 | public object ConvertBack(object value, Type targetType, object parameter, string language) 28 | { 29 | return value is Visibility && (Visibility)value == Visibility.Visible; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/ColorStringConverter.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Linq; 13 | using System.Text; 14 | using System.Threading.Tasks; 15 | using Windows.UI; 16 | using Windows.UI.Xaml; 17 | using Windows.UI.Xaml.Data; 18 | using Windows.UI.Xaml.Media; 19 | 20 | namespace AppUIBasics.Common 21 | { 22 | /// 23 | /// Value converter that translates true to and false to 24 | /// . 25 | /// 26 | public sealed class ColorStringConverter : IValueConverter 27 | { 28 | public object Convert(object value, Type targetType, object parameter, string language) 29 | { 30 | if (value is Color) 31 | { 32 | return ((Color)value).ToString(); 33 | } 34 | else if (value is SolidColorBrush) 35 | return (value as SolidColorBrush).Color.ToString(); 36 | else 37 | return "Unknown"; 38 | } 39 | 40 | public object ConvertBack(object value, Type targetType, object parameter, string language) 41 | { 42 | return Colors.Black; 43 | } 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/ComboBoxItemToStringConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace AppUIBasics.Common 9 | { 10 | public class ComboBoxItemToStringConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | if (value is Windows.UI.Xaml.Controls.ComboBoxItem) 15 | { 16 | return (value as Windows.UI.Xaml.Controls.ComboBoxItem).Content; 17 | } 18 | return null; 19 | } 20 | 21 | public object ConvertBack(object value, Type targetType, object parameter, string language) 22 | { 23 | throw new NotImplementedException(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/DoubleToIntConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace AppUIBasics.Common 9 | { 10 | public class DoubleToIntConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | if(value != null && value is double) 15 | { 16 | int retVal; 17 | if (int.TryParse(value.ToString(), out retVal)) 18 | return retVal; 19 | } 20 | return null; 21 | } 22 | 23 | public object ConvertBack(object value, Type targetType, object parameter, string language) 24 | { 25 | if(value != null && value is int) 26 | { 27 | return (double)value; 28 | } 29 | return null; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/NullableBooleanToBooleanConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | 8 | namespace AppUIBasics.Common 9 | { 10 | public class NullableBooleanToBooleanConverter : IValueConverter 11 | { 12 | public object Convert(object value, Type targetType, object parameter, string language) 13 | { 14 | if(value is bool?) 15 | { 16 | return (bool)value; 17 | } 18 | return false; 19 | } 20 | 21 | public object ConvertBack(object value, Type targetType, object parameter, string language) 22 | { 23 | if (value is bool) 24 | return (bool)value; 25 | return false; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/ReadMe.txt: -------------------------------------------------------------------------------- 1 | The Common directory contains classes that simplify application development. 2 | 3 | Classes in the Common directory form part of your project and may be further enhanced to meet your 4 | needs. Care should be taken when altering existing methods and properties as incompatible changes 5 | will require corresponding changes to code included in a variety of Visual Studio templates. For 6 | example, additional pages added to your project are written assuming that the original methods and 7 | properties in Common classes are still present and that the names of the types have not changed. -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/StringToBrushConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI; 7 | using Windows.UI.Xaml.Data; 8 | using Windows.UI.Xaml.Media; 9 | using System.Reflection; 10 | using Windows.UI.Xaml.Controls; 11 | 12 | namespace AppUIBasics.Common 13 | { 14 | public class StringToBrushConverter : IValueConverter 15 | { 16 | public object Convert(object value, Type targetType, object parameter, string language) 17 | { 18 | if(value is ComboBoxItem) 19 | { 20 | //First see if this brush is defined as a resource 21 | var brushName = (value as ComboBoxItem).Content.ToString(); 22 | if (App.Current.Resources.ContainsKey(brushName)) 23 | return (Brush)App.Current.Resources[brushName]; 24 | 25 | //Try to get the brush from the Colors static class 26 | var prop = typeof(Colors).GetRuntimeProperty(brushName); 27 | if (prop != null) 28 | { 29 | var color = prop.GetValue(null); 30 | if (color != null) 31 | return new SolidColorBrush((Color)color); 32 | } 33 | } 34 | return null; 35 | } 36 | 37 | public object ConvertBack(object value, Type targetType, object parameter, string language) 38 | { 39 | throw new NotImplementedException(); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/ValueToFontFamilyConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Windows.UI.Xaml.Data; 7 | using Windows.UI.Xaml.Media; 8 | 9 | namespace AppUIBasics.Common 10 | { 11 | public class ValueToFontFamilyConverter : IValueConverter 12 | { 13 | public object Convert(object value, Type targetType, object parameter, string language) 14 | { 15 | if(value != null && value is FontFamily) 16 | { 17 | return (FontFamily)value; 18 | } 19 | return new FontFamily("Segoe UI"); 20 | } 21 | 22 | public object ConvertBack(object value, Type targetType, object parameter, string language) 23 | { 24 | throw new NotImplementedException(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Common/ValueToStringConverter.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.Linq; 13 | using System.Text; 14 | using System.Threading.Tasks; 15 | using Windows.UI.Xaml.Data; 16 | 17 | namespace AppUIBasics.Common 18 | { 19 | public sealed class ValueToStringConverter : IValueConverter 20 | { 21 | public object Convert(object value, Type targetType, object parameter, string language) 22 | { 23 | return value.ToString(); 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, string language) 27 | { 28 | throw new NotImplementedException("Converting from string is not supported."); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlExample.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/CanvasPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class CanvasPage : Page 33 | { 34 | public CanvasPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ContentDialogExample.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ContentDialogPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices.WindowsRuntime; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | using Windows.UI.Xaml.Controls.Primitives; 11 | using Windows.UI.Xaml.Data; 12 | using Windows.UI.Xaml.Input; 13 | using Windows.UI.Xaml.Media; 14 | using Windows.UI.Xaml.Navigation; 15 | 16 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 17 | 18 | namespace AppUIBasics.ControlPages 19 | { 20 | /// 21 | /// An empty page that can be used on its own or navigated to within a Frame. 22 | /// 23 | public sealed partial class ContentDialogPage : Page 24 | { 25 | public ContentDialogPage() 26 | { 27 | this.InitializeComponent(); 28 | } 29 | 30 | private async void ShowDialog_Click(object sender, RoutedEventArgs e) 31 | { 32 | ContentDialogExample dialog = new ContentDialogExample(); 33 | await dialog.ShowAsync(); 34 | 35 | if(dialog.Result == SignInResult.SignInOK) 36 | { 37 | DialogResult.Text = "Dialog result successful."; 38 | } 39 | else if(dialog.Result == SignInResult.SignInCancel) 40 | { 41 | DialogResult.Text = "Dialog result canceled."; 42 | } 43 | else if(dialog.Result == SignInResult.Nothing) 44 | { 45 | DialogResult.Text = "Dialog dismissed."; 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/DatePickerPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using Windows.UI.Xaml.Navigation; 12 | using Windows.UI.Xaml.Controls; 13 | 14 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 15 | 16 | namespace AppUIBasics.ControlPages 17 | { 18 | /// 19 | /// An empty page that can be used on its own or navigated to within a Frame. 20 | /// 21 | public sealed partial class DatePickerPage : Page 22 | { 23 | public DatePickerPage() 24 | { 25 | this.InitializeComponent(); 26 | } 27 | 28 | protected override void OnNavigatedTo(NavigationEventArgs e) 29 | { 30 | // Set the default date to 2 months from the current date. 31 | Control2.Date = DateTimeOffset.Now.AddMonths(2); 32 | 33 | // Set the minimum year to the current year. 34 | Control2.MinYear = DateTimeOffset.Now; 35 | 36 | // Set the maximum year to 5 years in the future. 37 | Control2.MaxYear = DateTimeOffset.Now.AddYears(5); 38 | 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/FlipViewPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using AppUIBasics.Common; 11 | using AppUIBasics.Data; 12 | using System.Collections.Generic; 13 | using Windows.UI.Xaml.Navigation; 14 | using Windows.UI.Xaml.Controls; 15 | 16 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 17 | 18 | namespace AppUIBasics.ControlPages 19 | { 20 | /// 21 | /// An empty page that can be used on its own or navigated to within a Frame. 22 | /// 23 | public sealed partial class FlipViewPage : Page 24 | { 25 | private IEnumerable _groups; 26 | 27 | public FlipViewPage() 28 | { 29 | this.InitializeComponent(); 30 | } 31 | public IEnumerable Groups 32 | { 33 | get { return this._groups; } 34 | } 35 | 36 | protected async override void OnNavigatedTo(NavigationEventArgs e) 37 | { 38 | base.OnNavigatedTo(e); 39 | 40 | _groups = await ControlInfoDataSource.GetGroupsAsync(); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/FlyoutPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | using Windows.UI.Xaml.Controls.Primitives; 13 | using Windows.UI.Xaml.Input; 14 | 15 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 16 | 17 | namespace AppUIBasics.ControlPages 18 | { 19 | /// 20 | /// An empty page that can be used on its own or navigated to within a Frame. 21 | /// 22 | public sealed partial class FlyoutPage : Page 23 | { 24 | public FlyoutPage() 25 | { 26 | this.InitializeComponent(); 27 | } 28 | 29 | private void Element_Tapped(object sender, TappedRoutedEventArgs e) 30 | { 31 | FrameworkElement element = sender as FrameworkElement; 32 | if (element != null) 33 | { 34 | FlyoutBase.ShowAttachedFlyout(element); 35 | } 36 | } 37 | 38 | private void DeleteConfirmation_Click(object sender, RoutedEventArgs e) 39 | { 40 | Flyout f = this.Control1.Flyout as Flyout; 41 | if (f != null) 42 | { 43 | f.Hide(); 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/GridPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class GridPage : Page 33 | { 34 | public GridPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/HubPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System.Collections.Generic; 11 | using Windows.UI.Xaml; 12 | using Windows.UI.Xaml.Controls; 13 | 14 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 15 | 16 | namespace AppUIBasics.ControlPages 17 | { 18 | /// 19 | /// An empty page that can be used on its own or navigated to within a Frame. 20 | /// 21 | public sealed partial class HubPage : Page 22 | { 23 | public HubPage() 24 | { 25 | this.InitializeComponent(); 26 | Loaded += HubPage_Loaded; 27 | } 28 | 29 | void HubPage_Loaded(object sender, RoutedEventArgs e) 30 | { 31 | List sections = new List(); 32 | 33 | foreach (HubSection section in NewsHub.Sections) 34 | { 35 | if (section.Header != null) 36 | { 37 | sections.Add(section.Header.ToString()); 38 | } 39 | } 40 | 41 | ZoomedOutList.ItemsSource = sections; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/HyperlinkButtonPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | 13 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 14 | 15 | namespace AppUIBasics.ControlPages 16 | { 17 | /// 18 | /// An empty page that can be used on its own or navigated to within a Frame. 19 | /// 20 | public sealed partial class HyperlinkButtonPage : Page 21 | { 22 | public HyperlinkButtonPage() 23 | { 24 | this.InitializeComponent(); 25 | } 26 | 27 | private void GoToHyperlinkButton_Click(object sender, RoutedEventArgs e) 28 | { 29 | NavigationRootPage.RootFrame.Navigate(typeof(ItemPage), "ToggleButton"); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ImagePage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices.WindowsRuntime; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | using Windows.UI.Xaml.Controls.Primitives; 11 | using Windows.UI.Xaml.Data; 12 | using Windows.UI.Xaml.Input; 13 | using Windows.UI.Xaml.Media; 14 | using Windows.UI.Xaml.Navigation; 15 | using Windows.UI.Xaml.Documents; 16 | 17 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 18 | 19 | namespace AppUIBasics.ControlPages 20 | { 21 | /// 22 | /// An empty page that can be used on its own or navigated to within a Frame. 23 | /// 24 | public sealed partial class ImagePage : Page 25 | { 26 | public ImagePage() 27 | { 28 | this.InitializeComponent(); 29 | } 30 | 31 | private void ImageStretch_Checked(object sender, RoutedEventArgs e) 32 | { 33 | if (StretchImage != null) 34 | { 35 | var strStretch = (sender as RadioButton).Content.ToString(); 36 | var stretch = (Stretch)Enum.Parse(typeof(Stretch), strStretch); 37 | StretchImage.Stretch = stretch; 38 | 39 | StretchLabel.Text = strStretch; 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/MediaElementPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices.WindowsRuntime; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | using Windows.UI.Xaml.Controls.Primitives; 11 | using Windows.UI.Xaml.Data; 12 | using Windows.UI.Xaml.Input; 13 | using Windows.UI.Xaml.Media; 14 | using Windows.UI.Xaml.Navigation; 15 | 16 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 17 | 18 | namespace AppUIBasics.ControlPages 19 | { 20 | /// 21 | /// An empty page that can be used on its own or navigated to within a Frame. 22 | /// 23 | public sealed partial class MediaElementPage : Page 24 | { 25 | public MediaElementPage() 26 | { 27 | this.InitializeComponent(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/PasswordBoxPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | 13 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 14 | 15 | namespace AppUIBasics.ControlPages 16 | { 17 | /// 18 | /// An empty page that can be used on its own or navigated to within a Frame. 19 | /// 20 | public sealed partial class PasswordBoxPage : Page 21 | { 22 | public PasswordBoxPage() 23 | { 24 | this.InitializeComponent(); 25 | } 26 | 27 | private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e) 28 | { 29 | PasswordBox pb = sender as PasswordBox; 30 | 31 | if (pb != null) 32 | { 33 | if (string.IsNullOrEmpty(pb.Password) || pb.Password == "Password") 34 | { 35 | Control1Output.Visibility = Visibility.Visible; 36 | Control1Output.Text = "'Password' is not allowed."; 37 | pb.Password = string.Empty; 38 | } 39 | else 40 | { 41 | Control1Output.Text = string.Empty; 42 | Control1Output.Visibility = Visibility.Collapsed; 43 | } 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/PivotPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices.WindowsRuntime; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | using Windows.UI.Xaml.Controls.Primitives; 11 | using Windows.UI.Xaml.Data; 12 | using Windows.UI.Xaml.Input; 13 | using Windows.UI.Xaml.Media; 14 | using Windows.UI.Xaml.Navigation; 15 | 16 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 17 | 18 | namespace AppUIBasics.ControlPages 19 | { 20 | /// 21 | /// An empty page that can be used on its own or navigated to within a Frame. 22 | /// 23 | public sealed partial class PivotPage : Page 24 | { 25 | public PivotPage() 26 | { 27 | this.InitializeComponent(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ProgressBarPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | 13 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 14 | 15 | namespace AppUIBasics.ControlPages 16 | { 17 | /// 18 | /// An empty page that can be used on its own or navigated to within a Frame. 19 | /// 20 | public sealed partial class ProgressBarPage : Page 21 | { 22 | public ProgressBarPage() 23 | { 24 | this.InitializeComponent(); 25 | } 26 | 27 | private static int _clicks = 0; 28 | private void RepeatButton_Click(object sender, RoutedEventArgs e) 29 | { 30 | _clicks += 1; 31 | Control2Output.Text = _clicks.ToString(); 32 | DeterminateProgressValue.Text = _clicks.ToString(); 33 | ProgressBar2.Value = _clicks; 34 | 35 | if (_clicks >= 100) _clicks = 0; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ProgressRingPage.xaml: -------------------------------------------------------------------------------- 1 |  12 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <ProgressRing IsActive="" /> 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ProgressRingPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class ProgressRingPage : Page 33 | { 34 | public ProgressRingPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/RelativePanelPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices.WindowsRuntime; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | using Windows.UI.Xaml.Controls.Primitives; 11 | using Windows.UI.Xaml.Data; 12 | using Windows.UI.Xaml.Input; 13 | using Windows.UI.Xaml.Media; 14 | using Windows.UI.Xaml.Navigation; 15 | 16 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 17 | 18 | namespace AppUIBasics.ControlPages 19 | { 20 | /// 21 | /// An empty page that can be used on its own or navigated to within a Frame. 22 | /// 23 | public sealed partial class RelativePanelPage : Page 24 | { 25 | public RelativePanelPage() 26 | { 27 | this.InitializeComponent(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/RepeatButtonPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | 13 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 14 | 15 | namespace AppUIBasics.ControlPages 16 | { 17 | /// 18 | /// An empty page that can be used on its own or navigated to within a Frame. 19 | /// 20 | public sealed partial class RepeatButtonPage : Page 21 | { 22 | public RepeatButtonPage() 23 | { 24 | this.InitializeComponent(); 25 | } 26 | 27 | private static int _clicks = 0; 28 | private void RepeatButton_Click(object sender, RoutedEventArgs e) 29 | { 30 | _clicks += 1; 31 | Control1Output.Text = "Number of clicks: " + _clicks; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/RichTextBlockPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class RichTextBlockPage : Page 33 | { 34 | public RichTextBlockPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/SemanticZoomPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using AppUIBasics.Common; 11 | using AppUIBasics.Data; 12 | using System.Collections.Generic; 13 | using Windows.UI.Xaml.Controls; 14 | using Windows.UI.Xaml.Navigation; 15 | 16 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 17 | 18 | namespace AppUIBasics.ControlPages 19 | { 20 | /// 21 | /// An empty page that can be used on its own or navigated to within a Frame. 22 | /// 23 | public sealed partial class SemanticZoomPage : Page 24 | { 25 | private IEnumerable _groups; 26 | 27 | public SemanticZoomPage() 28 | { 29 | this.InitializeComponent(); 30 | } 31 | public IEnumerable Groups 32 | { 33 | get { return this._groups; } 34 | } 35 | 36 | protected async override void OnNavigatedTo(NavigationEventArgs e) 37 | { 38 | base.OnNavigatedTo(e); 39 | 40 | _groups = await ControlInfoDataSource.GetGroupsAsync(); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/SliderPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class SliderPage : Page 33 | { 34 | public SliderPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/StackPanelPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | 13 | // The Basic Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234237 14 | 15 | namespace AppUIBasics.ControlPages 16 | { 17 | /// 18 | /// A basic page that provides characteristics common to most applications. 19 | /// 20 | public sealed partial class StackPanelPage : Page 21 | { 22 | public StackPanelPage() 23 | { 24 | this.InitializeComponent(); 25 | } 26 | 27 | private void RadioButton_Checked(object sender, RoutedEventArgs e) 28 | { 29 | RadioButton rb = sender as RadioButton; 30 | if (rb != null && Control1 != null) 31 | { 32 | string orientationName = rb.Tag.ToString(); 33 | OrientationLabel.Text = orientationName; 34 | switch (orientationName) 35 | { 36 | case "Horizontal": 37 | Control1.Orientation = Orientation.Horizontal; 38 | break; 39 | case "Vertical": 40 | Control1.Orientation = Orientation.Vertical; 41 | break; 42 | } 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/TextBlockPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class TextBlockPage : Page 33 | { 34 | public TextBlockPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/TextBoxPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class TextBoxPage : Page 33 | { 34 | public TextBoxPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/TimePickerPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class TimePickerPage : Page 33 | { 34 | public TimePickerPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ToggleButtonPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | 13 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 14 | 15 | namespace AppUIBasics.ControlPages 16 | { 17 | /// 18 | /// An empty page that can be used on its own or navigated to within a Frame. 19 | /// 20 | public sealed partial class ToggleButtonPage : Page 21 | { 22 | public ToggleButtonPage() 23 | { 24 | this.InitializeComponent(); 25 | 26 | // Set initial outpput value. 27 | Control1Output.Text = (bool)Toggle1.IsChecked ? "On" : "Off"; 28 | } 29 | 30 | private void ToggleButton_Checked(object sender, RoutedEventArgs e) 31 | { 32 | Control1Output.Text = "On"; 33 | } 34 | 35 | private void ToggleButton_Unchecked(object sender, RoutedEventArgs e) 36 | { 37 | Control1Output.Text = "Off"; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ToggleSwitchPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class ToggleSwitchPage : Page 33 | { 34 | public ToggleSwitchPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/ToolTipPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using System; 11 | using System.Collections.Generic; 12 | using System.IO; 13 | using System.Linq; 14 | using System.Runtime.InteropServices.WindowsRuntime; 15 | using Windows.Foundation; 16 | using Windows.Foundation.Collections; 17 | using Windows.UI.Xaml; 18 | using Windows.UI.Xaml.Controls; 19 | using Windows.UI.Xaml.Controls.Primitives; 20 | using Windows.UI.Xaml.Data; 21 | using Windows.UI.Xaml.Input; 22 | using Windows.UI.Xaml.Media; 23 | using Windows.UI.Xaml.Navigation; 24 | 25 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 26 | 27 | namespace AppUIBasics.ControlPages 28 | { 29 | /// 30 | /// An empty page that can be used on its own or navigated to within a Frame. 31 | /// 32 | public sealed partial class ToolTipPage : Page 33 | { 34 | public ToolTipPage() 35 | { 36 | this.InitializeComponent(); 37 | } 38 | 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/ControlPages/VariableSizedWrapGridPage.xaml.cs: -------------------------------------------------------------------------------- 1 | //********************************************************* 2 | // 3 | // Copyright (c) Microsoft. All rights reserved. 4 | // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 5 | // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY 6 | // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR 7 | // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. 8 | // 9 | //********************************************************* 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | 13 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 14 | 15 | namespace AppUIBasics.ControlPages 16 | { 17 | /// 18 | /// An empty page that can be used on its own or navigated to within a Frame. 19 | /// 20 | public sealed partial class VariableSizedWrapGridPage : Page 21 | { 22 | public VariableSizedWrapGridPage() 23 | { 24 | this.InitializeComponent(); 25 | } 26 | 27 | private void RadioButton_Checked(object sender, RoutedEventArgs e) 28 | { 29 | RadioButton rb = sender as RadioButton; 30 | 31 | if (rb != null && Control1 != null) 32 | { 33 | string orientionName = rb.Tag.ToString(); 34 | OrientationLabel.Text = orientionName; 35 | switch (orientionName) 36 | { 37 | case "Horizontal": 38 | Control1.Orientation = Orientation.Horizontal; 39 | break; 40 | case "Vertical": 41 | Control1.Orientation = Orientation.Vertical; 42 | break; 43 | } 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | App UI Basics C# Sample 7 | Microsoft Corporation 8 | Assets\StoreLogo-sdk.png 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("AppUIBasics")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("AppUIBasics")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/README.md: -------------------------------------------------------------------------------- 1 | # AppUIBasics 2 | 3 | AppUIBasics is a sample Universal Windows Platfrom application created to showcase various controls (UI elements) that can be added to your application. This application is taken from and slightly modified to run independently. This application contains all the controls that are tested in [UWPControls Test](../../Tests/UWPControls/) project. 4 | 5 | 6 | ## Requirements 7 | 8 | - Windows 10 PC with the latest Windows 10 version (Version 1607 or later) 9 | - Microsoft Visual Studio 2015 or later 10 | - Windows 10 SDK version 10.0.14393.0 or later 11 | 12 | 13 | ## Getting Started 14 | 15 | 1. Open `AppUIBasics.sln` in Visual Studio 16 | 2. Select `x86` as **Solution Platform** 17 | 3. Select **Build** > **Build Solution** to build the application 18 | 4. Select **Build** > **Deploy Solution** to deploy the application 19 | 20 | > Once the application is successfully built and installed, you can run any of the test in the [UWPControls Test](../../Tests/UWPControls/) project. 21 | -------------------------------------------------------------------------------- /ApplicationUnderTests/AppUIBasics/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0" 4 | }, 5 | "frameworks": { 6 | "uap10.0": {} 7 | }, 8 | "runtimes": { 9 | "win10-arm": {}, 10 | "win10-arm-aot": {}, 11 | "win10-x86": {}, 12 | "win10-x86-aot": {}, 13 | "win10-x64": {}, 14 | "win10-x64-aot": {} 15 | } 16 | } -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/Input/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Assets/Rotate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/Input/Assets/Rotate.png -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/Input/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/Input/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/Input/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/Input/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/Input/Assets/StoreLogo.png -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/ApplicationUnderTests/Input/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Input 7 | shweaver 8 | Assets\StoreLogo.png 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/README.md: -------------------------------------------------------------------------------- 1 | # Input 2 | 3 | Input is a sample Universal Windows Platfrom application tailored to enable testing various Windows Application Driver input support. This application allows test scenarios in [Input Test](../../Tests/Input/) project to be run and verified by logging input events that the target element is receiving. 4 | 5 | 6 | ## Requirements 7 | 8 | - Windows 10 PC with the latest Windows 10 version (Version 1607 or later) 9 | - Microsoft Visual Studio 2015 or later 10 | - Windows 10 SDK version 10.0.14393.0 or later 11 | 12 | 13 | ## Getting Started 14 | 15 | 1. Open `Input.sln` in Visual Studio 16 | 2. Select `x86` as **Solution Platform** 17 | 3. Select **Build** > **Build Solution** to build the application 18 | 4. Select **Build** > **Deploy Solution** to deploy the application 19 | 20 | > Once the application is successfully built and installed, you can run any of the test in the [Input Test](../../Tests/Input/) project. 21 | -------------------------------------------------------------------------------- /ApplicationUnderTests/Input/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.1.0" 4 | }, 5 | "frameworks": { 6 | "uap10.0": {} 7 | }, 8 | "runtimes": { 9 | "win10-arm": {}, 10 | "win10-arm-aot": {}, 11 | "win10-x86": {}, 12 | "win10-x86-aot": {}, 13 | "win10-x64": {}, 14 | "win10-x64-aot": {} 15 | } 16 | } -------------------------------------------------------------------------------- /ApplicationUnderTests/README.md: -------------------------------------------------------------------------------- 1 | # Application Under Tests 2 | 3 | The following sample applications are used for [Windows Application Driver Tests](../Tests) to test against. 4 | 5 | | Test | Description | 6 | |----------------------------------- |----------------------------------------------- | 7 | | [AppUIBasics ](./AppUIBasics/) | Hosts all UI Universal Windows UI controls | 8 | | [Input ](./Input/) | Logs various input interactions | 9 | | [Xaml Controls Gallery](./Xaml-Controls-Gallery/) | This app demonstrates the controls available in the Fluent Design System and Xaml. | 10 | -------------------------------------------------------------------------------- /ApplicationUnderTests/custom.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ApplicationUnderTests\$(MSBuildProjectName) 5 | 6 | -------------------------------------------------------------------------------- /Docs/UsingUIRecorder.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | The source code for the UI Recorder tool is available on the WinAppDriver repo [here](https://github.com/Microsoft/WinAppDriver/tree/master/Tools). 3 | 4 | # Using UI Recorder 5 | 6 | The UI Recorder tool aims to provide an intuitive, and simplistic, user interface that is divided into two panels, as seen below: 7 |

8 | 9 | **UI Recorder** tracks both keyboard and mouse interactions against an application interface—representing a **UI action**. When **Recording** is active, both the top and bottom panels are dynamically updated with varying UI element information every time a new UI action takes place. The **Top Panel** shows the generated XPath query of the currently selected UI element, and the **Bottom Panel** shows the **raw XML information** for the same element. You can navigate to the **C# Code tab** on the bottom panel to view generated C# code of the recorded action which you can use on a WinAppDriver test. 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Microsoft 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | ## Getting Help 2 | 3 | This project uses GitHub issues to track bugs and take feature requests. Please 4 | search for existing issues before filing new ones to avoid duplicates. To 5 | open a new issue, click on [Issues](https://github.com/microsoft/WinAppDriver/issues) 6 | and then [New issue](https://github.com/microsoft/WinAppDriver/issues/new). 7 | 8 | If you need help in how to use this project, please review our [Wiki](https://github.com/microsoft/WinAppDriver/wiki) 9 | before opening an issue. 10 | 11 | ## Security Issues 12 | 13 | If you discover a security vulnerability in this project, please see [SECURITY.md](https://github.com/microsoft/WinAppDriver/blob/master/SECURITY.md) for information on how to report it privately. 14 | 15 | ## Microsoft Support Policy 16 | 17 | Support for this project is limited to the resources listed above. 18 | -------------------------------------------------------------------------------- /Samples/.gitignore: -------------------------------------------------------------------------------- 1 | project.lock.json 2 | *.user -------------------------------------------------------------------------------- /Samples/C#/AlarmClockTest/AlarmClockTest.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AlarmClockTest", "AlarmClockTest.csproj", "{D2D62728-48E1-46C3-BA5B-F5923B0326B8}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {D2D62728-48E1-46C3-BA5B-F5923B0326B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {D2D62728-48E1-46C3-BA5B-F5923B0326B8}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {D2D62728-48E1-46C3-BA5B-F5923B0326B8}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {D2D62728-48E1-46C3-BA5B-F5923B0326B8}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Samples/C#/AlarmClockTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Samples/C#/CalculatorTest/CalculatorTest.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CalculatorTest", "CalculatorTest.csproj", "{B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Samples/C#/CalculatorTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Samples/C#/CortanaTest/CortanaTest.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CortanaTest", "CortanaTest.csproj", "{56221B96-A146-4A17-BC9F-07838E8EEAC3}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {56221B96-A146-4A17-BC9F-07838E8EEAC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {56221B96-A146-4A17-BC9F-07838E8EEAC3}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {56221B96-A146-4A17-BC9F-07838E8EEAC3}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {56221B96-A146-4A17-BC9F-07838E8EEAC3}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Samples/C#/CortanaTest/README.md: -------------------------------------------------------------------------------- 1 | # CortanaTest 2 | 3 | CortanaTest is a sample test project that runs and validates basic UI scenarios on Windows 10 built-in **Cortana** application. This sample demonstrates the use of [Desktop Session](../../../README.md#creating-a-desktop-session) and [creation of a new session from a top level window](../../../README.md#attaching-to-an-existing-app-window). In this sample, the **Desktop Session** is used to launch and locate **Cortana** window which the **Cortana Session** will attach to. 4 | 5 | This test project highlights the following Windows Application Driver feature. 6 | - Attaching to an Existing App Window 7 | - Creating a Desktop Session 8 | - Sending system keyboard shortcut such as Windows Key + S 9 | - Sending keyboard input to a rich edit box 10 | - Finding element in Edge based WebView 11 | 12 | 13 | ## Requirements 14 | 15 | - Windows 10 PC with the latest Windows 10 version (Version 1809 or later) 16 | - Microsoft Visual Studio 2017 or later 17 | 18 | 19 | ## Getting Started 20 | 21 | 1. [Run](../../../README.md#installing-and-running-windows-application-driver) `WinAppDriver.exe` on the test device 22 | 2. Open `CortanaTest.sln` in Visual Studio 23 | 3. Select **Build** > **Rebuild Solution** 24 | 4. Select **Test** > **Windows** > **Test Explorer** 25 | 5. Select **Run All** on the test pane or through menu **Test** > **Run** > **All Tests** 26 | 27 | > Once the project is successfully built, you can use the **TestExplorer** to pick and choose the test scenario(s) to run 28 | 29 | ## Adding/Updating Test Scenario 30 | 31 | Please follow the guidelines below to maintain test reliability and conciseness: 32 | 1. Test all changes against all supported version of Windows 10 built-in **Cortana** app 33 | 2. Maintain simplicity and only add tests that provide additional value to the sample 34 | -------------------------------------------------------------------------------- /Samples/C#/CortanaTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Samples/C#/NotepadAndCalculatorTest/NotepadCalculatorTest.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29326.143 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotepadCalculatorTest", "NotepadCalculatorTest.csproj", "{B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {B2C5ADFF-D6B5-48C1-BB8C-571BFD583D7F}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {993F4E37-F1F7-434A-BFF8-F767326C7654} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Samples/C#/NotepadAndCalculatorTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Samples/C#/NotepadTest/NotepadTest.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotepadTest", "NotepadTest.csproj", "{54E36D90-BFBB-4F1A-945D-B7646F3AF88A}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {54E36D90-BFBB-4F1A-945D-B7646F3AF88A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {54E36D90-BFBB-4F1A-945D-B7646F3AF88A}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {54E36D90-BFBB-4F1A-945D-B7646F3AF88A}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {54E36D90-BFBB-4F1A-945D-B7646F3AF88A}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Samples/C#/NotepadTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("NotepadTest")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("NotepadTest")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("54e36d90-bfbb-4f1a-945d-b7646f3af88a")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Samples/C#/NotepadTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Samples/C#/Paint3DTest/Paint3DTest.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2035 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Paint3DTest", "Paint3DTest.csproj", "{98E13E3A-A110-4694-BFA7-3F4E8CC173A4}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {98E13E3A-A110-4694-BFA7-3F4E8CC173A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {98E13E3A-A110-4694-BFA7-3F4E8CC173A4}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {98E13E3A-A110-4694-BFA7-3F4E8CC173A4}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {98E13E3A-A110-4694-BFA7-3F4E8CC173A4}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {224533C9-3B8E-48D8-B7CD-940357E4EED6} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Samples/C#/Paint3DTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | [assembly: AssemblyTitle("Paint3DTest")] 6 | [assembly: AssemblyDescription("")] 7 | [assembly: AssemblyConfiguration("")] 8 | [assembly: AssemblyCompany("")] 9 | [assembly: AssemblyProduct("Paint3DTest")] 10 | [assembly: AssemblyCopyright("Copyright © 2018")] 11 | [assembly: AssemblyTrademark("")] 12 | [assembly: AssemblyCulture("")] 13 | 14 | [assembly: ComVisible(false)] 15 | 16 | [assembly: Guid("98e13e3a-a110-4694-bfa7-3f4e8cc173a4")] 17 | 18 | // [assembly: AssemblyVersion("1.0.*")] 19 | [assembly: AssemblyVersion("1.0.0.0")] 20 | [assembly: AssemblyFileVersion("1.0.0.0")] 21 | -------------------------------------------------------------------------------- /Samples/C#/Paint3DTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Samples/C#/PaintTest/PaintTest.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2035 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaintTest", "PaintTest.csproj", "{75FD12B5-F371-4C03-8F60-439144865AF8}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {75FD12B5-F371-4C03-8F60-439144865AF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {75FD12B5-F371-4C03-8F60-439144865AF8}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {75FD12B5-F371-4C03-8F60-439144865AF8}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {75FD12B5-F371-4C03-8F60-439144865AF8}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {AF04FDF9-06D1-4320-BCE5-1DEED1DAF27F} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Samples/C#/PaintTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | [assembly: AssemblyTitle("PaintTest")] 6 | [assembly: AssemblyDescription("")] 7 | [assembly: AssemblyConfiguration("")] 8 | [assembly: AssemblyCompany("")] 9 | [assembly: AssemblyProduct("PaintTest")] 10 | [assembly: AssemblyCopyright("Copyright © 2018")] 11 | [assembly: AssemblyTrademark("")] 12 | [assembly: AssemblyCulture("")] 13 | 14 | [assembly: ComVisible(false)] 15 | 16 | [assembly: Guid("75fd12b5-f371-4c03-8f60-439144865af8")] 17 | 18 | // [assembly: AssemblyVersion("1.0.*")] 19 | [assembly: AssemblyVersion("1.0.0.0")] 20 | [assembly: AssemblyFileVersion("1.0.0.0")] 21 | -------------------------------------------------------------------------------- /Samples/C#/PaintTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Samples/C#/StickyNotesTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //****************************************************************************** 2 | // 3 | // Copyright (c) 2018 Microsoft Corporation. All rights reserved. 4 | // 5 | // This code is licensed under the MIT License (MIT). 6 | // 7 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 10 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 11 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 12 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 13 | // THE SOFTWARE. 14 | // 15 | //****************************************************************************** 16 | 17 | using System.Reflection; 18 | using System.Runtime.CompilerServices; 19 | using System.Runtime.InteropServices; 20 | 21 | [assembly: AssemblyTitle("StickyNotesTest")] 22 | [assembly: AssemblyDescription("")] 23 | [assembly: AssemblyConfiguration("")] 24 | [assembly: AssemblyCompany("")] 25 | [assembly: AssemblyProduct("StickyNotesTest")] 26 | [assembly: AssemblyCopyright("Copyright © 2018 Microsoft Corporation")] 27 | [assembly: AssemblyTrademark("")] 28 | [assembly: AssemblyCulture("")] 29 | 30 | [assembly: ComVisible(false)] 31 | 32 | [assembly: Guid("9ed00387-c536-4ad7-9228-9fb87d3a2fd7")] 33 | 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Samples/C#/StickyNotesTest/StickyNotesTest.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2027 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StickyNotesTest", "StickyNotesTest.csproj", "{9ED00387-C536-4AD7-9228-9FB87D3A2FD7}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {9ED00387-C536-4AD7-9228-9FB87D3A2FD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {9ED00387-C536-4AD7-9228-9FB87D3A2FD7}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {9ED00387-C536-4AD7-9228-9FB87D3A2FD7}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {9ED00387-C536-4AD7-9228-9FB87D3A2FD7}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {CB5C6371-2720-46EF-9125-DA145F5DD82F} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Samples/C#/StickyNotesTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Samples/Java/.idea/Java.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Samples/Java/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Samples/Java/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__cglib_cglib_3_2_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__cglib_cglib_nodep_3_2_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__com_codeborne_phantomjsdriver_1_4_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__com_google_code_gson_gson_2_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__com_google_guava_guava_21_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__commons_codec_commons_codec_1_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__commons_digester_commons_digester_1_8_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__commons_io_commons_io_2_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__commons_validator_commons_validator_1_5_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__io_appium_java_client_5_0_0_BETA6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__junit_junit_4_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__net_java_dev_jna_jna_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__net_java_dev_jna_jna_platform_4_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__net_sourceforge_cssparser_cssparser_0_9_21.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__net_sourceforge_htmlunit_htmlunit_2_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__net_sourceforge_htmlunit_htmlunit_core_js_2_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__net_sourceforge_htmlunit_neko_htmlunit_2_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_apache_ant_ant_1_9_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_apache_ant_ant_launcher_1_9_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_apache_commons_commons_exec_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_aspectj_aspectjweaver_1_8_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_eclipse_jetty_jetty_io_9_2_20_v20161216.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_eclipse_jetty_jetty_util_9_2_20_v20161216.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_api_9_2_20_v20161216.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_client_9_2_20_v20161216.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_eclipse_jetty_websocket_websocket_common_9_2_20_v20161216.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_ow2_asm_asm_5_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_htmlunit_driver_2_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_api_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_chrome_driver_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_edge_driver_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_firefox_driver_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_ie_driver_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_java_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_opera_driver_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_remote_driver_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_seleniumhq_selenium_selenium_safari_driver_3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_springframework_spring_aop_4_3_5_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_springframework_spring_beans_4_3_5_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_springframework_spring_context_4_3_5_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_springframework_spring_core_4_3_5_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_springframework_spring_expression_4_3_5_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__org_w3c_css_sac_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__xalan_serializer_2_7_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__xalan_xalan_2_7_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__xerces_xercesImpl_2_11_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/libraries/Maven__xml_apis_xml_apis_1_4_01.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | CalculatorTest 8 | CalculatorTest 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | org.seleniumhq.selenium 14 | selenium-java 15 | 3.3.1 16 | 17 | 18 | junit 19 | junit 20 | 4.11 21 | 22 | 23 | io.appium 24 | java-client 25 | 5.0.0 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Samples/Java/CalculatorTest/target/test-classes/CalculatorTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Samples/Java/CalculatorTest/target/test-classes/CalculatorTest.class -------------------------------------------------------------------------------- /Samples/JavaScript/.ado/templates/buildTestApp.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - task: NuGetToolInstaller@0 3 | displayName: 'Use NuGet 4.4.1' 4 | inputs: 5 | versionSpec: 4.4.1 6 | 7 | - task: NuGetCommand@2 8 | displayName: 'NuGet restore' 9 | inputs: 10 | restoreSolution: ApplicationUnderTests/Xaml-Controls-Gallery/XamlControlsGallery/XamlControlsGallery.sln 11 | - task: VSBuild@1 12 | displayName: 'Build solution ApplicationUnderTests/XamlControlsGallery/XamlControlsGallery.sln' 13 | inputs: 14 | solution: ApplicationUnderTests/Xaml-Controls-Gallery/XamlControlsGallery/XamlControlsGallery.sln 15 | msbuildArgs: '/p:Configuration=Deploy /p:AppxPackageDir="$(Build.ArtifactStagingDirectory)\\" /p:UapAppxPackageBuildMode=CI/p:AppxBundlePlatforms="x86" /p:AppxBundle=Always' 16 | platform: x86 17 | configuration: Release -------------------------------------------------------------------------------- /Samples/JavaScript/.ado/templates/deployTestApp.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - task: PowerShell@1 3 | displayName: 'Install Xaml Controls Cert' 4 | inputs: 5 | scriptType: inlineScript 6 | arguments: '-NonInteractive -Verb RunAs' 7 | inlineScript: | 8 | $file = ( Get-ChildItem -Path $(Build.ArtifactStagingDirectory)\XamlControlsGallery_$(PackageManifest)_Test\XamlControlsGallery_$(PackageManifest)_x86.cer ) 9 | $file | Import-Certificate -CertStoreLocation cert:\LocalMachine\Root 10 | 11 | - task: PowerShell@1 12 | displayName: 'Install XAML Appx Packages' 13 | inputs: 14 | scriptName: '$(Build.ArtifactStagingDirectory)\XamlControlsGallery_$(PackageManifest)_Test\Add-AppDevPackage.ps1' 15 | arguments: '-NonInteractive -Force:$true -Verb RunAs' -------------------------------------------------------------------------------- /Samples/JavaScript/.gitignore: -------------------------------------------------------------------------------- 1 | */node_modules 2 | # Reports section 3 | packages/webdriverio/reports 4 | .vscode 5 | node_modules 6 | -------------------------------------------------------------------------------- /Samples/JavaScript/lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": [ 3 | "packages/*" 4 | ], 5 | "version": "0.0.0" 6 | } 7 | -------------------------------------------------------------------------------- /Samples/JavaScript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "winappdriver-js-webdriver-example-repo", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | }, 7 | "repository": { 8 | "type": "git", 9 | "url": "git@github.com:Microsoft/WinAppDriver.git" 10 | }, 11 | "license": "MIT", 12 | "workspaces": { 13 | "packages": [ 14 | "packages/*" 15 | ] 16 | }, 17 | "devDependencies": { 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/Pages/BasicInputPage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { PageObject, By2 } from "selenium-appium"; 7 | 8 | class BasicInputPage extends PageObject { 9 | isPageLoaded() { 10 | return this.checkBoxButton.isDisplayed(); 11 | } 12 | 13 | private get checkBoxButton() { return By2.nativeName('CheckBox'); } 14 | private get buttonButton() { return By2.nativeName('Button'); } 15 | 16 | gotoButtonPage() { 17 | return this.buttonButton.click(); 18 | } 19 | 20 | gotoCheckboxPage() { 21 | return this.checkBoxButton.click(); 22 | } 23 | } 24 | 25 | export default new BasicInputPage(); -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/Pages/ButtonPage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { PageObject, By2 } from "selenium-appium"; 7 | 8 | class ButtonPage extends PageObject { 9 | isPageLoaded() { 10 | return this.button1Button.isDisplayed(); 11 | } 12 | 13 | private get button1Button() { return By2.nativeAccessibilityId('Button1'); } 14 | private get control1Ooutput() { return By2.nativeAccessibilityId('Control1Output');} 15 | 16 | clickButton1() { 17 | return this.button1Button.click(); 18 | } 19 | 20 | getControl1Output() { 21 | return this.control1Ooutput.getText(); 22 | } 23 | } 24 | 25 | export default new ButtonPage(); -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/Pages/CheckBoxPage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { PageObject, By2 } from "selenium-appium"; 7 | 8 | class CheckBoxPage extends PageObject { 9 | isPageLoaded() { 10 | return this.checkbox1Button.isDisplayed(); 11 | } 12 | 13 | private get checkbox1Button() { return By2.nativeName('Two-state CheckBox'); } 14 | private get control1Ooutput() { return By2.nativeAccessibilityId('Control1Output');} 15 | 16 | clickCheckbox1() { 17 | return this.checkbox1Button.click(); 18 | } 19 | 20 | getControl1Output() { 21 | return this.control1Ooutput.getText(); 22 | } 23 | } 24 | 25 | export default new CheckBoxPage(); -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/Pages/HomePage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { PageObject, By2 } from "selenium-appium"; 7 | 8 | class HomePage extends PageObject { 9 | isPageLoaded() { 10 | return this.basicInputButton.isDisplayed(); 11 | } 12 | private get basicInputButton() { return By2.nativeName('Basic Input'); } 13 | 14 | gotoBasicInputPage() { 15 | return this.basicInputButton.click(); 16 | } 17 | } 18 | 19 | export default new HomePage(); -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/README.md: -------------------------------------------------------------------------------- 1 | ## Example with selenium-webdriver 2 | Make sure [Dependencies](../../README.md) 3 | 4 | 1. goto selenium-webdriver project 5 | 2. start appium 6 | 7 | `yarn run appium` or `npm run appium` 8 | 9 | expect output 10 | ``` 11 | [Appium] Welcome to Appium v1.14.1 12 | [Appium] Appium REST http interface listener started on 0.0.0.0:4723 13 | ``` 14 | 15 | 3. run jest test 16 | 17 | `yarn run jest` or `npm run jest` 18 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/__tests__/samples.test.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { driver, By2, windowsAppDriverCapabilities } from 'selenium-appium' 7 | import HomePage from '../Pages/HomePage'; 8 | import BasicInputPage from '../Pages/BasicInputPage'; 9 | import ButtonPage from '../Pages/ButtonPage'; 10 | import CheckBoxPage from '../Pages/CheckBoxPage'; 11 | 12 | jest.setTimeout(50000); 13 | 14 | const appId = 'Microsoft.XAMLControlsGallery_8wekyb3d8bbwe!App' 15 | const capabilites = windowsAppDriverCapabilities(appId) 16 | 17 | beforeAll(() => { 18 | return driver.startWithCapabilities(capabilites); 19 | }); 20 | 21 | afterAll(() => { 22 | return driver.quit(); 23 | }); 24 | 25 | describe('Samples', () => { 26 | beforeEach(async ()=> { 27 | await HomePage.gotoBasicInputPage(); 28 | await BasicInputPage.waitForPageLoaded(); 29 | }) 30 | 31 | test('ButtonPage', async () => { 32 | await BasicInputPage.gotoButtonPage(); 33 | await ButtonPage.waitForPageLoaded(); 34 | 35 | await ButtonPage.clickButton1(); 36 | expect(await ButtonPage.getControl1Output()).toBe('You clicked: Button1'); 37 | }); 38 | 39 | test('checkboxPage', async () => { 40 | 41 | await BasicInputPage.gotoCheckboxPage(); 42 | await CheckBoxPage.waitForPageLoaded(); 43 | 44 | await CheckBoxPage.clickCheckbox1(); 45 | expect(await CheckBoxPage.getControl1Output()).toBe('You checked the box.'); 46 | }); 47 | }); -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | [ 4 | '@babel/preset-env', 5 | { 6 | targets: { 7 | node: 'current', 8 | }, 9 | }, 10 | ], '@babel/preset-typescript', 11 | ], 12 | }; -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Samples/JavaScript/packages/selenium-webdriver/jest.config.js -------------------------------------------------------------------------------- /Samples/JavaScript/packages/selenium-webdriver/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "appium": "appium", 8 | "jest": "jest --maxWorkers=1" 9 | }, 10 | "keywords": [], 11 | "author": "Canhua Li (https://github.com/licanhua)", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "@types/jest": "^24.0.17", 15 | "@babel/core": "^7.5.5", 16 | "@babel/preset-env": "^7.5.5", 17 | "@babel/preset-typescript": "^7.3.3", 18 | "@types/selenium-webdriver": "^4.0.1", 19 | "babel-jest": "^24.8.0", 20 | "jest": "^24.8.0", 21 | "selenium-appium": "^0.0.15", 22 | "selenium-webdriver": "^4.0.0-alpha.4", 23 | "typescript": "^3.5.3", 24 | "appium": "1.15.0", 25 | "jest-junit-reporter": "1.1.0" 26 | }, 27 | "jest": { 28 | "testResultsProcessor": "./node_modules/jest-junit-reporter" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "printWidth": 80, 4 | "tabWidth": 2, 5 | "singleQuote": true, 6 | "trailingComma": "es5" 7 | } -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/README.md: -------------------------------------------------------------------------------- 1 | ## Example with webdriverio 2 | Make sure [Dependencies](../../README.md) 3 | 4 | ### By launching WinAppDriver automatically 5 | 1. Launch the test 6 | ``` 7 | yarn run testappium 8 | ``` 9 | 10 | ### By launching WinAppDriver manually 11 | 1. Start WinAppDriver and listen on 4723/wd/hub 12 | ``` 13 | cd C:\Program Files (x86)\Windows Application Driver 14 | c: 15 | WinAppDriver.exe 127.0.0.1 4723/wd/hub 16 | ``` 17 | And the output is like this: 18 | ``` 19 | Windows Application Driver listening for requests at: http://127.0.0.1:4723/wd/hub 20 | Press ENTER to exit. 21 | ``` 22 | 23 | or 24 | ``` 25 | yarn run appium 26 | ``` 27 | 2. Launch the test 28 | ``` 29 | yarn run test 30 | ``` -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "e2e", 3 | "version": "1.0.0", 4 | "description": "e2e test", 5 | "main": "index", 6 | "scripts": { 7 | "prettier": "prettier --write --loglevel warn \"**/**/*.ts\"", 8 | "testappium": "rimraf reports/* && npm run prettier && wdio", 9 | "test": "rimraf reports/* && npm run prettier && wdio wdio.conf.winappdriver.js", 10 | "appium": "appium" 11 | }, 12 | "devDependencies": { 13 | "@wdio/appium-service": "^5.12.1", 14 | "@types/jasmine": "^3.4.1", 15 | "@types/node": "^12.7.5", 16 | "@wdio/cli": "^5.10.1", 17 | "@wdio/local-runner": "^5.10.1", 18 | "@wdio/jasmine-framework": "^5.12.1", 19 | "@wdio/junit-reporter": "^5.12.1", 20 | "@wdio/sync": "^5.10.1", 21 | "@wdio/dot-reporter": "5.13.2", 22 | "webdriver": "git+https://github.com/react-native-windows/webdriver.git", 23 | "webdriverio": "^5.13.1", 24 | "prettier": "^1.18.2", 25 | "ts-node": "^8.4.1", 26 | "tsconfig-paths": "^3.8.0", 27 | "typescript": "^3.5.1", 28 | "appium": "1.15.0", 29 | "rimraf": "3.0.0" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/pages/BasePage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | export class BasePage { 7 | isPageLoaded(): boolean { 8 | return false; 9 | } 10 | 11 | waitForPageLoaded(timeout?: number) { 12 | browser.waitUntil( 13 | () => { 14 | return this.isPageLoaded(); 15 | }, 16 | this.timeoutForPageLoaded(timeout), 17 | 'Wait for page ' + this.constructor.name + ' timeout' 18 | ); 19 | } 20 | 21 | protected timeoutForPageLoaded(currentTimeout?: number) { 22 | if (currentTimeout) return currentTimeout; 23 | return this.waitforPageTimeout; 24 | } 25 | 26 | // Default timeout for waitForPageLoaded command in PageObject 27 | private waitforPageTimeout: number = 10000; 28 | } 29 | 30 | export class By2 { 31 | static nativeAccessibilityId(testId: string): WebdriverIO.Element { 32 | return $('~' + testId); 33 | } 34 | 35 | static nativeName(name: string): WebdriverIO.Element { 36 | return $("[name='" + name + "']"); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/pages/BasicInputPage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { BasePage, By2 } from './BasePage'; 7 | 8 | class BasicInputPage extends BasePage { 9 | isPageLoaded() { 10 | return this.checkBoxButton.isDisplayed(); 11 | } 12 | 13 | private get checkBoxButton() { 14 | return By2.nativeName('CheckBox'); 15 | } 16 | private get buttonButton() { 17 | return By2.nativeName('Button'); 18 | } 19 | 20 | gotoButtonPage() { 21 | return this.buttonButton.click(); 22 | } 23 | 24 | gotoCheckboxPage() { 25 | return this.checkBoxButton.click(); 26 | } 27 | } 28 | 29 | export default new BasicInputPage(); 30 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/pages/ButtonPage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { BasePage, By2 } from './BasePage'; 7 | 8 | class ButtonPage extends BasePage { 9 | isPageLoaded() { 10 | return this.button1Button.isDisplayed(); 11 | } 12 | 13 | private get button1Button() { 14 | return By2.nativeAccessibilityId('Button1'); 15 | } 16 | private get control1Ooutput() { 17 | return By2.nativeAccessibilityId('Control1Output'); 18 | } 19 | 20 | clickButton1() { 21 | return this.button1Button.click(); 22 | } 23 | 24 | getControl1Output() { 25 | return this.control1Ooutput.getText(); 26 | } 27 | } 28 | 29 | export default new ButtonPage(); 30 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/pages/CheckBoxPage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { BasePage, By2 } from './BasePage'; 7 | 8 | class CheckBoxPage extends BasePage { 9 | isPageLoaded() { 10 | return this.checkbox1Button.isDisplayed(); 11 | } 12 | 13 | private get checkbox1Button() { 14 | return By2.nativeName('Two-state CheckBox'); 15 | } 16 | private get control1Ooutput() { 17 | return By2.nativeAccessibilityId('Control1Output'); 18 | } 19 | 20 | clickCheckbox1() { 21 | return this.checkbox1Button.click(); 22 | } 23 | 24 | getControl1Output() { 25 | return this.control1Ooutput.getText(); 26 | } 27 | } 28 | 29 | export default new CheckBoxPage(); 30 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/pages/HomePage.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import { BasePage, By2 } from './BasePage'; 7 | 8 | class HomePage extends BasePage { 9 | isPageLoaded() { 10 | return this.basicInputButton.isDisplayed(); 11 | } 12 | 13 | private get basicInputButton() { 14 | return By2.nativeName('Basic Input'); 15 | } 16 | 17 | gotoBasicInputPage() { 18 | return this.basicInputButton.click(); 19 | } 20 | } 21 | export default new HomePage(); 22 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/test/samples.spec.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. 4 | */ 5 | 6 | import assert from 'assert'; 7 | import HomePage from '../pages/HomePage'; 8 | import BasicInputPage from '../pages/BasicInputPage'; 9 | import ButtonPage from '../pages/ButtonPage'; 10 | import CheckBoxPage from '../pages/CheckBoxPage'; 11 | 12 | describe('Samples', () => { 13 | beforeEach(() => { 14 | HomePage.gotoBasicInputPage(); 15 | BasicInputPage.waitForPageLoaded(); 16 | }); 17 | 18 | it('ButtonPage', () => { 19 | BasicInputPage.gotoButtonPage(); 20 | ButtonPage.waitForPageLoaded(); 21 | 22 | ButtonPage.clickButton1(); 23 | assert.equal(ButtonPage.getControl1Output(), 'You clicked: Button1'); 24 | }); 25 | 26 | it('checkboxPage', () => { 27 | BasicInputPage.gotoCheckboxPage(); 28 | CheckBoxPage.waitForPageLoaded(); 29 | 30 | CheckBoxPage.clickCheckbox1(); 31 | assert.equal(CheckBoxPage.getControl1Output(), 'You checked the box.'); 32 | }); 33 | }); 34 | -------------------------------------------------------------------------------- /Samples/JavaScript/packages/webdriverio/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "target": "es6", 5 | "module": "commonjs", 6 | "jsx": "react", 7 | "outDir": "dist", 8 | "declaration": true, 9 | "sourceMap": true, 10 | "noEmitOnError": true, 11 | "skipLibCheck": true, 12 | "moduleResolution": "node", 13 | "noEmit": true, 14 | "noUnusedLocals": true, 15 | "strict": true, 16 | "rootDir": ".", 17 | "esModuleInterop": true, 18 | "types": [ 19 | "@wdio/sync", 20 | "@wdio/jasmine-framework", 21 | "@types/jasmine", 22 | "node" 23 | ] 24 | }, 25 | "include": [ 26 | "pages", 27 | "test" 28 | ], 29 | "exclude": [ 30 | "node_modules" 31 | ] 32 | } -------------------------------------------------------------------------------- /Samples/Python/README.md: -------------------------------------------------------------------------------- 1 | # CalculatorTest 2 | 3 | CalculatorTest is a sample test project that runs and validates basic UI scenarios on Windows 10 built-in **Calculator** application. This sample is created as the most basic test project to quickly try out Windows Application Driver. 4 | 5 | This test project highlights the following basic interactions to demonstrate how you can write UI tests in Python which run with Windows Application Driver. 6 | - Creating a modern UWP app session 7 | - Finding element using name 8 | - Finding element using accessibility id 9 | - Sending click action to an element 10 | - Retrieving element value 11 | 12 | ## Requirements 13 | 14 | - Windows 10 PC with the latest Windows 10 version (Version 1607 or later) 15 | - Python v2.7 or higher 16 | - Use Python package manager (PIP) to install the following dependencies 17 | - Appium-Python-Client (tested version 0.24) 18 | - selenium (tested version 3.5.0) 19 | - setuptools (tested version 28.8.0) 20 | - Recommend an IDE for editing/debuggin a Python project such as Visual Studio Code 21 | 22 | ## Getting Started 23 | 24 | 1. Open a Command Prompt and run WinAppDriver.exe (in C:\Program Files (86)\Windows Application Driver) 25 | 1. Open another Command Prompt and browse to this Sample directory 26 | 2. type **python calculatortest.py** 27 | 28 | ## Adding/Updating Test Scenario 29 | 30 | Please follow the guidelines below to maintain test reliability and conciseness: 31 | 1. Test all changes against all supported version of Windows 10 built-in **Calculator** app 32 | 2. Maintain simplicity and only add tests that provide additional value to the sample 33 | -------------------------------------------------------------------------------- /Samples/Ruby/features/support/env.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Samples/Ruby/features/support/env.rb -------------------------------------------------------------------------------- /Samples/Ruby/features/support/hooks.rb: -------------------------------------------------------------------------------- 1 | Before do |scenario| 2 | # The +scenario+ argument is optional, but if you use it, you can get the title, 3 | # description, or name (title + description) of the scenario that is about to be 4 | # executed. 5 | name = "#{scenario.name}" 6 | end 7 | 8 | After do |scenario| 9 | # Do something after each scenario. 10 | # The +scenario+ argument is optional, but 11 | # if you use it, you can inspect status with 12 | # the #failed?, #passed? and #exception methods. 13 | $CalculatorSession.quit 14 | 15 | if scenario.failed? 16 | reason = "#{scenario.exception.message}" 17 | print reason 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /Samples/custom.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Samples\$(MSBuildProjectName) 5 | 6 | -------------------------------------------------------------------------------- /Tests/AbsoluteXPath/AbsoluteXPath.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.329 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AbsoluteXPath", "AbsoluteXPath.csproj", "{971BE3D2-1EFF-4660-A8A8-C1A52966572C}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {971BE3D2-1EFF-4660-A8A8-C1A52966572C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {971BE3D2-1EFF-4660-A8A8-C1A52966572C}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {971BE3D2-1EFF-4660-A8A8-C1A52966572C}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {971BE3D2-1EFF-4660-A8A8-C1A52966572C}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {4E2EBE62-05BC-42C6-8002-CB40A0D39472} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Tests/AbsoluteXPath/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | [assembly: AssemblyTitle("AbsoluteXPath")] 6 | [assembly: AssemblyDescription("")] 7 | [assembly: AssemblyConfiguration("")] 8 | [assembly: AssemblyCompany("")] 9 | [assembly: AssemblyProduct("AbsoluteXPath")] 10 | [assembly: AssemblyCopyright("Copyright © 2019")] 11 | [assembly: AssemblyTrademark("")] 12 | [assembly: AssemblyCulture("")] 13 | 14 | [assembly: ComVisible(false)] 15 | 16 | [assembly: Guid("971be3d2-1eff-4660-a8a8-c1a52966572c")] 17 | 18 | // [assembly: AssemblyVersion("1.0.*")] 19 | [assembly: AssemblyVersion("1.0.0.0")] 20 | [assembly: AssemblyFileVersion("1.0.0.0")] 21 | -------------------------------------------------------------------------------- /Tests/AbsoluteXPath/README.md: -------------------------------------------------------------------------------- 1 | # AbsoluteXPath 2 | 3 | AbsoluteXPath is a sample test project that demonstrates how UIRecorder generated xpaths are used to find target elements. You can use this as a template for writing your test project. 4 | 5 | This test project highlights some common interactions below that can be put together to perform and verify various UI scenario on a modern app. 6 | - Sending click action to an element 7 | - Sending keyboard input to a text box 8 | 9 | ## Requirements 10 | 11 | - Windows 10 PC with the latest Windows 10 version (Version 1607 or later) 12 | - Microsoft Visual Studio 2015 or later 13 | 14 | ## Getting Started 15 | 16 | 1. Open `AlarmClockTest.sln` in Visual Studio 17 | 2. Select **Test** > **Windows** > **Test Explorer** 18 | 3. Select **Run All** on the test pane or through menu **Test** > **Run** > **All Tests** 19 | 20 | > Once the project is successfully built, you can use the **TestExplorer** to pick and choose the test scenario(s) to run 21 | 22 | 23 | ## Adding/Updating Test Scenario 24 | 25 | Please follow the guidelines below to maintain test reliability and conciseness: 26 | 1. Group test methods based on the UI view page such as Alarm, Stopwatch, Timer, etc. 27 | 2. Maintain original state after test runs and keep clean state in between tests when possible 28 | 3. Only add tests that provide additional value to the sample 29 | -------------------------------------------------------------------------------- /Tests/AbsoluteXPath/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Tests/Input/Input.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Input", "Input.csproj", "{E0FC5C2C-3C64-4542-A0DB-DC8059948619}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {E0FC5C2C-3C64-4542-A0DB-DC8059948619}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {E0FC5C2C-3C64-4542-A0DB-DC8059948619}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {E0FC5C2C-3C64-4542-A0DB-DC8059948619}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {E0FC5C2C-3C64-4542-A0DB-DC8059948619}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Tests/Input/README.md: -------------------------------------------------------------------------------- 1 | # Input 2 | 3 | Input is a collection of test scenarios that covers various input methods such as swipe and pinch multitouch gesture. 4 | 5 | The test scenarios are written against [Input](../../ApplicationUnderTests/Input) application that logs the input event received by the target element.. This application needs to be installed once in the machine you are running your test. Follow the instruction on the application [README](../../ApplicationUnderTests/Input/README.md). 6 | 7 | 8 | ## Requirements 9 | 10 | - Windows 10 PC with the latest Windows 10 version (Version 1607 or later) 11 | - Microsoft Visual Studio 2015 or later 12 | - [Input](../../ApplicationUnderTests/Input) application 13 | 14 | 15 | ## Getting Started 16 | 17 | 1. Open `Input.sln` in Visual Studio 18 | 2. Select **Test** > **Windows** > **Test Explorer** 19 | 3. Select **Run All** on the test pane or through menu **Test** > **Run** > **All Tests** 20 | 21 | > Once the project is successfully built, you can use the **TestExplorer** to pick and choose the test scenario(s) to run 22 | -------------------------------------------------------------------------------- /Tests/Input/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Tests/Input/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Tests/README.md: -------------------------------------------------------------------------------- 1 | # Windows Application Driver Tests 2 | 3 | The following tests are used to verify Windows Application Driver functionality across JSON Wire Protocol API, basic UI controls, and input interactions. 4 | 5 | | Test | Description | 6 | |----------------------------------- |----------------------------------------------- | 7 | | [WebDriverAPI](./WebDriverAPI/) | Tests all supported JSON Wire Protocol API | 8 | | [UWPControls ](./UWPControls/) | Tests various Universal Windows UI Controls | 9 | | [Input ](./Input/) | Tests various input interactions | 10 | -------------------------------------------------------------------------------- /Tests/UWPControls/UWPControls.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UWPControls", "UWPControls.csproj", "{0DFB274B-8D24-401B-949B-51493EE6FD12}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {0DFB274B-8D24-401B-949B-51493EE6FD12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {0DFB274B-8D24-401B-949B-51493EE6FD12}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {0DFB274B-8D24-401B-949B-51493EE6FD12}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {0DFB274B-8D24-401B-949B-51493EE6FD12}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Tests/UWPControls/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Tests/WebDriverAPI/Location.cs: -------------------------------------------------------------------------------- 1 | //****************************************************************************** 2 | // 3 | // Copyright (c) 2016 Microsoft Corporation. All rights reserved. 4 | // 5 | // This code is licensed under the MIT License (MIT). 6 | // 7 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 10 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 11 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 12 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 13 | // THE SOFTWARE. 14 | // 15 | //****************************************************************************** 16 | 17 | using Microsoft.VisualStudio.TestTools.UnitTesting; 18 | 19 | namespace WebDriverAPI 20 | { 21 | [TestClass] 22 | public class Location : AlarmClockBase 23 | { 24 | [ClassInitialize] 25 | public static void ClassInitialize(TestContext context) 26 | { 27 | Setup(context); 28 | } 29 | 30 | [ClassCleanup] 31 | public static void ClassCleanup() 32 | { 33 | TearDown(); 34 | } 35 | 36 | [TestMethod] 37 | public void GetLocation() 38 | { 39 | OpenQA.Selenium.Appium.Location geoLocation = session.Location; 40 | Assert.IsNotNull(geoLocation.Altitude); 41 | Assert.IsNotNull(geoLocation.Latitude); 42 | Assert.IsNotNull(geoLocation.Longitude); 43 | Assert.IsTrue(System.Math.Abs(geoLocation.Latitude) <= 90); 44 | Assert.IsTrue(System.Math.Abs(geoLocation.Longitude) <= 180); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Tests/WebDriverAPI/WebDriverAPI.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebDriverAPI", "WebDriverAPI.csproj", "{81529391-98A1-478C-98A2-E59A2E826796}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {81529391-98A1-478C-98A2-E59A2E826796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {81529391-98A1-478C-98A2-E59A2E826796}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {81529391-98A1-478C-98A2-E59A2E826796}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {81529391-98A1-478C-98A2-E59A2E826796}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /Tests/WebDriverAPI/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Tests/custom.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Tests\$(MSBuildProjectName) 5 | 6 | -------------------------------------------------------------------------------- /Tools/UIRecorder/README.md: -------------------------------------------------------------------------------- 1 | # WinAppDriver UI Recorder Tool 2 | 3 | This tool allows UI element inspection and generates an XPath query to the element. More information can be found on the [wiki](https://github.com/Microsoft/WinAppDriver/wiki/WinAppDriver-UI-Recorder). 4 | 5 | 6 | ## Requirements 7 | 8 | - Windows 10 PC with the latest Windows 10 version (Version 1607 or later) 9 | - Microsoft Visual Studio 2017 or later 10 | 11 | 12 | ## Getting Started 13 | 14 | 1. Open `WinAppDriverUIRecorder.sln` in Visual Studio 15 | 2. Select **Debug** > **Start Debugging** or simply **Run** 16 | -------------------------------------------------------------------------------- /Tools/UIRecorder/SignConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorder/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorder/App.xaml: -------------------------------------------------------------------------------- 1 |  12 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorder/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WinAppDriverUIRecorder.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorder/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorder/Resource/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Tools/UIRecorder/UIRecorder/Resource/copy.png -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorder/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorderTemplate/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorderTemplate/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("UIXPathLib")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("UIXPathLib")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("4cce44fd-c27a-4cea-a703-3775964ae1d4")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIRecorderTemplate/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Tools/UIRecorder/UIXPathLib/UiXPathLib.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Tools/UIRecorder/UIXPathLib/UiXPathLib.cpp -------------------------------------------------------------------------------- /Tools/UIRecorder/UIXPathLib/UiXPathLib.def: -------------------------------------------------------------------------------- 1 | LIBRARY 2 | EXPORTS 3 | SetWindowsHookExNative PRIVATE 4 | UninitializeHook PRIVATE 5 | InitUiTreeWalk PRIVATE 6 | UnInitUiTreeWalk PRIVATE 7 | GetUiXPath PRIVATE 8 | HighlightCachedUI PRIVATE -------------------------------------------------------------------------------- /Tools/UIRecorder/UIXPathLib/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Tools/UIRecorder/UIXPathLib/dllmain.cpp -------------------------------------------------------------------------------- /Tools/UIRecorder/UIXPathLib/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Tools/UIRecorder/UIXPathLib/stdafx.cpp -------------------------------------------------------------------------------- /Tools/UIRecorder/UIXPathLib/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Tools/UIRecorder/UIXPathLib/stdafx.h -------------------------------------------------------------------------------- /Tools/UIRecorder/UIXPathLib/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/Tools/UIRecorder/UIXPathLib/targetver.h -------------------------------------------------------------------------------- /Tools/UIRecorder/custom.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1 6 | 0 7 | WinAppDriver 8 | 9 | -------------------------------------------------------------------------------- /WinAppDriver.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/WinAppDriver/09e3f7111eb2fae2b4eff0ab058cc7a5dbc14d02/WinAppDriver.pfx --------------------------------------------------------------------------------