From ac820eac4727501b868c83222f7522c61f384000 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Tue, 7 Jan 2025 15:29:58 +0200 Subject: [PATCH 01/65] Add docs-builder configuration file Add the docs builder configuration file and setup the navigation tree --- docs/docs-builder.yml | 473 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 473 insertions(+) create mode 100644 docs/docs-builder.yml diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml new file mode 100644 index 00000000..d7c7b8f7 --- /dev/null +++ b/docs/docs-builder.yml @@ -0,0 +1,473 @@ +top-navigation-product: test-studio +path-prefix: /teststudio +product-id: 846 +product-name: Progress Test Studio +product-url: https://www.telerik.com/teststudio +search-engine-id: 8ac1ab64606d234f1 +cta-overview: "@ProductLinkis a UI test automation platform that helps QA and Engineering teams build stable and easily maintainable automated tests. Sign up for a free 30-day trial!" +cta-intro: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" +default-title-prefix: Telerik Test Studio +avatar-path: ./images/avatar-ninja.svg +no-results-image-path: ./images/ninja-no-results.svg +primary-color: "#27A306" + +product-code: TESTSTUDIO +product-trial-url: https://www.telerik.com/try/test-studio-ultimate +contribute-url: https://github.com/telerik/teststudio-docs/edit/master/docs +enable-tabbed-code-blocks: true +#pdf-cover-png-path: ./images/pdf-cover.png +img-max-width: 100% +table-layout: fixed + + +meta: +## Test Studio Documentation Main Nodes: + prerequisites: + title: "Installation and Setup" + position: 3 + getting-started: + title: "Getting Started" + position: 4 + automated-tests: + title: "Automated Tests with Test Studio" + position: 5 + features: + title: "Features" + position: 6 + advanced-topics: + title: "Advanced Topics" + position: 7 + knowledge-base: + title: "Knowledge Base" + position: 8 + troubleshooting-guide: + title: "Troubleshooting Guide" + position: 9 + testing-framework: + title: "Testing Framework" + position: 10 + security: + title: "Security" + position: 11 + copyright: + title: "Product Documentation Copyright Notice" + position: 14 + faq: + title: "FAQ" + position: 15 + archived-docs: + title: "Archived Docs" + position: 16 + hidden: true + license-server: + title: "License Server" + position: 17 + hidden: true + api: + title: "API Reference" + position: 30 + +# Installation and Setup + prerequisites/installation: + title: "Install Test Studio" + position: 1 + prerequisites/license-activation: + title: "Activate Test Studio License" + position: 2 + prerequisites/configure-your-browser: + title: "Configure Browsers for Test Automation" + position: 3 + +# Getting Started + getting-started/first-project: + title: "Launch Test Studio" + position: 1 + getting-started/first-test: + title: "Record Tests in Test Studio" + position: 2 + getting-started/first-execution: + title: "Execute Your First Test" + position: 3 + getting-started/analyze-the-results: + title: "Review the Results and Debug Test Failures" + position: 4 + getting-started/next-steps: + title: "Next Steps" + position: 5 + + +# Automated Tests with Test Studio + automated-tests/customize-project: + title: "Customize Your Project" + position: 1 +# ... Customize Your Project + automated-tests/customize-project/built-in-help-tools: + title: "Help Tools in Test Studio" + position: 10 + + automated-tests/recording: + title: "Record Tests in Test Studio" + position: 2 + automated-tests/test-execution: + title: "Execute Tests in Test Studio" + position: 3 + automated-tests/test-results: + title: "Explore Test Results" + position: 4 + automated-tests/troubleshooting: + title: "Troubleshoot a Failing Test" + position: 5 + automated-tests/elements: + title: "Elements in Test Studio" + position: 6 + automated-tests/data-drive-test: + title: "Data Driven Automated Tests" + position: 7 + automated-tests/test-lists: + title: "Test Lists in Test Studio" + position: 8 + automated-tests/test-list-results: + title: "Results from Test List Runs" + position: 9 + automated-tests/scheduling: + title: "Schedule Tests in Test Studio" + position: 10 +# ... Scheduling Test Runs + automated-tests/scheduling/multiple-machines-scheduling-setup: + title: "Remote Scheduled Execution (Multiple Machines Setup)" + position: 4 + automated-tests/scheduling/advanced-topics: + title: "Scheduling Setup Advanced Topics" + position: 20 + + automated-tests/scheduling-results: + title: "Results from Scheduled Test Executions" + position: 11 +# ... Scheduling Test Runs + automated-tests/scheduling-results/dashboard: + title: "Executive Dashboard" + position: 5 + + automated-tests/headless: + title: "Headless Test Executions" + position: 12 + automated-tests/responsive: + title: "Web Responsive Tests in Test Studio" + position: 13 + automated-tests/desktop-testing: + title: "Desktop Tests in Test Studio" + position: 14 + automated-tests/wpf: + title: "WPF Tests in Test Studio" + position: 15 + automated-tests/load: + title: "Load Tests in Test Studio" + position: 16 +# ... Load Testing + automated-tests/load/designing-load-tests: + title: "Design Your Load Test" + position: 5 + automated-tests/load/running-load-test: + title: "Execute Load Test" + position: 6 + automated-tests/load/load-testing-results: + title: "Load Test Results" + position: 7 + automated-tests/load/advanced-topics: + title: "Advanced Topics for Load Test" + position: 8 + + automated-tests/performance: + title: "Performance Tests in Test Studio" + position: 17 + automated-tests/execute-apitest: + title: "Implement API test as Step" + position: 18 + automated-tests/vs-plugin: + title: "Test Studio Plugin for Visual Studio" + position: 18 + automated-tests/coded-tests: + title: "Coded Tests in Test Studio" + position: 19 + automated-tests/source-control: + title: "Source Control Options in Test Studio" + position: 20 +# ... Source Control + automated-tests/source-control/git: + title: "Git" + position: 2 + automated-tests/source-control/tfs: + title: "TFS" + position: 3 + + automated-tests/continuous-integration: + title: "Test Studio Tests in CI Builds" + position: 21 + +# Features + features/recorder: + title: "Recorder" + position: 1 +# ... Recorder section + features/recorder/highlighting-menu: + title: "Highlighting Menu Options" + position: 2 + features/recorder/advanced-recording-tools: + title: "Advanced Recording Tools" + position: 3 +# ... Highlighting Menu Options section + features/recorder/highlighting-menu/quick-steps: + title: "Quick Steps" + position: 1 +# ... Advanced Recording Tools section + features/recorder/advanced-recording-tools/element-steps: + title: "Element Steps Tab" + position: 2 +# ... Element Steps Tab section + features/recorder/advanced-recording-tools/element-steps/actions: + title: "Advanced Actions" + position: 2 + features/recorder/advanced-recording-tools/element-steps/verifications: + title: " Advanced Verifications" + position: 3 + + features/elements-explorer: + title: "Elements" + position: 2 + features/test-lists: + title: "Test Lists" + position: 3 + features/data-driven-testing: + title: "Data Driven Testing" + position: 4 + features/custom-steps: + title: "Step Builder Pane" + position: 5 +# ... Step Builder section + features/custom-steps/all-tests-common: + title: "All Tests Common Steps" + position: 1 + features/custom-steps/web-test-common: + title: "Web Test Specific Steps" + position: 2 + features/custom-steps/wpf-common: + title: "WPF Test Specific Steps" + position: 3 + features/custom-steps/desktop-common: + title: "Desktop Test Specific Steps" + position: 4 + + features/dialogs-and-popups: + title: "Handle Dialogs & Popups Steps" + position: 6 + features/logical-steps: + title: "Logical/Conditional Steps" + position: 7 + features/random-gens-steps: + title: "Random Generators Steps" + position: 8 + features/test-maintenance: + title: "Test Maintenance" + position: 9 + features/project-settings: + title: "Project Settings" + position: 10 + features/project-explorer: + title: "Project Explorer" + position: 11 + features/integration: + title: "Integration" + position: 12 +# ... Integration section + features/integration/bug-tracking: + title: "Bug Tracking" + position: 1 + features/integration/quality-center: + title: "Quality Center" + position: 2 + + features/test-runners: + title: "Test Runners" + position: 13 + features/testing-types: + title: "Testing Types" + position: 14 +# ... Testing Types section + features/testing-types/manual-testing: + title: "Manual Testing" + position: 1 + features/testing-types/exploratory-testing: + title: "Exploratory Testing" + position: 2 + + features/azure-dev-ops-mapper: + title: "Azure DevOps Mapper" + position: 15 + +# Advanced Topics + advanced-topics/build-server: + title: "Build Server" + position: 1 + advanced-topics/coded-samples: + title: "Coded Samples" + position: 2 + +# ... Coded Samples section + advanced-topics/coded-samples/general: + title: "General" + position: 1 + advanced-topics/coded-samples/html: + title: "HTML" + position: 2 + advanced-topics/coded-samples/silverlight: + title: "Silverlight" + position: 3 + advanced-topics/coded-samples/wpf: + title: "WPF" + position: 4 + +# ... Silverlight section + advanced-topics/coded-samples/silverlight/combobox-automation: + title: "ComboBox Automation" + position: 10 + advanced-topics/coded-samples/silverlight/radgridview-automation: + title: "RadGridView Automation" + position: 11 + +# Knowledge Base section + knowledge-base/best-practices-kb: + title: "Best Practices" + position: 3 + knowledge-base/browsers-kb: + title: "Browsers" + position: 4 + knowledge-base/data-driven-testing-kb: + title: "Data Driven Testing" + position: 5 + knowledge-base/dialogs-and-popups-kb: + title: "Dialogs and Popups" + position: 6 + knowledge-base/load-testing-kb: + title: "Load Testing" + position: 7 + knowledge-base/product-notices-kb: + title: "Product Notices" + position: 8 + knowledge-base/project-configuration-kb: + title: "Project Configuration" + position: 9 + knowledge-base/scheduling-kb: + title: "Scheduling" + position: 10 + knowledge-base/test-automation-kb: + title: "Test Automation" + position: 11 + knowledge-base/test-execution-kb: + title: "Test Execution" + position: 12 + knowledge-base/test-recording-kb: + title: "Test Recording" + position: 13 + knowledge-base/verification-kb: + title: "Verification" + position: 14 + knowledge-base/visual-studio-kb: + title: "Visual Studio" + position: 15 + +# Troubleshooting Guide section + troubleshooting-guide/browser-inconsistencies-tg: + title: "Browser Inconsistencies" + position: 1 + troubleshooting-guide/cannot-launch-test-studio-tg: + title: "Cannot Launch Test Studio" + position: 2 + troubleshooting-guide/installation-problems-tg: + title: "Installation Problems" + position: 3 + troubleshooting-guide/load-testing-problems-tg: + title: "Load Testing Problems" + position: 4 + troubleshooting-guide/network-related-problems-tg: + title: "Network Related Problems" + position: 5 + troubleshooting-guide/recording-problems-tg: + title: "Recording Problems" + position: 6 + troubleshooting-guide/scheduling-issues-tg: + title: "Scheduling Issues" + position: 7 + troubleshooting-guide/source-control-problems-tg: + title: "Source Control Problems" + position: 8 + troubleshooting-guide/test-execution-problems-tg: + title: "Test Execution Problems" + position: 9 + troubleshooting-guide/visual-studio-tg: + title: "Visaul Studio" + position: 10 + +# ... Test Execution Problems section + troubleshooting-guide/test-execution-problems-tg/chrome-tg: + title: "Chrome" + position: 1 + troubleshooting-guide/test-execution-problems-tg/firefox-tg: + title: "Firefox" + position: 2 + troubleshooting-guide/test-execution-problems-tg/safari-tg: + title: "Safari" + position: 3 + troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg: + title: "Silverlight WPF" + position: 4 + +# Testing Framework section + testing-framework/write-tests-in-code: + title: "Write Tests in Code" + position: 20 + +# ... Write Tests in Code section + testing-framework/write-tests-in-code/intermediate-topics-wtc: + title: "Intermediate Topics" + position: 1 + testing-framework/write-tests-in-code/advanced-topics-wtc: + title: "Advanced Topics" + position: 2 + testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc: + title: "Silverlight/WPF Automation" + position: 3 + +# ... Intermediate Topics section + testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc: + title: "Element Identification" + position: 20 + testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc: + title: "HTML Control Suite" + position: 21 + testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc: + title: "Settings & Configuration" + position: 22 + +# ... Advanced Topics section + testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc: + title: "Javascript" + position: 20 + testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc: + title: "Test Regions" + position: 21 + testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc: + title: "WPF/HTML Dialogs and Popups" + position: 22 + + + api/*: + res_type: api + +redirects: +- + from: "^/?$" + to: "/welcome" + type: Permanent +- + from: "^/?$" + to: "/welcome" \ No newline at end of file From 04aaa65aab8c8cc05198e9aa4b3e63ce8feba9cf Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Tue, 7 Jan 2025 15:32:37 +0200 Subject: [PATCH 02/65] Delete unused articles Delete Test Studio Mobile, Archived Docs and Silverlight KBs --- .../elements/find-element-archive.md | 163 -- .../generate-application-log-archive.md | 79 - .../recorder/recorder-overview-archive.md | 129 -- .../recorder/recording-toolbar-archive.md | 90 - .../silverlight-out-of-browser-archive.md | 56 - ...rlight-out-of-browser-vs-plugin-archive.md | 65 - .../recorder/step-suggestions-archive.md | 43 - .../results/migrate-database-archive.md | 37 - docs/archived-docs/results/reports-archive.md | 40 - .../visual-studio-2012-and-later-test-list.md | 50 - .../upload-latest-files-archive.md | 22 - .../using-the-application-log.md | 43 - .../using-the-dom-on-failure.md | 39 - .../using-the-execution-log.md | 54 - .../using-the-visual-debugger.md | 60 - docs/index.md | 80 - .../api-reference/andorid.md | 883 ---------- .../api-reference/creating-queries.md | 261 --- .../api-reference/hybrid.md | 1480 ----------------- docs/test-studio-mobile/api-reference/ios.md | 996 ----------- .../api-reference/overview.md | 30 - docs/test-studio-mobile/api-reference/web.md | 1421 ---------------- .../code-features/base-test-methods.md | 57 - .../code-features/code-behind-file.md | 52 - .../features/code-features/code-item.md | 65 - .../features/code-features/coded-steps.md | 52 - .../features/code-features/compile-project.md | 31 - .../features/dom-explorer.md | 43 - .../features/elements-explorer.md | 51 - .../features/message-server.md | 89 - .../features/mobile-testing-runner-cli.md | 133 -- .../features/output-pane.md | 49 - .../features/project-explorer.md | 68 - .../features/project-settings.md | 46 - .../features/step-builder.md | 44 - .../features/test-explorer.md | 74 - .../getting-started/native-applications.md | 81 - .../getting-started/web-applications.md | 49 - .../knowledge-base/android-system-dialog.md | 47 - .../continuous-integration/ci-android.md | 142 -- .../continuous-integration/ci-ios.md | 104 -- .../jenkins-ci-plugin-mobile.md | 47 - .../configure-your-app/configure-android.md | 262 --- .../configure-appbuilder.md | 86 - .../configure-your-app/configure-hybrid.md | 74 - .../configure-your-app/configure-ios.md | 160 -- .../configure-nativescript.md | 106 -- .../configure-xamarin-android.md | 111 -- .../configure-xamarin-ios.md | 78 - .../connect-agent-app/connect-agent-usb.md | 61 - .../connect-agent-app/connect-agent-wifi.md | 63 - .../installation/agent-app-installation.md | 87 - .../installation/download.md | 71 - .../native-applications/run-demos.md | 84 - docs/test-studio-mobile/overview.md | 107 -- .../test-execution-requirements.md | 75 - .../test-execution/quick-execution.md | 48 - .../test-execution/test-list-execution.md | 61 - .../test-recording/create-test.md | 37 - .../record-test-android-hybrid.md | 41 - .../record-a-test/record-test-android.md | 43 - .../record-a-test/record-test-ios-hybrid.md | 41 - .../record-a-test/record-test-ios.md | 38 - .../record-a-test/record-test-web.md | 45 - .../configure-android-settings.md | 33 - .../troubleshooting/known-issues.md | 65 - .../configuration/certificate.md | 15 - .../configure-teststudio-mobile.md | 38 - .../configuration/connect-agent.md | 27 - .../web-applications/configuration/proxy.md | 93 -- .../web-applications/run-demos.md | 37 - 71 files changed, 9532 deletions(-) delete mode 100644 docs/archived-docs/elements/find-element-archive.md delete mode 100644 docs/archived-docs/generate-application-log-archive.md delete mode 100644 docs/archived-docs/recorder/recorder-overview-archive.md delete mode 100644 docs/archived-docs/recorder/recording-toolbar-archive.md delete mode 100644 docs/archived-docs/recorder/silverlight-out-of-browser-archive.md delete mode 100644 docs/archived-docs/recorder/silverlight-out-of-browser-vs-plugin-archive.md delete mode 100644 docs/archived-docs/recorder/step-suggestions-archive.md delete mode 100644 docs/archived-docs/results/migrate-database-archive.md delete mode 100644 docs/archived-docs/results/reports-archive.md delete mode 100644 docs/archived-docs/results/visual-studio-2012-and-later-test-list.md delete mode 100644 docs/archived-docs/upload-latest-files-archive.md delete mode 100644 docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-application-log.md delete mode 100644 docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-dom-on-failure.md delete mode 100644 docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-execution-log.md delete mode 100644 docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-visual-debugger.md delete mode 100644 docs/index.md delete mode 100644 docs/test-studio-mobile/api-reference/andorid.md delete mode 100644 docs/test-studio-mobile/api-reference/creating-queries.md delete mode 100644 docs/test-studio-mobile/api-reference/hybrid.md delete mode 100644 docs/test-studio-mobile/api-reference/ios.md delete mode 100644 docs/test-studio-mobile/api-reference/overview.md delete mode 100644 docs/test-studio-mobile/api-reference/web.md delete mode 100644 docs/test-studio-mobile/features/code-features/base-test-methods.md delete mode 100644 docs/test-studio-mobile/features/code-features/code-behind-file.md delete mode 100644 docs/test-studio-mobile/features/code-features/code-item.md delete mode 100644 docs/test-studio-mobile/features/code-features/coded-steps.md delete mode 100644 docs/test-studio-mobile/features/code-features/compile-project.md delete mode 100644 docs/test-studio-mobile/features/dom-explorer.md delete mode 100644 docs/test-studio-mobile/features/elements-explorer.md delete mode 100644 docs/test-studio-mobile/features/message-server.md delete mode 100644 docs/test-studio-mobile/features/mobile-testing-runner-cli.md delete mode 100644 docs/test-studio-mobile/features/output-pane.md delete mode 100644 docs/test-studio-mobile/features/project-explorer.md delete mode 100644 docs/test-studio-mobile/features/project-settings.md delete mode 100644 docs/test-studio-mobile/features/step-builder.md delete mode 100644 docs/test-studio-mobile/features/test-explorer.md delete mode 100644 docs/test-studio-mobile/getting-started/native-applications.md delete mode 100644 docs/test-studio-mobile/getting-started/web-applications.md delete mode 100644 docs/test-studio-mobile/knowledge-base/android-system-dialog.md delete mode 100644 docs/test-studio-mobile/knowledge-base/continuous-integration/ci-android.md delete mode 100644 docs/test-studio-mobile/knowledge-base/continuous-integration/ci-ios.md delete mode 100644 docs/test-studio-mobile/knowledge-base/continuous-integration/jenkins-ci-plugin-mobile.md delete mode 100644 docs/test-studio-mobile/native-applications/configure-your-app/configure-android.md delete mode 100644 docs/test-studio-mobile/native-applications/configure-your-app/configure-appbuilder.md delete mode 100644 docs/test-studio-mobile/native-applications/configure-your-app/configure-hybrid.md delete mode 100644 docs/test-studio-mobile/native-applications/configure-your-app/configure-ios.md delete mode 100644 docs/test-studio-mobile/native-applications/configure-your-app/configure-nativescript.md delete mode 100644 docs/test-studio-mobile/native-applications/configure-your-app/configure-xamarin-android.md delete mode 100644 docs/test-studio-mobile/native-applications/configure-your-app/configure-xamarin-ios.md delete mode 100644 docs/test-studio-mobile/native-applications/connect-agent-app/connect-agent-usb.md delete mode 100644 docs/test-studio-mobile/native-applications/connect-agent-app/connect-agent-wifi.md delete mode 100644 docs/test-studio-mobile/native-applications/installation/agent-app-installation.md delete mode 100644 docs/test-studio-mobile/native-applications/installation/download.md delete mode 100644 docs/test-studio-mobile/native-applications/run-demos.md delete mode 100644 docs/test-studio-mobile/overview.md delete mode 100644 docs/test-studio-mobile/test-execution-requirements.md delete mode 100644 docs/test-studio-mobile/test-execution/quick-execution.md delete mode 100644 docs/test-studio-mobile/test-execution/test-list-execution.md delete mode 100644 docs/test-studio-mobile/test-recording/create-test.md delete mode 100644 docs/test-studio-mobile/test-recording/record-a-test/record-test-android-hybrid.md delete mode 100644 docs/test-studio-mobile/test-recording/record-a-test/record-test-android.md delete mode 100644 docs/test-studio-mobile/test-recording/record-a-test/record-test-ios-hybrid.md delete mode 100644 docs/test-studio-mobile/test-recording/record-a-test/record-test-ios.md delete mode 100644 docs/test-studio-mobile/test-recording/record-a-test/record-test-web.md delete mode 100644 docs/test-studio-mobile/troubleshooting/configure-android-settings.md delete mode 100644 docs/test-studio-mobile/troubleshooting/known-issues.md delete mode 100644 docs/test-studio-mobile/web-applications/configuration/certificate.md delete mode 100644 docs/test-studio-mobile/web-applications/configuration/configure-teststudio-mobile.md delete mode 100644 docs/test-studio-mobile/web-applications/configuration/connect-agent.md delete mode 100644 docs/test-studio-mobile/web-applications/configuration/proxy.md delete mode 100644 docs/test-studio-mobile/web-applications/run-demos.md diff --git a/docs/archived-docs/elements/find-element-archive.md b/docs/archived-docs/elements/find-element-archive.md deleted file mode 100644 index 0856bf84..00000000 --- a/docs/archived-docs/elements/find-element-archive.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Modifying Elements Find Expression -page_title: Modifying Elements Find Expression (Archive) -description: "Archived element find expressions and how to change this" -position: 0 ---- -# (Archive) Element's Find Expressions - -> __Note__ ->
->
-> The workflow described below is valid, if editing elements in __Test Studio Dev Edition__ (Visual Studio Plugin). ->
->
-> Read here for editing elements in __Test Studio IDE__. - -In certain scenarios the automatically generated find expression may be ineffective, because locates multiple elements on the active window, or may use dynamically generated attributes, which are unreliable by the next test execution. In such cases you may require adjusting the find expression manually, so that it reflects the specifics of the application under test. - -## Version 2018 R3 and Earlier (Both Standalone Application and Visual Studio Plugin) - -When a web page element has an action recorded against it, or you explicitly add an element to the Elements pane, a **Find Expression** is generated that Test Studio uses to find that specific element on the web page. - -To change how an element is found, right click on the element in the Explorer and select **Edit Element**. - -![Edit Element][1] - -In the VS plugin, click the **Show Element Explorer** icon in the toolbar and locate the Explorer at the bottom of the screen. - -![Edit Element VS][2] - -Select **Edit in Live** to directly open the Find element dialog for the page open in the current recorder. - -![Edit in live][3] - -The **Find Element** splash screen appears. You have three options for how to locate the element: - -![Find Element][4] - -**Find in the Live Version** - find the element using the latest version of a new browser window, an existing test step, or an application that you currently have open. - -- **New Browser** - this will launch a new instance of your application. You may need to manually navigate to the element. Click **Browse & Navigate** to proceed. -- **Existing Test Step** - use an existing step from a test to get to the element. Click **Choose Test Step** to proceed. -- **Current Page** - select where the element is available from a list of currently running browser instances or WPF applications. Click **Go** to proceed. - -![Find Element][5] - -**Find in the Cached Version** - if your test failed, you can find the element using the cached version of the application at the time of failure. Accessible only through the **Resolve Failure** tab in the Step Failure Details. - -**Find Without Connection** - choose this option to find the element without connecting to the application. - -> To skip this splash screen the next time you load the Find Element dialog, check the box at the bottom and click Close. - -The Find Element dialog appears. The Element Name, Element Type, and Connection Status are at the top. - -![Find Element][6] - -The **Change Element** link opens the **Select New Element dialog**. - -![Change Element][7] - -In the Select Html Element dialog, you can open the Find Element dialog for a different element in the Elements Repository. - -![Select HTML Element][8] - -The **Connection Options** button takes you back to the **Find Element** splash screen. - -![Connection Options][9] - -**The Suggestions and DOM** views are on the left side. - -- **Suggestions** - these are the suggested items to help you find the element in the application. Click an item to add it to your **Find Settings**. - -![Suggestions][10] - -- **DOM** - use the DOM as a reference when creating your Find Settings. This view is helpful in determining where your element is located relative to the DOM tree. - -![DOM][11] - -The **Find Settings** view is on the right side. You can edit these settings by typing in new properties, selecting a new modifier in the drop-down menu, or changing the values. Click Validate to confirm whether the element can be found using the current Find Settings. - - - - - - -
![Element Found][12]![Element Not Found][13]
- -## Data-driven find logic - -Here, you can also data drive the element find expression. If your test has an attached data source, the value fields of the find expressions for your elements will include a drop-down list displaying columns from your data source. - -![Data drive find exp][14] - -Selecting a column data binds the column to the value of the find expression rule. - -![Data drive find exp][15] - -If the element was not found, click the **Troubleshoot** button. Choose a suggested fix from the Troubleshoot screen. - -![Troubleshoot][16] - -There are three additional buttons in the upper right of the **Find Element** dialog: - -![Additional Buttons][17] - -- **Select New Element** - choose this option if the incorrect element was selected for this step. This will clear your current settings and Test Studio provides new filters for the new element. - -![Select New Element][18] - -- **Advanced** - edit the Find Settings using a string-based expression builder. - -![Advanced][19] - -- **Reset** - restores fields to their original settings. - -![Reset][20] - -Once you've confirmed you are targeting the correct element and it is correctly found, click Save and Close. If the modified element is used by multiple automation steps, you are prompted to select the steps you want to persist changes to. - -![Test Case Selector][21] - -[1]: /img/features/elements-explorer/find-element/fig1.png -[2]: /img/features/elements-explorer/find-element/fig2.png -[3]: /img/features/elements-explorer/find-element/fig3.png -[4]: /img/features/elements-explorer/find-element/fig4.png -[5]: /img/features/elements-explorer/find-element/fig5.png -[6]: /img/features/elements-explorer/find-element/fig6.png -[7]: /img/features/elements-explorer/find-element/fig7.png -[8]: /img/features/elements-explorer/find-element/fig8.png -[9]: /img/features/elements-explorer/find-element/fig9.png -[10]: /img/features/elements-explorer/find-element/fig10.png -[11]: /img/features/elements-explorer/find-element/fig11.png -[12]: /img/features/elements-explorer/find-element/fig12.png -[13]: /img/features/elements-explorer/find-element/fig13.png -[14]: /img/features/elements-explorer/find-element/fig14.png -[15]: /img/features/elements-explorer/find-element/fig15.png -[16]: /img/features/elements-explorer/find-element/fig16.png -[17]: /img/features/elements-explorer/find-element/fig17.png -[18]: /img/features/elements-explorer/find-element/fig18.png -[19]: /img/features/elements-explorer/find-element/fig19.png -[20]: /img/features/elements-explorer/find-element/fig20.png -[21]: /img/features/elements-explorer/find-element/fig21.png -[101]: /img/features/elements-explorer/find-element/fig101.png -[102]: /img/features/elements-explorer/find-element/fig102.png -[103]: /img/features/elements-explorer/find-element/fig103.png -[104]: /img/features/elements-explorer/find-element/fig104.gif -[105]: /img/features/elements-explorer/find-element/fig105.png -[106]: /img/features/elements-explorer/find-element/fig106.png -[107]: /img/features/elements-explorer/find-element/fig107.png -[108]: /img/features/elements-explorer/find-element/fig108.png -[109]: /img/features/elements-explorer/find-element/fig109.png -[110]: /img/features/elements-explorer/find-element/fig110.png -[111]: /img/features/elements-explorer/find-element/fig111.png -[112]: /img/features/elements-explorer/find-element/fig112.png -[113]: /img/features/elements-explorer/find-element/fig113.png -[114]: /img/features/elements-explorer/find-element/fig114.png -[115]: /img/features/elements-explorer/find-element/fig115.png -[116]: /img/features/elements-explorer/find-element/fig116.png -[117]: /img/features/elements-explorer/find-element/fig117.png -[118]: /img/features/elements-explorer/find-element/fig118.png -[119]: /img/features/elements-explorer/find-element/fig119.png -[120]: /img/features/elements-explorer/find-element/fig120.png -[130]: /img/features/elements-explorer/find-element/fig130.png \ No newline at end of file diff --git a/docs/archived-docs/generate-application-log-archive.md b/docs/archived-docs/generate-application-log-archive.md deleted file mode 100644 index f839524d..00000000 --- a/docs/archived-docs/generate-application-log-archive.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Generate Application Log -page_title: Generate Application Log (Archive) -description: (Archive) Generate application log. -position: 1 ---- -# How to Generate a Test Studio Application Log # - -> __Tip__ ->
->
-> Find here the latest instructions how to generate the application log from the different Test Studio components. - -*I'm experiencing an issue with the Test Studio application (as opposed to an automation challenge). I need to generate an application log file for troubleshooting purposes.* - -Test Studio supports logging. The logs are stored in a plain text file in the **"Logs"** folder in the product's installation folder, by default in **"C:\Program Files (x86)\Progress\Test Studio\Logs"**. This feature is initially turned off and you will need to manually turn it on. Please note that this log monitors "application" events. The log will not be of much value in troubleshooting true automation problems (e.g. the test doesn't press the button in my Login page). - -You might be asked by the Telerik Support team to provide an application log for a particular problem. The best practice here would be to clear the log (if not empty to begin with) and enable it. After this, trigger the problematic behavior and subsequently send the log. - - -## **Standalone version 2016 R2 Version and Earlier** ## - -1.  Click the **Help** tab. - -2.  Click **Enable** in the Logging ribbon. - -![Enable log][1] - -3.  This will turn on logging. After you experience the issue, open the log by clicking the **View Log** button. - -![View log][2] - -## Run-Time edition ## - -### Through Standalone version ### - -1.  Click **Status** in the **Test tab**. - -![Status button][3] - -2.  Double click on the remote machine that you are interested in: - -![Remote machine][4] - -3.  The remote machine log related controls are placed on the right side of the window as shown on the next screenshot. Press on the **Logging** button to enable it. The **View Log** button will open the current log file at the current state. If click on **Clear Log** button - all previous messages will be deleted. - -![View log][9] - -### **Standalone version 2017 R1 Version and Earlier** ### - - Click at Logging tab and enable log in. This will turn on logging. After you experience the issue, open the log by clicking the View Log button. - -![View log][5] - -### Through the registry on the remote machine ### - -If you use only Runtime version you will need to manually edit the **Registry** on the machine. Load Regedit and find the Test Studio folder. The default path is: - -* **Computer\HKEY_CURRENT_USER\Software\Wow6432Node\Telerik\Test Studio** - -![Registyry][6] - -Find (or create) the TraceLogEnabled key in this folder. Double click it and change the Value data to 1. You should also see the TraceLogPath value. This is where the log will be stored. Ensure you include the file name and type: - -* **C:\Temp\TraceLog\log.txt** - -Find out more about using the application log in our troubleshooting guide. - -[1]: /img/knowledge-base/best-practices-kb/generate-application-log/fig1.png -[2]: /img/knowledge-base/best-practices-kb/generate-application-log/fig2.png -[3]: /img/knowledge-base/best-practices-kb/generate-application-log/fig3.png -[4]: /img/knowledge-base/best-practices-kb/generate-application-log/fig4.png -[5]: /img/knowledge-base/best-practices-kb/generate-application-log/fig5.png -[6]: /img/knowledge-base/best-practices-kb/generate-application-log/fig6.png -[7]: /img/knowledge-base/best-practices-kb/generate-application-log/fig7.png -[8]: /img/knowledge-base/best-practices-kb/generate-application-log/fig8.png -[9]: /img/knowledge-base/best-practices-kb/generate-application-log/fig9.png - - diff --git a/docs/archived-docs/recorder/recorder-overview-archive.md b/docs/archived-docs/recorder/recorder-overview-archive.md deleted file mode 100644 index a8fb2b80..00000000 --- a/docs/archived-docs/recorder/recorder-overview-archive.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Overview -page_title: Recording Overview -description: "Archived documentation 2020 R2 and earlier" -position: 0 ---- -# Test Recording # - -> **Note** ->
-> Information about the Recorder in the latest release of Test Studio can be found here. - -There are two ways to initiate recording. You can either launch a new browser instance with the recording toolbar attached, or you can attach the recording toolbar to an existing browser instance (applicable for IE only or WPF application). - -## **From Version 2016 R3 Until Version 2020 R3** ## - -## Launch New Recording Browser ## - -> **Note** ->
-> Once a recording session is started **do not start another instance of the same browser** until the session is finished! - -1.  Double click the newly created test to open it. Click the ***Record*** button in the *Tests* ribbon or press **CTRL+R**. - -
- - - - -
![Test Studio][10]

**Standalone version**
![VS][11]

**VS plugin**
- -2.  In the next dialog type the URL you want to navigate to, select the recording browser and press Enter or the *Record* button. You can choose a URL from your recent URLs. - -> **Note**: Selecting the recording browser will be skipped if you have already set a preferred browser from the Test ribbon. - -![Choose browser][12] - -If you enable **Save my choice for the future** or you have set a preferred browser from the Test ribbon the ***Record*** button in the Test Studio project will display the icon for the selected default browser. - -![Choose preferred browser][13] - -3.  Once the selected browser navigates to the desired page, the recorder gets attached to it, a navigate step gets recorded in the Steps pane and you can continue recording the next actions as per the required scenario. - -![Attached recorder][14] - -## Attach to Existing Instance (Applicable for IE Only or WPF Application) ## - -Click the drop-down arrow on the ***Record*** button to see a list of available IE browser instances or WPF applications. Select one to attach the recorder to that instance. - -
- - - - -
![Attach to running browser][15]

**Web Test - Internet Explorer only**
![Attach to running WPF instance][16]

**WPF Test - connect to running WPF application instance**
- -## **2016 R2 Version and Earlier** ## - -## Launch New Recording Browser ## - -1.  Click the __Record__ button or press __CTRL+R__. - -
- - - - -
![Test Studio][1]

**Standalone version**
![VS][2]

**VS plugin**
- -2.  Choose the recording browser. - -![Choose browser][3] - -Note: As of the 2014.4.1211 version Safari cannot be used for test recording. - -If you enable __Save my choice for the future__, the Record button in Test Studio Standalone will display the icon for the default browser. - -![Choose browser][4] - -You can select a different recording browser later from the __Record__ button drop-down. - -
- - - - -
![Test Studio][5]

**Standalone version**
![VS][6]

**VS plugin**
- -3.  Enter a URL and press Enter/Start Recording button. A recording step is added to the Steps pane and the recorder is attached to the browser. - -![Start recording][7] - -![Attaching the recorder][8] - -## Attach to Existing Instance ## - -Click the drop-down arrow on the __Record__ button to see a list of available browser instances or WPF applications. Select one to attach the recorder to that instance. - -![Attaching the recorder][9] - -> You cannot connect to an existing Silverlight Out-of-Browser application for Out-of-Browser tests. - -To end recording, simply close the IE window or WPF application that has the recording toolbar attached - -4.  **Compare Mode** determines which mode to use when adding a page node to the Elements Explorer. Compare Mode can be checked against the page's Title or one of multiple settings that look at various parts of a URL. Please see this article for more information. - -![CompareMode][13] - -## See also ## - -* Calibrate Browsers - -[1]: /img/archived-docs/test-recording/overview/fig1.png -[2]: /img/archived-docs/test-recording/overview/fig2.png -[3]: /img/archived-docs/test-recording/overview/fig3.png -[4]: /img/archived-docs/test-recording/overview/fig4.png -[5]: /img/archived-docs/test-recording/overview/fig5.png -[6]: /img/archived-docs/test-recording/overview/fig6.png -[7]: /img/archived-docs/test-recording/overview/fig7.png -[8]: /img/archived-docs/test-recording/overview/fig8.png -[9]: /img/archived-docs/test-recording/overview/fig9.png -[13]: /img/archived-docs/test-execution/quick-execution/fig13.png -[10]: /img/archived-docs/test-recording/overview/fig10.png -[11]: /img/archived-docs/test-recording/overview/fig11.png -[12]: /img/archived-docs/test-recording/overview/fig12.png -[13]: /img/archived-docs/test-recording/overview/fig13.png -[14]: /img/archived-docs/test-recording/overview/fig14.png -[15]: /img/archived-docs/test-recording/overview/fig15.png -[16]: /img/archived-docs/test-recording/overview/fig15a.png diff --git a/docs/archived-docs/recorder/recording-toolbar-archive.md b/docs/archived-docs/recorder/recording-toolbar-archive.md deleted file mode 100644 index 15979af6..00000000 --- a/docs/archived-docs/recorder/recording-toolbar-archive.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Recording Toolbar -page_title: Recording Toolbar -description: "Archived documentation 2020 R2 and earlier" -position: 1 ---- -# Recording Toolbar Version 2020 R2 and Earlier# - -> **Note** ->
-> Information about the Recording Toolbar in the latest release of Test Studio can be found here. - -Once a recording session is started the ***Recorder Toolbar*** gets connected to the browser/WPF application instance. - -![Attaching the recorder][1] - -## DOM Explorer Options ## - -Below are listed its features related to the DOM explorer and how you could use these during recording: - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
![Enable/Disable Hover Over Highlighting][2]
**Enable/Disable Hover Over Highlighting** (Use keyboard shortcut -press "*Pause/Break*" button to toggle)
![Pause Recording][3]**Pause Recording** (Use keyboard shortcut - press "*Print Screen*" button to toggle)
![Start Recording][4]**Start Recording** (Use keyboard shortcut - press "*Print Screen*" button to toggle)
![Reconnect Recorder][5] - **Reconnect Recorder** - Restores communication between Test Studio and the recording browser window or WPF app, if necessary
![Navigation panel][6]**Navigation panel** - Type URL to record and navigate to, Refresh the Browser, use the arrows to navigate Back or Forward
![Dock/Undock][7] / ![Dock/Undock][8]**Undock/Dock** - Undock the recorder toolbar from the browser/WPF window or dock it back
![Add to elements repository][9]**Add To Elements Repository** - Add a single or multiple elements to the Elements Explorer)
![Manual Refresh of the DOM][12]**Manual Refresh of the DOM** - Used when auto-refresh is paused and the DOM tree is changed
![Freeze DOM tree][11] / ![Unfreeze DOM tree][11a]**Freeze/Unfreeze DOM tree** - Pause/Resume the DOM tree auto-refresh option
![Elements tree/tag view][10]**Elements Tree/Tag View** - Whether to display the elements as tree view or tag view
- -## Step Builder Options ## - -On the right side of the recording toolbar you can find the ***Actions*** and ***Verifications*** steps from the Step Builder. Adding steps during recording is necessary in some special occasions - if you need a drag&drop step or an advanced verification. - -Other possible scenarios when is recommended to use the Step Builder from the **Recorder Toolbar** are usually related to specific applications and how these are built. If *Record&Playback* doesn't work out of the box usually the structure of application does not allow recognition of separate elements identified by unique attributes. Then the only option left is to manually select the correct element in DOM explorer and add the necessary steps. - -**See also:** - -* Elements Menu - -* Elements Explorer - -* Verifications - -[1]: /img/archived-docs/test-recording/recording-toolbar/fig1.png -[2]: /img/archived-docs/test-recording/recording-toolbar/fig2.png -[3]: /img/archived-docs/test-recording/recording-toolbar/fig3.png -[4]: /img/archived-docs/test-recording/recording-toolbar/fig4.png -[5]: /img/archived-docs/test-recording/recording-toolbar/fig5.png -[6]: /img/archived-docs/test-recording/recording-toolbar/fig6.png -[7]: /img/archived-docs/test-recording/recording-toolbar/fig7.png -[8]: /img/archived-docs/test-recording/recording-toolbar/fig8.png -[9]: /img/archived-docs/test-recording/recording-toolbar/fig9.png -[10]: /img/archived-docs/test-recording/recording-toolbar/fig10.png -[11]: /img/archived-docs/test-recording/recording-toolbar/fig11-lock.png -[11a]: /img/archived-docs/test-recording/recording-toolbar/fig11-unlock.png -[12]: /img/archived-docs/test-recording/recording-toolbar/fig12-refresh.png diff --git a/docs/archived-docs/recorder/silverlight-out-of-browser-archive.md b/docs/archived-docs/recorder/silverlight-out-of-browser-archive.md deleted file mode 100644 index e6fc060d..00000000 --- a/docs/archived-docs/recorder/silverlight-out-of-browser-archive.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Silverlight Out-of-Browser -page_title: Create a Silverlight Out-of-Browser Test (Standalone) -description: "Test Studio Create a Silverlight Out-of-Browser Test" -position: 1 ---- -# Create a Silverlight Out-of-Browser Test (Standalone) - -Test Studio supports Silverlight Out-of-Browser applications and below you can read how to create a test for that type of app. - -> __Important!__ ->
->
-> As of Test Studio release __R3 2020 SP1 (v.2020.3.1209)__ Silverlight Out-of-Browser testing in Test Studio is no longer visible in the main Test Studio user interface. If you want to continue using it, see here how to enable it. - -__Important Notes:__ - -* If you are testing a Silverlight In-Browser web application, we recommend treating it as a standard Web Test with no additional configuration. - -* See here for what constitutes Out-of-Browser. - -* Once a Silverlight Out-of-Browser application is configured for recording, Test Studio modifies its shortcut to point directly to the application's location on disk. This replaces the Microsoft "offline://" notation. The side effect of this is that your application will not detect that it is running in Out-of-Browser mode and code must be written in the application to work around this limitation. - -* Test Studio does not support the Web Browser control in Silverlight Out-of-Browser applications. - -## How to Configure a Test for Silverlight Out-Of-Browser - -1. Add a Web Test to your test project. - -2. Click the __Out-Of-Browser__ icon in the __Silverlight__ ribbon. - - ![OOB button][4] - -3. Check the __Configure this test to run against a Silverlight application__ box in Out-Of-Browser options. -4. Browse for the Local Application Directory or drag and drop a link to your Silverlight application. -5. Select __Silverlight Out-of-Browser__ under __Recording Host__. - - ![Recording host][5] - -6. Click __Record__ to launch the out-of-browser app with the recording toolbar docked at the top. -7. Notice that steps are added to the test as actions are taken within the application. - -![Recording][6] - -## Enable Silverlight Out-Of-Browser in Test Studio 2020 R3 SP Release - -The icon to configure a test for __Silverlight-Out-Of-Browser__ application testing is __removed in Test Studio release R3 SP 2020 (v.2020.3.1209)__. You still can bring up the icon back in the product. - -Open the Windows Registry Editor and navigate to key _HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Telerik\TestStudio_. Add a new string type key named _ShowSilverlightOutOfBrowser_ and set its value to _true_. Restart Test Studio and the Silverlight-Out-Of-Browser icon will appear back in the _Test Ribbon_. - -[1]: /img/general-information/create-test-standalone/silverlight-out-of-browser/fig1.png -[2]: /img/general-information/create-test-standalone/silverlight-out-of-browser/fig2.png -[3]: /img/general-information/create-test-standalone/silverlight-out-of-browser/fig3.png -[4]: /img/general-information/create-test-standalone/silverlight-out-of-browser/fig4.png -[5]: /img/general-information/create-test-standalone/silverlight-out-of-browser/fig5.png -[6]: /img/general-information/create-test-standalone/silverlight-out-of-browser/fig6.png diff --git a/docs/archived-docs/recorder/silverlight-out-of-browser-vs-plugin-archive.md b/docs/archived-docs/recorder/silverlight-out-of-browser-vs-plugin-archive.md deleted file mode 100644 index 9f3b5169..00000000 --- a/docs/archived-docs/recorder/silverlight-out-of-browser-vs-plugin-archive.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Silverlight Out-of-Browser -page_title: Create a Silverlight Out-of-Browser Test (VS plugin) -description: "Test Studio Create a Silverlight Out-of-Browser Test (VS plugin)" -position: 3 -publish: false ---- -# Create a Silverlight Out-of-Browser Test (VS plugin) # - -Test Studio supports Silverlight Out-of-Browser applications and below you can read how to create a test for that type of app. - -> __Important!__ ->
->
-> As of Test Studio release __R3 2020 SP1 (v.2020.3.1209)__ Silverlight Out-of-Browser testing in Test Studio is no longer visible in the main Test Studio user interface. If you want to continue using it, see here how to enable it. - -__Important Notes:__ - -* If you are testing a Silverlight In-Browser web application, we recommend treating it as a standard Web Test with no additional configuration. - -* See here for what constitutes Out-of-Browser. - -* Once a Silverlight Out-of-Browser application is configured for recording, Test Studio modifies its shortcut to point directly to the application's location on disk. This replaces the Microsoft "offline://" notation. The side effect of this is that your application will not detect that it is running in Out-of-Browser mode and code must be written in the application to work around this limitation. - -* Test Studio does not support the Web Browser control in Silverlight Out-of-Browser applications. - -1. Launch Test Studio. -2. Click __Telerik > Test Studio > Create New Test Project__. - - ![Create test project][1] - -3. Choose __Telerik > Test > VB or C# Test Studio Project__, name the project, and click __OK__.
- - **Note:** As of version 2015.3.1202 Test Studio projects will appear only under **.NET Framework 4.5** or higher. - - ![Create C#/VB project][2] - - -4. A Web Test is added to the project. Open it and click the __Configure Silverlight App__ icon in the toolbar. - - ![Configure SL App][3] - -5. Check the __Configure this test to run against a Silverlight application__ box in Out-Of-Browser options. -6. Browse for the Local Application Directory or drag and drop a link to your Silverlight application. -7. Select __Silverlight Out-of-Browser__ under __Recording Host__. - - ![Recording host][4] - -8. Click __Record__ to launch the out-of-browser app with the recording toolbar docked at the top. - -![Recording test][5] - -Notice that steps are added to the test as actions are taken within the application. - -## Enable Silverlight Out-Of-Browser in Test Studio 2020 R3 SP Release - -The icon to configure a test for __Silverlight-Out-Of-Browser__ application testing is __removed in Test Studio release R3 SP 2020 (v.2020.3.1209)__. You still can bring up the icon back in the product. - -Open the Windows Registry Editor and navigate to key _HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Telerik\TestStudio_. Add a new string type key named _ShowSilverlightOutOfBrowser_ and set its value to _true_. Restart Test Studio and the Silverlight-Out-Of-Browser icon will appear back in the _test options_. - -[1]: /img/general-information/create-test-vsplugin/silverlight-out-of-browser/fig1.png -[2]: /img/general-information/create-test-vsplugin/silverlight-out-of-browser/fig2.png -[3]: /img/general-information/create-test-vsplugin/silverlight-out-of-browser/fig3.png -[4]: /img/general-information/create-test-vsplugin/silverlight-out-of-browser/fig4.png -[5]: /img/general-information/create-test-vsplugin/silverlight-out-of-browser/fig5.png diff --git a/docs/archived-docs/recorder/step-suggestions-archive.md b/docs/archived-docs/recorder/step-suggestions-archive.md deleted file mode 100644 index 823c29b3..00000000 --- a/docs/archived-docs/recorder/step-suggestions-archive.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Step Builder -page_title: Step Builder -description: "Archived documentation 2020 R2 and earlier" -position: 1 ---- -# Step Builder Version 2020 R2 and Earlier# - -> **Note** ->
-> Information about the Step Builder during recording in the latest release of Test Studio can be found here. - -The Step Builder provides options for adding steps based on the selected element in the DOM tree during a recording session. - -![Step Builder In Record Mode][6] - -The Step Builder on project level can also be used to build steps against already recorded elements in the Elements repository. - -1.  Click the **Step Builder** tab in the lower right corner. - -2.  The **Step Builder** pane appears. Now select an element from the Elements Explorer to see the suggested action and verification steps for it. - -3.  Select the action or verification you want to create and click **Add Step** button. - -
- - - - -
![TS][4]

**Standalone version**
![VS][2]

**VS plugin**
- -4.  Or insert a custom step from the **General** section. - -![Custom steps][5] - -> If you work very frequently with the Step Builder you can dock it as a separate pane. - -[1]: /img/archived-docs/test-recording/step-suggestions/fig1.png -[2]: /img/archived-docs/test-recording/step-suggestions/fig2.png -[3]: /img/archived-docs/test-recording/step-suggestions/fig3.png -[4]: /img/archived-docs/test-recording/step-suggestions/fig4.png -[5]: /img/archived-docs/test-recording/step-suggestions/fig5.png -[6]: /img/archived-docs/test-recording/step-suggestions/step-builder-recorder.png diff --git a/docs/archived-docs/results/migrate-database-archive.md b/docs/archived-docs/results/migrate-database-archive.md deleted file mode 100644 index 0e04199b..00000000 --- a/docs/archived-docs/results/migrate-database-archive.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Migrate from SQL to MongoDB -page_title: Migrate from SQL to MongoDB -description: "Test Studio MongoDB storage service. Transfer old SQL results (prior 15th of October 2015) to the new Mongo database" -position: 4 ---- -# Migrate from SQL to MongoDB - -Since Test Studio R3 release in October 2015 (v.2015.3.1015) we have introduced a new improved storage server using MongoDB database instead of SQL database. You will be able to transfer your old results (prior 15th of October 2015) to the new Mongo database using this tool. - -> Note that you must have the Storage Server already configured. - -Once you download the tool, extract the content on your hard drive and run the DBMigrator.exe - -![DBMigrator.exe][1] - -The tool will open and you will have to fill the following fields: - -![Mogration tool][2] - -- Source - this should be the SQL connection string you were using to connect to your SQL database -- Destination - this is the new MongoDB connection string - -> You can get both connection strings from the following file: **CloudStorageSelfHost.exe.config** located in: -> *C:\Program Files (x86)\Progress\Test Studio\StorageService* - - - -Once you fill the fields as demonstrated above click the **Migrate** button. You will have to allow certain time (depends on how large is your database) in order to migrate the results to the MongoDB database. - -![wait][3] - -Once done you should be able to view your scheduling results in the Calendar after clicking the Reload button. - -[1]: /img/features/scheduling-test-runs/migrate-database/fig1.png -[2]: /img/features/scheduling-test-runs/migrate-database/fig2.png -[3]: /img/features/scheduling-test-runs/migrate-database/fig3.png \ No newline at end of file diff --git a/docs/archived-docs/results/reports-archive.md b/docs/archived-docs/results/reports-archive.md deleted file mode 100644 index ce2b0162..00000000 --- a/docs/archived-docs/results/reports-archive.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Test List Reports -page_title: Test List Reports -description: "Test Studio Test List Results Reports. Generate report based on the test list results" -position: 6 ---- -# Reports - -With the expanded reporting functionality, spotting test pass/failure trends and identifying weak spots in tested applications is swift and effortless. From the **Reports** tab, you have the ability to: - -* To explore test list results over time. - -* Experience enhanced visualization of test results through interactive graphs and charts. - -* Export reports as a PNG image or HTML file. - -* Leave comments within reports. - -## 2016 R3 Version and Earlier - -Select a test list from the first drop-down menu, specify a date range, and enable or disable the pass/fail lines. A bar graph is populated with Run Results on the X-axis by date/time and number of Tests in List on the Y-axis. - -![Charts][1] - -You can generate more meaningful graphs that support drill-downs, as well as having single test list results displayed in easy-to-read pie charts. - -To do so, click on the bar for which you want more information, and you are taken to the **Results** tab. - -* Switch between the pie chart report and the calendar view. - -* View previous and next results for the selected test list. - -* Add comments. - -* Drill down further into each test and its steps in the **Test Results** pane. - -![Pie][2] - -[1]: /img/general-information/test-results/reports/fig1.png -[2]: /img/general-information/test-results/reports/fig2.png \ No newline at end of file diff --git a/docs/archived-docs/results/visual-studio-2012-and-later-test-list.md b/docs/archived-docs/results/visual-studio-2012-and-later-test-list.md deleted file mode 100644 index a7f2d7a5..00000000 --- a/docs/archived-docs/results/visual-studio-2012-and-later-test-list.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Test Lists in Visual Studio 2010 -page_title: Test Lists in Visual Studio 2010 -description: "Test Studio Test Lists in Visual Studio. test lists are deprecated in Visual Studio 2012" -position: 10 ---- -# Test Lists in Visual Studio 2010 (Deprecated) - -Although test lists are deprecated in Visual Studio 2012 you can still use them: - -1. From the Solution Explorer right click the **Solution** and select **Add -> New item**. - - ![Add item][1] - -2. Type in the text box 'TestList.vsmdi' or any other item name that ends with '.vsmdi' and click add. - - ![Add .vsmdi file][2] - - **Note:** make sure not to click on any item as it would overwrite your input. - -3. The .vsmdi file is created in 'Solution Items' sub folder right under your solution. - - ![Solution items][3] - -4. Double click TestList.vsmdi and which brings up the 'Test List Editor' in Visual Studio. - - ![Test List Editor][4] - -5. Right click **Lists of Tests** and select **New Test List**. - - ![Create new test list][5] - -6. Name the Test List and click **OK**. - - ![Name the test][6] - -7. Click **All Loaded Tests** and drag the test you want into the **TestList1**. You can use Ctrl/Shift + Click to select multiple tests. - - ![Add test to the test list][7] - -> You can only create a test list and edit it in Visual Studio 2012 and later. In order to execute the test list you need to use **MSTest** via the command line. - - -[1]: /img/general-information/test-execution/visual-studio-2012-and-later-test-list/fig1.png -[2]: /img/general-information/test-execution/visual-studio-2012-and-later-test-list/fig2.png -[3]: /img/general-information/test-execution/visual-studio-2012-and-later-test-list/fig3.png -[4]: /img/general-information/test-execution/visual-studio-2012-and-later-test-list/fig4.png -[5]: /img/general-information/test-execution/visual-studio-2012-and-later-test-list/fig5.png -[6]: /img/general-information/test-execution/visual-studio-2012-and-later-test-list/fig6.png -[7]: /img/general-information/test-execution/visual-studio-2012-and-later-test-list/fig7.png diff --git a/docs/archived-docs/upload-latest-files-archive.md b/docs/archived-docs/upload-latest-files-archive.md deleted file mode 100644 index 2e6ba360..00000000 --- a/docs/archived-docs/upload-latest-files-archive.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Upload To Storage -page_title: Upload Latest Project Files -description: You have recurring test list scheduled and you need to make some change in the test list such as editing a particular test case, add or remove tests etc. You can force uploading the changes to the database -position: 7 ---- -# Upload Latest Project Files to Storage Database - -## Automatic Upload of Recent Changes - -If you continue working within a project in which there are upcoming scheduled test lists and you attempt to save these, you will get a notification for automatic upload of the changes. - -Once you choose an option and select to not be prompted in the future, the selected option will be applied by each next *Save All* action performed in the project. However, you may need to change your initial selection and here are the steps to follow to get prompted with that message again: - -1. Open the project's root folder and open the *Settings.aiis* file with a text editor (Notepad++ for example). -2. Find the Project ID value and note it somewhere. -3. Go to *C:\Users\\\\AppData\Roaming\ArtOfTest* folder and locate a file named *PerUserSettings.json*. -4. Open that file with a text editor again and locate the Project ID under "SkipUploadScheduledJobToStoragePromptPerProject" setting. Delete the project's id and save the file. - -Then when you start the project again, make any change and select Save All, the dialog will prompt you again and you could choose the desired option to automatically update the files. That way all changes will be reflected in the database whenever you *Save All*. - -[1]: /img/knowledge-base/scheduling-kb/upload-latest-files/fig1.png \ No newline at end of file diff --git a/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-application-log.md b/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-application-log.md deleted file mode 100644 index 4b1251f2..00000000 --- a/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-application-log.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Using the Application Log -page_title: Using the Test Studio Application Log -description: "Using the Test Studio Application Log. How helps me the Test Studio application log. What errors can be identified in the Test Studio Application Log. " -previous_url: /user-guide/troubleshooting_guide/troubleshooting_tools/using_the_application_log.aspx, /user-guide/troubleshooting_guide/troubleshooting_tools/using_the_application_log -position: 1 -publish: false ---- -# Using the Test Studio Application Log - -**What is the application log?** - -The Test Studio application log is a record of log messages recorded by Test Studio throughout runtime. All records in the application log, are designed to indicate important events and help pinpoint where problems may occur. This is distinct from the execution log, which only records the attempted steps and encountered exceptions during test execution. - -**When to turn on the application log?** - -Whenever Test Studio behaves differently than expected, an application log can give more information about why. This is especially true for situations other than test failure or code compilation. For example: - -- Test Studio generates error messages; - -- Test Studio closes unexpectedly; - -- Test Studio stops responding; - -- Test Studio interacts with other software (TeamPulse, TFS, QC) differently than expected; - -- A Test Studio execution browser closes unexpectedly or stops responding during execution; - -- Test Studio cannot connect to a browser. - -**Generating the application log.** - -You can generate an application log from the help tab. - -**What to look for in the application log.** - -The application log can be useful in many ways to Test Studio support engineers and developers. Users with issues should look for exceptions. - -![Log][1] - -These are usually accompanied with error messages that may guide you in troubleshooting. If you are not familiar with the error message, try searching our documentation for it. If you still cannot understand the error, consider attaching a copy of the log to a support ticket. - -[1]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-application-log/fig1.png \ No newline at end of file diff --git a/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-dom-on-failure.md b/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-dom-on-failure.md deleted file mode 100644 index 6edf3814..00000000 --- a/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-dom-on-failure.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Using the DOM on Failure -page_title: Using the DOM on Failure -description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." -position: 1 -publish: false ---- -# Using the DOM on Failure - - -**What is the DOM on Failure?** - -The DOM on failure is a copy of the state of the DOM for the execution browser at the time a test fails. The DOM on Failure is available after test failure as part of the failure details. - -![Page DOM][1] - -> If similar issues occur with a test that passes, find the relevant element using the DOM Explorer. - -**When to use the DOM on Failure** - -The DOM on Failure is most helpful in situations where a test does not properly locate and act on a particular element. This includes any of the following, when unexpected: - -- ‘Element does not exist’ exceptions; - -- ‘Element not found’ exceptions; - -- ‘Timed out waiting for element’ exceptions; - -- Test execution targets incorrect element. - -**Exporting the DOM on Failure** - -In the Step Failure Details window, you can choose to export results to file, including the DOM on Failure. - -**What to look for in the DOM on Failure** - -The DOM on Failure provides a record of the elements that Test Studio could see in the browser at the time the test failed. Compare with the find logic of the element that Test Studio expects to be in the browser during the failed step. This helps to identify which element should have been targeted, why the incorrect element may have been targeted, or what state the browser may have been in instead of the correct state. - -[1]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-dom-on-failure/fig1.png \ No newline at end of file diff --git a/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-execution-log.md b/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-execution-log.md deleted file mode 100644 index 9bdb3504..00000000 --- a/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-execution-log.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Using the Test Execution Log -page_title: Using the Test Execution Log in Test Studio -description: "What is the Test Execution log in Test Studio and how to use this. How can the Execution log help me in troubleshooting failures. Test Studio Test execution failures and how to resolve these. What causes a Test Studio test failure. " -previous_url: /user-guide/troubleshooting_guide/troubleshooting_tools/using_the_execution_log.aspx, /user-guide/troubleshooting_guide/troubleshooting_tools/using_the_execution_log -position: 1 -publish: false ---- -# Using the Test Execution Log in Test Studio - -The execution log in Test Studio is a generated after a quick test execution. It is also included in the thorough step failure details. - -You can pull it out by clicking **View Log** button in the test view - -![View Log][1] - -or from failure details: - -![Step failure details][2] - -## What Details Contains the Execution Log? - -The execution log is a record of the steps executed in the test, whether they passed or failed, and if they failed, why. It records what actions a step takes and what elements it acts upon. It includes all steps in one sequence, regardless of whether they are part of the main parent test or a test as step. - -![log][3] - -It says what errors arose in the case of a failure, giving detailed information on where the error occurred, and whether the error caused the test to fail. - -![log][4] - -For these reasons, the execution log is an excellent resource for forming a clear story of what led to a failure. - -## When to Export the Execution Log? - -Anytime a test fails unexpectedly and without clear explanation, the execution log can help in determining the cause. This includes any of the following, when unexpected: - -- The test closes after waiting; - -- A step fails unexpectedly and the test continues; - -- The test fails without executing any steps; - -## How to Export the Execution Log? - -In the Step Failure Details window, you can choose to export results to file, including the execution log. - -## What to Look for in the Execution Log? - -The Execution Log lists four main types of information. Two of these, the action taken by the step and the element acted upon by the step, are included in the Test view. However, they can still be useful if the recipient of the execution log does not have access to the associated test (for example, the Test Studio support team). The other two categories of information are step execution properties (including whether to continue on failure and whether to break on execution) and error information. Each of these pieces of information is contained elsewhere in Test Studio, the Execution log provides a sequential summary of the entire test leading up to failure. - -[1]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-execution-log/fig1.png -[2]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-execution-log/fig2.png -[3]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-execution-log/fig3.png -[4]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-execution-log/fig4.png diff --git a/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-visual-debugger.md b/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-visual-debugger.md deleted file mode 100644 index cbc33916..00000000 --- a/docs/automated-tests/troubleshooting/troubleshooting-tools-tg/using-the-visual-debugger.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Using the Visual Debugger -page_title: Using the Visual Debugger -description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." -position: 1 -publish: false ---- -# Using the Visual Debugger - -**What is the Visual Debugger?** - -The Visual Debugger is a set of options for debugging a test while test execution is paused. These options allow you to navigate a test, view debugging information for the current step, and report bugs. - -![Debug options][1] - -**When to use the Visual Debugger** - -The Visual Debugger is helpful in situations where a test does not behave as expected, especially when it is not clear at which step a particular problem occurred. It is also helpful for slowing down test execution and observing test behavior step by step. - -First, you can use the visual debugger to help identify why a step did not act upon the correct element. This includes diagnosing: - -- ‘Element does not exist’ exceptions; - -- ‘Element not found’ exceptions; - -- ‘Timed out waiting for element’ exceptions. - - -Even if a test step passes, you can still use the visual debugger to analyze its behavior. - -Lastly, you can use the Visual Debugger to record instances in which your target application behaves unexpectedly. - -**How to use the Visual Debugger** - -![Coded step][2] - -The most commonly used feature of the Visual Debugger is the step status message and progress bar, which show which step is being executed, the description of that step, and what fraction of the test steps have completed. Keep your eye on this to help follow any test execution in Test Studio. This way, if you find a problem with one of your test steps, you will know which step to change. - -![buttons][3] - -The bottom row of buttons provides options for controlled execution of the test. The Visual Debugger allows you to replay steps and move through your test one step at a time. This is helpful for careful observation of test behavior. Specifically, it can help identify which test step is putting the target application in a particular state. - -![icons][4] - -The top row of buttons provides options for analyzing and recording information about the current test step. - -- ‘Open the DOM Explorer’ displays the DOM Explorer for the currently displayed page. This can help identify the correct find logic for a particular element, or whether a desired element is missing. - -- ‘Capture an image of the current page and its DOM creates a complete record of the current state of the application. You can use this record to compare to the find logic for the step, or to communicate the state of the application to a third party, such as a developer or Test Studio support engineer. - -- ‘Diagnose the currently failed step’ shows the find logic for the current step. In combination with the DOM Explorer, this find logic can help diagnose steps that fail due to faulty find expressions. - -- ‘View the current execution log’ displays the execution log at the time of the current step. Since the execution log contains details on step failure, it can act as a starting point in your debugging. For example, if the failure log contains an ‘Element does not exist’ exception, you can check to see if the element is missing altogether or whether the step used bad find logic. - -- ‘Submit Bug’ opens the Submit a Bug dialog, so you can easily record any bugs in the target application during debugging. - -[1]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-visual-debugger/fig1.png -[2]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-visual-debugger/fig2.png -[3]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-visual-debugger/fig3.png -[4]: /img/troubleshooting-guide/troubleshooting-tools-tg/using-the-visual-debugger/fig4.png diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index fe18287f..00000000 --- a/docs/index.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Welcome to Test Studio -page_title: Welcome to Test Studio -description: "Test Studio is an innovative and easy-to-use automated web, WPF and desktop testing solution. Test Studio tests support a proprietary Testing framework, functional UI testing, web responsive testing, etc. Find out more on our Welcome page." -position: 0 ---- - -# Welcome to Test Studio - -Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, PHP and MVC. - - -Test Studio functional testing is a comprehensive yet cost-effective automated testing suite. Users can complete tasks quickly and easily with the product’s point-and-click interface, which is augmented by Telerik-exclusive features like a visual storyboard and 3D element selection. Test Studio also offers script-less test automation for Silverlight applications. - - - -Test Studio load tests allow users to capture quickly capture, multiply and replay complex web traffic. Record HTTP traffic from desktop browsers, mobile devices and web services, and replay traffic with hundreds or thousands of virtual users spread across multiple machines. Fine-tune your load scenario with data binding, user authentication, and dynamic targets. - -Test Studio Mobile is an intuitive and easy to use test automation solution for Mobile application testing. Create tests once and test across multiple devices and OS’s. The point and click functionality allows users to capture quickly and replay complex mobile testing functionality. There is no need to write a single line of code. Test against any number of real devices as you wish or through an emulator by connecting through Wifi. - -Test Studio for APIs helps customers verify the integrity and reliability of their APIs in an easy way and incorporate their API testing effort in their continuous testing and delivery process. Test Studio for APIs is used to determine whether APIs return the correct response for a broad range of commonly accepted requests, react properly to edge cases such as failures and unexpected inputs, as well as deliver the responses in an acceptable amount of time. - -**Test Studio** offers two product versions: - -- Test Studio Web & Desktop version performs **Web and WPF testing** and includes the **Visual Studio plugin**. -- The Ultimate version adds on top of **Web** and **WPF**, **Mobile**, **Load testing** and **Test Studio for APIs**. - -> Test Studio includes runtime files which support the execution of tests on the machine in which it’s licensed. Our **Runtime Edition** is available and suggested for build servers and remote machines where test execution is required. - -All versions use identical repositories and file formats, facilitating seamless collaboration between even geographically diverse teams. - -
- - - - -
- -## Getting Started - -1. [Installation and Activation](/getting-started/installation-and-activation) -2. [Your First Project](/getting-started/first-project) -3. [Analyze the Results](/getting-started/analyze-the-results) -4. [Next Steps](/getting-started/next-steps) - -## Getting Help - -* Videos -* Tips and tricks -* Forums -* Contact support -* Submit a general feedback -* Send a presale inquiry -* What's new -* Release notes - - -## Features - -* [Recorder](/features/recorder/overview) -* [Elements Explorer](/features/elements-explorer/overview) -* [Testing Types](/features/testing-types) -* [Data Driven Testing](/features/data-driven-testing/overview) -* [Dialog Handling](/features/dialogs-and-popups/dialogs) -* [Test Lists](/general-information//test-execution/test-list-execution) -* [Scheduling Test Runs](/features/scheduling-test-runs/overview) -* [Results Tab](/general-information/test-results/analyze-test-list-results) -* [Custom Step from Step Builder](/features/custom-steps/overview) -* [Project Settings](/features/project-settings/overview) -* [Logical Steps](/features/logical-steps/if-else) -* [Source Control](/features/source-control/checkin-guidelines) -* [Coded Step](/features/coded-steps/coded-step) -* [API Test as Step](/features/execute-apitest/add-api-test-as-step) -* [Mobile Testing](/test-studio-mobile/overview) - -### Advanced Features - -* [Continious Integration and Deployment (CI/CD)](/advanced-topics/build-server/continious-integration-overview) -* [Coded Samples for Different Scenarios](/advanced-topics/coded-samples/general/send-keystrokes) -
diff --git a/docs/test-studio-mobile/api-reference/andorid.md b/docs/test-studio-mobile/api-reference/andorid.md deleted file mode 100644 index 415c2318..00000000 --- a/docs/test-studio-mobile/api-reference/andorid.md +++ /dev/null @@ -1,883 +0,0 @@ ---- -title: Android -page_title: Android -description: "Telerik Mobile Testing - API Reference - Android" -position: 0 -publish: true -slug: ms-android-api ---- - -# Android - -Methods - - -Methods for automating native Android applications. - -##Methods - - -## DragToDisplacement (AndroidQuery[] query, TapPoint fromPoint, TapPoint displacement, int steps) - -Performs a drag gesture from a point to a displacement from that point within the view specified by the query. Supports views and subclasses of: **android.view.View**. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -*fromPoint (TapPoint)* - The X, Y position in the view to start the drag from. If null, defaults to center point in view. If X, or Y is negative, that value defaults to the center X, or Y of the view. If X or Y is greater than the X or Y of the view, it is still applied as is. - -*displacement (TapPoint)* - The X, Y distance from the fromPoint to end the drag. If null, defaults to center point in view. - -*steps (int)* - The amount of touches to generate to complete the drag. Valid values are in the range: 3 - 1000. - -### Example - -```C# -this.ActiveDevice.Android.DragToDisplacement(elementQry, new TapPoint() { X = 10, Y = 10 }, new TapPoint() { X = -10, Y = -10 }, 20); -``` - -```VB -Me.ActiveDevice.Android.DragToDisplacement(elementQry, New TapPoint() With {.X = 10, .Y = 10 }, New TapPoint() With {.X = -10, .Y = -10 }, 20) -``` - -Back to Top -

- - -## DragToPoint(AndroidQuery[] query, TapPoint fromPoint, TapPoint toPoint, int steps) - - -Performs a drag gesture from a point to a point within the view specified by the query. Supports views and subclasses of: **android.view.View**. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -*fromPoint (TapPoint)* - The X, Y position in the view to start the drag from. If null, defaults to center point in view. If X, or Y is negative, that value defaults to the center X, or Y of the view. If X or Y is greater than the X or Y of the view, it is still applied as is. - -*toPoint (TapPoint)* - The X, Y position in the view to end the drag. If null, equals the fromPoint. If X, or Y is negative, that value defaults to the X, or Y value of fromPoint. If X or Y is greater than the X or Y of the view, it is still applied as is. - -*steps (int)* - The amount of touches to generate to complete the drag. Valid values are in the range: 3 - 1000. - -### Example - -```C# -this.ActiveDevice.Android.DragToPoint(elementQry, new TapPoint() { X = 10, Y = 10 }, new TapPoint() { X = 10, Y = 10 }, 20); -``` -```VB -Me.ActiveDevice.Android.DragToPoint(elementQry, New TapPoint() With {.X = 10, .Y = 10 }, New TapPoint() With { .X = 10, .Y = 10 }, 20) -``` - -Back to Top -

- - -## ElementExists (AndroidQuery[] query) - -Checks if the view specified by the query exists, and returns the result. Supports views and subclasses of: **android.view.View**. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -### Example - -```C# -this.ActiveDevice.Android.ElementExists(elementQry); -``` - -```VB -Me.ActiveDevice.Android.ElementExists(elementQry) -``` - -### Return Value - -Gets a value indicating whether the element exists. - -Back to Top -

- - -## ElementVisible (AndroidQuery[] query) - -Checks if the view specified by the query is visible, and returns the result. Supports views and subclasses of: **android.view.View**. - -### Parameters - -*query (AndroidQuery*) - Identifies an element uniquely. - -### Example - -```C# -this.ActiveDevice.Android.ElementVisible(elementQry); -``` - -```VB -Me.ActiveDevice.Android.ElementVisible(elementQry) -``` - - -### Return Value - -Gets a value indicating whether the element is visible. - -Back to Top -

- - -## GetPropertyValue (AndroidQuery[] query, string propertyName) - -Retrieves the value of a property from a specified view. Supports views and subclasses of: **android.view.View**. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -*propertyName (string)* - The string name of the property. - -### Example - -```C# -this.ActiveDevice.Android.GetPropertyValue(elementQry, "text"); -``` - -```VB -Me.ActiveDevice.Android.GetPropertyValue(elementQry, "text") -``` - - -### Return Value - -The String value of the property. - -Back to Top -

- - - -##PinchIn (AndroidQuery[] query, TapPoint point, int distance, int steps) - -Performs a pinch in gesture at the specified location within the view specified by the query. Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*point (TapPoint)* - The X, Y center point to pinch into in the view. If null, defaults to center point in view. If X, or Y is negative, that value defaults to the center X, or Y of the view. If X or Y is greater than the X or Y of the view, it is still applied as is. - -*distance (int)* - The distance away from the point to start. Minimum value is 1. - -*steps (int)* - The amount of touches to generate to complete the pinch in. Valid values are in the range: 3 - 1000. - -### Example - -```C# -this.ActiveDevice.Android.PinchIn(elementQry, new TapPoint() { X = 10, Y = 10 }, 100, 50); -``` - -```VB -Me.ActiveDevice.Android.PinchIn(elementQry, New TapPoint() With {.X = 10, .Y = 10 }, 100, 50) -``` - -Back to Top -

- - -##PinchOut(AndroidQuery[] query, TapPoint point, int distance, int steps) - -Performs a pinch out gesture at the specified location within the view specified by the query. Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*point (TapPoint)* - The X, Y center point to pinch out from the view. If null, defaults to center point in view. If X, or Y is negative, that value defaults to the center X, or Y of the view. If X or Y is greater than the X or Y of the view, it is still applied as is. - -*distance (int)* - The distance away from the point to end. Minimum value is 1. - -*steps (int)* - The amount of touches to generate to complete the pinch out. Valid values are in the range: 3 - 1000. - -### Example - -```C# -this.ActiveDevice.Android.PinchOut(elementQry, new TapPoint() { X = 10, Y = 10 }, 100, 50); -``` - -```VB -Me.ActiveDevice.Android.PinchOut(elementQry, New TapPoint() With { .X = 10, .Y = 10 }, 100, 50) -``` - -Back to Top -

- - -##PressBackButton () - -Presses the hardware back button. - -### Example - -```C# -this.ActiveDevice.Android.PressBackButton(); -``` - -```VB -Me.ActiveDevice.Android.PressBackButton() -``` - -Back to Top -

- - -##PressMenuButton () - -Presses the hardware menu button. - -### Example - -```C# -this.ActiveDevice.Android.PressMenuButton(); -``` - -```VB -Me.ActiveDevice.Android.PressMenuButton() -``` - -Back to Top -

- - -##PressReturn (AndroidQuery[] query) - -Presses the software keyboard return key. If the target is a SearchView, the keypress will target its internal text editing view. Supports subclasses and views of **android.widget.EditText** and **android.widget.SearchView**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -### Example - -```C# -this.ActiveDevice.Android.PressReturn(elementQry); -``` - -```VB -Me.ActiveDevice.Android.PressReturn(elementQry) -``` - -Back to Top -

- - -##PressSearchButton () - -Presses the hardware search button. - -### Example - -```C# -this.ActiveDevice.Android.PressSearchButton(); -``` - -```VB -Me.ActiveDevice.Android.PressSearchButton() -``` - -Back to Top -

- - -## Screenshot () - -Takes a screenshot of the tested UI. - -### Example - -```C# -this.ActiveDevice.Android.Screenshot(); -``` - -```VB -Me.ActiveDevice.Android.Screenshot() -``` -### Return Value - -The taken screenshot as array of bytes. - -## Screenshot (string fileName) - -Takes a screenshot of the tested UI. - -### Parameters - -*fileName (string)* - The name and location to save the image at. - -### Example - -```C# -this.ActiveDevice.Android.Screenshot("MyScreenshot.png"); -``` - -```VB -Me.ActiveDevice.Android.Screenshot("MyScreenshot.png") -``` - -Back to Top -

- - -##SelectRow (AndroidQuery[] query, int row, int? group = null) - -Selects a row in a view specified by the query. If the target is an ExpandableListView, you must also specify a group or the row number will be applied to the group. The group will be expanded before the row is selected within the group. Supports subclasses of: **android.widget.AdapterView**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*row (int)* - Тhe row to select. Positive numbers only. - -*group (int)* - Тhe group containing the row to select, for ExpandableListViews. Optional. Positive numbers only. - -### Example - -```C# -this.ActiveDevice.Android.SelectRow(elementQry, 1); -``` - -```VB -Me.ActiveDevice.Android.SelectRow(elementQry, 1) -``` - -Back to Top -

- - -##SetDate (AndroidQuery[] query, DateTime date) - -Sets the date on a view specified by the query. Supports views and subclasses of: **android.widget.CalendarView**, **android.widget.DatePicker**, **android.widget.TimePicker**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*date (DateTime)* - The date to set. - -### Example - -```C# -this.ActiveDevice.Android.SetDate(elementQry,new DateTime(2014,4,12)); -``` - -```VB -Me.ActiveDevice.Android.SetDate(elementQry, New DateTime(2014, 4, 12)) -``` - -Back to Top -

- - -##SetText (AndroidQuery[] query, string text) - -Sets the text on a view specified by the query. If the target is a SearchView, this command will target its internal text editing view, and the SearchView will be expanded before text is entered into it. - -Supports subclasses and views of **android.widget.EditText** and **android.widget.SearchView**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*text (string)* - Тhe text value to set on the view. - -### Example - -```C# -this.ActiveDevice.Android.SetText(elementQry, "Test"); -``` - -```VB -Me.ActiveDevice.Android.SetText(elementQry, "Test") -``` - -Back to Top -

- - -##SetValue (AndroidQuery[] query, double value) - -Sets the value of a view specified by the query. - -Supports subclasses of **android.widget.AbsSeekBar** and views and subclasses of **android.widget.NumberPicker**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*value (double)* - The value the view should be set to. - -### Example - -```C# -this.ActiveDevice.Android.SetValue(elementQry, 60); -``` - -```VB -Me.ActiveDevice.Android.SetValue(elementQry, 60) -``` - -Back to Top -

- - -##Swipe (AndroidQuery[] query, SwipeDirection direction) - -Performs a swipe gesture across the view specified by the query. - -Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*direction (SwipeDirection)* - The direction to swipe. - -### Example - -```C# -this.ActiveDevice.Android.Swipe(elementQry, SwipeDirection.Down); -``` - -```VB -Me.ActiveDevice.Android.Swipe(elementQry, SwipeDirection.Down) -``` - -Back to Top -

- - -##Tap (AndroidQuery[] query, int tapCount = 1, int tapDownDelay = 10, int tapUpDelay = 100) - -Performs a tap gesture at the center of the view specified by the query. - -Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*tapCount (int)* - How many times to tap. Optional. Default value is 1. - -*tapDownDelay (int)* - The amount of time in milliseconds tap down should last. Optional. Default value is 10. - -*tapUpDelay (int)* - The amount of time in milliseconds tap up should last, if multiple taps are used. Optional. Default value is 100. - -### Example - -```C# -this.ActiveDevice.Android.Tap(buttonQry); - -this.ActiveDevice.Android.Tap(buttonQry, 2, 1000, 500); -``` - -```VB -Me.ActiveDevice.Android.Tap(buttonQry) - -Me.ActiveDevice.Android.Tap(buttonQry, 2, 1000, 500) -``` - -Back to Top -

- - -##TapAndHold (AndroidQuery[] query) - -Performs a tap-and-hold gesture at the center of the view specified by the query. - -Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -### Example - -```C# -this.ActiveDevice.Android.TapAndHold(buttonQry); -``` - -```VB -Me.ActiveDevice.Android.TapAndHold(buttonQry) -``` - -Back to Top -

- - -##TapAtLocation (AndroidQuery[] query, int x, int y, int tapCount = 1) - -Performs a tap gesture at the specified location within the view specified by the query. - -Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*x (int)* - The X coordinate of the location to tap. If negative value is submitted, the value defaults to the center X of the view. If greater than the X of the view, it is still applied as is. - -*y (int)* - The Y coordinate of the location to tap. If negative value is submitted, the value defaults to the center Y of the view. If greater than the Y of the view, it is still applied as is. - -*tapCount (int)* - How many times to tap. Optional. Default value is 1. - -### Example - -```C# -this.ActiveDevice.Android.TapAtLocation(buttonQry, 10, 10); - -this.ActiveDevice.Android.TapAtLocation(buttonQry, 10, 10, 2); -``` - -```VB -Me.ActiveDevice.Android.TapAtLocation(buttonQry, 10, 10) - -Me.ActiveDevice.Android.TapAtLocation(buttonQry, 10, 10, 2) -``` - -Back to Top -

- - -##TapAtPoint (AndroidQuery[] query, TapPoint point = null, int tapCount = 1, int tapDownDelay = 10, int tapUpDelay = 100) - -Performs a tap gesture at the specified point within the view specified by the query. - -Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*point (TapPoint)* - The X, Y position to tap in the view. Optional. If null, defaults to center point in view. If X, or Y is negative, that value defaults to the center X, or Y of the view. If X or Y is greater than the X or Y of the view, it is still applied as is. - -*tapCount (int)* - How many times to tap. Optional. Default value is 1. - -*tapDownDelay (int)* - The amount of time in milliseconds tap down should last. Optional. Default value is 10. - -*tapUpDelay (int)* - The amount of time in milliseconds tap up should last, if multiple taps are used. Optional. Default value is 100. -### Example - -```C# -this.ActiveDevice.Android.TapAtPoint(buttonQry); - -this.ActiveDevice.Android.TapAtPoint(buttonQry, new TapPoint() { X=10, Y=10 }, 2, 1000, 500); -``` - -```VB -Me.ActiveDevice.Android.TapAtPoint(buttonQry) - -Me.ActiveDevice.Android.TapAtPoint(buttonQry, New TapPoint() With { .X = 10, .Y = 10 }, 2, 1000, 500) -``` - -Back to Top -

- - -##TapCenterLeft (AndroidQuery[] query) - -Performs a tap gesture at the center-left of the view specified by the query. - -Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -### Example - -```C# -this.ActiveDevice.Android.TapCenterLeft(buttonQry); -``` - -```VB -Me.ActiveDevice.Android.TapCenterLeft(buttonQry) -``` - -Back to Top -

- - -##TapCenterRight (AndroidQuery[] query) - -Performs a tap gesture at the center-right of the view specified by the query. - -Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -### Example - -```C# -this.ActiveDevice.Android.TapCenterRight(buttonQry); -``` - -```VB -Me.ActiveDevice.Android.TapCenterRight(buttonQry) -``` - -Back to Top -

- - -##Toggle (AndroidQuery[] query, bool toggle) - -Sets the toggle state of a view specified by the query. - -Supports views and subclasses of: **android.widget.CompoundButton**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*toggle (bool)* - Тhe on/off true/false state to apply to the togglable view. - -### Example - -```C# -this.ActiveDevice.Android.Toggle(elementQry, true); -``` - -```VB -Me.ActiveDevice.Android.Toggle(elementQry, true) -``` - -Back to Top -

- - -##TwoFingerRotate (AndroidQuery[] query, TapPoint point, int angleInDegrees) - -Performs a rotate gesture at the specified location within the view specified by the query. - -Supports views and subclasses of: **android.view.View**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*point (TapPoint)* - The X, Y position of origin to rotate around in the view. If null, defaults to center point in view. If X, or Y is negative, that value defaults to the center X, or Y of the view. If X or Y is greater than the X or Y of the view, it is still applied as is. - -angleInDegrees (int) - The angle in degrees to rotate. - -### Example - -```C# -this.ActiveDevice.Android.TwoFingerRotate(elementQry, new TapPoint() {X=20,Y=20 }, 180); -``` - -```VB -Me.ActiveDevice.Android.TwoFingerRotate(elementQry, New TapPoint() With { .X = 20, .Y = 20 }, 180) -``` - -Back to Top -

- - -##TypeText (AndroidQuery[] query, string text) - -Types the text into a view specified by the query. If the target is a SearchView, the typing will target its internal text editing view, and the SearchView will be expanded before text is entered into it. - -Supports subclasses and views of **android.widget.EditText** and **android.widget.SearchView**. - -### Parameters -*query (AndroidQuery)* - Identifies an element uniquely. - -*text (string)* -The text value to type into the view. - -### Example - -```C# -this.ActiveDevice.Android.TypeText(elementQry, "Test"); -``` - -```VB -Me.ActiveDevice.Android.TypeText(elementQry, "Test") -``` - -Back to Top -

- - -##Wait (int miliseconds) - -Waits an arbitrary amount of time before continuing execution. - -### Parameters -*miliseconds (int)* - The amount of time to wait in milliseconds.Positive numbers only. - -### Example - -```C# -this.ActiveDevice.Android.Wait(1000); -``` - -```VB -Me.ActiveDevice.Android.Wait(1000) -``` - -Back to Top -

- - -##WaitFor (Func \ func, int checkInterval, int timeout) - -Executes periodic verifications against a custom condition and times out if the condition is not met. - -### Parameters -*func (\ func)* - The custom condition to verify. - -*checkInterval (int)* - The interval between verification calls. Positive numbers only. - -*timeout (int)* - The overall number of milliseconds to wait. Positive numbers only. Cannot be less than 'checkInterval'. - -### Example - -```C# -this.ActiveDevice.Android.WaitFor(new Func(() => { Random r = new Random(); return (r.Next(2) % 2 == 0); }), 100, 200); -``` - -```VB -Me.ActiveDevice.Android.WaitFor(New Func(Of Boolean)(Function() -Dim r As New Random() -Return (r.[Next](2) Mod 2 = 0) - -End Function), 100, 200) -``` - -Back to Top -

- - -##WaitForElementExists (AndroidQuery[] query, bool exists, int checkInterval, int timeout) - -Executes periodic verifications against an element query to ensure element existence or times out. - -Supports views and subclasses of: android.view.View. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -*exists (bool)* - The expected command value. - -*checkInterval (int)* - The interval between verification calls. Positive numbers only. - -*timeout (int)* - The overall number of milliseconds to wait. Positive numbers only. Cannot be less than 'checkInterval'. - -### Example - -```C# -this.ActiveDevice.Android.WaitForElementExists(elementQry, true, 100, 1000); -``` - -```VB -Me.ActiveDevice.Android.WaitForElementExists(elementQry, true, 100, 1000) -``` - -Back to Top -

- - -##WaitForElementVisible (AndroidQuery[] query, bool visible, int checkInterval, int timeout) - -Executes periodic verifications against an element query to ensure element visibility or times out. - -Supports views and subclasses of: **android.view.View**. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -*visible (bool)* - The expected command value. - -*checkInterval (int)* - The interval between verification calls. Positive numbers only. - -*timeout (int)* - The overall number of milliseconds to wait. Positive numbers only. Cannot be less than 'checkInterval'. - -### Example - -```C# -this.ActiveDevice.Android.WaitForElementVisible(elementQry, true, 100, 1000); -``` - -```VB -Me.ActiveDevice.Android.WaitForElementVisible(elementQry, true, 100, 1000) -``` - -Back to Top -

- - -##WaitForPropertyValue (AndroidQuery[] query, string propertyName, string propertyValue, int checkInterval, int timeout) - -Executes periodic verifications against an element property to ensure its value or times out. - -Supports views and subclasses of: **android.view.View**. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -*propertyName (string)* - The string name of the property. - -*propertyValue (string)* - The expected property value. - -*checkInterval (int)* - The interval between verification calls. Positive numbers only. - -*timeout (int)* - The overall number of milliseconds to wait. Positive numbers only. Cannot be less than 'checkInterval'. - -### Example - -```C# -this.ActiveDevice.Android.WaitForPropertyValue(elementQry, "text", "t", 100, 1000); -``` - -```VB -Me.ActiveDevice.Android.WaitForPropertyValue(elementQry, "text", "t", 100, 1000) -``` - -Back to Top -

- -##ZoomIn(AndroidQuery[] query) - -Taps on the zoom in button of a ZoomControls. - -Supports views and subclasses of **android.widget.ZoomControls**. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -### Example - -```C# -this.ActiveDevice.Android.ZoomIn(elementQry); -``` - -```VB -Me.ActiveDevice.Android.ZoomIn(elementQry) -``` - -Back to Top -

- -##ZoomOut(AndroidQuery[] query) - -Taps on the zoom out button of a ZoomControls. - -Supports views and subclasses of **android.widget.ZoomControls**. - -### Parameters - -*query (AndroidQuery)* - Identifies an element uniquely. - -### Example - -```C# -this.ActiveDevice.Android.ZoomOut(elementQry); -``` - -```VB -Me.ActiveDevice.Android.ZoomOut(elementQry) -``` - -Back to Top -

\ No newline at end of file diff --git a/docs/test-studio-mobile/api-reference/creating-queries.md b/docs/test-studio-mobile/api-reference/creating-queries.md deleted file mode 100644 index 41a78af9..00000000 --- a/docs/test-studio-mobile/api-reference/creating-queries.md +++ /dev/null @@ -1,261 +0,0 @@ ---- -title: Creating Queries -page_title: Creating Queries -description: "Telerik Mobile Testing - Creating Queries" -position: -1 -publish: true -slug: ms-create-query ---- - -# Creating queries - - - -Queries are used to select a view (Native or Web). - -When a query is executed, all elements matching the query are stored in an internal array. By default the element at index 0 is used for any operations to be performed. This index can be manually specified in the query by setting index. - -*Note: The properties are case sensitive, you should use them in the queries as they are defined in your application.* - -> A *Dictionary* data structure is used in the sample code lines below. It is necessary to add a reference to the project of the *System.Collections.Generic* namespace. - -```C# -{ Class = "TYPE", Index=2 } -``` - -```VB -{.Class = "TYPE", .Index=2 } -``` - - - - -## Android - -Android queries are objects that define one or more properties to match in a **android.view.View**. If a view is found where all properties match, the requested operation is performed on that view. If multiple views with matching properties are found, the operation is performed on the first view found to be a match. - -```C# -AndroidQuery query = new AndroidQuery(){Properties = new Dictionary(){ {  "propertyName1" , "expectedValue"}, {"propertyName2" , "expectedValue2"} } }; -``` - -```VB -Dim query As New AndroidQuery() -query.Properties.Add("propertyName1", "expectedValue") -query.Properties.Add("propertyName2", "expectedValu2") -``` - -Sometimes it is necessary to locate a view using supplemental information, such as a class type (android.view.View, android.widget.Button, etc). This can be done as follows: - -```C# -// TYPE can be android.view.View, android.widget.Button, etc. -AndroidQuery query = new AndroidQuery(){Class="TYPE"}; -``` -```VB - -Dim query As New AndroidQuery() -query.Class="TYPE" -``` - -Queries for a class type will find views of that type, and views that derive from that type in their inheritance chain. It is possible to define a query that only locates views with an exact class type, excluding parent class types. - -```C# -// TYPE can be android.view.View, android.widget.Button, etc. -AndroidQuery query = new AndroidQuery(){Class="TYPE", ExactClass = true}; -``` -```VB -Dim query As New AndroidQuery() With {.Class = "TYPE", .ExactClass = True} -``` - -Queries for class type can be combined with queries for property values. - -```C# -{% raw %} -AndroidQuery query = new AndroidQuery(){Class="android.widget.Button", Properties = new Dictionary(){{"text", "Button1"}}}; -{% endraw %} -``` -```VB -Dim query As New AndroidQuery() With {.Class = "android.widget.Button"} -query.Properties.Add("text", "Button 1") -``` - - -You can query for a control using the id specified in a layout XML file. As an example, to query for the control specified as: - -```XML - -``` - -format your query like: - -```C# -{% raw %} -AndroidQuery query = new AndroidQuery(){Class="TYPE", Properties = new Dictionary(){{"ID", "myControl"}}}; -{% endraw %} -``` -```VB -Dim query As New AndroidQuery() -query.Properties.Add("ID", "myControl") -``` - -**Chained queries** can be used to perform complex queries that require many query types. A chained query is an array of single queries. Each query of the array represents a child of the previous query in the array. The first query represents a child of the top-most view. - -```C# -//Finds the first android.widget.ExpandableListView, then search inside of it for android.widget.Button with index 10 -AndroidQuery[] chainedQuery = new AndroidQuery[] { new AndroidQuery(){Class = "TYPE"}, new AndroidQuery() {Class = "TYPE", Index = 10} } ; -``` -```VB -Dim chainedQuery As AndroidQuery() = New AndroidQuery() {New AndroidQuery() With {.Class = "TYPE"}, New AndroidQuery() With {.Class = "TYPE", .Index=10}} -``` - -Back to Top -
- - -## iOS - -iOS queries are objects that define one or more properties to match in a UIView. If a view is found where all properties match, the requested operation is performed on that view. If multiple views with matching properties are found, the operation is performed on the first view found to be a match. - -```C# -IOSQuery query = new IOSQuery(){Properties = new Dictionary(){ {  "propertyName1" , "expectedValue"}, {"propertyName2" , "expectedValue2"} } }; -``` -```VB -Dim query As New IOSQuery() -query.Properties.Add("propertyName1", "expectedValue") -query.Properties.Add("propertyName2", "expectedValu2") -``` -Sometimes it is necessary to locate a view using supplemental information, such as a class type (UIView, UIButton, etc). This can be done as follows: - -```C# -// TYPE can be UIView, UIButton, etc. -IOSQuery query = new IOSQuery(){Class="TYPE"}; -``` -```VB -Dim query As New IOSQuery() With {.Class="Type"} -``` - -Queries for a class type will find views of that type, and views that derive from that type in their inheritance chain. It is possible to define a query that only locates views with an exact class type, excluding parent class types. - -```C# -//TYPE can be UIView, UIButton, etc -IOSQuery query = new IOSQuery(){Class="TYPE", ExactClass = true}; -``` -```VB -Dim query As New IOSQuery() With { .Class="Type", .ExactClass = True} -``` - -Queries for class type can be combined with queries for property values. - -```C# -{% raw %} -IOSQuery query = new IOSQuery(){Class="UIButton", Properties = new Dictionary(){{"currentTitle", "Button 1"}}}; -{% endraw %} -``` -```VB -Dim query As New AndroidQuery() -query.Class="android.widget.Button" -query.Properties.Add("text", "Button 1") -``` - -**Chained queries** can be used to perform complex queries that require many query types. A chained query is an array of single queries. Each query of the array represents a child of the previous query in the array. The first query represents a child of the window. - -```C# -//Finds the first UITableView, then search inside of it for UITableViewCell with index 10 -IOSQuery[] chainedQuery = new IOSQuery[] { new IOSQuery(){Class = "UITableView"}, new IOSQuery() {Class = "UITableViewCell", Index = 10} } ; -``` -```VB -Dim chainedQuery As IOSQuery() = New IOSQuery() {New IOSQuery() With {.Class = "UITableView"}, New IOSQuery() With {.Class = "UITableViewCell", .Index=10}} -``` - -Back to Top -
- -## Web - -Web queries are objects that define one or more properties to match in a **Html element**. If an element is found where all properties match, the requested operation is performed on that element. If multiple elements with matching properties are found, the operation is performed on the first element found to be a match. - -Sometimes it is necessary to locate an element using supplemental information, such as a ClassName (ui-autocomplete). This can be done as follows: - -```C# -//Search for html element with ClassName ui-autocomplete -WebQuery query = new WebQuery() {ClassName = "ui-autocomplete"}; -``` -```VB -Dim query As New WebQuery() With { .ClassName = "ui-autocomplete" } -``` - -or by ID - -```C# -//Search for html element with ID ui-autocomplete -WebQuery queryById = new WebQuery() {Id = "ui-autocomplete"}; -``` -```VB -Dim queryById As New WebQuery() With { .Id = "ui-autocomplete" } -``` - -or by XPath - - -```C# -//Search for html element with XPath @"//*[@id=""c1""]/div[1]/div[1]/a" -WebQuery queryByXpath = new WebQuery() { XPath = @"//*[@id=""c1""]/div[1]/div[1]/a" }; -``` -```VB -Dim queryByXpath As New WebQuery() With { .XPath = "//*[@id=""c1""]/div[1]/div[1]/a" } -``` - -or by TagName and Index - -```C# -//Search for html element with TagName a -WebQuery queryByTagNameAndIndex = new WebQuery() { TagName = "a", Index = 1 }; -``` -```VB -Dim queryByTagNameAndIndex As New WebQuery() With { .TagName = "a", .Index = 1 } -``` - -You can also combine them into one query - -```C# -//Search for html element with ClassName ui-autocomplete, ID ui-autocomplete, TagName a and Index 1 -WebQuery query = new WebQuery() {ClassName = "CLASSNAME", Id = "ID", TagName = "TAGNAME", Index = 1 }; -``` -```VB -Dim query As New WebQuery() With { .ClassName = "CLASSNAME", .Id = "ID", .TagName = "a", .Index = 1 } -``` - -**Chained queries** can be used to perform complex queries that require many query types. A chained query is an array of single queries. Each query of the array represents a child of the previous query in the array. The first query represents a child of the window. - - -```C# -//Finds the first element with ClassName col1, then search inside of it for an element with TagName a and index 1 -WebQuery[] chainedQuery = new WebQuery[] {new WebQuery(){ClassName = "col1"}, new WebQuery() { TagName = "a", Index = 1 } }; -``` -```VB -Dim chainedQuery As WebQuery() = New WebQuery() {New WebQuery() With { .ClassName = "col1" }, New WebQuery() With { .TagName = "a", .Index=1 }} -``` - -Back to Top -
- -## Hybrid - -Hybrid queries are a combination of native and web queries. A native query (iOS, Android) is needed to identify the native web view that hosts the app and a web query to identify a specific web element. If the hybrid app is hosted inside only one web view, then the native view query can be skipped: - -```C# -// This will perform a web tap action on the provided element located inside the first found WebView object in the app. -this.ActiveDevice.Web.Tap(this.Elements.MyScreen.webview.BUTTON); - -// This will perform a web tap action on the provided element located inside a specific WebView object in the app. -this.ActiveDevice.Web.Tap(this.Elements.MyScreen.webview.View, this.Elements.MyScreen.webview.BUTTON); -``` -```VB -' Me.ActiveDevice.Web.Tap(Elements.MyScreen.webview.BUTTON) - -' Me.ActiveDevice.Web.Tap(Elements.MyScreen.webview.View, Elements.MyScreen.webview.BUTTON) -``` - -Back to Top -
diff --git a/docs/test-studio-mobile/api-reference/hybrid.md b/docs/test-studio-mobile/api-reference/hybrid.md deleted file mode 100644 index b4bef1e8..00000000 --- a/docs/test-studio-mobile/api-reference/hybrid.md +++ /dev/null @@ -1,1480 +0,0 @@ ---- -title: Hybrid -page_title: Hybrid -description: "Telerik Mobile Testing - API Reference - Hybrid" -position: 5 -publish: true -slug: ms-hybrid-api ---- - -# Hybrid - -Methods - - -Methods for automating hybrid applications. - -Since hybrid app is a web app running inside a native container (WebView), hybrid API methods that target specific element accept a web query to identify the element. If the app contains only one native container (WebView), using a API overload method that accepts a WebQuery object to identify that element suffices. However, if the app implements more than one native containers (WebView), finding an element inside the different native containers requires using and API overload method that identifies the native container first in which the web element is located. Below you can find an example of 2 overloads of the Tap hybrid API method: - -```C# -// This will perform a web tap action on the provided element located inside the first found WebView object in the app. -this.ActiveDevice.Web.Tap(this.Elements.MyScreen.webview.BUTTON); - -// This will perform a web tap action on the provided element located inside a specific WebView object in the app. -this.ActiveDevice.Web.Tap(this.Elements.MyScreen.webview.View, this.Elements.MyScreen.webview.BUTTON); -``` - -```VB -' Me.ActiveDevice.Web.Tap(Elements.MyScreen.webview.BUTTON) - -' Me.ActiveDevice.Web.Tap(Elements.MyScreen.webview.View, Elements.MyScreen.webview.BUTTON) -``` - - > For brevity, API methods in this topic are listed with their WebView/Element overloads. However, based on the actual scenario to be tested any of the other available overloads can be used instead. - -##Methods - - -## Click(Query[] viewQuery, Query[] elementQuery) - -Perform a click on an element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Example - -```C# -// This will perform a click action on the provided web element -this.ActiveDevice.Web.Click(Elements.MyScreen.WebView.TestField); -``` - -```VB -Me.ActiveDevice.Web.Click(Elements.MyScreen.WebView.TestField) -``` - -Back to Top -

- - -## DoubleClick(Query[] viewQuery, Query[] elementQuery) - -Perform a double click on an element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Example - -```C# -// This will perform a double-click on the provided web element -this.ActiveDevice.Web.DoubleClick(Elements.MyScreen.WebView.TestField); -``` - -```VB -Me.ActiveDevice.Web.DoubleClick(Elements.MyScreen.WebView.TestField) -``` - -Back to Top -

- - -## Drag(Query[] viewQuery, Query[] elementQuery, int offsetX, int offsetY) - -Drag an element to a specific point. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*offsetX (int)* - Destination point horizontal offset from element center. - -*offsetY (int)* - Destination point vertical offset from element center. - -### Example - -```C# -// This will drag a draggable web element to 100x,300y point realtive to the center of the provided element -this.ActiveDevice.Web.Drag(Elements.MyScreen.WebView.Drag, 100,300); -``` - -```VB -Me.ActiveDevice.Web.Drag(Elements.MyScreen.WebView.Drag, 100, 300) -``` - -Back to Top -

- - -## DragToDisplacement(Query[] viewQuery, Query[] elementQuery, TapPoint fromPoint, TapPoint displacement, int steps) - -Performs drag gesture on element specified by the query to a displacement point from that element - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*fromPoint (TapPiont)* - Starting point of drag gesture. If null, defaults to center point of element. - -*displacement (TapPiont)* - Displacement, represented as point object. If null, defaults to center point of element. - -*steps (int)* - The amount of touches to generate to complete the drag gesture. Valid values are in the range: 3 - 1000. - -### Example - -```C# -// This will drag an element in web view from 0x, 0y point (relative to the element) to 100x, 300y point relative to the first TapPoint(0,0) in 150 simulated touches -this.ActiveDevice.Web.DragToDisplacement(Elements.MyScreen.WebView.DragElement, new TapPoint(0,0), new TapPoint(100,300), 150); -``` - -```VB -Me.ActiveDevice.Web.DragToDisplacement(Elements.MyScreen.WebView.DragElement, New TapPoint(0, 0), New TapPoint(100, 300), 150) -``` - -Back to Top -

- - -## DragToElement(Query[] viewQuery, Query[] dragElementQuery, Query[] toElementQuery) - -Drag an element over another element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*dragElementQuery (WebQuery)* - WebQuery object that identifies element to be dragged. The element to be dragged must be draggable. - -*toElementQuery (WebQuery)* - WebQuery object that identifies element the dragged element will be dragged over. - -### Example - -```C# -// Drag element `DragElement` on top of element `TestField` -this.ActiveDevice.Web.DragToElement(Elements.MyScreen.WebView.DragElement, Elements.MyScreen.WebView.TestField); -``` - -```VB -Me.ActiveDevice.Web.DragToElement(Elements.MyScreen.WebView.DragElement, Elements.MyScreen.WebView.TestField) -``` - -Back to Top -

- - -## DragToPoint(Query[] viewQuery, Query[] elementQuery, TapPoint fromPoint, TapPoint toPoint, int steps ) - -Drag an element to a specified point. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*fromPoint (TapPiont)* - Starting point of drag gesture. If null, defaults to center point of element. - -*displacement (TapPiont)* - Finishing point of drag gesture. If null, defaults to center point of element. - -*steps (int)* - The amount of touches to generate to complete the drag gesture. Valid values are in the range: 3 - 1000. - -### Example - -```C# -// This will drag an element in web view from 0x, 0y point inside the specified element to 100x, 300y point relative to the element in 150 simulated touches -this.ActiveDevice.Web.DragToPoint(Elements.MyScreen.WebView.DragElement, new TapPoint(0,0), new TapPoint(100,300), 150); -``` - -```VB -Me.ActiveDevice.Web.DragToPoint(Elements.MyScreen.WebView.DragElement, New TapPoint(0, 0), New TapPoint(100, 300), 150) -``` - -Back to Top -

- - -## ExecuteScript(Query[] viewQuery, string script, Query[] elementQuery) - -Execute a script into a web view. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*script (string)* - String that is transferred to application under test and evaled into current web view. - -*elementQuery (WebQuery)* - WebQuery for target element. Element defined by this parameter can be accessed using `targetElement` variable inside the script parameter string. - -### Example - -```C# -// Executes the script of the string parameter on the web view under test. Deprecated: Use getScriptResult instead. -this.ActiveDevice.Web.ExecuteScript("document.getElementsByTagName(\"div\")"); -``` - -```VB -Me.ActiveDevice.Web.ExecuteScript("document.getElementsByTagName(""div"")") -``` - -Back to Top -

- - -## GetAttribute(Query[] viewQuery, Query[] elementQuery, string attrName) - -Get attribute value of specific element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*attrName (string)* - Name of the attribute. - -### Return Value - -A string containing the value of the specified attribute. - -### Example - -```C# -// Get the `id` attribute value of `DragElement` as string -string idAttribute = this.ActiveDevice.Web.GetAttribute(Elements.MyScreen.WebView.DragElement, "id"); -``` - -```VB -Dim idAttribute As String = Me.ActiveDevice.Web.GetAttribute(Elements.MyScreen.WebView.DragElement, "id") -``` - -Back to Top -

- - -## GetChecked(Query[] viewQuery, Query[] elementQuery) - -Gets checked state of specific element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -A bool containing the checked state of specific element. - -### Example - -```C# -// Returns the checked state of the checkBox as boolean -bool state = this.ActiveDevice.Web.GetChecked(Elements.MyScreen.WebView.CheckBox); -``` - -```VB -Dim state As Boolean = Me.ActiveDevice.Web.GetChecked(Elements.MyScreen.WebView.CheckBox) -``` - -Back to Top -

- - - -## GetColumnCount(Query[] viewQuery, Query[] elementQuery, uint rowIndex) - -Get the number of cells of a specific row in a table. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*rowIndex (unit)* - Index of row which cells count is needed. - -### Return Value - -The number of cells in a particular row in a table element. - -### Example - -```C# -// Returns the number of columns in the specified table row. -uint count = this.ActiveDevice.Web.GetColumnCount(Elements.MyScreen.WebView.TableView, 1); -``` - -```VB -Dim count As UInteger = Me.ActiveDevice.Web.GetColumnCount(Elements.MyScreen.WebView.TableView, 1) -``` -Back to Top -

- - -## GetHtml(Query[] viewQuery, Query[] elementQuery) - -Get inner html of specific element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -A string containing the inner html of the specified element. - -### Example - -```C# -// Gets the inner HTML of CheckBox -string html = this.ActiveDevice.Web.GetHtml(Elements.MyScreen.WebView.CheckBox); -``` - -```VB -Dim html As String = Me.ActiveDevice.Web.GetHtml(Elements.MyScreen.WebView.CheckBox) -``` - -Back to Top -

- - -## GetInError(Query[] viewQuery, Query[] elementQuery) - -Gets error state of audio/video element. This function returns inconsistent results for mobile browsers. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -True if control is in error state, otherwise false. - -### Example - -```C# -bool statePlayer = this.ActiveDevice.Web.GetInError(Elements.MyScreen.WebView.Player); -``` - -```VB -Dim statePlayer As Boolean = Me.ActiveDevice.Web.GetInError(Elements.MyScreen.WebView.Player) -``` - -Back to Top -

- - -## GetPaused(Query[] viewQuery, Query[] elementQuery) - -Get paused state of audio/video element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -True if audio/video element is paused, otherwise false. - -### Example - -```C# -// Get the paused state of a `video` element. -bool statePaused = this.ActiveDevice.Web.GetPaused(Elements.MyScreen.WebView.Player); -``` - -```VB -Dim statePaused As Boolean = Me.ActiveDevice.Web.GetPaused(Elements.MyScreen.WebView.Player) -``` - -Back to Top -

- - -## GetRowCount(Query[] viewQuery, Query[] elementQuery) - -Get number of rows of a table element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -The number of rows of a table element. - -### Example - -```C# -// Returns the number of rows in the TableView -uint rowCount = this.ActiveDevice.Web.GetRowCount(Elements.MyScreen.WebView.TableView); -``` - -```VB -Dim rowCount As UInteger = Me.ActiveDevice.Web.GetRowCount(Elements.MyScreen.WebView.TableView) -``` - -Back to Top -

- - -## GetScriptResult(Query[] viewQuery, string script, Query[] elementQuery) - -Executes a script into a web view and returns the result. - -**Note:** In order to use this method you should add a reference assembly to **Microsoft.CSharp.dll** and **System.Core.dll** from the [project settings]({% slug ms-project-settings%}#References). - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*script (string)* - String that is transferred and evaled into current web view. - -*elementQuery (WebQuery)* - WebQuery for target element. Element defined by this parameter can be accessed using `targetElement` variable inside the script parameter string. - -### Example - -```C# -// This will execute the script of the string parameter and save value of the element id property as object. -object result = this.ActiveDevice.Web.GetScriptResult("document.getElementsByTagName(\"div\").id"); -``` - -```VB -Dim result As Object = Me.ActiveDevice.Web.GetScriptResult("document.getElementsByTagName(""div"").id") -``` - -### Return Value - -Result of script execution. - -Back to Top -

- - -## GetSelectedIndex(Query[] viewQuery, Query[] elementQuery) - -Get selected index of a select element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -Array of numbers containing the selected indexes. - -### Example - -```C# -// Get the selected index of the `Select` element (multiple items can be selected) -uint[] index = this.ActiveDevice.Web.GetSelectedIndex(Elements.MyScreen.WebView.Select); -``` - -```VB -Dim index As UInteger() = Me.ActiveDevice.Web.GetSelectedIndex(Elements.MyScreen.WebView.Select) -``` - -Back to Top -

- - -## GetSelectedText(Query[] viewQuery, Query[] elementQuery) - -Get selected text values of select element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -Array of strings containing the selected text(s). - -### Example - -```C# -// Get the selected text of the `Select` element (multiple items can be selected) -string[] selectedText = this.ActiveDevice.Web.GetSelectedText(Elements.MyScreen.WebView.Select); -``` - -```VB -Dim selectedText() As String = Me.ActiveDevice.Web.GetSelectedText(Elements.MyScreen.WebView.Select) -``` - -Back to Top -

- - -## GetSelectedValue(Query[] viewQuery, Query[] elementQuery) - -Get selected value strings of select element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -Array of strings containing the selected value(s). - -### Example - -```C# -// Get the selected value of the `Select` element (multiple items can be selected) -string[] selectedValue = this.ActiveDevice.Web.GetSelectedValue(Elements.MyScreen.WebView.Select); -``` - -```VB -Dim selectedValue As String() = Me.ActiveDevice.Web.GetSelectedValue(Elements.MyScreen.WebView.Select) -``` - -Back to Top -

- - -## GetStyle(Query[] viewQuery, Query[] elementQuery, string styleProp) - -Get the value of a specific style property. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*styleProp (string)* - Name of the style attribute. - -### Return Value - -The value of requested style property. - -### Example - -```C# -// Get the width value. -string style = this.ActiveDevice.Web.GetStyle(Elements.MyScreen.WebView.TestField, "width"); -``` - -```VB -Dim style As String = Me.ActiveDevice.Web.GetStyle(Elements.MyScreen.WebView.TestField, "width") -``` - -Back to Top -

- - -## GetTextContent(Query[] viewQuery, Query[] elementQuery) - -Get text content of specific element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -A string containing the text content value. - -### Example - -```C# -// This will return the text content of the test element -string textContent = this.ActiveDevice.Web.GetTextContent(Elements.MyScreen.WebView.TestField); -``` - -```VB -Dim textContent As String = Me.ActiveDevice.Web.GetTextContent(Elements.MyScreen.WebView.TestField) -``` - -Back to Top -

- - -## GetValue(Query[] viewQuery, Query[] elementQuery) - -Get value of specific element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Return Value - -A string containing the value of the specified element. - -### Example - -```C# -// This will return the value of the test element -string valueOfElement = this.ActiveDevice.Web.GetValue(Elements.MyScreen.WebView.TestField); -``` - -```VB -Dim valueOfElement As String = Me.ActiveDevice.Web.GetValue(Elements.MyScreen.WebView.TestField) -``` - -Back to Top -

- - -## HoverOver(Query[] viewQuery, Query[] elementQuery) - -Perform a mouse hover over a web element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Example - -```C# -// Perform a mouse hover action -this.ActiveDevice.Web.HoverOver(Elements.MyScreen.WebView.TestField); -``` - -```VB -Me.ActiveDevice.Web.HoverOver(Elements.MyScreen.WebView.TestField) -``` - -Back to Top -

- - - -## PinchIn(Query[] viewQuery, Query[] elementQuery, TapPoint point, int distance, int steps) - -Perform pinch in gesture at the specified location within the element specified by the query. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*point (TapPoint)* - Coordintes of pinch center point. If null, defaults to center point of element. - -*distance (int)* - Distance away from the center to start. Minimum value is 20. - -*steps (int)* - The amount of touches to generate to complete the pinch. Valid values are in the range: 3 - 1000. - -### Example - -```C# -// Perform a pinch in over the test element where the pinch will start at 100x, 100y point within the element and will pinchIn 20px in 50 simulated touches -this.ActiveDevice.Web.PinchIn(Elements.MyScreen.WebView.TestField, new TapPoint(100,100), 20, 50); -``` - -```VB -Me.ActiveDevice.Web.PinchIn(Elements.MyScreen.WebView.TestField, New TapPoint(100, 100), 20, 50) -``` - -Back to Top -

- - -## PinchOut(Query[] viewQuery, Query[] elementQuery, TapPoint point, int distance, int steps) - -Perform pinch out gesture at the specified location within the element specified by the query. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*point (TapPoint)* - Coordintes of pinch center point. If null, defaults to center point of element. - -*distance (int)* - Distance away from the center to start. Minimum value is 20. - -*steps (int)* - The amount of touches to generate to complete the pinch. Valid values are in the range: 3 - 1000. - -### Example - -```C# -// Perform a pinch out over the test element where the pinch out will start at 100x,100y point within the element and will pinchOut 20px in 50 simulated touches -this.ActiveDevice.Web.PinchOut(Elements.MyScreen.WebView.TestField, new TapPoint(100,100), 20, 50); -``` - -```VB -Me.ActiveDevice.Web.PinchOut(Elements.MyScreen.WebView.TestField, New TapPoint(100, 100), 20, 50) -``` - -Back to Top -

- - -## PressKey(Query[] viewQuery, Query[] elementQuery, int keyCode, bool alt, bool ctrl, bool shift) - -Invoke press key event on specific element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*keyCode (int)* - Code of the key. - -*alt (boolean)* - Boolean value indicating whether ALT is pressed. The default is false. - -*ctrl (boolean)* - Boolean value indicating whether CTRL is pressed. The default is false. - -*shift (boolean)* - Boolean value indicating whether SHIFT is pressed. The default is false. - -### Example - -```C# -// This will invoke the press CAPS LOCK key event (with code 20) over the test element -this.ActiveDevice.Web.PressKey(Elements.MyScreen.WebView.TestField, 20); -``` - -```VB -Me.ActiveDevice.Web.PressKey(Elements.MyScreen.WebView.TestField, 20) -``` - -Back to Top -

- - -## RightClick(Query[] viewQuery, Query[] elementQuery) - -Perform a right click on an element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - Query object that identifies an element uniquely. - -### Example - -```C# -// Perform a right click on the test element -this.ActiveDevice.Web.RightClick(Elements.MyScreen.WebQuery.TestField); -``` - -```VB -Me.ActiveDevice.Web.RightClick(Elements.MyScreen.WebQuery.TestField) -``` - -Back to Top -

- - -## Scroll(Query[] viewQuery, Query[] elementQuery, int x = 0, int y = 0) - -Scroll the web view to any element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*x (int)* - The X confidantes of the specific element. - -*y (int)* - The Y confidantes of the specific element. - -### Example - -```C# -// Scroll to a 300x, 300y point relative to the element -this.ActiveDevice.Web.Scroll(Elements.MyScreen.WebView.TestField, 300, 300); -``` - -```VB -Me.ActiveDevice.Web.Scroll(Elements.MyScreen.WebView.TestField, 300, 300) -``` - -Back to Top -

- - -## ScrollToElement(Query[] viewQuery, Query[] elementQuery) - -Scroll the web page to any element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -### Example - -```C# -// Scroll to the test element to make it visible on the screen -this.ActiveDevice.Web.ScrollToElement(Elements.MyScreen.WebView.TestField); -``` - -```VB -Me.ActiveDevice.Web.ScrollToElement(Elements.MyScreen.WebView.TestField) -``` - -Back to Top -

- - -## SetAttribute(Query[] viewQuery, Query[] elementQuery, string attrName, string attrValue) - -Set attribute of specific element to a specific value. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*attrName (string)* - Name of the attribute. - -*attrValue (string)* - Value to be set. - -### Example - -```C# -// Set the id attribute of the test element to test -this.ActiveDevice.Web.SetAttribute(Elements.MyScreen.WebView.TestField, "id", "test"); -``` - -```VB -Me.ActiveDevice.Web.SetAttribute(Elements.MyScreen.WebView.TestField, "id", "test") -``` - -Back to Top -

- - -## SetChecked(Query[] viewQuery, Query[] elementQuery, bool checkedValue) - -Sets checked state of specific element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - Query object that identifies an element uniquely. - -*checkedValue (boolean)* - Checked state value to be set. - -### Example - -```C# -// Set the state of the checklbox to false -this.ActiveDevice.Web.SetChecked(Elements.MyScreen.WebView.CheckBox, false); -``` - -```VB -Me.ActiveDevice.Web.SetChecked(Elements.MyScreen.WebView.CheckBox, False) -``` - -Back to Top -

- - -## SetHtml(Query[] viewQuery, Query[] elementQuery, string html) - -Set inner html of specific element. - -### Parameters - -*viewQuery (AndroidQuery or IOSQuery)* - native query for target WebView container object. - -*elementQuery (WebQuery)* - WebQuery object that identifies an element uniquely. - -*html (sting)* - The Html that will be inserted in the specific element. - -### Example - -```C# -// Set the '
- - - - -
![Mobile Studio Context Menu](/img/test-studio-mobile/getting-started-mb/project-explorer/mobile-studio-context-menu.png)![Context Menu](/img/test-studio-mobile/getting-started-mb/project-explorer/fig6.png)
- - -The context menu options (based on the target) also feature: - -* Rename a project, folder, test or test list. -* Delete, Cut, Copy and Paste operations of a folder or test. -* Open a project, folder, test or test list in Windows explorer. -* Open a test or test list in Test Explorer. -* Open References in [Project Settings]({% slug ms-project-settings%}) where you can see a list of existing project references, add a new reference, or delete an existing one. -* Add [Code Item]({% slug ms-code-item%}) -* Add [Code-Behind File]({% slug ms-code-behind%}) - -Tests and folders support drag-drop to change the logical structure of the project: - -![Mobile Studio Drag Drop](/img/test-studio-mobile/getting-started-mb/project-explorer/mobile-studio-drag-drop.png) - -Project explorer also features keyboard support that includes: - -* Selection navigation amongst tests and folders with the **arrow keys** (up and down). -* Expanding and collapsing parent folders with the **arrow keys** (left and right). -* Cut (Ctrl+X), Copy (Ctrl+C) and Paste (Ctrl+V) of folders and tests. -* Opening a selected test with **Enter** key. -* Deleting a test or folder with the **Delete** key. -* Renaming project, folder or test with **F2** key. -* Multi item selection using the Ctrl or Shift keys. - -Searching through tests is supported by a search field at the top right corner of the pane. The search text is dynamic and once typing starts, items will be filtered with every key stroke. - -![Mobile Studio Search Field](/img/test-studio-mobile/getting-started-mb/project-explorer/mobile-studio-search-field.png) - -The Top right corner of the Project explorer pane is reserved for visibility controlling buttons. The pane can be docked, pinned or closed. In addition it can be moved by drag-drop of its header or resized by drag-drop of its borders. - -![Mobile Studio Project Drag](/img/test-studio-mobile/getting-started-mb/project-explorer/mobile-studio-project-drag.png) - -If the Project explorer pane is accidently closed or in case a layout reset is needed, the View menu can be used - -![Mobile Studio View Menu](/img/test-studio-mobile/getting-started-mb/project-explorer/mobile-studio-view-menu.png) - -See Also --------- - -* [Getting Started Native Apps]({% slug ms-getting-started-native%}) -* [Getting Started Web Apps]({% slug ms-getting-started-web%}) -* [Test Explorer]({% slug ms-test-explorer%}) -* [Elements Explorer]({% slug ms-elements-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/features/project-settings.md b/docs/test-studio-mobile/features/project-settings.md deleted file mode 100644 index f270b91e..00000000 --- a/docs/test-studio-mobile/features/project-settings.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Project Settings -page_title: Project Settings -description: Project Settings -publish: true -position: 7 -slug: ms-project-settings -previous_url: /test-studio-mobile/getting-started-mb/project-settings ---- -#Project Settings - -In the Test Studio Mobile ribbon click the gear icon to display the settings dialog. - -Use this dialog to adjust the project settings. - -![Open settings dialog](/img/test-studio-mobile/getting-started-mb/settings/fig1.png) - -##General - -In this section you can adjust basic settings of the project. - -![General](/img/test-studio-mobile/getting-started-mb/settings/fig2.png) - -* **USB Connectivity** - * iOS USB Connect time out - adjust the time out for iOS USB connection. - -* **Message Server** - * Message server IP - the IP address that the local [message server]({% slug ms-message-server%}) will use for communication. Use "localhost" to auto-bind the first IP address in the DNS list (default). - - * Message server port - The TCP/IP port that the local [message server]({% slug ms-message-server%}) will use for communication. - -* **Web Proxy** - * Web proxy port - The TCP/IP port that the Web proxy will use for communication with your mobile device. - -##References - -Here you can see a list of existing project references, add a new reference, or delete an existing one. - -![References](/img/test-studio-mobile/getting-started-mb/settings/fig3.png) - - -See Also --------- - -+ [Message Server]({% slug ms-message-server%}) -+ [Output Pane]({% slug ms-output-pane%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/features/step-builder.md b/docs/test-studio-mobile/features/step-builder.md deleted file mode 100644 index 5bd408a4..00000000 --- a/docs/test-studio-mobile/features/step-builder.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Step Builder -page_title: Step Builder -description: "Description of Step Builder" -publish: true -position: 5 -slug: ms-step-builder -previous_url: /test-studio-mobile/test-recording/step-builder ---- - -#Step Builder - -The Step Builder is a feature that allows you to add steps to your test manually. In order to access it click the **Step Builder** tab in the lower right corner. The Step Builder appears. - -> You should select an element from the [DOM Explorer]({% slug ms-dom-explorer%}) in order to add a step for that element. - -> Some of the Step Builder steps are available only when a test is in record mode. - -![Select Element](/img/test-studio-mobile/test-recording/step-builder/fig6.png) - -If no element is selected from the DOM only the common step suggestions appear. - -![step builder](/img/test-studio-mobile/test-recording/step-builder/fig1.png) - -The Step Builder is a context aware feature and the steps that are only related to the selected element appear. The main categories are Actions, Verifications and Wait. - -
- - - - - -
![Actions](/img/test-studio-mobile/test-recording/step-builder/fig2.png)

**Actions**
![Verifications](/img/test-studio-mobile/test-recording/step-builder/fig3.png)

**Verifications**
![Wait](/img/test-studio-mobile/test-recording/step-builder/fig4.png)

**Wait**
- -You can add a step by double clicking on the step or by clicking the **Add Step** button. - -![add step](/img/test-studio-mobile/test-recording/step-builder/fig5.png) - - -See Also --------- - -+ [DOM Explorer]({% slug ms-dom-explorer%}) -+ [Project Explorer Pane]({% slug ms-project-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/features/test-explorer.md b/docs/test-studio-mobile/features/test-explorer.md deleted file mode 100644 index 93f2e365..00000000 --- a/docs/test-studio-mobile/features/test-explorer.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Test Explorer -page_title: Test Explorer -description: Test explorer functioanlity -slug: ms-test-explorer -tags: test, explorer, mobile -publish: true -position: 2 -previous_url: /test-studio-mobile/getting-started-mb/test-explorer ---- -#Test Explorer - -This section is dedicated to the Test Exlorer UI and functionality. - -The Test Explorer pane shows open tests and the steps of the currently selected open test. The explorer features the following: - -1. Active step column - a marker in this column shows the currently active test step. In recording mode this marker shows the position where the next recorded step will be added in the list. Only one step can be active step at a time. - - ![Mobile Studio Active Step](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-active-step.png) - -2. Enabled steps column - check box in front of each step indicates whether it is enabled. Disabled steps are not executed during playback no matter whether the step passes or fails. Multiple steps can be disabled at a time. - - ![Mobile Studio Active Step](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-enabled-steps.png) - -3. Continue on failure steps column - an icon in front of each step indicates whether test execution will continue even if the step fails. Normally, execution stops once a step fails. Multiple steps can be marked as `continue on failure` at a time. - - ![Mobile Studio Continue Failure](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-continue-failure.png) - -4. Expand/Collapse step column - based on the step type different parameters can be tweaked. Expand a step to see the options that can be changed. Only one step can be expanded at a time. - - ![Mobile Studio Expand Step](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-expand-step.png) - -5. Step description column - here the step index as well as a step display name is provided. The step display name is configurable through the properties pane. - - ![Mobile Studio Step Display Name](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-step-displayname.png) - -6. Step type column - indicates the step type - verification, action etc. - - ![Mobile Studio Step Type](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-step-type.png) - -7. Execution log and Error details - those buttons get active after a test is played back. The execution log provides details on a step by step basis. If a failure is detected, the log and the Error details are populated with descriptive error messages - - ![Mobile Studio Error](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-error.png) - -8. Context menu options showed upon right click on a step: - - * Delete, Cut, Copy and Paste operations. - * Run test to specific step, run just selected steps or run from specific step. These options are available only when recording is currently active. - - ![Mobile Studio Step ContextMenu](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-test-contextmenu.png) - -9. Project explorer also features keyboard support that includes: - - * Selection navigation between steps with the **arrow keys** (up and down). - * Deleting a step with the **Delete** key. - * Cut (Ctrl+X), Copy (Ctrl+C) and Paste (Ctrl+V) steps. - * Multi step selection using the Ctrl or Shift keys. - -10. Steps support drag-drop to change their order in the list: - - ![Mobile Studio Step Drag Drop](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-step-dragdrop.png) - -11. Steps can be filtered by step type or step display name - use the filter field and search field at the top right corner of the pane. The search text is dynamic and once typing starts, steps will be filtered with every key stroke. - - ![Mobile Studio Step Filtering](/img/test-studio-mobile/getting-started-mb/test-explorer/mobile-studio-step-filtering.png) - - -See Also --------- - -* [Getting Started Native Apps]({% slug ms-getting-started-native%}) -* [Getting Started Web Apps]({% slug ms-getting-started-web%}) -* [Project Explorer]({% slug ms-project-explorer%}) -* [Elements Explorer]({% slug ms-elements-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/getting-started/native-applications.md b/docs/test-studio-mobile/getting-started/native-applications.md deleted file mode 100644 index 7af067ed..00000000 --- a/docs/test-studio-mobile/getting-started/native-applications.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Native/Hybrid Applications -page_title: Native/Hybrid Applications -description: Getting Started article describing how to record and playback a mobile Test Studio test. -slug: ms-getting-started-native -tags: ios, testing, native, android, hybrid -publish: true -previous_url: /test-studio-mobile/overview-mb/native-applications,/test-studio-mobile/overview-mb -position: 1 ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -# Getting Started with Native/Hybrid iOS and Android Applications in Test Studio Mobile - -This section walks you through the process of recording your first Test Studio Mobile native Android/iOS test and execute it on a physical device. Before you start, please ensure the following: - -* You have access to a Windows machine where Test Studio Ultimate will be installed. The Test Studio Mobile solution currently works only on Windows machines and installs as part of the Test Studio product. -* iOS or Android running physical device. Testable app will be installed on this device. Mobile tests will be executed against this app. -* A Mac machine running Xcode is required to build and deploy the Demo App for iOS to a device. -* A machine running Eclipse or Android Studio to build and deploy the Demo App for Android to a device. -* Cordova CLI is required to be installed to build and deploy the Hybrid Demo App to a device. - -## Agent App Installation - -The Mobile Testing Agent app must be installed on a physical or virtual device that will execute tests against native/hybrid apps. The Agent app connects the testable app on the device with the machine where Test Studio Ultimate is installed. - -* [Agent App Installation]({% slug ms-install-agent-app%}) - -## Connect Agent - -After installing the Mobile Testing Agent app you should connect it to the Test Studio Mobile either by USB or Wi-Fi: - -* [USB Connection]({% slug ms-connect-agent-usb%}) - -* [Wi-Fi Connection]({% slug ms-connect-agent-wifi%}) - -##Install a testable app to a device - -You can either configure your app to be testable or use one of the pre-configured native Demo apps. - -###Configure your app to be testable - -* [Configure Android Native App]({% slug ms-configure-android%}) - -* [Configure iOS Native App]({% slug ms-configure-ios%}) - -* [Configure NativeScript App]({% slug ms-configure-nativescript%}) - -* [Configure Hybrid (AppBuilder) App]({% slug ms-configure-hybrid-appbuilder%}) - -* [Configure Hybrid (Cordova) App]({% slug ms-configure-hybrid%}) - -* [Configure Xamarin iOS App]({% slug ms-configure-xamarin-ios%}) - - > Cordova, Xamarin and NativeScript apps eventually build native iOS/Android apps. As a result the configuration can be made either at the Xamarin/NativeScript level or at the final iOS/Android level. - -###Build a pre-configured Demo app. - -* [Run Demos]({% slug ms-run-demos%}) - -##Record and Playback Test - -Once the above setup is complete you can start recording - -* [Android Native]({% slug ms-record-test-android%}), [iOS Native]({% slug ms-record-test-ios%}), [Android Hybrid]({% slug ms-record-test-android-hybrid%}) or [iOS Hybrid]({% slug ms-record-test-ios-hybrid%}) test. - -or - -* [Playback your test]({% slug ms-quick-execution%}) - - -See Also --------- - -+ [Elements Explorer]({% slug ms-elements-explorer%}) -+ [Test Explorer]({% slug ms-test-explorer%}) -+ [Project Explorer]({% slug ms-project-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/getting-started/web-applications.md b/docs/test-studio-mobile/getting-started/web-applications.md deleted file mode 100644 index e82de195..00000000 --- a/docs/test-studio-mobile/getting-started/web-applications.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Web Applications -page_title: Web Applications -description: Getting Started article describing how to record and playback a mobile Test Studio test. -slug: ms-getting-started-web -tags: ios, testing, started -previous_url: /test-studio-mobile/overview-mb/web-applications -publish: true -position: 1 ---- - -> To help you meet the demands of mobile users, Test Studio offers responsive testing of web applications enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> Check out the technical documentation for responsive application testing in Test Studio. - -{% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} -{% endif %} - -# Getting Started with Web Applications in Test Studio Mobile - -This section walks you through the process of recording your first Test Studio Mobile web test and execute it in a browser (Mobile or Desktop). Before you start, please ensure the following: - -* You have access to a Windows machine where Test Studio Ultimate will be installed. The Test Studio Mobile solution currently works only on Windows machines and installs as part of the Test Studio product. - -## Connect Agent(Browser) - -Connecting a web browser to Test Studio Mobile is a multi-step process that uses a built-in WebProxy. The proxy is responsible for injecting a Web Extension in every page that a web test navigates to. - -* [Web Connection]({% slug ms-configure-tsm%}) - -##Record and Playback Test - -Once the above setup is complete you can start - -* [Recording your test]({% slug ms-record-test-web%}) - -or - -* [Playback your test]({% slug ms-quick-execution%}) - - -See Also --------- - -+ [Elements Explorer]({% slug ms-elements-explorer%}) -+ [Test Explorer]({% slug ms-test-explorer%}) -+ [Project Explorer]({% slug ms-project-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/knowledge-base/android-system-dialog.md b/docs/test-studio-mobile/knowledge-base/android-system-dialog.md deleted file mode 100644 index bbd10223..00000000 --- a/docs/test-studio-mobile/knowledge-base/android-system-dialog.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Android System Dialog -page_title: Android System Dialog -description: "Handle Android System Dialog" -publish: true -position: 0 ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - - -# How To Handle Android System Dialog - -## PROBLEM - -While automating an Android application a system Android dialog pops up. It is not available in the DOM tree and no actions against it are recorded in the test. How such a dialog could be handled? - -## SOLUTION - -The system dialog generated by the OS is not part of the application under test and thus is not present in the DOM tree. This is why there are no actions recorded against it. - -Please find a coded approach how to handle such a dialog. The solution uses two bat files to execute the necessary commands through adb (Android Debug Bridge), a working directory (which is set to "C:\Work\" for this example but any other could be used after adjusting it in the code) and an xml file generated during the test run which contains all elements on the execution device screen. Once the file is copied to the working directory it is parsed and the required button on screen is located by its name. Its center could be located on screen using its coordinates and a tap is sent through adb. - -Create a bat file named getdump.cmd and add the following adb commands in it: - -``` -adb shell uiautomator dump /data/local/tmp/test.xml - -adb pull /data/local/tmp/test.xml -``` - -The first one will get all elements on screen and will save them into "test.xml" file which initially will be stored on the device. The second command pulls the generated xml on the desktop working direcotiry. - -Create a second bat file named dismiss.cmd and add the following adb command: - -``` -adb shell input tap %1 %2 -``` - -This is the tap on screen on specific coordinates sent through adb. - -The sample project which uses the above two files and performs the parcing of the xml file, locates the required button on device screen and tap on it could be downloaded here. - ->Note: The above solution is a sample which demonstrates the approach how to handle system Android dialogs and will require adjustment for the specific dialog you need to automate. \ No newline at end of file diff --git a/docs/test-studio-mobile/knowledge-base/continuous-integration/ci-android.md b/docs/test-studio-mobile/knowledge-base/continuous-integration/ci-android.md deleted file mode 100644 index d3757b4c..00000000 --- a/docs/test-studio-mobile/knowledge-base/continuous-integration/ci-android.md +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Android -page_title: Android CI -description: "Setup CI build for Android apps using Mobile Testing Runner CLI" -publish: true -position: 0 -slug: ms-ci-android -previous_url: /test-studio-mobile/knowledge-base-mb/continuous-integration-mb/ci-android,/test-studio-mobile/knowledge-base-mb/continuous-integration-mb ---- - -#Setup CI build for Android apps using Mobile Testing Runner CLI - -This topic is dedicated to the steps that can be followed to create a Jenkins CI build based on the Mobile Testing Runner CLI. Requirements: - -* [Jenkins Server](http://jenkins-ci.org/) -* Android SDK -* Download and unzip on your local machine [Mobile Runtime package]({% slug ms-download%}#4-Mobile-Runtime) for the OS you are running. This demo uses the Windows package. -* Download and install [Mono](http://www.mono-project.com/download/) (only if you want to run on Mac/Linux) -* Powershell (optional - used in this demo) -* GitHub/TFS/Git Jenkins plugin -* Post-build Actions Jenkins plugin (recommended) - -##Setup Jenkins build: - -1.  Download and install Jenkins on the Windows machine. Install the Jenkins plugins afterwards. - -2.  Open the Jenkins Web UI and create a new Jenkins job. - -> As of release **R1 2018 (v2018.1.130)** you could install and use the Jenkins Mobile Studio Plugin. - -3.  In the **Source Code Management** section, connect to the repository where your tests reside. We will use a Github repository for this demo. - - ![jenkins setup](/img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/android/fig1.png) - -4.  Setup the Windows batch command that will execute the tests. Here, a powershell script module function is used. - - ![batch command](/img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/android/fig2.png) - -The actual script code follows. For brevity, it implements 4 functions that are responsible for different tasks. Note the describing comments in the code. - -``` -$ErrorActionPreference = "Stop" - # Starts the Emulator. - function start-emulator { - # Start an android Emulator. - emulator -avd Emulator51 - - # Wait 2 minutes for the Emulator to load up. Adjust this time depending on the emulator version. - start-sleep -s 120 - - # Call the function that installs the app to test and connects the agent to the message server. - install-connect-apps - } - - # Installs the app and connects the agent to the message server which must be started first. - function install-connect-apps { - # Install the app to test. Change the path to a local store (where you have build the project) or online repository. - adb -s emulator-5554 install -r "Android\Apps\DemoApplicationTesting.apk" - start-sleep -s 10 - - # Start the Mobile Testing agent app. - adb -s emulator-5554 shell monkey -p com.telerik.testing.executionagent -c android.intent.category.LAUNCHER 1 - start-sleep -s 10 - - # Set the location to the Message Server folder (where you have downloaded and unziped it) and start the message server on port 8081. - Set-Location -Path (".\MobileRuntime-Windows\MessageServer") - start-process msgsrv-ctl.bat "stop" - start-sleep -s 5 - start-process msgsrv-ctl.bat "start 8081" - start-sleep -s 5 - - # Connect the Mobile Testing agent to the message server. - adb -s emulator-5554 forward tcp:8082 tcp:8082 - start-sleep -s 10 - node.exe tmtest.js connect --message-server-url ws://localhost:8081 --address localhost:8082 - start-sleep -s 10 - - # Call the function that runs the tests. - run-tests - - # Stop the Message Server - start-process msgsrv-ctl.bat "stop" - } - - # Runs the tests. - function run-tests{ - # Set the location of the MobileRuntime folder (where you have downloaded and unziped it) and execute a run. - Set-Location -Path (".\MobileRuntime-Windows") - - # Run the tests and output results to a json file. - .\Telerik.MobileTesting.Runner.exe /msgServer=ws://localhost:8081 /project=C:\[userName]\MyTestProjectName - /list=C:\[userName]\MyTestProjectName\TestLists\ListName.mtlist - /output=C:\OutputResultsFolder\Results.mtresult /resultType=1 - start-sleep -s 10 - - # If a test fails, stop the Emulator and exit the build with error code. - If($LASTEXITCODE -ne 0) - { - stop-emulator - exit 1 - } - start-sleep -s 10 - # Call the function that stops the emulator. - stop-emulator - } - - # Stops the emulator. - function stop-emulator{ - $processes = @(Get-Process emulator-arm -ErrorAction SilentlyContinue) - foreach ($process in $processes) - { - $process | Stop-Process -force - } - } - - export-modulemember -function start-emulator - -``` - -The **start-emulator** function just launches the Android emulator named *Emulator51*. The emulator must be created prior to running the script. [Android AVD](http://developer.android.com/tools/devices/managing-avds.html) can be used for this task. - -After the emulator is started, the next function in the chain is called. The **install-connect-apps** function does 3 tasks: - ->Before **install-connect-apps** function is called the Mobile Testing Agent app must be [installed]({% slug ms-install-agent-app%}) and the testable аpp must be [configured for testing]({% slug ms-configure-android%}) and available for deployment as built .apk file. - -* Installs the testable App on the launched emulator. This app must be instrumented with the Test Studio Mobile extension and built as described [here]({% slug ms-configure-android%}). - -* Starts the Mobile Testing agent app on the emulator. - -* Connects the Mobile Testing Аgent app to the message server. Since message server is started on port 8081, we use 8082 for the connection. Note that this is the default port for Mobile Testing Agent app USB connection and if you want to use another port, you will have to change it both in the script and in the Mobile Testing Agent app [USB settings]({% slug ms-connect-agent-usb%}). - -The **run-tests** function navigates to a location where test project is stored and then calls a command that executes its tests on the emulator against the testable app. If a test fails the emulator is closed and the build is marked as failed. - -The last function **stop-emulator** just closes the emulator no matter whether the build passes or fails. - -Jenkins also supports emailing build results and build artifacts. Setting up these post-build actions, ensures that the build status (pass or fail) and the actual test results are delivered to the responsible people. - -Add a post build action - to publish JUnit test results report. This will provide results to be visible from Jenkins UI. - -**See Also** - -* [Continuous Integration iOS]({% slug ms-ci-ios%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/knowledge-base/continuous-integration/ci-ios.md b/docs/test-studio-mobile/knowledge-base/continuous-integration/ci-ios.md deleted file mode 100644 index f5192419..00000000 --- a/docs/test-studio-mobile/knowledge-base/continuous-integration/ci-ios.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: iOS -page_title: iOS CI -description: "Setup CI build for iOS apps using Mobile Testing Runner CLI" -publish: true -position: 0 -slug: ms-ci-ios -previous_url: /test-studio-mobile/knowledge-base-mb/continuous-integration-mb/ci-ios ---- - -#Setup CI build for iOS apps using Mobile Testing Runner CLI - -This topic is dedicated to the steps that can be followed to create a Jenkins CI build based on the Mobile Testing Runner CLI. Requirements: - -* [Jenkins Server](http://jenkins-ci.org/) -* Mac OS x 9+ -* Xcode 6+ -* iOS SDK -* Download and unzip on your local machine [Mobile Runtime package]({% slug ms-download%}#4-Mobile-Runtime) for Mac. -* Download and install [Mono](http://www.mono-project.com/download/) -* GitHub/TFS/Git Jenkins plugin -* Post-build Actions Jenkins plugin (recommended) - -##Setup Jenkins build: - -1.  Download and install Jenkins on the Mac machine. Install the Jenkins plugins afterwards. - -2.  Open the Jenkins Web UI and create a new Jenkins job. - -> As of release **R1 2018 (v2018.1.130)** you could install and use the Jenkins Mobile Studio Plugin. - -3.  In the **Source Code Management** section, connect to the repository where your tests reside. We will use a Github repository for this demo. - - ![jenkins setup](/img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/ios/fig1.png) - -4.  Add an Execute Shell build step. - - ![build](/img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/ios/fig2.png) - - In this step add a short script that will start a simulator, install apps in it and execute tests. Note the describing comments in the code. - - > Before the script below is called the Mobile Testing Agent app must be [installed]({% slug ms-install-agent-app%}) and the testable аpp must be [configured for testing]({% slug ms-configure-ios%}) and available for deployment as built .app file. - - - ``` - export PATH=$PATH:/usr/local/bin - - # sudo `-H -u {ROOT_USER}` this command is used to ensure that every command is executed on the same user. Start the desired simulator by its ID. - # You can find a list of available simulators and their IDs by executing `xcrun simctl list`. - # The `|| return 0` pipe is used in order to escape the common error `timeout waiting for device to boot` which will always appear on slower machines. - sudo -H -u {ROOT_USER} open -a Simulator --args -CurrentDeviceUDID {DEVICE_ID} || return 0  - - # In order to ensure the simulator is ready, you can add the a sleep step depending on the machine speed. - sleep 60 - - # Install the app to test. Change the path to a local store (where you have build the project) or online repository. - sudo -H -u {ROOT_USER} xcrun simctl install booted $WORKSPACE/DemoApplicationTesting.app - sleep 1 - - # Launch the Mobile Testing agent on the device - sudo -H -u {ROOT_USER} xcrun simctl launch booted com.telerik.MobileTesting - - # Set the location to the Message Server folder (where you have downloaded and unziped it) and start the message server on port 8081. - cd "/MobileRuntime-Mac/MessageServer/" - sudo -u {ROOT_USER} ./msgsrv-ctl.sh stop - sleep 10 - sudo -u {ROOT_USER} ./msgsrv-ctl.sh start 8081 - sleep 10 - - # Connect the Mobile Testing agent to the message server. - sudo -u {ROOT_USER} ./node tmtest.js connect --message-server-url "ws://127.0.0.1:8081" --address "localhost:8082" - - # Navigate to the MobileRuntime folder (where you have downloaded and unziped it) and execute a run. - cd "/MobileRuntime-Mac/" - sudo -u {ROOT_USER} mono Telerik.MobileTesting.Runner.exe /msgServer="ws://127.0.0.1:8081" /project="/Users/MyTestProjectName" /list="/Users/MyTestProjectName/TestLists/MyListName.mtlist" /resultType=1 - - #Stop message server - cd /Users/testing/Desktop/jenkins/workspace/CI\ -\ iOSRunner\ -\ Develop/MessageServer - sudo -u testing ./msgsrv-ctl.sh stop - ``` - -5.  Add Post-Build action step. Those are steps which will be run after the test execution. - -In this step, make sure that the simulator will reset to its original state: - -``` - # Shut down the desired simulator by its ID - sudo -H -u {ROOT_USER} xcrun simctl shutdown {DEVICE_ID} - sleep 10 - - # The next command is optional, it will reset the simulator and everything on it which means that next time in addition to the app under test, the Mobile Testing agent should be installed again. - sudo -H -u {ROOT_USER} xcrun simctl erase {DEVICE_ID} - sleep 10 - - # Kill simulator process - sudo -u {ROOT_USER} killall "Simulator" {DEVICE_ID} - -``` - -Jenkins also supports emailing build results and build artifacts. Setting up these post-build actions, ensures that the build status (pass or fail) and the actual test results are delivered to the responsible people. - -**See Also** - -* [Continuous Integration Android]({% slug ms-ci-android%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/knowledge-base/continuous-integration/jenkins-ci-plugin-mobile.md b/docs/test-studio-mobile/knowledge-base/continuous-integration/jenkins-ci-plugin-mobile.md deleted file mode 100644 index 9ea1f87b..00000000 --- a/docs/test-studio-mobile/knowledge-base/continuous-integration/jenkins-ci-plugin-mobile.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Jenkins Plugin Mobile Runner -page_title: Jenkins Plugin Mobile Runner -description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." -position: 2 ---- -# Mobile Test Studio Plugin for Jenkins CI # - -The Test Studio Plugin allows you to build and execute Mobile Test Studio tests and test lists in Jenkins CI environment and easily explore the generated JUnit xml results in the built-in Jenkins functionality. - -1.  **Install the Mobile Studio Plugin** - download it here and add it to the Plugin folder of the Jenkins server installation. - -2.  **Create a freestyle project**. Create an item and select 'Build a freestyle project'. - -![Freestyle project][2] - -3.  **Add a Mobile Studio Runner configuration build step**. Under the 'Add build step menu' section select 'Mobile Studio runner configuration'. - -![TS Plugin build step][3] - -4.  **Input the full path to Telerik.MobileTesting.Runner.exe**. The default path to find the Test Runner executable is C:\Program Files (x86)\Progress\Test Studio\Bin\MobileStudio. - -5.  **Input Message Server address** - running message server to which the devices are connected to. - -6.  **Input device ID** to execute the tests on. - -7.  **Specify the test or test list to execute** using full or relative path to the file and the project root folder full path. - -![Build step arguments][4] - -8.  **Choose whether to represent test or test steps as a JUnit test**. By enabling the checkbox a *test list* will be represented as a test suite and each including test will be represented as a JUnit test. - -![Convert to JUnit][5] - -9.  **Add post build action** - to publish JUnit test results report. This will provide results to be visible from Jenkins UI. - -![Publish in JUnit][6] - -Your test execution step is now ready to save and run. - -[1]: /img/advanced-topics/build-server/jenkins-ci-plugin/fig1.png -[2]: /img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/jenkins-plugin/fig2.png -[3]: /img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/jenkins-plugin/fig3.png -[4]: /img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/jenkins-plugin/fig4.png -[5]: /img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/jenkins-plugin/fig5.png -[6]: /img/test-studio-mobile/knowledge-base-tm/continuous-integration-tm/jenkins-plugin/fig6.png - diff --git a/docs/test-studio-mobile/native-applications/configure-your-app/configure-android.md b/docs/test-studio-mobile/native-applications/configure-your-app/configure-android.md deleted file mode 100644 index f3d6256d..00000000 --- a/docs/test-studio-mobile/native-applications/configure-your-app/configure-android.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: Android -page_title: Configure Android App -description: Apply our testing extension to your native Android application. -slug: ms-configure-android -tags: android testing, native -publish: true -previous_url: /test-studio-mobile/configure-your-app/configure-android -position: 1 ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -# Configure your Android app to be testable - -> The application configured following the steps below, should be used for testing purposes only and will not be accepted in Google Play Store. - -Android apps must be configured in order to be testable by Test Studio Mobile. This can be achieved through the built-in configuration or manually: - -* [Built-In Configuration](#built-in-configuration) -* [Manual Configuration](#manual-configuration) - -## Built-In Configuration - - > The built-in configuration requires that you have Java SDK v.1.8 or later, Android SDK v.14 or later Android Build Tools v.20 or later installed (Android Build Tools are a component of the Android Studio installation).
- - > It doesn't change already instrumented app and you have to ensure that the `libs` folder of your project doesn't contain `MobileTestingExtension.jar` or `MobileTestingExtension.aar` files. In addition built-in configuration is not supported for the below cases: - > * Apps downloaded from Google play or built in production mode. - > * The app to be instrumented has more than 65536 methods and is installed on device running API level 20 and below. See [that article]({% slug ms-known-issues%}#instumentation-exception) for more information. - - The automatic configuration is incorporated into Test Studio Mobile project and can be launched by clicking the Android gear box icon at the right corner of the toolbar: - -![AndroidGear](/img/test-studio-mobile/configure-your-app/configure-android/fig11.png) - -The Android application configuration dialog shows up. The first-time setup requires that paths to **Android SDK** and **Java JDK** foolders are set: - -![SDK_JAVA_errors](/img/test-studio-mobile/configure-your-app/configure-android/fig12.png) - - > For more informational about Android application configuration settings, please see [this article]({% slug ms-configure-android-settings%}). - -After valid paths are set, the **Next** button is enabled and the **Input location** step can be selected. It allows configuring an app either already installed on a device, or taken from the local machine file system. Configuring an app installed on a device, requires that the device is **USB connected** to the local machine running Test Studio Mobile: - -![InputLocation](/img/test-studio-mobile/configure-your-app/configure-android/fig13.png) - -Selecting a connected device automatically loads a subset of all apps installed on it. Apps that have identifiers starting with `com.android` and `com.google` are not shown initially. In order to show all available apps on the device, check the **Show All** checkbox. In addition instead of scrolling through the list, a search box allows you to look for a specific app identifier: - -![InputLocationApps](/img/test-studio-mobile/configure-your-app/configure-android/fig14.png) - - > Configuring system apps is not supported. If system app is selected the configuration will either fail or the app may become unstable. Test Studio is not responsible for any damage that a configured system app may cause. - -After app to be configured is selected, the Output location step is enabled and can be navigated by clicking the **Next** button: - -![OutputLocation](/img/test-studio-mobile/configure-your-app/configure-android/fig15.png) - -Output location can be either the local machine file system or any of the USB connected devices: - -![OuptuLocationSelection](/img/test-studio-mobile/configure-your-app/configure-android/fig16.png) - -Clicking the **Run** button will start the configuration process. After the app is successfully configured it will be deployed to the selected device or saved at the specified file location. - -![ProvisionedSuccessfully](/img/test-studio-mobile/configure-your-app/configure-android/fig17.png) - -Testing the configured app can start immediatelly by opening an Android test and selecting a device for recording. The app identifier is automatically added and can be chosen from the list of app identifiers that is shown when recording starts. [This article]({% slug ms-record-test-android%}) describes test recording in detail. - -## Manual Configuration - -> The manual configuration requires the source code (Android Studio/Eclipse project). - -Configure your Android app to be testable. - -* [Android Studio and AAR extension](#android-studio-and-aar-extension) -* [Android Studio and JAR extension](#android-studio-and-jar-extension) -* [Eclipse](#eclipse) - -# Android Studio and AAR extension. - -## Copy Extension - -1. [Download](/samples/MobileTestingExtension_Android.zip) the Test Studio Mobile extension for Android and unpack it. -2. Open `/MobileTestingExtension_Android/`. -3. Copy `MobileTestingExtension.aar`. -4. In your project open `/projectFolder/mymodulename/libs`. -5. Paste `MobileTestingExtension.aar`. - -## Configure Module gradle settings - -1. Open `/projectFolder/mymodulename/build.gradle`. -2. Add the following `productFlavors` in the `android` object: - - productFlavors { - myFlavor { - targetSdkVersion 0 - } - } - -3. Add the following line to the `dependencies` section: - - myFlavorCompile (name: 'MobileTestingExtension', ext: 'aar') - - ![Manual Aar Module](/img/test-studio-mobile/configure-your-app/configure-android/fig18.png) - -## Configure Project gradle settings - -1. Open `/projectFolder/build.gradle`. -2. Add the following `flatDir` element in the `repositories` object: - - flatDir { - dirs 'libs' - } - - ![Manual Aar Project](/img/test-studio-mobile/configure-your-app/configure-android/fig19.png) - -3. Sync the project and select **View > Tool Windows > Build Variants**. -4. Select the **myFlavorDebug** build variant and deploy it. - - ![Build Flavour](/img/test-studio-mobile/configure-your-app/configure-android/fig20.png) - - -Back to Top -

- -# Android Studio and JAR extension. - -## Copy Extension - -1. [Download](/samples/MobileTestingExtension_Android.zip) the Test Studio Mobile extension for Android and unpack it. -2. Open `/MobileTestingExtension_Android/`. -3. Copy `MobileTestingExtension.jar`. -4. In your project open `/projectFolder/mymodulename/libs`. -5. Paste `MobileTestingExtension.jar`. - -## Add Flavors - -1. Open your project in Android Studio. -2. Right Click on the project and select **Open Module Settings**. -3. Click **app** under **Project Settings**. -4. Click the **Flavors** tab. -5. Click **+** to add two new entries: `production` and `mobileTesting`. - - ![Product Flavors](/img/test-studio-mobile/configure-your-app/configure-android/fig1.png) - -6. Click **OK**. - -## Configure Testing Flavor - -1. Open `/projectFolder/mymodulename/build.gradle`. -2. Add the following after `productFlavors` in the `android` object: - - android.applicationVariants.all { variant -> - if (variant.flavorName == 'mobileTesting') { - variant.outputs[0].processResources.manifestFile = file("src/${variant.flavorName}/AndroidManifest.xml") - variant.outputs[0].processManifest.enabled=false - } - } - -![Build Variants](/img/test-studio-mobile/configure-your-app/configure-android/fig3.png) - -## Include Extension - -1. Open `/projectFolder/mymodulename/build.gradle`. -2. Add the following lines to the `dependencies` section: - - mobileTestingCompile files('libs/MobileTestingExtension.jar') - - ![Apply Testing Extension in Android Studio](/img/test-studio-mobile/configure-your-app/configure-android/fig4.png) - -## Create Subfolders - -Create the following subfolders in the project: - -* `/projectFolder/mymodulename/src/mobileTesting` - -## Copy Android Manifest - -1. Open `/projectFolder/mymodulename/src/main`. -2. Copy `AndroidManifest.xml`. -3. Open `/projectFolder/mymodulename/src/mobileTesting`. -4. Paste `AndroidManifest.xml`. - -## Edit Android Manifest - -1. Open `/projectFolder/mymodulename/src/mobileTesting/AndroidManifest.xml`. -2. Verify that the permisiion element **android.permission.SYSTEM_ALERT_WINDOW** is added to the manifest file. -3. Add the following top-level `instrumentation` element which will be used as App-Identifier in Test Studio Mobile (don't forget to change `your.app.package` with your actuall app package name): - - - - ![Instrumentation](/img/test-studio-mobile/configure-your-app/configure-android/fig5.png) - -4. Add the following `activity` element as a child of the `application` element: - - - - - - - - - ![Activity](/img/test-studio-mobile/configure-your-app/configure-android/fig6.png) - -5. Select **View > Tool Windows > Build Variants**. -6. Select the **mobileTestingDebug** build variant and deploy it. - - ![Testing Build Variant](/img/test-studio-mobile/configure-your-app/configure-android/fig7.png) - -Back to Top -

- -# Eclipse -## Copy Extension - -1. Open `/Telerik Mobile Testing/extensions/Android`. -2. Copy `MobileTestingExtension.jar`. -3. Open `/projectFolder/libs`. -4. Paste `MobileTestingExtension.jar`. - -![Add Extension](/img/test-studio-mobile/configure-your-app/configure-android/fig8.png) -## Edit Android Manifest - -1. Open `/projectFolder/AndroidManifest.xml`. -2. Verify that the permisiion element **android.permission.SYSTEM_ALERT_WINDOW** is added to the manifest file. -3. Add the following top-level `instrumentation` element which will be used as App-Identifier in Test Studio Mobile: - - - - ![Instrumentation Eclipse](/img/test-studio-mobile/configure-your-app/configure-android/fig9.png) - -4. Add the following `activity` element as a child of the `application` element: - - - - - - - - - ![Activity Eclipse](/img/test-studio-mobile/configure-your-app/configure-android/fig10.png) - -5. Build the project and deploy it. - -Back to Top -

- -See Also --------- - -+ [Record Android Test]({% slug ms-record-test-android%}) -+ [Playback Tests]({% slug ms-quick-execution%}) -+ [Elements Explorer]({% slug ms-elements-explorer%}) -+ [Test Explorer]({% slug ms-test-explorer%}) -+ [Project Explorer]({% slug ms-project-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/configure-your-app/configure-appbuilder.md b/docs/test-studio-mobile/native-applications/configure-your-app/configure-appbuilder.md deleted file mode 100644 index 304907e8..00000000 --- a/docs/test-studio-mobile/native-applications/configure-your-app/configure-appbuilder.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Hybrid (AppBuilder) -page_title: Hybrid (AppBuilder) app Testing -description: Apply our testing extension to your AppBuilder application. -slug: ms-configure-hybrid-appbuilder -tags: appbuilder testing, hybrid -publish: true -position: 4 ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -#Configure your AppBuilder app to be testable. - -> Setting up your app for testing with Telerik Mobile Testing plugin requires that you disable the Analytics plugin which is enabled by default in some of the AppBuilder app templates. - -Follow the step-by-step instructions below to create a new sample AppBuilder hybrid app, add the Telerik Mobile Testing plugin to it, and execute sample tests against it. - -* [Create AppBuilder hybrid sample app](#CreateApp) -* [Build and deploy the app](#PhysicalDevices) - -## Create AppBuilder sample hybrid app - -1. To create an AppBuilder sample hybrid app, an [account in the Telerik Platform][1] is needed. Once logged in, create a new app by clicking on the **Create App** button. - - ![Create App](/img/test-studio-mobile/configure-your-app/configure-appbuilder/CreateApp.png) - -2. Select **Advanced** tile. For the purpose of this tutorial we will use the Airlines demo application from the **Samples and templates** option. Let's name the app `MySampleApp` and click the **CreateApp** button. - - ![Create App Name](/img/test-studio-mobile/configure-your-app/configure-appbuilder/CreateAppName.png) - -3. The next step is to enable the Telerik Mobile Testing plugin and set the app's configuration variable to match the app identifier. To do this, double-click **Properties** in the solution explorer and then go to **Plugins**. Scroll to the bottom and enable the Telerik Mobile Testing plugin. If Telerik Mobile Testing is not in the list, add it from the plugin marketplace by clicking on the **Install from Plugins Marketplace** button. Finally expand the plugin and click on the **Configuration variables** button. Enter the iOS app identifier that you will use in your iOS hybrid tests. - - ![Set Ios Identifier](/img/test-studio-mobile/configure-your-app/configure-appbuilder/SetIosIdentifier.png) - - - > In your iOS hybrid tests the app identifier for an iOS app must match the IOS_APP_URL entered in the **Configuration variables** dialog, and suffixed with **://** . For example **airlinessampleapp://**. - - > The **Configuration variables** window sets only the iOS variable. The Android variable is set by default in the `General` settings and can be changed from there (see below). - - - -4. Go to **General** settings and verify the Application Identifier matches the Android app identifier that you will use in your tests. - - ![Set Android Identifier.png](/img/test-studio-mobile/configure-your-app/configure-appbuilder/SetAndroidIdentifier.png) - -## Build and deploy the app. - -1. To build the app click **Run**, then **Build** and choose the Android or iOS app package. For iOS builds you need to have your private identity and provisioning profile correctly setup. - - Android - - ![Build Android](/img/test-studio-mobile/configure-your-app/configure-appbuilder/BuildAndroid.png) - - iOS - - ![Build iOS](/img/test-studio-mobile/configure-your-app/configure-appbuilder/BuildIos.png) - -2. After a successful build, the app can be downloaded (iOS & Android) or QR scanned (Android) and installed. - - Android - - ![Download Android](/img/test-studio-mobile/configure-your-app/configure-appbuilder/DownloadAndroid.png) - - iOS - - ![Download Ios](/img/test-studio-mobile/configure-your-app/configure-appbuilder/DownloadIos.png) - -3. Now that you have the app configured for testing, the next step is to [create]({% slug ms-create-test%}) and then record an [Android]({% slug ms-record-test-android-hybrid%}) or [iOS]({% slug ms-record-test-ios-hybrid%}) hybrid test. - -## See Also - -* [Agent App instalation]({% slug ms-install-agent-app%}) -* [Connect Agent App WiFi]({% slug ms-connect-agent-wifi%}) -* [Connect Agent App USB]({% slug ms-connect-agent-usb%}) -* [Create Test]({% slug ms-create-test%}) -* [Record Android Hybrid test]({% slug ms-record-test-android-hybrid%}) -* [Record iOS hybrid test]({% slug ms-record-test-ios-hybrid%}) - - -[1]:http://docs.telerik.com/platform/help/accounts/accounts diff --git a/docs/test-studio-mobile/native-applications/configure-your-app/configure-hybrid.md b/docs/test-studio-mobile/native-applications/configure-your-app/configure-hybrid.md deleted file mode 100644 index 0f019db4..00000000 --- a/docs/test-studio-mobile/native-applications/configure-your-app/configure-hybrid.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Hybrid (Cordova) -page_title: Hybrid (Cordova) app Testing -description: Apply testing extension to a Hybrid (Cordova) application. -slug: ms-configure-hybrid -tags: cordova testing, hybrid -publish: true -position: 5 ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -#Configure your Hybrid app (Cordova) to be testable - - > The application configured following the steps below, should be used for testing purposes only and will not be accepted in Apple App Store and Google Play Store. - -Since building Hybrid mobile applications produce native iOS and Android apps, they can be easily tested with Test Studio Mobile. [This getting-started article]({% slug ms-getting-started-native%}) provides more details about testing native iOS and Android apps. - - -## Create a hybrid Cordova app - -Follow the standard flow for creating hybrid Cordova app described [here][1]. - -## Add Extension - -1. [Download](/samples/MobileTestingExtension_Hybrid.zip) the Test Studio Mobile extension for Hybrid apps and unpack it. -2. After a hybrid app is created navigate to app's containing folder and add the extension: - - cordova plugin add "Path to `com.telerik.mobiletesting` folder" - - ![Mobile Testing Extension](/img/test-studio-mobile/configure-your-app/configure-hybrid/mobile-testing-extension.png) - - > Type `cordova plugin` to list all added plugins and verify the `Mobile Testing Extension` plugin is added. - -## App Identifier - -To successfully test a Condova hybrid app, Test Studio Mobile needs to know the app identifier. It is set like this: - -* Android - the App Identifier for Android is set during app creation in the Cordova CLI (see **Create a hybrid Cordova app** above) and looks something like **com.mycompany.myapp**. -* iOS - the App Identifier for iOS comes from the Test Studio Mobile extension for iOS (see **Add Extension** above). By default this extension sets **telerikmt1** to be the App Identifier for iOS. To change it in the extension before it is added to the app, navigate to the folder of the downloaded extension (`com.telerik.mobiletesting`) and open the **plugin.xml** file in your preferred text editor. Locate the App Identifier as shown below and cahnge it: - -![Mobile Testing AppId iOS](/img/test-studio-mobile/configure-your-app/configure-hybrid/pluginxml-ios.png) - - > If you deploy the app to an **iOS 9** device then you must use one of the names listed below: -* telerikmt1 -* telerikmt2 -* telerikmt3 -* telerikmt4 -* telerikmt5 -* telerikmt6 -* telerikmt7 -* telerikmt8 -* telerikmt9 -* telerikmt10 -* tsdemoapplication - -## Build and deploy the app - -To complete the app, follow the [Cordova Command-line Interface][1] guide to add required platforms and deploy to devices or emulators. - -See Also --------- - -+ [Record Android Hybrid Test]({% slug ms-record-test-android-hybrid%}) -+ [Record iOS Hybrid Test]({% slug ms-record-test-ios-hybrid%}) -+ [Playback Tests]({% slug ms-quick-execution%}) -+ [Elements Explorer]({% slug ms-elements-explorer%}) -+ [Test Explorer]({% slug ms-test-explorer%}) -+ [Project Explorer]({% slug ms-project-explorer%}) - -[1]: https://cordova.apache.org/docs/en/latest/guide/cli/index.html \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/configure-your-app/configure-ios.md b/docs/test-studio-mobile/native-applications/configure-your-app/configure-ios.md deleted file mode 100644 index 6729aea2..00000000 --- a/docs/test-studio-mobile/native-applications/configure-your-app/configure-ios.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: iOS -page_title: Configure iOS App -description: Apply our testing extension to the QA target of your native iOS application. -slug: ms-configure-ios -tags: ios testing, native -publish: true -previous_url: /test-studio-mobile/configure-your-app/configure-ios -position: 2 ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -#Configure your iOS app to be testable - -> The application configured following the steps below, should be used for testing purposes only and will not be accepted in Apple App Store. - -## Duplicate Target - -1. Open your project in Xcode. This guide uses the open source application Wikipedia as an example. -2. Select the project file in Xcode in order to view the list of Targets. - - ![List of Targets](/img/test-studio-mobile/getting-started-mb/configure-ios/wikipedia-mobile.png) - -3. Right click the target for testing and click **Duplicate**. - - ![Creating the Duplicate Target](/img/test-studio-mobile/getting-started-mb/configure-ios/wikipedia-mobile-copy.png) - -4. Rename the new target to `ApplicationNameQA`. - - > This signifies that the target is a QA-only build, and should not be used as a release. - -5. Since Xcode does not do it automatically, update the new target’s associated files, settings, and schemes to reflect the new target name. - - > Update the build settings to properly reference any property list files you rename. - - ![The Renamed Target](/img/test-studio-mobile/getting-started-mb/configure-ios/wikipedia-mobile-qa.png) - - This table contains the items to update when a target is duplicated: - -
- - - - - - - - - - - - - - - - - - - - - - -
TargetApplicationName copy > ApplicationNameQA
Target .plist fileApplicationName copy-Info.plist > ApplicationNameQA.plist
Target > Build Settings > Packaging > Info.plist FileApplicationName copy-Info.plist > ApplicationNameQA.plist
Target > Build Settings > Packaging > Product NameApplicationName copy > ApplicationNameQA
Scheme > Manage SchemesApplicationName copy > ApplicationNameQA
- - > If you're using the Wikipedia app as an example and intend to deploy it to your device, modify the following setting to build it with your own credentials: **Target > Summary > iOS Application Target > Bundle Identifier**. - - ![The Modified Bundle Indentifier](/img/test-studio-mobile/getting-started-mb/configure-ios/bundle-identifier.png) - -## Add Extension - -1. Select the new target in the **Scheme** drop-down. -2. [Download](/samples/MobileTestingExtension_iOS.zip) the Test Studio Mobile extension for iOS and unpack it. -3. Open `/MobileTestingExtension_iOS/` and drag **libMobileTestingExtension.a** into your Project's file listing. - - ![Dragging the Static Library](/img/test-studio-mobile/getting-started-mb/configure-ios/drag-static-lib-new.png) - - >If you target to automate [WKWebView's](https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKWebView_Ref/) in your project, drag **libMobileTestingWebKit.a** into your Project's file listing as well. - -4. Select **Create folder references for any added folders**. -5. Uncheck the original target and check the new QA target. -6. Click **Finish**. - - ![Linking the Static Libraries](/img/test-studio-mobile/getting-started-mb/configure-ios/adding-plugin-options.png) - -7. Go to **Build Phases > Link Binary With Libraries**. A reference to the testing extension is automatically added. Add **libicucore.tbd**, **Security.framework**, **QuartzCore.framework** and **CFNetwork.framework** if they are not already linked. In older versions of Xcode you may need to add **libicucore.dylib** instead of **libicucore.tbd**. This grants WebSocket compatibiltiy. - - > If you target to automate WKWebView's in your project, **WebKit.framework** must also be added. - - ![The Successfully Linked Static Library](/img/test-studio-mobile/getting-started-mb/configure-ios/linked-lib-new.png) - -8. Go to **Build Settings > Linking** and add `-add_load` to **Other Linker Flags**. - - ![Other Linker Flags](/img/test-studio-mobile/getting-started-mb/configure-ios/other-linker-flags-2.png) - - > This ensures all symbols from the static libraries compile correctly into the target application. - -## Add URL Type - -1. Go to the **Info** tab of the `QA` target's settings and click **+** to add a new URL Type. - - * **Identifier:** com.telerik.automation - * **URL Schemes:** APPLICATIONNAME - * **Role:** Editor - - ![Adding the URL Type](/img/test-studio-mobile/getting-started-mb/configure-ios/adding-the-url-type-3.png) - - > The **URL Schemes** should not contain any spaces. The APPLICATIONNAME portion need not match your duplicate Target name exactly, however we recommend consistency. The only requirement is that APPLICATIONNAME is unique so it does not conflict with another testable application. - - > If you deploy the app to an **iOS 9+** device then you must use one of the names listed below: - * telerikmt1 - * telerikmt2 - * telerikmt3 - * telerikmt4 - * telerikmt5 - * telerikmt6 - * telerikmt7 - * telerikmt8 - * telerikmt9 - * telerikmt10 - * tsdemoapplication - -2. Select the newly configured target and click **Run**. - - > After the `Build Succeeded` message, you may have to wait up to 10 seconds for the application to deploy. The device's screen will be black in the meantime. - - > You may need to close your application (and the {{site.mt}} app) on the device before deploying. - - -## Application ID - -The Application Identifier is setup during the instrumentation process of the testable app. The Application Identifier is combination of URL Schemes suffixed with **://**. - -> When used in Test Studio Mobile, the `Application Identifier` must be suffixed with **://**. For example, the app identifier that is setup in previous section is **WikipediamobileQA** (no trailing colon and slashes), but suffixed with **://** when entered in the Test Studio Mobile **Set Application ID** dialog. - -![APPID](/img/test-studio-mobile/getting-started-mb/configure-ios/appID.png) - -##iOS 9 Confirmation Dialogs - -iOS 9 introduces a feature that requires user confirmation when Mobile Testing Agent app starts an app under test. As a result a confirmation dialog is shown the first time tests are run and after the first test is executed. Once Open is chosen for both dialogs they won't be presented any more. However the first execution may still fail because of the interruption caused by the dialogs. - - - - - - -
![Conformation dialog 1](/img/test-studio-mobile/getting-started-mb/configure-ios/confdialog1.png)![Conformation dialog 2](/img/test-studio-mobile/getting-started-mb/configure-ios/confdialog2.png)
- - -See Also --------- - -+ [Record iOS Test]({% slug ms-record-test-ios%}) -+ [Playback Tests]({% slug ms-quick-execution%}) -+ [Elements Explorer]({% slug ms-elements-explorer%}) -+ [Test Explorer]({% slug ms-test-explorer%}) -+ [Project Explorer]({% slug ms-project-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/configure-your-app/configure-nativescript.md b/docs/test-studio-mobile/native-applications/configure-your-app/configure-nativescript.md deleted file mode 100644 index dcb17770..00000000 --- a/docs/test-studio-mobile/native-applications/configure-your-app/configure-nativescript.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: NativeScript -page_title: Configure NativeScript App -description: Apply our testing extension to your NativeScript application. -slug: ms-configure-nativescript -tags: NativeScript, native, script -publish: true -previous_url: /test-studio-mobile/configure-your-app/configure-nativescript -position: 3 ---- - -#Configure your NativeScript app to be testable. - -> The application configured following the steps below, should be used for testing purposes only and will not be accepted in Apple App Store and Google Play Store. - -Since building NativeScript mobile applications produce native iOS and Android apps, they can be easily tested with Test Studio Mobile. [This getting-started article]({% slug ms-getting-started-native%}) provides more details about testing native iOS and Android apps. - -1. The first step is to prepare the NativeScript application. - - > If you don't have NativeScript installed you can follow [this intallation guide](https://docs.nativescript.org/start/quick-setup) - - If you don't have a NativeScript application to configure, you can create a new one by executing the following command: - - tns create myApplicationName - - - Android - - ![Create Android](/img/test-studio-mobile/configure-your-app/configure-nativescript/CreateProject-Android.png) - - iOS - - ![Create iOS](/img/test-studio-mobile/configure-your-app/configure-nativescript/CreateProject-iOS.png) - -2. Next you need change the current folder to the newly created app folder and add the Test Studio Mobile plugin for NativeScript with the following command: - - tns plugin add nativescript-teststudio - - - Android - - ![AddPlugin Android](/img/test-studio-mobile/configure-your-app/configure-nativescript/AddPlugin-Android.png) - - iOS - - ![AddPlugin iOS](/img/test-studio-mobile/configure-your-app/configure-nativescript/AddPlugin-iOS.png) - - During execution of the command the specific app id is set that Test Studio Mobile will use to start the app: - - * For the Android version of the application, the **"id"** key that is set when the project is created is used. This key can be found in application's *package.json* file. : - - ... - "nativescript": { - "id": "org.nativescript.justTest", - ... - }, - ... - - * For the iOS version of the application, **"telerikmt1"** is set by default and used as URL Scheme required to access the tested application. For more information please read the note for URL Schemes in this [article]({% slug ms-configure-ios%}#Add-URL-Type) - - If you want to add the plugin and set the iOS parameter value with a single command, you can use the extended version of *tns* command as follows: - - tns plugin add nativescript-teststudio --var.IOS_APP_URL iosAppUrl - - Here you need to replace *iosAppUrl* with the value you want your app to use. - - > The Android parameter can't be changed with the CLI command. However both Android and iOS parameters can be changed manually in the *package.json* file. - - To confirm that you've correctly changed the app iOS url, you can check the *package.json* of the NativeScript application. The new value is added to the *"nativescript-teststudio-variables"* key. You can change this value in order to access the application from Test Studio with different url. - - "nativescript-teststudio-variables": { - "IOS_APP_URL": "telerikmt1" - } - -3. The next step is to prepare, build and deploy the application to a device or an emulator (you may need to have the device/emulator started): - - Android - - tns run android - - ![RunProject Android](/img/test-studio-mobile/configure-your-app/configure-nativescript/RunProject-Android.png) - - iOS - - tns run ios - - ![RunProject iOS](/img/test-studio-mobile/configure-your-app/configure-nativescript/RunProject-iOS.png) - - -4. Now you can begin to test the UI with Test Studio as described in this [article]({% slug ms-create-test%}). - - -> If you don't want to use the NativeScript plugin as described above, you can setup the generated native project manually. Open the project for each platform (from *platforms/ios* or *platforms/android*) and follow the steps required for configuring native [iOS]({% slug ms-configure-ios%}) and [Android]({% slug ms-configure-android%}#Manual) applications. - -> You can configure native Android applications automatically right from within the Mobile Test Studio. Read more [here]({% slug ms-configure-android%}#Built-In-Configuration). - - -See Also --------- - -+ [Record iOS Test]({% slug ms-record-test-ios%}) -+ [Record Android Test]({% slug ms-record-test-android%}) -+ [Playback Tests]({% slug ms-quick-execution%}) -+ [Elements Explorer]({% slug ms-elements-explorer%}) -+ [Test Explorer]({% slug ms-test-explorer%}) -+ [Project Explorer]({% slug ms-project-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/configure-your-app/configure-xamarin-android.md b/docs/test-studio-mobile/native-applications/configure-your-app/configure-xamarin-android.md deleted file mode 100644 index c755ed99..00000000 --- a/docs/test-studio-mobile/native-applications/configure-your-app/configure-xamarin-android.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Xamarin Android -page_title: Xamarin Android Testing -description: Apply our testing extension to your Xamarin application. -slug: ms-configure-xamarin-android -tags: testing, xamarin -publish: true -position: 6 ---- - -#Configure your Xamarin Android app to be testable - -## Prerequsites: - -* Visual Studio 2015 or 2017 with installed "Modile development with .NET" workload - -![New install][1] - -* Test Studio Mobile Android extension: - 1. [Download](http://docs.telerik.com/teststudio/samples/MobileTestingExtension_Android.zip) the Test Studio Mobile extension for Android and unpack it - 2. Extract MobileTestingExtension.jar somewhere on your PC - -## Building the Xamarin bindings library: - -1.  Start new Visual Studio project and select Templates->Android->Bindings Library (Android) - -![New Binding Library][2] - -2.  Add **MobileTestingExtension.jar** to project: - -``` - Solution Explorer->Right click on 'Jars' folder->Add->Existing Item... - Navigate to MobileTestingExtension.jar and add it to the project. -``` - -![Adding JAR to project][3] - -3.  Edit **MobileTestingExtension.jar** properties: - -``` - In Solution Explorer select MobileTestingExtension.jar and change 'Build Action' to 'EmbeddedJar' -``` - -![Configuring JAR][4] - -4.  Open project Properties and set **Target Framework** to be same as **Target Framework** of the application that will be tested. - -![Properties][5] - -5.  Ensure to set explicitly the **Android Codegen Target** in project Properties to *jar2xml*. - -![Codegen Target][6] - - -6.  Build Bindings library. You probably will get some warning messages in output console, but the library should be build sucefully and ouputed DLL will be located at: - -``` -Visual Studio Projects\ClassLibrary\ClassLibrary\bin\Debug\ClassLibrary.dll -``` - -For more information about building Xamarin bindings library see: [Creating Bindings Library](https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-a-jar/#Creating_the_Bindings_Library) - - -## Configuring Xamarin application: - -1.  Add Bindings Library to the project under test: - -![References][7] - -2.  Open **AndroidManifest.xml** for editing - -![AndroidManifest][8] - -3.  Add the following top-level instrumentation element which will be used as App-Identifier in Test Studio Mobile and change target package name to match your application package: - -``` - -``` - -![Instrumentation][9] - -4.  Add the following activity element as a child of the application element: - -``` - - - - - - -``` - -![Activity][10] - -5.  Your application is ready for testing. - -For more information about recording and executing tests with Test Studio Mobile see: [Test Studio Mobile Help](http://docs.telerik.com/teststudio/test-studio-mobile/overview) - -[1]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/new-install.png -[2]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/new-bindings-library.png -[3]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/add-jars.png -[4]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/configure-jar.png -[5]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/properties.png -[6]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/codegen-target.png -[7]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/references.png -[8]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/AndroidManifest.png -[9]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/instrumentation.png -[10]: /img/test-studio-mobile/configure-your-app/configure-xamarin-android/activity.png diff --git a/docs/test-studio-mobile/native-applications/configure-your-app/configure-xamarin-ios.md b/docs/test-studio-mobile/native-applications/configure-your-app/configure-xamarin-ios.md deleted file mode 100644 index fd71fd87..00000000 --- a/docs/test-studio-mobile/native-applications/configure-your-app/configure-xamarin-ios.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Xamarin iOS -page_title: Xamarin iOS Testing -description: Apply our testing extension to your Xamarin application. -slug: ms-configure-xamarin-ios -tags: testing, xamarin -publish: true -position: 6 ---- - -#Configure your Xamarin iOS app to be testable - -> The application configured following the steps below, should be used for testing purposes only and will not be accepted in Apple App Store. - -Since building Xamarin iOS mobile applications produce native iOS apps, they can be easily tested with Test Studio Mobile. [This getting-started article]({% slug ms-getting-started-native%}) provides more details about testing native iOS apps. - -## Add Extension - -1. [Download](/samples/MobileTestingExtension_iOS.zip) the Test Studio Mobile extension for iOS and unpack it. -2. To bring the extension into your project, select the project from the solution explorer and press **Command + Option + A** to open the `Add files` dialog. Add **libMobileTestingExtension.a** to the project. When prompted, tell Xamarin Studio to copy it into the project. - - ![Add extension xamarin ios](/img/test-studio-mobile/configure-your-app/configure-xamarin-ios/fig1.png) - -## Add URL Type - -1. Open the **Info.plist** file, navigate to the **Advanced** tab and add a new `URL Type`. - * **Identifier:** com.telerik.automation - * **URL Schemes:** APPLICATIONNAME - * **Role:** Editor - - ![Add URL](/img/test-studio-mobile/configure-your-app/configure-xamarin-ios/fig2.png) - - > The **URL Schemes** should not contain any spaces. The APPLICATIONNAME portion need not match your app name exactly. The only requirement is that APPLICATIONNAME is unique so it does not conflict with another testable application.
- If you deploy the app to an **iOS 9 device** then you must use one of the names listed below: - * telerikmt1 - * telerikmt2 - * telerikmt3 - * telerikmt4 - * telerikmt5 - * telerikmt6 - * telerikmt7 - * telerikmt8 - * telerikmt9 - * telerikmt10 - * tsdemoapplication - - -## Configure Xamarin.iOS to Link the Library - -1. Right-click the Xamarin iOS project and choose **Options** -2. Expand **Build** and select **iOS Build** -3. At the bottom of the dialog set the following to the **Additional mtouch arguments** text field: - - `-gcc_flags "-L${ProjectDir} -force_load ${ProjectDir}/libMobileTestingExtension.a -lMobileTestingExtension -licucore -framework CFNetwork -framework Security -framework QuartzCore"` - - ![Xamarin link](/img/test-studio-mobile/configure-your-app/configure-xamarin-ios/fig3.png) - - > When targetting iOS7 you may need to add the **-all_load** flag to the **Additional mtouch arguments**:

- `-gcc_flags "-L${ProjectDir} -all_load -force_load ${ProjectDir}/libMobileTestingExtension.a -lMobileTestingExtension -licucore -framework CFNetwork -framework Security -framework QuartzCore"` - - - > More information about linking iOS libraries in Xamarin project is available [here](http://developer.xamarin.com/guides/ios/advanced_topics/native_interop/). - -4. Close the Project Options dialog and click **Run**. - - > After the `Build Succeeded` message, you may have to wait up to 10 seconds for the application to deploy. The device's screen will be black in the meantime. - - > You may need to close your application (and the Mobile Testing Agent app) on the device before deploying. - - -See Also --------- - -+ [Record iOS Test]({% slug ms-record-test-ios%}) -+ [Playback Tests]({% slug ms-quick-execution%}) -+ [Elements Explorer]({% slug ms-elements-explorer%}) -+ [Test Explorer]({% slug ms-test-explorer%}) -+ [Project Explorer]({% slug ms-project-explorer%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/connect-agent-app/connect-agent-usb.md b/docs/test-studio-mobile/native-applications/connect-agent-app/connect-agent-usb.md deleted file mode 100644 index a15acd47..00000000 --- a/docs/test-studio-mobile/native-applications/connect-agent-app/connect-agent-usb.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: USB Connection -page_title: USB Connection -description: "USB Connection" -publish: true -previous_url: /test-studio-mobile/connect-agent-app/connect-agent-usb -position: 0 -slug: ms-connect-agent-usb ---- - -# USB Connection - -Once you have [installed]({% slug ms-install-agent-app%}) the Mobile Testing agent app, tap on it to launch it. - -1. Tap on the **USB** button. - - ![click USB](/img/test-studio-mobile/connect-agent-app/usb/fig1.png) - -2. Specify the port and click **Done**. - - ![specify port](/img/test-studio-mobile/connect-agent-app/usb/fig2.png) - -3. [Create]({% slug ms-create-test%}) a **Mobile** test project in Test Studio and go to Connected Devices pane. Click **Connect Device** button. - - ![connect device](/img/test-studio-mobile/connect-agent-app/usb/fig3.png) - - > Note that when one or more devices are connected, the button in the center of the screen is not shown and only the button in the upper left corner can be used to connect additional devices. - -4. On the Connect a Device dialog that appears click on **Device** tab and then choose **USB Connection** option. The device should be recognized automatically. Simply verify the information, make sure the port which you selected in step 2 matches and click on the **+** icon to connect your device. - - ![connect device](/img/test-studio-mobile/connect-agent-app/usb/fig4.png) - - > You can edit the port by double clicking on it. - -5. Once successfully connected the device appear under the Connected Devices pane and the mobile testing agent displays the status that the device is connected and **Disconnect** button appears: - -
- - - - -
![device listed](/img/test-studio-mobile/connect-agent-app/usb/fig6.png) ![agent status](/img/test-studio-mobile/connect-agent-app/usb/fig7.png)
- - -> Please note in order to connect an iOS device you **MUST** have [iTunes](http://www.apple.com/itunes/) installed on the machine. - - -> For Samsung Android devices please make sure you have the Samsung USB drivers installed properly. You can download the drivers from [here](http://developer.samsung.com/technical-doc/view.do?v=T000000117). - - -> The Android devices should be in **development mode**. - - -See Also --------- - -+ [Record iOS Test]({% slug ms-record-test-ios%}) -+ [Record Android Test]({% slug ms-record-test-android%}) -+ [Record Android Hybrid Test]({% slug ms-record-test-android-hybrid%}) -+ [Record iOS Hybrid Test]({% slug ms-record-test-ios-hybrid%}) -+ [Playback Tests]({% slug ms-quick-execution%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/connect-agent-app/connect-agent-wifi.md b/docs/test-studio-mobile/native-applications/connect-agent-app/connect-agent-wifi.md deleted file mode 100644 index f526f29a..00000000 --- a/docs/test-studio-mobile/native-applications/connect-agent-app/connect-agent-wifi.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Wi-Fi Connection -page_title: Wi-Fi Connection -description: "Wi-Fi Connection" -publish: true -previous_url: /test-studio-mobile/connect-agent-app/connect-agent-wifi -position: 0 -slug: ms-connect-agent-wifi ---- - -# Wi-Fi Connection - -1. [Create]({% slug ms-create-test%}) a **Mobile** test project - -2. After the project is created and loaded, go to the **Connected Devices** pane and click the **Connect Device** button - - ![Connect a device](/img/test-studio-mobile/connect-agent-app/connect-agent-wifi/fig2.png) - -3. From the opened pop-up window select the **Device** tab and then choose the **WiFi Connection** option. Copy the **Host** address and **Port** number that should be entered in the Test Studio Mobile Agent app - - ![Configure host and port](/img/test-studio-mobile/connect-agent-app/connect-agent-wifi/fig3.png) - -4. Once you have [installed]({% slug ms-install-agent-app%}) the Mobile Testing Agent app, tap on it to launch it: - - Android - - ![Andorid mobile agent](/img/test-studio-mobile/connect-agent-app/connect-agent-wifi/fig4.png) - - iOS - - ![iOS mobile agent](/img/test-studio-mobile/connect-agent-app/connect-agent-wifi/fig7.png) - -5. Tap the Wi-Fi button and enter the **Host** and **Port** your message server is running on (copied in step 3 above). The message server is started automatically upon Test Studio Ultimate installation and runs by default on port 8084: - - Android - - ![Adjust port](/img/test-studio-mobile/connect-agent-app/connect-agent-wifi/fig5.png) - - iOS - - ![Adjust port](/img/test-studio-mobile/connect-agent-app/connect-agent-wifi/fig8.png) - -6. Tap the **Connect** button, the agent connects to the server and its state changes to connected: - - Android - - ![Connect](/img/test-studio-mobile/connect-agent-app/connect-agent-wifi/fig6.png) - - iOS - - ![Connect](/img/test-studio-mobile/connect-agent-app/connect-agent-wifi/fig9.png) - -7. You can now start recording or executing your tests. - - -See Also --------- - -+ [Record iOS Test]({% slug ms-record-test-ios%}) -+ [Record iOS Hybrid Test]({% slug ms-record-test-ios-hybrid%}) -+ [Record Android Test]({% slug ms-record-test-android%}) -+ [Record Android Hybrid Test]({% slug ms-record-test-android-hybrid%}) -+ [Playback Tests]({% slug ms-quick-execution%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/installation/agent-app-installation.md b/docs/test-studio-mobile/native-applications/installation/agent-app-installation.md deleted file mode 100644 index 5e53b6cc..00000000 --- a/docs/test-studio-mobile/native-applications/installation/agent-app-installation.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Agent App Installation -page_title: Agent App Installation -description: How to install agent to an iOS simulator -previous_url: /test-studio-mobile/installation/agent-app-installation -position: 2 -slug: ms-install-agent-app ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -# Agent App Installation - -## Overview - -The Mobile Testing Agent app must be installed on physical or virtual devices that will execute tests against native or hybrid apps. This app connects the machine where Test Studio Mobile is installed and the actual testable app. - -## Install to a real device - -Mobile Testing Agent app can be installed for free from [AppStore](https://itunes.apple.com/us/app/mobile-testing/id787441509?ls=1&mt=8) or [Google Play](https://play.google.com/store/apps/details?id=com.telerik.testing.executionagent). Search for `Mobile Testing` and install the app to any supported device aimed for testing. - -## Install to an Android emulator - -1. Create an Android emulator with the [AVD Manager](http://developer.android.com/tools/devices/managing-avds.html). - -2. [Download](/samples/MobileTestingExtension_Android.zip) the Test Studio Mobile extension for Andorid and unpack it. Find the `MobileTesting.apk` file. - -3. Open a new command window. - -4. Open the Android SDK subfolder: /sdk/platform-tools. - -* ### OS X - - 1. Type ./adb devices to see a list of connected devices. - - 2. Type ./adb -s DEVICE_ID install "\path\to\MobileTesting.apk" - - where DEVICE_ID is the target device or emulator. - - ![Device ID](/img/test-studio-mobile/getting-started-mb/agent-app-installation/fig1.png) - -* ### Windows - - 1. Type adb devices to see a list of connected devices. - - 2. Type adb -s DEVICE_ID install "\path\to\MobileTesting.apk" - - where DEVICE_ID is the target device or emulator. - - ![Device ID Windows](/img/test-studio-mobile/getting-started-mb/agent-app-installation/fig2.png) - - -## Install on iOS simulator - -1. Open a new command window. - -2. [Download](/samples/MobileTestingAgentForSimulator.zip) the Test Studio Agent App package for iOS and unpack it. Find the `MobileTestingSimulator.app` folder. - -* ###Using Xcode 6 - - 1. To get a list of all available simulators type: *xcrun simctl list* - - ![Install app agent](/img/test-studio-mobile/getting-started-mb/agent-app-installation/fig4.png) - - 2. Choose a device and boot it if it is not already. - - ![Boot simulator](/img/test-studio-mobile/getting-started-mb/agent-app-installation/fig5.png) - -* ###Using Xcode 7 - - 1. Open the Spotlight search and type *Simulator* to find the Simulator app and start it. - - ![Open Spotlight](/img/test-studio-mobile/getting-started-mb/agent-app-installation/fig6.png) - -Once a simulator is booted, install the `MobileTesting.app` to it by the following terminal command. - -![Install agent](/img/test-studio-mobile/getting-started-mb/agent-app-installation/fig7.png) - - -See Also --------- - -+ [Downloads]({%slug ms-download%}) -+ [Run Demos]({%slug ms-run-demos%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/installation/download.md b/docs/test-studio-mobile/native-applications/installation/download.md deleted file mode 100644 index 05b3cc5b..00000000 --- a/docs/test-studio-mobile/native-applications/installation/download.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Downloads -page_title: Downloads -description: Mobile Testing Downloads -slug: ms-download -tags: ios, android, wp, testing, download -publish: true -previous_url: /test-studio-mobile/installation/download -position: 2 ---- - -# Pick your download - -## 1. Mobile Testing Agent App - -The Mobile Testing Agent app must be installed on physical or virtual devices that will execute tests against native or hybrid apps. This app connects Test Studio Mobile and the actual testable app. Read [this article]({% slug ms-install-agent-app%}) for more information. - - * [Mobile Testing Agent app for iOS](https://itunes.apple.com/us/app/mobile-testing/id787441509?ls=1&mt=8) - required to execute native tests on an iOS device (link to the AppStore). - - * [Mobile Testing Agent app for iOS](/samples/MobileTestingAgentForSimulator.zip) - required to execute native tests on an iOS simualtor (direct download of the application package). - - * [Mobile Testing Agent app for Android](https://play.google.com/store/apps/details?id=com.telerik.testing.executionagent) - required to execute native tests on an Android device. - -## 2. Extensions - -Native/Hybrid apps must be configured in order to be testable by Test Studio Mobile. Configuring requires adding a platform specific Test Studio Mobile extension to the app. Read the dedicated [Android]({% slug ms-configure-android%}), [iOS]({% slug ms-configure-ios%}) and [Hybrid (Cordova)]({% slug ms-configure-hybrid%}) articles for more information. - -* [Android extension](/samples/MobileTestingExtension_Android.zip) - -* [iOS extension](/samples/MobileTestingExtension_iOS.zip) - -* [Hybrid extension](/samples/MobileTestingExtension_Hybrid.zip) - -## 3. Demo Apps - -Demo apps are preconfigured native/hyrbid apps for testing with Test Studio Mobile. Read [this article]({% slug ms-run-demos%}) for more information. - -* [Android demo app](/samples/androidDemoApplication.zip) - -* [iOS demo app](/samples/xCodeDemoApplication.zip) - -* [Hybrid (Cordova) demo app](/samples/cordovaDemoApplication.zip) - -## 4. Mobile Runtime - -The Mobile Runtime package is dedicated to test execution only. It consists of stand-alone versions of the tools that are required for test execution - Message Server and Mobile Testing Runner CLI. - -### Message Server - -Read [this article]({% slug ms-message-server%}) for more information about what Message Server is and how it works. By default, this server installs as part of Test Studio Mobile installation and starts automatically behind the scenes when Test Studio mobile project is opened in the GUI. However, a stand-alone version of the Message Server can be started even if Test Studio Mobile GUI doesn't run at all. The stand-alone version is part of the Mobile Runtime package that is available for Windows, Mac and Linux. - -### Mobile Testing Runner CLI - -Read [this article]({% slug ms-test-runner%}) for more information about what Mobile Testing Runner CLI is and how it works. By default, this CLI runner installs as part of Test Studio Mobile installation and starts automatically behind the scenes when Test Studio mobile project is opened in the GUI. However, a stand-alone version of the Mobile Testing Runner CLI can be started even if Test Studio Mobile GUI doesn't run at all. The stand-alone version is part of the Mobile Runtime package that is available for Windows, Mac and Linux. - -* [Mobile Runtime for Windows](/samples/MobileRuntime-Windows.zip) -* [Mobile Runtime for Mac](/samples/MobileRuntime-MacOs.zip) -* [Mobile Runtime for Linux](/samples/MobileRuntime-Linux.zip) - -## 5. Demo Test Project - -A sample Test Studio Mobile project containing tests running against the Demo Apps. Read [this article]({% slug ms-quick-execution%}) for more information about how to execute the tests. - -* [Demo project](/samples/DemoMobileProject.zip) - - -See Also --------- - -+ [Agent App Installation]({% slug ms-install-agent-app%}) -+ [Run Demos]({% slug ms-run-demos%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/native-applications/run-demos.md b/docs/test-studio-mobile/native-applications/run-demos.md deleted file mode 100644 index 55c6f4dc..00000000 --- a/docs/test-studio-mobile/native-applications/run-demos.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Run Demos -page_title: Run Demos -description: How to build, deploy and run the demo applications -previous_url: /test-studio-mobile/installation/run-demos,/test-studio-mobile/native-applications/installation/run-demos -position: 3 -slug: ms-run-demos ---- -#Run Demo Applications - -* Android Demo App -* iOS Demo App -* Hybrid Demo App - -##Android Demo App - -1. [Install]({% slug ms-install-agent-app%}) the Mobile Testing Agent app to a physical or virtual device. - -2. [Download](/samples/androidDemoApplication.zip) Android demo application and unzip it. - -3. Open **Android Studio** - -4. Select **Open an existing Android Studio Project** - -5. Open /DemoApplication and click **OK** - - ![Open demo application](/img/test-studio-mobile/install/run-demos/fig1.png) - -6. Select **View > Tool Windows > Build Variants** - -7. Select the **mobileTestingDebug** build variant - - ![Select testing debug](/img/test-studio-mobile/install/run-demos/fig2.png) - -8. Click **Run** to deploy the demo app to a device or an emulator. - - ![Run the demo app](/img/test-studio-mobile/install/run-demos/fig3.png) - -9. After the demo app is deployed, you can [record Android test]({% slug ms-record-test-android%}) and [execute it]({% slug ms-quick-execution%}). Alternatively download the [mobile demo tests project](/samples/DemoMobileProject.zip), open it in Test Studio Mobile and excute tests in `Android_Native_Tests` folder. - -##iOS Demo App - -1. [Install]({% slug ms-install-agent-app%}) the Mobile Testing Agent app to a physical or virtual device. - -2. [Download](/samples/xCodeDemoApplication.zip) iOS demo application and unzip it. - -3. Open **Xcode** - -4. Select **File > Open** - -5. Open /DemoApplication/DemoApplication.xcodeproj and click **Open**. - - ![Open demo application](/img/test-studio-mobile/install/run-demos/fig4.png) - -6. Select the **DemoApplicationQA** target and select a device or simulator - -7. Click **Run** - - ![Run the demo app](/img/test-studio-mobile/install/run-demos/fig5.png) - -8. After the demo app is deployed, you can [record iOS test]({% slug ms-record-test-ios%}) and [execute it]({% slug ms-quick-execution%}). Alternatively download the [mobile demo tests project](/samples/DemoMobileProject.zip), open it in Test Studio Mobile and excute tests in `iOS_Native_Tests` folder. - -## Hybrid Demo App - -1. [Install]({% slug ms-install-agent-app%}) the Mobile Testing Agent app to a physical or virtual device. - -2. [Download](/samples/cordovaDemoApplication.zip) Hybrid (Cordova) demo application and unzip it. - -3. Open a command window in the `DemoApplication` folder and follow the [Cordova Command-line Interface][1] guide to add required platforms and deploy to devices or emulators. - -4. After the demo app is deployed, you can record [Android Hybrid test]({% slug ms-record-test-android-hybrid%}) or [iOS Hybrid test]({% slug ms-record-test-ios-hybrid%}) and [execute it]({% slug ms-quick-execution%}). Alternatively download the [mobile demo tests project](/samples/DemoMobileProject.zip), open it in Test Studio Mobile and excute the Android Hybrid tests in the `Android_Hybrid_Tests` folder or the iOS Hybrid tests in the `iOS_Hybrid_Tests` folder. - -See Also --------- - -+ [Agent App Installation]({% slug ms-install-agent-app%}) -+ [Downloads]({% slug ms-download%}) -+ [Playback Tests]({% slug ms-quick-execution%}) -+ [Record iOS Test]({% slug ms-record-test-ios%}) -+ [Record iOS Hybrid Test]({% slug ms-record-test-ios-hybrid%}) -+ [Record Android Test]({% slug ms-record-test-android%}) -+ [Record Android Hybrid Test]({% slug ms-record-test-android-hybrid%}) - -[1]: https://cordova.apache.org/docs/en/latest/guide/cli/index.html \ No newline at end of file diff --git a/docs/test-studio-mobile/overview.md b/docs/test-studio-mobile/overview.md deleted file mode 100644 index c5ad9ca2..00000000 --- a/docs/test-studio-mobile/overview.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Overview -page_title: Test Studio Mobile Overview -description: "Overview of Test Studio Mobile" -previous_url: /mobile-testing/overview -position: 0 -slug: ms-overview ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -{% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} -{% endif %} - -# Overview - -Test Studio Mobile is an intuitive and easy to use test automation solution for Mobile application testing. Create tests once and test across multiple devices and OS. - -The point and click functionality allows users to capture quickly and replay complex mobile testing functionality. There is no need to write a single line of code. In addition, if you like to enrich the tests with a custom logic in code, you can make use of the .NET and our mobile testing frameworks in coded test steps or standalone code files. Test against any number of real devices as you wish or through an emulator by connecting through Wifi or USB. - -## Features - Test Studio Mobile desktop application. - -Test Studio Mobile is a desktop application that connects your tests with targetted apps installed on remote devices. It introduces tons of fancy features that makes testing mobile apps a real pleasure: - -* Team Collaboration: Intuitive UI with built-in IDE allow testers to craft automation and easily collaborate with SDETs and developers for long-term maintainability. - -* [Project Explorer]({% slug ms-project-explorer%}) - visualizes your tests in tree-like project structure that allows for easier navigation and management. - -* [Test Explorer]({% slug ms-test-explorer%}) - shows open tests and the steps of the currently selected open test. - -* [Elements Explorer]({% slug ms-elements-explorer%}) - shows a tree-like view of the elements in the project. Every recorded step targets a specific element and those are elements are summarized in this view. - -* [DOM Explorer]({% slug ms-dom-explorer%}) - allows you to inspect all elements of the tested application at once, shown in a tree-like structure or in a grouped-by-tag view. Properties can be verified and steps can be added against any element in the DOM explorer. - -* [Step Builder]({% slug ms-step-builder%}) - this feature allows you to add context-based steps to your test manually. Works in a tight relation with DOM explorer. - -* [Output]({% slug ms-output-pane%}) - this pane displays a record of log messages recorded by Test Studio Mobile throughout runtime. - -* Connected devices - view a list of all currently connected devices that are ready for test recording/execution. - -* Results (Test Lists) - this pane displays test list results in a list-like format. - -* Properties - this context-based pane shows properties of the currently selected item - this can be the project, test, step, element, folder, code file, connected device or a test list. - -* Load testing with mobile device traffic: Connect your device(s) to Test Studio’s built-in remote proxy to quickly capture scenarios for load testing. - -## Features - Supported testing scenarios. - -Test Studio Mobile covers a wide range of testing scenarios, including native, hybrid, web, NativeScript (Android and iOS) and Xamarin (iOS) apps testing. Tests can be recoreded or manually written and executed solely or inside test lists. - -### Platforms support - -Nowadays mobile apps can be created using different platforms. Test Studio Mobile supports the most recognized and utilized of them including Android and iOS: - -* Testing Native apps - both Android and iOS native apps are supported. Just configure your [Android App]({% slug ms-configure-android%}) or [iOS app]({% slug ms-configure-ios%}) to be testable and start recording your tests. - -* Testing Hybrid apps - both Android and iOS hybrid apps are supported. Just configure your [Cordova]({% slug ms-configure-hybrid%}) or [AppBuilder (Telerik Platform)]({% slug ms-configure-hybrid-appbuilder%}) app to be testable and start recording your tests. - -* Testing Web apps - the most used mobile browsers are supported - Safari for iOS and Chrome and Firefox for Android are supported. Test Studio uses a proxy to [configure your mobile web app]({% slug ms-configure-tsm%}) for testing. - -* Testing NativeScript apps - making a NativeScript app testable is achieved by adding a separate plugin with a [single line of code]({% slug ms-configure-nativescript%}). - -* Testing Xamarin apps (iOS only) - just [configure your Xamarin Studio app]({% slug ms-configure-xamarin-ios%}) to be testable and start recording your tests. - -### Connecting Agents (Devices) - -Test recording and execution is performed on connected devices. Test Studio Mobile supports both physical and virtual Android and iOS devices and provides the following options for connecting them: - -* [Wi-Fi connection]({% slug ms-connect-agent-wifi%}) - connect your Android or iOS device to Test Studio Mobile over Wi-Fi. This connection type is tailored for Native or Hybrid app testing and requires installation of the Mobile Testing Agent app. - -* [USB connection]({% slug ms-connect-agent-usb%}) - connect your Android or iOS device to Test Studio Mobile over USB cable. This connection type is tailored for Native or Hybrid app testing and requires installation of the Mobile Testing Agent app. - -* [Web connection]({% slug ms-configure-tsm%}) - connect a browser in your Android or iOS device to Test Studio Mobile over Wi-Fi. This connection type is tailored only for Web app testing and requires redirecting web traffic through a Test Studio Mobile proxy. - -### Recording and Execution - -As a complete mobile app testing solution, Test Studio Mobile supports the following approaches for test recording and execution: - -* Test Studio Mobile recorder - this built in feature allows you to create your tests without writing a single line of code and supports multiple gestures such as scroll, zoom, swipe, pinch etc. In record mode any action preformed over the tested app is automatically recorded as a step in the test. Those steps can be then refined if they are not recorded correctly and can be used with [Android native]({% slug ms-record-test-android%}), [Android hybrid]({% slug ms-record-test-android-hybrid%}), [iOS native]({% slug ms-record-test-ios%}), [iOS hybrid]({% slug ms-record-test-ios-hybrid%}) and [Web]({% slug ms-record-test-web%}) tests. - -* Coded tests support - scenarios that go beyond the Test Studio Mobile Recorder capabilities can be automated with code. Coded support includes [coded steps]({% slug ms-coded-steps%}) inside any type of test and [code item]({% slug ms-code-item%}) files that are compiled separately from tests. Adding assembly references and code compilation in both C# and VB languages are supported. - -* [Quick execution]({% slug ms-quick-execution%}) - a single test execution that provides results for the test itself and for every step in the test. Can be run on a single connected device only. - -* [Test List execution]({% slug ms-testlist-execution%}) - a single test list execution against one or more connected devices. Results are provided for the test list, every test in the test list and every step in every test. - -* [Mobile Runtime]({% slug ms-download%}#4-Mobile-Runtime) - despite Test Studio Mobile can be installed on Windows machines only, already recorded tests can be executed on Windows, Mac and Linux machines. - -## Next Steps - -+ [Getting started with Native and Hybrid apps testing]({% slug ms-getting-started-native%}) -+ [Getting started with Web testing]({% slug ms-getting-started-web%}) - -## Resources - - \ No newline at end of file diff --git a/docs/test-studio-mobile/test-execution-requirements.md b/docs/test-studio-mobile/test-execution-requirements.md deleted file mode 100644 index 1d64be97..00000000 --- a/docs/test-studio-mobile/test-execution-requirements.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: System Requirements -page_title: System Requirements -description: "Test Studio Mobile System Requirements" -position: 0 -slug: ms-requirements -previous_url: /test-studio-mobile/test-execution-requirements-mb ---- -#System Requirements - -##Test Recording - -To utilize the codeless point and click test recording, a Windows 7+ machine running Test Studio Mobile is needed. Currently, Test Studio Mobile comes as part of the Test Studio Ultimate bundle and can't be installed on Mac machines. Test recording requires at least 1 connected Native or Web test agent (see below). - -##Test Execution - -Test execution requires at least 1 connected Native or Web test agent (see below). - -* Windows 7+ machines - tests can be executed either by the Test Studio Mobile GUI or Mobile Testing Test Runner CLI for Windows. -* Mac OS X 10.8+ machines - tests can be executed only by the Mobile Testing Test Runner CLI for Mac and Linux. -* Linux Ubuntu 14+ machines - tests can be executed only by the Mobile Testing Test Runner CLI for Mac and Linux. - -##Test Agent for Native/Hybrid Applications - -When a native or hybrid app is to be tested, test agent is the Mobile Testing Agent app for Android or iOS: - -###Android Native/Hybrid - -* Install the Mobile Testing Agent app for Android on a device/emulator running Android 4+ - -###iOS Native/Hybrid - -* Install the Mobile Testing Agent app for iOS on a Device/simulator running iOS 8+ - -##Test Agent for Web Applications - -> To help you meet the demands of mobile users, Test Studio offers responsive testing of web applications enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> Check out the technical documentation for responsive application testing in Test Studio. - -{% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} -{% endif %} - -When a web app is to be tested, test agent is the browser itself (mobile or desktop). The browser must support WebSockets. Below is a short list of browsers that support WebSockets: - -* iOS Safari 6.0+ - -* Android Browser 4.4+ - -* Chrome for Android 32.0+ - -* Firefox for Android 26.0+ - -* [See more](http://caniuse.com/#search=websocket) - -##Native Demo apps - -Preconfigured Native demo apps for Android and iOS are available for download. Building and deploying those apps require: - -* Windows 7+ and Android Studio 0.4.0+ to deploy provided Android Demo Application -* Mac OS X 10.8+ and Xcode 6+ to deploy provided iOS Demo Application - -##Hybrid Demo app - -Preconfigured Hybrid demo app (Cordova) is available for download. Building and deploying that app require: - -* Cordova CLI - -##Mobile Testing Test Runner CLI - -* Windows 7+ machines - Mobile Testing Test Runner CLI installs as part of Test Studio Mobile. -* Mac OS X 10.8+ machines - Mobile Testing Test Runner CLI can be downloaded and run separately and requires Mono to be installed on the Mac. -* Linux machines running Ubuntu 14+ - Mobile Testing Test Runner CLI can be downloaded and run separately and requires Mono to be installed on the machine. \ No newline at end of file diff --git a/docs/test-studio-mobile/test-execution/quick-execution.md b/docs/test-studio-mobile/test-execution/quick-execution.md deleted file mode 100644 index 9bbe8fd2..00000000 --- a/docs/test-studio-mobile/test-execution/quick-execution.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Quick Execution -page_title: Quick Execution -description: "Quick Execution" -publish: true -slug: ms-quick-execution -position: 0 -slug: ms-quick-execution ---- - -#Playback a Test - -1. Open your project in Test Studio Mobile. - -2. To playback a test, it must be open in the Test Studio test explorer (double-click a test to open it in the test explorer). Clicking on the **Playback** button starts the test execution. - - ![Playback Button](/img/test-studio-mobile/test-execution/quick-execution/fig1.png) - -##Test Results - -When the test is executed the passed steps are marked with green color - -![Passed steps](/img/test-studio-mobile/test-execution/quick-execution/fig2.png) - -and the failed steps are marked with red color - -![Failed steps](/img/test-studio-mobile/test-execution/quick-execution/fig3.png) - -### Error details - -The Error Details view collects all the information related to a single failed test step. Select the failed step and click **Error Details** button. - -![Error details](/img/test-studio-mobile/test-execution/quick-execution/fig4.png) - -###Execution log - -The execution log or test log is a log available after test execution in the test view. You can pull it out by clicking **View Log** button. - -![View Log button](/img/test-studio-mobile/test-execution/quick-execution/fig5.png) - -The execution log is a record of the steps executed in the test, whether they passed or failed. It records what actions a step takes and what elements it acts upon. It lists all steps in one sequence and provides details for failed steps if any. - -![Execution log](/img/test-studio-mobile/test-execution/quick-execution/fig6.png) - -###See Also - -* [Run Demo Web Tests]({% slug ms-run-demos-web%}) -* [Run Native/Hybrid Demo Tests]({% slug ms-run-demos%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/test-execution/test-list-execution.md b/docs/test-studio-mobile/test-execution/test-list-execution.md deleted file mode 100644 index 7fa99537..00000000 --- a/docs/test-studio-mobile/test-execution/test-list-execution.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Test List Execution -page_title: Test List Execution -description: "Test List Execution in Test Studio Mobile" -publish: true -position: 0 -slug: ms-testlist-execution ---- - -# Mobile Test Lists - -1. In Test Studio Mobile you can execute one or more tests through a Test List. You can create a test list using the Create a List button: - - ![add test list](/img/test-studio-mobile/test-execution/test-list-execution/fig1.png) - - or by right clicking on the TestList node in the project: - - ![add test list](/img/test-studio-mobile/test-execution/test-list-execution/fig2.png) - -2. A new dialog appears where you need to specify the test list type. Provide a name and click **OK**. - - ![list type](/img/test-studio-mobile/test-execution/test-list-execution/fig3.png) - - > Android Hybrid tests can be added to Android test lists and iOS Hybrid tests can be added to iOS test lists. - -3. In order to add a test in the test list, double click the list to open it in the middle pane of Test Studio and click on the Edit button: - - ![edit](/img/test-studio-mobile/test-execution/test-list-execution/fig4.png) - -4. Select one or multiple tests and add them in the test list by clicking the arrow and click **Done**. You can also add tests by double clicking them. - - ![add test](/img/test-studio-mobile/test-execution/test-list-execution/fig5.png) - - The test now appears in the test list. - - ![test list added](/img/test-studio-mobile/test-execution/test-list-execution/fig6.png) - - > You can also add tests using drag&drop directly from the project explorer into the test list. - -5. In order to execute the test list ensure it is open and click on the **Run** button or press **F5**. - - ![run test list](/img/test-studio-mobile/test-execution/test-list-execution/fig7.png) - - You can also run a single list on multiple devices from the same type. Open the test list, and click the small arrow right next to the play button and choose the **Run on multiple** option: - - ![run on multiple](/img/test-studio-mobile/test-execution/test-list-execution/fig9.png) - - -The results of the test list run appear in the **Results** pane. - -![results](/img/test-studio-mobile/test-execution/test-list-execution/fig8.png) - -Double-click a test list in the Results view to see the result of each test. Double-clicking a test in this list drills down to show the steps of that test. The bread crumb trail at the top of the panel now shows the test list followed by the test name. - -![Drill down the results](/img/test-studio-mobile/test-execution/test-list-execution/fig10.png) - -Click the top level in the bread crumb trail to jump directly back to the test list result. - -###See Also - -* [Playback a Test]({% slug ms-quick-execution%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/test-recording/create-test.md b/docs/test-studio-mobile/test-recording/create-test.md deleted file mode 100644 index 067e7b27..00000000 --- a/docs/test-studio-mobile/test-recording/create-test.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Create a Test -page_title: Create a Test -description: "Create a Test Studio Mobile test" -slug: ms-create-test -publish: true -position: 0 -slug: ms-create-test ---- - -#Create a Test Studio Mobile Test - -1. Launch Test Studio - -2. Click **Create project**, select **Mobile** and a Project Name and Location - - ![Create a test](/img/test-studio-mobile/test-recording/create-test/fig1.png) - -3. Click **Create a Test** button - - ![Create a test button](/img/test-studio-mobile/test-recording/create-test/fig2.png) - - or right click on the project and select **Add New Test** - - ![Create a test button via right click](/img/test-studio-mobile/test-recording/create-test/fig3.png) - -4. Select the test type you want to create - - ![Select a test type](/img/test-studio-mobile/test-recording/create-test/fig4.png) - -## See also - -* [Record an Android test]({% slug ms-record-test-android%}) -* [Record an iOS test]({% slug ms-record-test-ios%}) -* [Record a Web test]({% slug ms-record-test-web%}) -* [Record Android Hybrid Test]({% slug ms-record-test-android-hybrid%}) -* [Record iOS Hybrid Test]({% slug ms-record-test-ios-hybrid%}) diff --git a/docs/test-studio-mobile/test-recording/record-a-test/record-test-android-hybrid.md b/docs/test-studio-mobile/test-recording/record-a-test/record-test-android-hybrid.md deleted file mode 100644 index c1591826..00000000 --- a/docs/test-studio-mobile/test-recording/record-a-test/record-test-android-hybrid.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Record Android Hybrid Test -page_title: Record Android Hybrid Test -description: "Record a Test Studio Mobile test" -publish: true -position: 3 -slug: ms-record-test-android-hybrid ---- - -#Record an Android Hybrid Test - -Once the native Mobile Testing Agent app is [connected]({% slug ms-getting-started-native%}#Connect-Agent) to Test Studio Mobile the devices are listed in the **Conencted Devices** pane. - -1. Open an Android Hybrid test to enable the recording buttons. - - ![Record Android Hybrid](/img/test-studio-mobile/test-recording/record-test/fig9.png) - -2. Clicking on any of the **Record** buttons, shows a dialog where `Application Identifier` must be entered. The app identifier is: - * For AppBuilder app, it is set during AppBuidler app [configuration process]({% slug ms-configure-hybrid-appbuilder%}#appid). - * For Cordova app, it is set in the Cordova CLI during the [Cordova App creation process]({% slug ms-configure-hybrid%}#App-Identifier) and is something like `com.mycompany.myapp`. - * For the [Demo Hyrbid App]({% slug ms-run-demos%}#Android-Hybrid-Demo-App), it is already setup with the **io.cordova.hellocordova** identifier for Android. - - ![Android Hybrid APP identifier](/img/test-studio-mobile/test-recording/record-test/fig10.png) - -3. Clicking the **Start** button disconnects the Agent app and launches the testable app. The test recorder is attached and any gestures or actions you perform over the launched testable app are recorded as steps in the Test Studio test - - ![Android App](/img/test-studio-mobile/test-recording/record-test/fig11.png) - - > Additional steps (e.g. verifications) can be added through the [Step Builder]({% slug ms-step-builder%}). - -4. Once the test is complete, stop recording by clicking on the **Stop Record** button. The recorder is detached, the testable app is closed and the Agent app is returned in connected state. - - ![Stop recording Android App](/img/test-studio-mobile/test-recording/record-test/fig12.png) - -## See also - -* [Create a test]({% slug ms-create-test%}) -* [Connect agent USB]({% slug ms-connect-agent-usb%}) -* [Connect agent Wi-Fi]({% slug ms-connect-agent-wifi%}) - -[1]: https://cordova.apache.org/docs/en/latest/guide/cli/index.html \ No newline at end of file diff --git a/docs/test-studio-mobile/test-recording/record-a-test/record-test-android.md b/docs/test-studio-mobile/test-recording/record-a-test/record-test-android.md deleted file mode 100644 index 22db3358..00000000 --- a/docs/test-studio-mobile/test-recording/record-a-test/record-test-android.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Record Android Test -page_title: Record Android Test -description: "Record a Test Studio Mobile test" -publish: true -slug: ms-record-test-android -previous_url: /test-studio-mobile/test-recording/record-test -position: 0 -slug: ms-record-test-android ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -#Record an Android Test - -Once the native Mobile Testing Agent app is [connected]({% slug ms-getting-started-native%}#Connect-Agent) to Test Studio Mobile the devices are listed in the **Conencted Devices** pane. - -1. Open an Android test to enable the recording buttons. - - ![Record Android](/img/test-studio-mobile/test-recording/record-test/fig8.png) - -2. Clicking on any of the **Record** buttons, shows a dialog where `Application Identifier` must be selected. The app identifier is setup during the [Android instrumentation process]({% slug ms-configure-android%}) of the testable app. The [Demo App]({% slug ms-run-demos%}#Android-Demo-App) is already setup with the **com.telerik.demoapplication** identifier. - - ![Android APP identifier](/img/test-studio-mobile/test-recording/record-test/fig5.png) - -3. Clicking the **Start** button disconnects the Agent app and launches the Demo App. The test recorder is attached and any gestures or actions you perform over the launched Demo App is recorded as steps in the Test Studio test - - ![Android App](/img/test-studio-mobile/test-recording/record-test/fig6.png) - - **Note:** Additional steps (e.g. verifications) can be added through the [Step Builder]({% slug ms-step-builder%}). - -4. Once the test is complete, stop recording by clicking on the **Stop Record** button. The recorder is detached, the Demo App is closed and the Agent app is returned in connected state. - - ![Stop recording Android App](/img/test-studio-mobile/test-recording/record-test/fig7.png) - -## See also - -* [Create a test]({% slug ms-create-test%}) -* [Connect agent USB]({% slug ms-connect-agent-usb%}) -* [Connect agent Wi-Fi]({% slug ms-connect-agent-wifi%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/test-recording/record-a-test/record-test-ios-hybrid.md b/docs/test-studio-mobile/test-recording/record-a-test/record-test-ios-hybrid.md deleted file mode 100644 index 8cc7d679..00000000 --- a/docs/test-studio-mobile/test-recording/record-a-test/record-test-ios-hybrid.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Record iOS Hybrid Test -page_title: Record iOS Hybrid Test -description: "Record a Test Studio Mobile test" -publish: true -position: 4 -slug: ms-record-test-ios-hybrid ---- - -#Record an iOS Hybrid Test - -Once the native Mobile Testing Agent app is [connected]({% slug ms-getting-started-native%}#Connect-Agent) to Test Studio Mobile the devices are listed in the **Conencted Devices** pane. - -1. Open an iOS Hybrid test to enable the recording buttons. - - ![Record iOS Hybrid](/img/test-studio-mobile/test-recording/record-test/fig13.png) - -2. Clicking on any of the **Record** buttons, shows a dialog where `Application Identifier` must be entered. The app identifier is: - * For AppBuilder app, it is set during AppBuidler app [configuration process]({% slug ms-configure-hybrid-appbuilder%}#appid). - * For Cordova app, it is set in the Cordova CLI during the [Cordova App creation process]({% slug ms-configure-hybrid%}#App-Identifier) and is something like **telerikmt1**. - * For the [Demo Hyrbid App]({% slug ms-run-demos%}#Android-Hybrid-Demo-App), it is already setup with the **telerikmt1** identifier for iOS. - - ![iOS Hybrid APP identifier](/img/test-studio-mobile/test-recording/record-test/fig14.png) - -3. Clicking the **Start** button disconnects the Agent app and launches the testable app. The test recorder is attached and any gestures or actions you perform over the launched testable app are recorded as steps in the Test Studio test - - ![iOS App](/img/test-studio-mobile/test-recording/record-test/fig15.png) - - > Additional steps (e.g. verifications) can be added through the [Step Builder]({% slug ms-step-builder%}). - -4. Once the test is complete, stop recording by clicking on the **Stop Record** button. The recorder is detached, the testable app is closed and the Agent app is returned in connected state. - - ![Stop recording iOS App](/img/test-studio-mobile/test-recording/record-test/fig16.png) - -## See also - -* [Create a test]({% slug ms-create-test%}) -* [Connect agent USB]({% slug ms-connect-agent-usb%}) -* [Connect agent Wi-Fi]({% slug ms-connect-agent-wifi%}) - -[1]: https://cordova.apache.org/docs/en/latest/guide/cli/index.html \ No newline at end of file diff --git a/docs/test-studio-mobile/test-recording/record-a-test/record-test-ios.md b/docs/test-studio-mobile/test-recording/record-a-test/record-test-ios.md deleted file mode 100644 index 2508c6d3..00000000 --- a/docs/test-studio-mobile/test-recording/record-a-test/record-test-ios.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Record iOS Test -page_title: Record iOS Test -description: "Record a Test Studio Mobile test" -publish: true -position: 1 -slug: ms-record-test-ios ---- - -#Record an iOS Test - -Once the native Mobile Testing Agent app is [connected]({% slug ms-getting-started-native%}#Connect-Agent) to Test Studio Mobile the devices are listed in the **Conencted Devices** pane. - -1. Open an iOS test to enable the recording buttons. - - ![Record iOS](/img/test-studio-mobile/test-recording/record-test/fig1.png) - -2. Clicking on any of the **Record** buttons, shows a dialog where `Application Identifier` must be selected. The app identifier is setup during the [iOS instrumentation process]({% slug ms-configure-ios%}) of the testable app. The [Demo App]({% slug ms-run-demos%}#iOS-Demo-App) is already setup with the **tsdemoapplication://** identifier. - - > When used in Test Studio, the `Application Identifier` setup in Xcode must be suffixed with **://**. For example, the app identifier that is setup for the Demo app in Xcode is **tsdemoapplication** (no trailing colon and slashes), but suffixed with **://** when entered in the Test Studio **Set Application ID** dialog. - - ![iOS App](/img/test-studio-mobile/test-recording/record-test/fig2.png) - -3. Clicking the **Start** button disconnects the Agent app and launches the Demo App. The test recorder is attached and any gestures or actions you perform over the launched Demo App is recorded as steps in the Test Studio test: - - ![iOS App](/img/test-studio-mobile/test-recording/record-test/fig3.png) - - **Note:** Additional steps (e.g. verifications) can be added through the [Step Builder]({% slug ms-step-builder%}). - -4. Once the test is complete, stop recording by clicking on the **Stop Record** button. The recorder is detached, the Demo App is closed and the Agent app is returned in connected state. - - ![iOS App](/img/test-studio-mobile/test-recording/record-test/fig4.png) - -## See also - -* [Create a test]({% slug ms-create-test%}) -* [Connect agent USB]({% slug ms-connect-agent-usb%}) -* [Connect agent Wi-Fi]({% slug ms-connect-agent-wifi%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/test-recording/record-a-test/record-test-web.md b/docs/test-studio-mobile/test-recording/record-a-test/record-test-web.md deleted file mode 100644 index 76b7b545..00000000 --- a/docs/test-studio-mobile/test-recording/record-a-test/record-test-web.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Record Web Test -page_title: Record Web Test -description: "Record a Test Studio Mobile test" -publish: true -position: 2 -slug: ms-record-test-web ---- - -> To help you meet the demands of mobile users, Test Studio offers responsive testing of web applications enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> Check out the technical documentation for responsive application testing in Test Studio. - -{% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} -{% endif %} - -#Record a Web Test - -Once the web agent (browser) is [connected]({% slug ms-connect-webagent%}) to Test Studio Mobile the agents (browsers) are listed in the **Conencted Devices** pane. - -1. [Create]({% slug ms-create-test%}) and open a Web test. Once you open it the recording buttons are getting enabled. - - ![Record buttons](/img/test-studio-mobile/test-recording/record-test/record-web-test/fig1.png) - -2. Clicking on any of the **Record** buttons shows a dialog where *Application Url* must be typed (e.g. http://www.telerik.com). - - ![Set URL](/img/test-studio-mobile/test-recording/record-test/record-web-test/fig2.png) - -3. Clicking the **Start** button navigates to the set URL in your mobile browser. The test recorder is attached and any gestures or actions you perform over the launched web application is recorded as steps in the Test Studio test. - - ![Record the test](/img/test-studio-mobile/test-recording/record-test/record-web-test/fig3.png) - - **Note:** Additional steps (e.g. verifications) can be added through the [Step Builder]({% slug ms-step-builder%}). - -4. Once the test is complete, stop recording by clicking on the **Stop Record** button. The recorder is detached and you can run the test. - - ![Stop the recording](/img/test-studio-mobile/test-recording/record-test/record-web-test/fig4.png) - -## See also - -* [Connect a Web Agent]({% slug ms-connect-webagent%}) -* [Step Builder]({% slug ms-step-builder%}) -* [Quick Execution]({% slug ms-quick-execution%}) diff --git a/docs/test-studio-mobile/troubleshooting/configure-android-settings.md b/docs/test-studio-mobile/troubleshooting/configure-android-settings.md deleted file mode 100644 index aa3b9bc4..00000000 --- a/docs/test-studio-mobile/troubleshooting/configure-android-settings.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Android Configuration Settings -page_title: Android Configuration Settings -description: Apply our testing extension to your native Android application. -slug: ms-configure-android-settings -tags: android testing, native -publish: true -position: 0 -previous_url: /test-studio-mobile/troubleshooting-mb/configure-android-settings ---- - -> To help you meet the demands of mobile users, Test Studio offers automated responsive testing enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> As of March 1, 2020, native mobile testing is __no longer supported__. - -#Android Configuration Settings - -Configuring an Android app to be testable is a complicated process that unzips the app (.apk) file, changes it and then rebuilds it. Several **Android** and **Java** tools are taking part into the process and that is why it is important to have all configurations correctly set. The configuration mechanism saves and loads these settings from a file that is created the first time Android application configuration is initiated. The file contents is in pure text format and can be edited manually using any text editor. However, it is not recommended to manually edit it except in the cases listed in this topic. - -The first time **Android** application configuration is started, a path to the **Android SDK** and **Java JDK** folders must be set. Those values are then saved in the configuration settings file and can be changed either through the Android application configuration dialog or manually. If either of the values is not valid or does not exist, error messages are shown and configuration can't be continued. - -![SDK_JAVA_errors](/img/test-studio-mobile/troubleshooting-guide/android-configuration/fig1.png) - -In some cases Android application configuration can't be continued even when **Android SDK** and **Java JDK** paths are set correctly. In addition to these 2 parameters, it also depends on Android build tools version and Android platforms installed. They are automatically set based on the Android SDK value. If for some reason the saved Android Build Tools and Platform values become invalid (e.g. uninstall them from the Android SDK Manager), Android application configuration won't work and errors will be shown. To fix this you can either: - -1. Open the Android application configuration dialog and delete the **Android SDK** value and enter it again. This will initiate a new automatic detection of the Android build tools and Android platform versions. - -2. Close the Android application configuration dialog. Edit the values manually in the configuration file that is by default located in `%USERPROFILE%\AppData\Roaming\ArtOfTest\MtAPKProvisioningSettings.json`. - -![BuildTool_Platform](/img/test-studio-mobile/troubleshooting-guide/android-configuration/fig2.png) - -After the configuration file is edited, save it and reopen Android application configuration dialog to pick the new values. \ No newline at end of file diff --git a/docs/test-studio-mobile/troubleshooting/known-issues.md b/docs/test-studio-mobile/troubleshooting/known-issues.md deleted file mode 100644 index 365069e0..00000000 --- a/docs/test-studio-mobile/troubleshooting/known-issues.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Known Issues -page_title: Known Issues -description: "Known Issues" -publish: true -position: 0 -slug: ms-known-issues -previous_url: /test-studio-mobile/troubleshooting-mb/known-issues,/test-studio-mobile/troubleshooting-mb ---- - -#Known Issues - -##PROBLEM - -After a Test Studio is upgraded, running coded tests created with previous Test Studio versions may fail with: - -*Could not load file or assembly error* - -![Could not load assembly](/img/test-studio-mobile/knowledge-base-tm/known-issues/fig5.png) - -##SOLUTION - -This is expected behavior for projects that have coded steps. All you have to do to resolve it is: - -1. Open you test project root folder. - -2. Open the Bin folder inside it and delete the file named *MyProjectName.dll*. - -3. Run the test. - - -##PROBLEM - -I am getting *TestProject.TestName does not contain a definition for "Context" and no extension method "Context" accepting a first argument of type TestProject.TestName could be found (are you missing a using directive or an assembly reference?)* compilation error in my C# project - -![C# error](/img/test-studio-mobile/knowledge-base-tm/known-issues/fig1.png) - -and - -*"Context is not a member of TestProject.TestName error in file C:\Users\\[userName]\AppData\Local\Temp\tempFileName.tmp"* compilation error in my VB project. - -![VB error](/img/test-studio-mobile/knowledge-base-tm/known-issues/fig2.png) - -This compile error appears in case you have changed the class name in your code file. - -![VB error](/img/test-studio-mobile/knowledge-base-tm/known-issues/fig3.png) - -##SOLUTION - -When you change the class name you should bind the test to the new class name. You can do this from the test properties. - -![Bind the new class](/img/test-studio-mobile/knowledge-base-tm/known-issues/fig4.png) - -
-##PROBLEM - -*While instrumenting a native Android application through the [built in method]({% slug ms-configure-android%}#Built-In-Configuration) I get the following exception:* - -![Error while instrumenting Android app](/img/test-studio-mobile/knowledge-base-tm/known-issues/fig6.png) - -This happens when the app to be instrumented has more than 65536 methods and is is installed on device running API level 20 and below. - -##SOLUTION - -You should use device which is running API level 21 or higher or use the [manual]({% slug ms-configure-android%}#Manual) instrumentation. \ No newline at end of file diff --git a/docs/test-studio-mobile/web-applications/configuration/certificate.md b/docs/test-studio-mobile/web-applications/configuration/certificate.md deleted file mode 100644 index 250a86cb..00000000 --- a/docs/test-studio-mobile/web-applications/configuration/certificate.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Install Certificate -page_title: Install Certificate -description: "Install Certificate" -position: 1 -slug: ms-certificate ---- - -> To help you meet the demands of mobile users, Test Studio offers responsive testing of web applications enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. - -# Install Certificate # - -> Before proceeding with the certificate installation you should have successfully set up. [Connect the Web Agent]({% slug ms-connect-webagent %}). - -To accept the routed proxy traffic, the web client must trust the web proxy server. This requires installing a certificate on the device. diff --git a/docs/test-studio-mobile/web-applications/configuration/configure-teststudio-mobile.md b/docs/test-studio-mobile/web-applications/configuration/configure-teststudio-mobile.md deleted file mode 100644 index b5ebdae7..00000000 --- a/docs/test-studio-mobile/web-applications/configuration/configure-teststudio-mobile.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Configure Test Studio Mobile -page_title: Configure Test Studio Mobile -description: "Configure Test Studio Mobile" -position: 0 -slug: ms-configure-tsm ---- - -> To help you meet the demands of mobile users, Test Studio offers responsive testing of web applications enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> Check out the technical documentation for responsive application testing in Test Studio. - -{% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} -{% endif %} - -# Configure Test Studio Mobile for Web testing - -> The web testing configuration is a 4 step process. The first step is to configure the Test Studio Mobile project on the desktop machine. - -1. Create a **Mobile** test project and [add a web test]({% slug ms-create-test%}). - -2. Go to [project settings]({% slug ms-project-settings%}) and set the **Web proxy port** (the default is set to 8083). - -3. Click **Connect Device** under **Connected Device** pane. - - ![Connect Device](/img/test-studio-mobile/web-applications/connect-web-agent/fig2.png) - -4. Choose the **Web Browser** tab. - - 4.1 Click **Install** button to set the local HTTPS certificate. - - 4.2 Using the mobile browser you want to test in go to the shown URL or scan the QR code. This will navigate you to the TestStudio Mobile agent configuration page on your device. - - ![Navigate to URL](/img/test-studio-mobile/web-applications/connect-web-agent/fig3.png) - -5. Continue with [Proxy Configuration]({% slug ms-webproxy%}) \ No newline at end of file diff --git a/docs/test-studio-mobile/web-applications/configuration/connect-agent.md b/docs/test-studio-mobile/web-applications/configuration/connect-agent.md deleted file mode 100644 index 7c2ddefe..00000000 --- a/docs/test-studio-mobile/web-applications/configuration/connect-agent.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Connect Web Agent -page_title: Connect Web Agent -description: "Connect Web Agent" -position: 5 -slug: ms-connect-webagent ---- - -> To help you meet the demands of mobile users, Test Studio offers responsive testing of web applications enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. - -# Connect Web Agent - -1. After successful [proxy configuration]({% slug ms-webproxy%}) and [certificate installation]({% slug ms-certificate%}) tap the **Connect** button to connect to Test Studio execution agent configuration page. - - ![Connect to the execution agent](/img/test-studio-mobile/web-applications/connect-web-agent/fig7.png) - - > In some cases you may have to **restart Chrome** mobile browser in order to access the connect screen in TestStudio Mobile agent configuration page (step 3. Connect). - -2. After successful connection you can start [recording a web test]({% slug ms-record-test-web%}). Alternatively, [run the Demo web tests]({% slug ms-run-demos-web%}) - - - ![Successful connection](/img/test-studio-mobile/web-applications/connect-web-agent/fig8.png) - -**See Also** - -* [Record a web test]({% slug ms-record-test-web%}) -+ [Playback Tests]({% slug ms-quick-execution%}) diff --git a/docs/test-studio-mobile/web-applications/configuration/proxy.md b/docs/test-studio-mobile/web-applications/configuration/proxy.md deleted file mode 100644 index 96dbe0ec..00000000 --- a/docs/test-studio-mobile/web-applications/configuration/proxy.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Configure Proxy -page_title: Configure Proxy -description: "Configure Proxy" -position: 1 -slug: ms-webproxy ---- - -> To help you meet the demands of mobile users, Test Studio offers responsive testing of web applications enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> Check out the technical documentation for responsive application testing in Test Studio. - -{% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} -{% endif %} - -# Configure Proxy - -> Before proceeding with the proxy configuration you must have [Test Studio Mobile Configuration]({% slug ms-configure-tsm%}) successfully set up. - -## Configure Web Proxy On Mobile Devices - -Test Studio Mobile uses a web proxy for injecting a web extension in every page that a web test navigates to. Before tests are recorded or executed, the web browser must be configured to route its traffic through Test Studio Mobile web proxy. - -* **Android Browsers** - * Chrome (other) - * FireFox - -* **iOS browsers** - * All browsers - - -##Android - - -###Chrome (other) - -1. On your mobile device tap **Settings -> WiFi**. - -2. Long tap on connected network's name. - -3. Modify Network Config -> Show Advanced Options. - -4. Type the **Host** into the **Proxy host name** field and the **Port** into to the **Proxy port** field. Take the **Host** and **Port** values from the TestStudio Mobile agent configuration page on your device. - - ![Configure proxy Android](/img/test-studio-mobile/web-applications/proxy/fig1.png) - -5. Click **Save** in the settings dialog. Click the **Next** button in the browser. - -6. Continue with [Install Certificate]({% slug ms-certificate%}) procedure. - - -###FireFox - - -1. Type **about:config** in your FifeFox mobile browser. - -2. Search for Proxy and enter the **Host** and **Port** in the corresponding fields. Take the **Host** and **Port** values from the TestStudio Mobile agent configuration page on your device. - - * **network.proxy.http** - Host - * **network.proxy.http_port** - Port - - ![FF](/img/test-studio-mobile/web-applications/proxy/fig3.png) - -3. Do the same for SSL connection and don't forget to set **Network Proxy Type** to 1. - - * **network.proxy.ssl** - Host - * **network.proxy.ssl_port** - Port - * **network.proxy.type** - **set to 1**. - - ![FF](/img/test-studio-mobile/web-applications/proxy/fig4.png) - -4. After configuring the WiFI proxy settings click the **Next** button. - -5. Continue with [Install Certificate]({% slug ms-certificate%}) procedure. - - -##iOS - -###All Browsers - -1. Tap **Settings -> Wifi -> Tap the connected WiFi network**. - -2. Tap the **Manual** option in the HTTP Proxy section. - -3. Type **Host** into the **Server** field and the **Proxy** into to the **Port** field. Take the **Host** and **Port** values from the TestStudio Mobile agent configuration page on your device. - - ![Configure proxy iOS](/img/test-studio-mobile/web-applications/proxy/fig2.png) - -4. After configuring the WiFI proxy settings click the **Next** button. - -5. Continue with [Install Certificate]({% slug ms-certificate%}) procedure. \ No newline at end of file diff --git a/docs/test-studio-mobile/web-applications/run-demos.md b/docs/test-studio-mobile/web-applications/run-demos.md deleted file mode 100644 index 070cea1c..00000000 --- a/docs/test-studio-mobile/web-applications/run-demos.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Run Demo Web Tests -page_title: Run Demo Web Tests -description: "Run Demo Web Tests" -position: 1 -slug: ms-run-demos-web ---- - -> To help you meet the demands of mobile users, Test Studio offers responsive testing of web applications enabling you to test your web application's layout, functionality and behavior on mobile and desktop browsers. ->
->
-> Check out the technical documentation for responsive application testing in Test Studio. - -{% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} -{% endif %} - -# Run Demo Web Tests - -1. [Configure]({% slug ms-configure-tsm%}) the web agent. - -2. Download the [mobile demo tests project](/samples/DemoMobileProject.zip). - -3. Start Test Studio Mobile, click on **Open Project**, navigate to the demo mobile project folder and click **Select Folder**. - - ![Open demo project](/img/test-studio-mobile/web-applications/run-web-demos/fig1.png) - -4. Open and run any web test or web test list through the quick execution button. - - ![run web test](/img/test-studio-mobile/web-applications/run-web-demos/fig2.png) - - -See Also --------- - -+ [Playback Tests]({% slug ms-quick-execution%}) -+ [Record Web Test]({% slug ms-record-test-web%}) \ No newline at end of file From 0c79da84c761d81f9e205b9377ca8c78220ba47f Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Tue, 7 Jan 2025 15:34:18 +0200 Subject: [PATCH 03/65] Fix headers, CTA banners and other Fix headers, CTA banners and other small things that were not working properly. Add icons --- .../build-server/team-city-builds.md | 2 +- .../general/aborted-test-list-results.md | 6 +-- .../general/access-oracle-database.md | 10 ++-- .../general/access-performance-data.md | 2 +- .../general/access-sql-database.md | 10 ++-- .../coded-samples/general/add-message-box.md | 4 +- .../general/attach-data-columns.md | 4 +- .../general/browser-specific-actions.md | 4 +- .../coded-samples/general/cookies.md | 2 +- .../general/custom-scripts-before-after.md | 10 ++-- .../general/data-driven-find-expressions.md | 4 +- .../general/execution-extensions.md | 6 +-- .../general/extend-basewebaiitest-class.md | 2 +- .../general/external-log-file.md | 10 ++-- .../coded-samples/general/fail-the-test.md | 6 +-- .../general/framework-in-console-app.md | 4 +- .../general/generate-random-number.md | 4 +- .../general/generate-random-text.md | 8 ++-- .../coded-samples/general/get-project-path.md | 4 +- .../general/grayed-out-controls.md | 4 +- .../general/invoke-application.md | 4 +- .../general/invoke-web-service-call.md | 4 +- .../general/load-testing-extensions.md | 2 +- .../general/log-clipboard-text.md | 4 +- .../general/log-error-dialogs.md | 4 +- .../general/mouse-wheel-scroll.md | 4 +- .../general/non-iterative-data-driving.md | 6 +-- .../general/override-app-config.md | 4 +- .../coded-samples/general/random-row.md | 6 +-- .../general/relative-dialog-path.md | 4 +- .../coded-samples/general/send-keystrokes.md | 14 +++--- .../coded-samples/general/skip-iteration.md | 4 +- ...ements-from-repository-in-utility-class.md | 4 +- .../general/use-external-dll-in-vs.md | 4 +- .../general/using-the-http-proxy.md | 2 +- .../general/utility-class-in-standalone.md | 8 ++-- .../coded-samples/general/verify-not-empty.md | 2 +- .../general/wait-for-element-in-code.md | 4 +- .../coded-samples/html/add-tag-to-iframe.md | 8 ++-- .../html/ajax-calendar-random-date.md | 4 +- .../coded-samples/html/async-upload-dialog.md | 2 +- .../html/common-find-expressions.md | 4 +- .../html/conditional-dialog-handling.md | 4 +- .../coded-samples/html/dynamic-grid.md | 8 ++-- .../html/extract-an-attribute.md | 4 +- .../coded-samples/html/image-comparison.md | 4 +- .../html/jquery-events-do-not-fire.md | 2 +- .../html/partial-attributes-search-fails.md | 8 ++-- .../html/radwindow-width-height.md | 4 +- .../html/table-searching-paging.md | 4 +- .../coded-samples/html/table-sum-average.md | 4 +- .../coded-samples/html/verify-dialog-text.md | 4 +- .../html/verify-sort-order-html.md | 4 +- .../coded-samples/html/verify-style.md | 4 +- .../silverlight/change-find-strategy.md | 4 +- .../combobox-automation/verify-all-text.md | 2 +- .../verify-specific-text.md | 4 +- .../go-through-all-grid-cells.md | 4 +- .../scrolling-paging.md | 4 +- .../radgridview-automation/scrolling.md | 4 +- .../total-rows-count.md | 4 +- .../verify-specific-column.md | 4 +- .../select-listbox-item-by-text.md | 4 +- .../verify-colors-in-silverlight.md | 4 +- .../silverlight/verify-sort-order.md | 4 +- .../verify-text-in-rich-textbox.md | 4 +- .../wpf/connect-to-running-app.md | 4 +- .../wpf/go-through-grid-cells.md | 4 +- .../wpf/go-through-radtreeview.md | 4 +- .../coded-samples/wpf/parameterize-wpf-app.md | 4 +- .../elements/element-repository.md | 4 +- .../elements/merge-page-nodes.md | 8 ++-- docs/automated-tests/elements/overview.md | 12 ++--- .../using-chained-find-expressions.md | 2 +- .../headless/headless-test-execution.md | 2 +- docs/automated-tests/load/overview.md | 2 +- docs/automated-tests/recording/overview.md | 2 +- .../recording/pdf-validation.md | 4 +- docs/automated-tests/scheduling/overview.md | 1 - .../source-control/git/open-git-project.md | 2 +- .../source-control/sc-alternatives.md | 2 +- .../test-lists/test-lists-standalone.md | 4 +- .../test-lists/test-lists-type-standalone.md | 39 --------------- .../automated-tests/vs-plugin/preview-code.md | 2 +- .../advanced-recording-tools/dom-explorer.md | 2 +- .../verifications/image-verification.md | 2 +- .../recorder/compact-recording-toolbar.md | 8 ++-- docs/features/recorder/test-recorder.md | 12 ++--- .../test-maintenance/test-properties-vs.md | 8 ++-- .../installation-and-activation.md | 12 ++--- docs/images/avatar-ninja.svg | 1 + docs/images/ninja-no-results.svg | 47 +++++++++++++++++++ .../best-practices-kb/add-existing-test.md | 2 +- .../best-practices-kb/id-automation-id.md | 2 +- .../regular-vs-coded-step.md | 2 +- .../submit-support-ticket.md | 10 ++-- .../best-practices-kb/test-modularization.md | 10 ++-- .../browsers-kb/custom-chrome-path.md | 2 +- .../dynamic-data-binding.md | 8 ++-- .../multiple-users-with-login.md | 2 +- .../numeric-values-trimmed.md | 6 +-- .../data-driven-testing-kb/pass-a-variable.md | 4 +- .../data-driven-testing-kb/sql-random-row.md | 4 +- .../unexpected-dialog-action.md | 8 ++-- .../variable-query-strings.md | 6 +-- .../load-testing-kb/analyze-results.md | 20 ++++---- .../load-testing-kb/load-strategies.md | 14 +++--- .../load-testing-kb/profiling-your-app.md | 18 +++---- .../load-testing-kb/selecting-traffic.md | 12 ++--- .../load-testing-kb/think-times.md | 12 ++--- .../load-testing-kb/virtual-users.md | 12 ++--- .../disconnect-from-fource-control.md | 4 +- .../multiple-projects.md | 8 ++-- .../scheduling-kb/locked-machine.md | 2 +- .../test-execution-kb/base-url.md | 20 ++++---- .../test-execution-kb/excel-event.md | 2 +- .../test-execution-kb/minimized-rdc.md | 4 +- .../test-execution-kb/multi-browsers.md | 6 +-- .../run-mobile-test-in-web-test.md | 2 +- .../run-web-test-in-other-test.md | 2 +- .../set-test-execution-time-limit.md | 2 +- .../test-execution-kb/slow-execution-rdc.md | 4 +- .../kendoui-duplicate-elements.md | 2 +- .../disabled-attribute-html.md | 6 +-- .../verification-kb/verify-deleted-data.md | 2 +- .../verification-kb/verify-html-tool-tips.md | 6 +-- .../resharper-compatibility.md | 6 +-- .../configure-your-browser/firefox.md | 2 +- .../installation/configure-windows-server.md | 6 +-- .../installation/install-procedure.md | 10 ++-- docs/system-requirements.md | 2 +- docs/test-studio-editions.md | 2 +- docs/testing-framework/api-reference.md | 2 +- .../automate-browser-actions.md | 4 +- .../frequently-asked-questions.md | 2 +- docs/testing-framework/getting-started.md | 8 ++-- docs/testing-framework/using-mbunit.md | 8 ++-- docs/testing-framework/using-nunit.md | 8 ++-- docs/testing-framework/using-vs-team-test.md | 12 ++--- docs/testing-framework/using-xunit.md | 8 ++-- .../asp-net-host-server.md | 4 +- .../attribute-extensions.md | 12 ++--- .../advanced-topics-wtc/frames-support.md | 4 +- .../custom-dialogs.md | 2 +- .../custom-handlers.md | 8 ++-- .../file-download-dialog.md | 2 +- .../firefox-dialogs.md | 2 +- .../modal-dialogs.md | 2 +- .../win32-dialogs.md | 2 +- .../javascript-wtc/check-javascript-errors.md | 2 +- .../javascript-wtc/invoking-javascript.md | 6 +-- .../javascript-wtc/javascript-events.md | 6 +-- .../javascript-wtc/javascript-logging.md | 2 +- .../javascript-wtc/json-objects.md | 2 +- .../multi-browser-support.md | 4 +- .../test-regions-wtc/Introduction.md | 12 ++--- .../test-regions-wtc/asp-net-tr-control.md | 4 +- .../using-the-http-proxy.md | 2 +- .../intermediate-topics-wtc/Annotator.md | 8 ++-- .../intermediate-topics-wtc/ajax-support.md | 8 ++-- .../configure-browser-In-code.md | 2 +- .../intermediate-topics-wtc/cookie-support.md | 8 ++-- .../desktop-manager.md | 2 +- .../dom-navigation.md | 2 +- .../find-expressions.md | 18 +++---- .../find-param-as-xml-data.md | 8 ++-- .../find-param-objects.md | 6 +-- .../finding-page-elements.md | 10 ++-- .../linq-queries.md | 2 +- .../custom-html-control.md | 2 +- .../html-control-suite-wtc/drag-and-drop.md | 2 +- .../html-control-suite-wtc/element-styles.md | 2 +- .../find-and-navigate-elements.md | 2 +- .../get-set-properties.md | 2 +- .../html-control-suite-wtc/html-actions.md | 2 +- .../html-control-suite-wtc/html-asserts.md | 2 +- .../html-control-suite-wtc/html-wait-class.md | 2 +- .../html-control-suite-wtc/introduction.md | 4 +- .../html-control-suite-wtc/transfer-files.md | 2 +- .../keyboard-manager.md | 2 +- .../intermediate-topics-wtc/mouse-manager.md | 2 +- .../app-config-file.md | 2 +- .../settings-class.md | 12 ++--- .../visual-capturing.md | 6 +-- .../intermediate-topics-wtc/win32-windows.md | 2 +- .../element-validation.md | 2 +- .../framework-element-object.md | 4 +- .../invoking-actions.md | 20 ++++---- .../locating-elements.md | 8 ++-- .../silverlight-ui-automation.md | 2 +- .../silverlight-ui-namespace.md | 2 +- .../synchronization.md | 8 ++-- .../wpf-ui-automation.md | 2 +- .../project-runs-locally-not-remotely.md | 12 ++--- docs/welcome.md | 2 +- 195 files changed, 539 insertions(+), 531 deletions(-) delete mode 100644 docs/automated-tests/test-lists/test-lists-type-standalone.md create mode 100644 docs/images/avatar-ninja.svg create mode 100644 docs/images/ninja-no-results.svg diff --git a/docs/advanced-topics/build-server/team-city-builds.md b/docs/advanced-topics/build-server/team-city-builds.md index f2085c53..1bde8fd4 100644 --- a/docs/advanced-topics/build-server/team-city-builds.md +++ b/docs/advanced-topics/build-server/team-city-builds.md @@ -15,7 +15,7 @@ The below steps will guide you through the necessary TeamCity project adjustment There are no specifics in installation of the TeamCity server. To be able to execute automated tests that include Windows and Browser interactions it is necessary to run build agent from command line. {% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} +{% include cta-panel-introduction.html %} {% endif %} ## Run the Build Agent diff --git a/docs/advanced-topics/coded-samples/general/aborted-test-list-results.md b/docs/advanced-topics/coded-samples/general/aborted-test-list-results.md index 568d3985..178643b3 100644 --- a/docs/advanced-topics/coded-samples/general/aborted-test-list-results.md +++ b/docs/advanced-topics/coded-samples/general/aborted-test-list-results.md @@ -4,11 +4,11 @@ page_title: Record Results for Aborted Test List description: "Record Results for Aborted Test List in Test Studio." position: 1 --- -# Record results even if test list execution is aborted # +# Record results even if test list execution is aborted *I would like to have results file for the already executed tests if the test list execution is aborted at an earlier stage.* -## Solution ## +## Solution Test Studio has the ability to store run results on each executed step and this could be turned on within the ***Telerik.TestStudio.Desktop.exe.config*** file. For the default installation, the file could be found in the following folder: *C:\Program Files (x86)\Progress\Test Studio\Bin*. Open the file in a text editor and set the **'PersistOnEachStep'** key value to True. @@ -21,6 +21,6 @@ Test Studio has the ability to store run results on each executed step and this ``` -## Command line runner arguments ## +## Command line runner arguments If you execute tests from the command line runner you could set that value to "true" by passing an argument to the command to be executed. The 'PersistOnEachStep' is one of the general options available for modifying the command line test execution behavior. diff --git a/docs/advanced-topics/coded-samples/general/access-oracle-database.md b/docs/advanced-topics/coded-samples/general/access-oracle-database.md index e5510c74..50a81556 100644 --- a/docs/advanced-topics/coded-samples/general/access-oracle-database.md +++ b/docs/advanced-topics/coded-samples/general/access-oracle-database.md @@ -4,15 +4,15 @@ page_title: Access Oracle Database description: "how to access an Oracle database through code in Test Studio coded step." position: 1 --- -#How to Access an Oracle Database in Code# +# How to Access an Oracle Database in Code Oracle database could be used as data source in a data driven test as described here. This is a built-in functionality for Test Studio but if using the Telerik Testing Framework the connection and interaction with the database need to be established step by step. This article demonstrates how to access an Oracle database through code. -##Install Oracle Client## +## Install Oracle Client To access the Oracle database in C# it is necessary to install **Oracle Data Access Components**. That driver package contains the necessary libraries to refer in the project. -##Add an Assembly Reference## +## Add an Assembly Reference Once the ODAC is installed the following dll have to be referred in the project: @@ -33,7 +33,7 @@ import Oracle.DataAccess.Client import Oracle.DataAccess.Types ``` -##Data Connection String## +## Data Connection String An Oracle connection string is required to identify the database to connect to. Here is an example: @@ -43,7 +43,7 @@ Data Source=XE;User Id=SYSTEM;Password=pass; Different connection strings could be used. See here for more examples. -##Sample Code## +## Sample Code This code runs a simple query against a database table similar to this example: diff --git a/docs/advanced-topics/coded-samples/general/access-performance-data.md b/docs/advanced-topics/coded-samples/general/access-performance-data.md index 22b34e65..230b2d4b 100644 --- a/docs/advanced-topics/coded-samples/general/access-performance-data.md +++ b/docs/advanced-topics/coded-samples/general/access-performance-data.md @@ -4,7 +4,7 @@ page_title: Access Performance Data description: "access the results of a performance test in code in Test Studio coded step." position: 1 --- -#Access Performance Data# +# Access Performance Data In order to access the results of a performance test in code, it will be necessary to create an execution extension library. The approach to this problem is to use a performance test list to execute one or many performance tests. Then at the end of the execution to collect the data from each one of the performance test results files. diff --git a/docs/advanced-topics/coded-samples/general/access-sql-database.md b/docs/advanced-topics/coded-samples/general/access-sql-database.md index 415e31b0..c72b92f3 100644 --- a/docs/advanced-topics/coded-samples/general/access-sql-database.md +++ b/docs/advanced-topics/coded-samples/general/access-sql-database.md @@ -5,11 +5,11 @@ description: "how to access an SQL database through code in Test Studio coded st previous_url: /user-guide/code-samples/general/access-sql-database.aspx, /user-guide/code-samples/general/access-sql-database position: 1 --- -#How to Access a SQL Database in Code# +# How to Access a SQL Database in Code > You can access an SQL database in a data driven test, as seen here. This is built-in functionality for Test Studio, but not for Telerik Testing Framework. This article demonstrates how to access a SQL database through code, which allows for greater flexibility. Also, writing into a database is only possible with a coded solution. -##Add Assembly Reference## +## Add Assembly Reference Use the *System.Data.SqlClient* API. You'll need to add an assembly reference to it, as seen here. This API is part of the *System.Data* assembly. This assembly is located, by default, in the following location (on a 64-bit Windows 7 machine with .NET 4.0): @@ -26,13 +26,13 @@ using System.Data.SqlClient; Imports System.Data.SqlClient; ``` -##Sample Code## +## Sample Code Here we've create a SQL database named **myFirstDB**. This database contains a table named **Table_1**. This table contains a column named **City**. ![Database][1] -###Read from SQL Database### +### Read from SQL Database ```C# //Define a new SQL connection with a connection string. @@ -82,7 +82,7 @@ thisReader.Close() thisConnection.Close() ``` -###Write into SQL Database### +### Write into SQL Database ```C# //Define a new SQL connection with a connection string. diff --git a/docs/advanced-topics/coded-samples/general/add-message-box.md b/docs/advanced-topics/coded-samples/general/add-message-box.md index 3dcace39..de8c196c 100644 --- a/docs/advanced-topics/coded-samples/general/add-message-box.md +++ b/docs/advanced-topics/coded-samples/general/add-message-box.md @@ -4,7 +4,7 @@ page_title: Add MessageBox description: "Add MessageBox in a Test Studio test." position: 1 --- -#Add a MessageBox to a Test# +# Add a MessageBox to a Test This alert box is a pop-up that is fired at some point and displays text content. @@ -45,7 +45,7 @@ This will pause the test and the alert box will be displayed: ![Messagebox][1] Test Execution will not continue until you click the button. - + Ensure you add the *using* or *Imports* statement to the top of the code-behind file. Click the **View Class** button, scroll to the top of the code, and add this line: ```C# diff --git a/docs/advanced-topics/coded-samples/general/attach-data-columns.md b/docs/advanced-topics/coded-samples/general/attach-data-columns.md index b3b12817..a4eecb2e 100644 --- a/docs/advanced-topics/coded-samples/general/attach-data-columns.md +++ b/docs/advanced-topics/coded-samples/general/attach-data-columns.md @@ -5,11 +5,11 @@ description: "Attach Data Columns in Code in Test Studio coded test. Data bind a previous_URL: /user-guide/code-samples/general/attach-columns-to-input-values-in-code.aspx position: 1 --- -# Attach Columns to Input Values in Code # +# Attach Columns to Input Values in Code *I would like to attach a column from my data table to an input value in code. (This is more easily accomplished through the Test Studio UI.)* -## Solution ## +## Solution Use the Data object in conjunction with the column name or index. diff --git a/docs/advanced-topics/coded-samples/general/browser-specific-actions.md b/docs/advanced-topics/coded-samples/general/browser-specific-actions.md index 30af390c..1587e504 100644 --- a/docs/advanced-topics/coded-samples/general/browser-specific-actions.md +++ b/docs/advanced-topics/coded-samples/general/browser-specific-actions.md @@ -4,11 +4,11 @@ page_title: Browser Specific Actions description: "Invoke browser specific actions in a standard or coded step in Test Studio only if the specified browser type is the execution browser. " position: 1 --- -# Invoke Browser-Specific Actions # +# Invoke Browser-Specific Actions *I would like to invoke browser-specific actions in a standard or coded step. This means the step is only executed if the test is running in the specified browser type.* -## Solution ## +## Solution Use a standard (non-coded) step or use a coded solution. diff --git a/docs/advanced-topics/coded-samples/general/cookies.md b/docs/advanced-topics/coded-samples/general/cookies.md index 39c0ed11..8ab23d76 100644 --- a/docs/advanced-topics/coded-samples/general/cookies.md +++ b/docs/advanced-topics/coded-samples/general/cookies.md @@ -4,7 +4,7 @@ page_title: Get/Set Cookies in Code description: "Get/Set Cookies in Code in Test Studio test." position: 1 --- -#Get/Set Cookies in Code# +# Get/Set Cookies in Code Here is a working code sample: diff --git a/docs/advanced-topics/coded-samples/general/custom-scripts-before-after.md b/docs/advanced-topics/coded-samples/general/custom-scripts-before-after.md index 445173cf..5b643f2c 100644 --- a/docs/advanced-topics/coded-samples/general/custom-scripts-before-after.md +++ b/docs/advanced-topics/coded-samples/general/custom-scripts-before-after.md @@ -4,13 +4,13 @@ page_title: Custom Scripts Before/After Test description: "Add Custom Scripts Before/After Test execution in Test Studio. Execute certain actions before or after each test run in Test Studio." position: 1 --- -# Execute Custom Scripts Before/After the Test Run # +# Execute Custom Scripts Before/After the Test Run * *I would like to invoke a custom script once the test finishes. The custom script must have access to newly-generated test results.* * *I would like to invoke a custom script just before the test starts executing.* -## Solution ## +## Solution Override the **OnAfterTestCompleted(TestResult result)** method for the "after" script and the **OnBeforeTestStarted()** method for the "before" script. They are both members of the BaseTest class that are invoked once the test finishes or before it starts. @@ -21,7 +21,7 @@ Override the **OnAfterTestCompleted(TestResult result)** method for the "after" First, create a coded step in order to generate a code-behind file. Then open the code-behind class and add the override definition inside the BaseTest class. -### Standalone version ### +### Standalone version 1. If your test doesn't contain any coded steps, add a Script Step in order to generate the code-behind file. 2. Once you add the script step, click **View Class** to make the BaseTest class visible. @@ -32,7 +32,7 @@ First, create a coded step in order to generate a code-behind file. Then open th ![Override definition][2] -### Visual Studio plugin ### +### Visual Studio plugin 1. If your test doesn't contain any coded steps, click the Add Code-Behind File button. 2. If you test contains a coded step, right click it and select **View Code** to go to the code-behind file. @@ -41,7 +41,7 @@ First, create a coded step in order to generate a code-behind file. Then open th 3. Write the override definition inside the BaseTest (but not inside another method/coded step). -### The Override Definition ### +### The Override Definition The TestResult object lets you access the test results from the run that just finished (i.e. the one invoking the **OnAfterTestCompleted** method): diff --git a/docs/advanced-topics/coded-samples/general/data-driven-find-expressions.md b/docs/advanced-topics/coded-samples/general/data-driven-find-expressions.md index 838e5de9..b7890e5b 100644 --- a/docs/advanced-topics/coded-samples/general/data-driven-find-expressions.md +++ b/docs/advanced-topics/coded-samples/general/data-driven-find-expressions.md @@ -5,13 +5,13 @@ description: "Data Driven Find Expressions in Test Studio test. Select different previous_url: /user-guide/code-samples/general/data-driven-find-expressions.aspx, /user-guide/code-samples/general/data-driven-find-expressions position: 1 --- -# Data Driven Find Expressions # +# Data Driven Find Expressions *I would like to data drive a find expression and use it to perform an action against or verify an element.* > After 2012 R2, you can create data driven find expressions without code. -## Solution ## +## Solution The example below is against this Telerik demo site. diff --git a/docs/advanced-topics/coded-samples/general/execution-extensions.md b/docs/advanced-topics/coded-samples/general/execution-extensions.md index d6cb6f28..88607142 100644 --- a/docs/advanced-topics/coded-samples/general/execution-extensions.md +++ b/docs/advanced-topics/coded-samples/general/execution-extensions.md @@ -359,17 +359,17 @@ End Function - Press Cancel to use the original data source. -##Remote Execution Behavior## +## Remote Execution Behavior It was mentioned above in terms of the scope for variables, that some methods are executed only on the machine, where the scheduling server for the current remote setup is located. It is important to know how will the execution extension behave in case of different execution scenarios. For all of the listed configurations the built custom dll file needs to be copied in the **C:\Program Files (x86)\Progress\Test Studio\Bin\Plugins\** folder on each remote machine. -###Scheduling Server Setup### +### Scheduling Server Setup This feature allows only one machine to have a running scheduling server and multiple machines to be connected to it and serve as execution clients. In this case **the complete set of execution extension methods will be executed on the scheduling server machine** only. All execution machines will **not execute *OnBeforeTestListStarted()* and _OnAfterTestListCompleted()_** and will only recognize the *OnBeforeTestStarted()* and *OnAfterTestCompleted()*. -###CI Setup### +### CI Setup In the context of Continuous Integration setup - running test lists using the ArtOfTest.Runner.exe with **the *list* option, will execute all methods** in the extension. diff --git a/docs/advanced-topics/coded-samples/general/extend-basewebaiitest-class.md b/docs/advanced-topics/coded-samples/general/extend-basewebaiitest-class.md index 70c2463f..9b7e6624 100644 --- a/docs/advanced-topics/coded-samples/general/extend-basewebaiitest-class.md +++ b/docs/advanced-topics/coded-samples/general/extend-basewebaiitest-class.md @@ -4,7 +4,7 @@ page_title: Extend BaseWebAiiTest Class description: "How to Extend BaseWebAiiTest Class Functionality in Test Studio coded projects." position: 1 --- -# How to Extend BaseWebAiiTest Class Functionality # +# How to Extend BaseWebAiiTest Class Functionality A possible scenario is to use same functionality in most of the tests in the project. It is possible to implement a method which will be available in each code behind test files in the project. The approach to this problem is to extend the BaseWebAiiTest class and all test files to inherit from the new extended class. diff --git a/docs/advanced-topics/coded-samples/general/external-log-file.md b/docs/advanced-topics/coded-samples/general/external-log-file.md index 8906d240..76ee45dd 100644 --- a/docs/advanced-topics/coded-samples/general/external-log-file.md +++ b/docs/advanced-topics/coded-samples/general/external-log-file.md @@ -4,11 +4,11 @@ page_title: External Log File description: "Store the Test Studio test results to an external location." position: 1 --- -#External Log File# +# External Log File *I would like to save the test execution log to an external file on disk.* -##Solution## +## Solution Overwrite the *OnAfterTestCompleted* method for individual tests in order to perform logic on Test Results. See our KB article on Executing Custom Scripts Before/After your Test Run for more information. @@ -24,7 +24,7 @@ We have code samples for two file types: * Excel File -##Text File## +## Text File ```C# public IList stepResults { get; set; } @@ -80,7 +80,7 @@ Finally you'll need to Verification and Wait steps. You can resort to code, however, for more in-depth scenarios. See here for more information. @@ -33,7 +33,7 @@ Assert.AreEqual(r, 10) Assert.IsTrue(table.InnerText.Contains("Mario")) ``` -## Throw New Exception ## +## Throw New Exception When an *Assert* statement is not appropriate, you can throw your own exception. In the example below, the *FileNotFoundException* will result in failure if the specified file does not exist on disk. diff --git a/docs/advanced-topics/coded-samples/general/framework-in-console-app.md b/docs/advanced-topics/coded-samples/general/framework-in-console-app.md index 6898472a..d5f0a0b7 100644 --- a/docs/advanced-topics/coded-samples/general/framework-in-console-app.md +++ b/docs/advanced-topics/coded-samples/general/framework-in-console-app.md @@ -4,11 +4,11 @@ page_title: Framework in Console App description: "Test Studio - create a console application that performs UI automation tasks by using the Telerik Testing Framework." position: 1 --- -#Create a Console Application that Utilizes the Telerik Testing Framework# +# Create a Console Application that Utilizes the Telerik Testing Framework *I would like to create a console application that performs UI automation tasks by using the Telerik Testing Framework. This application can run without the use of a test runner. It cannot be considered a real "test," but an application that utilizes a specific API.* -##Solution## +## Solution **Note**: At a minimum, the Telerik Testing Framework or Run-Time Edition must be installed on the machine where you intend to run the test. diff --git a/docs/advanced-topics/coded-samples/general/generate-random-number.md b/docs/advanced-topics/coded-samples/general/generate-random-number.md index cccd6a57..c47dc82c 100644 --- a/docs/advanced-topics/coded-samples/general/generate-random-number.md +++ b/docs/advanced-topics/coded-samples/general/generate-random-number.md @@ -5,11 +5,11 @@ description: "Generate Random Number in Test Studio coded test." previous_url: /user-guide/code-samples/general/random-number-input.aspx, /user-guide/code-samples/general/random-number-input position: 1 --- -#Generate Random Number# +# Generate Random Number *I would like to generate a random number in Test Studio. This number will be used in an input control or for a similar purpose.* -##Solution## +## Solution This is possible with a coded solution. The .NET Framework provides the System.Random class which can be used to generate random numbers. diff --git a/docs/advanced-topics/coded-samples/general/generate-random-text.md b/docs/advanced-topics/coded-samples/general/generate-random-text.md index d104009c..e3333b32 100644 --- a/docs/advanced-topics/coded-samples/general/generate-random-text.md +++ b/docs/advanced-topics/coded-samples/general/generate-random-text.md @@ -5,19 +5,19 @@ description: "Generate Random Text in Test Studio coded test. Progress Telerik T previous_url: /user-guide/code-samples/general/generate-random-text.aspx, /user-guide/code-samples/general/generate-random-text position: 1 --- -#Generate Random Text# +# Generate Random Text I would like to generate random text in Test Studio. This text will be used in an input control or for a similar purpose. -##Solution## +## Solution There are two possible approaches: with or without code. -##Without code## +## Without code See our article on the Extraction feature. -##With code## +## With code The .NET Framework provides the System.Random class which can be used to generate random text. diff --git a/docs/advanced-topics/coded-samples/general/get-project-path.md b/docs/advanced-topics/coded-samples/general/get-project-path.md index 5f3ccba9..092c48a7 100644 --- a/docs/advanced-topics/coded-samples/general/get-project-path.md +++ b/docs/advanced-topics/coded-samples/general/get-project-path.md @@ -4,11 +4,11 @@ page_title: Get Project Path description: "Get Project root Path in Test Studio coded test." position: 1 --- -#Get Current Test Project Path# +# Get Current Test Project Path *I would like to get the path (in the context of the file system) to which the current test project belongs.* -##Solution## +## Solution This is doable with a coded solution. Create a coded step inside of a test: diff --git a/docs/advanced-topics/coded-samples/general/grayed-out-controls.md b/docs/advanced-topics/coded-samples/general/grayed-out-controls.md index 3ef5ba24..0fc4e893 100644 --- a/docs/advanced-topics/coded-samples/general/grayed-out-controls.md +++ b/docs/advanced-topics/coded-samples/general/grayed-out-controls.md @@ -4,11 +4,11 @@ page_title: Grayed Out Controls description: "Dealing with Grayed Out Controls in Test Studio." position: 1 --- -#Dealing with Grayed Out Controls# +# Dealing with Grayed Out Controls *My application contains "grayed out" (i.e. visible but not functioning) controls, like buttons. These controls cause unpredictable behavior when performing UI automation.* -##Solution## +## Solution The crux of the matter is that Test Studio cannot recognize whether a control is, in fact, grayed out and thus unavailable. "Grayed out" it used somewhat figuratively in this context - there are a lot of ways to signify that an element is not currently available to the user. Usually it's a gray transparent screen that covers the background or an AJAX loading animation. This is a typical implementation for modal dialogs, but also for AJAX loading screens and others. diff --git a/docs/advanced-topics/coded-samples/general/invoke-application.md b/docs/advanced-topics/coded-samples/general/invoke-application.md index 0e7ad3ed..df40c582 100644 --- a/docs/advanced-topics/coded-samples/general/invoke-application.md +++ b/docs/advanced-topics/coded-samples/general/invoke-application.md @@ -4,11 +4,11 @@ page_title: How to Invoke an Application description: "How to Invoke an Application from a test step in Test Studio." position: 1 --- -#How to Invoke an Application# +# How to Invoke an Application I want to invoke a desktop application (i.e. an .exe file) from a test step. -##Solution## +## Solution You can write your own code in a coded step that triggers the application you need. Here's a simple example taken from this article: diff --git a/docs/advanced-topics/coded-samples/general/invoke-web-service-call.md b/docs/advanced-topics/coded-samples/general/invoke-web-service-call.md index f062e197..a4159543 100644 --- a/docs/advanced-topics/coded-samples/general/invoke-web-service-call.md +++ b/docs/advanced-topics/coded-samples/general/invoke-web-service-call.md @@ -5,11 +5,11 @@ description: "Invoke a Web Service Call from a coded step in Test Studio." previous_url: /user-guide/code-samples/general/invoke-web-service-call.aspx position: 1 --- -#Invoke a Web Service Call# +# Invoke a Web Service Call *I would like to invoke a web service call from a coded step in Test Studio and verify its response.* -##Solution## +## Solution Below you will find a code sample which demonstrates one possible solution for this automation challenge. This sample requires that you add references to the following assemblies: diff --git a/docs/advanced-topics/coded-samples/general/load-testing-extensions.md b/docs/advanced-topics/coded-samples/general/load-testing-extensions.md index b657a784..e3586ec2 100644 --- a/docs/advanced-topics/coded-samples/general/load-testing-extensions.md +++ b/docs/advanced-topics/coded-samples/general/load-testing-extensions.md @@ -5,7 +5,7 @@ description: "Load Testing Extensions in Test Studio." position: 1 publish: false --- -#Load Testing Extensions# +# Load Testing Extensions A load testing plugin is similar to other execution extensions, but implements a different set of interfaces. Instead of a class that implements the IExecutionExtension interface, implement one or more of the following interfaces: diff --git a/docs/advanced-topics/coded-samples/general/log-clipboard-text.md b/docs/advanced-topics/coded-samples/general/log-clipboard-text.md index 88447120..5f1a86e3 100644 --- a/docs/advanced-topics/coded-samples/general/log-clipboard-text.md +++ b/docs/advanced-topics/coded-samples/general/log-clipboard-text.md @@ -4,11 +4,11 @@ page_title: Log Clipboard Text description: "Log copied text from the Clipboard and output it during test execution in Test Studio." position: 1 --- -#Log Clipboard Text# +# Log Clipboard Text *My test copies text into the Clipboard and I would like to log its content.* -##Solution## +## Solution This is possible with a coded solution: diff --git a/docs/advanced-topics/coded-samples/general/log-error-dialogs.md b/docs/advanced-topics/coded-samples/general/log-error-dialogs.md index 9ee810ab..8f15c0cc 100644 --- a/docs/advanced-topics/coded-samples/general/log-error-dialogs.md +++ b/docs/advanced-topics/coded-samples/general/log-error-dialogs.md @@ -4,13 +4,13 @@ page_title: Log Error Dialogs description: "Log Random appearing Error Dialogs and automatically handle these during a Test Studio test run." position: 1 --- -#Log Error Dialogs# +# Log Error Dialogs *My application can potentially display a dialog containing an error message during test execution. The dialog can appear multiple times and will not always appear at the same point in the test, therefore I cannot use a standard Dialog Handler step. I want to capture these error messages and automatically handle these dialogs if they appear.* -##Solution## +## Solution This is possible with a coded solution. The stipulation is that the dialog is displayed the same way and has the same title in each browser: diff --git a/docs/advanced-topics/coded-samples/general/mouse-wheel-scroll.md b/docs/advanced-topics/coded-samples/general/mouse-wheel-scroll.md index 4a98fbbe..1546ee53 100644 --- a/docs/advanced-topics/coded-samples/general/mouse-wheel-scroll.md +++ b/docs/advanced-topics/coded-samples/general/mouse-wheel-scroll.md @@ -4,11 +4,11 @@ page_title: Mouse Wheel Scroll description: "Invoke desktop mouse scroll actions in Test Studio test run." position: 1 --- -#Mouse Wheel Scroll# +# Mouse Wheel Scroll *I need to invoke desktop mouse scroll actions on an HTML element (typically a scroll bar).* -##Solution## +## Solution This is doable with a coded solution. The code is desktop-based, which means it is not associated with an element in your Test Project. Because of this you will need to make sure that the intended target element has focus within the browser before the attempted mouse scroll action. Typically you can give an element focus by invoking a mouse click on it (via regular, non-coded step). Here's an example: diff --git a/docs/advanced-topics/coded-samples/general/non-iterative-data-driving.md b/docs/advanced-topics/coded-samples/general/non-iterative-data-driving.md index 37a475bd..4ed8820e 100644 --- a/docs/advanced-topics/coded-samples/general/non-iterative-data-driving.md +++ b/docs/advanced-topics/coded-samples/general/non-iterative-data-driving.md @@ -5,11 +5,11 @@ description: "Test Studio - data drive a step in a test script to select a diffe previous_url: /user-guide/code-samples/general/non-iterative-data-driven-testing.aspx, /user-guide/code-samples/general/non-iterative-data-driven-testing position: 1 --- -#Non-iterative Data Driving# +# Non-iterative Data Driving *Is there a way to data drive a step in a test script so that each time the script is run, the test step will select a different sequential row from the data source?* -##Solution## +## Solution The solution is to save the number of the row into an XML file. Each time you execute the test, read the number of the row from the XML file and tell Test Studio to use this row from your data source. @@ -140,7 +140,7 @@ End Function See this video to see how this sample works. -##How to find and use Office PIA's without Visual Studio installed +## How to find and use Office PIA's without Visual Studio installed 1.  Make sure that during the installation of Microsoft Office .NET Programmability Support was selected. diff --git a/docs/advanced-topics/coded-samples/general/override-app-config.md b/docs/advanced-topics/coded-samples/general/override-app-config.md index c6a5b9b1..d4c21872 100644 --- a/docs/advanced-topics/coded-samples/general/override-app-config.md +++ b/docs/advanced-topics/coded-samples/general/override-app-config.md @@ -4,11 +4,11 @@ page_title: Override app.config description: "Override Test Studio app.config to get tue run-time configuration settings in Visual Studio." position: 1 --- -#Override the app.config File in a Test Studio Project# +# Override the app.config File in a Test Studio Project *I would like Visual Studio to load the app.config file to get its run-time configuration settings.* -##Solution## +## Solution > The app.config only applies to projects in Visual Studio as expained here. diff --git a/docs/advanced-topics/coded-samples/general/random-row.md b/docs/advanced-topics/coded-samples/general/random-row.md index c138bd6c..84aacb2e 100644 --- a/docs/advanced-topics/coded-samples/general/random-row.md +++ b/docs/advanced-topics/coded-samples/general/random-row.md @@ -5,11 +5,11 @@ description: "Data drive a Test Studio test with random row from the data source previous_url: /user-guide/code-samples/general/random-row.aspx, user-guide/code-samples/general/random-row.aspx, /user-guide/code-samples/general/random-row.aspx, user-guide/code-samples/general/random-row position: 1 --- -#Random Row from Excel Data Source# +# Random Row from Excel Data Source *Is there a way to data drive a step in a test script so that each time the script is run, the test step will select a random row from the Excel data source?* -##Solution## +## Solution In code, generate a random number based on the number of rows. Then use the corresponding text from that row's cell in the applicable test step. @@ -57,7 +57,7 @@ app = Nothing Pages.Bing.SbFormQText.Text = value ``` -##How to find and use Office PIA's without Visual Studio installed +## How to find and use Office PIA's without Visual Studio installed 1.  Make sure that during the installation of Microsoft Office .NET Programmability Support was selected. diff --git a/docs/advanced-topics/coded-samples/general/relative-dialog-path.md b/docs/advanced-topics/coded-samples/general/relative-dialog-path.md index 5ece6f44..df604de0 100644 --- a/docs/advanced-topics/coded-samples/general/relative-dialog-path.md +++ b/docs/advanced-topics/coded-samples/general/relative-dialog-path.md @@ -5,11 +5,11 @@ description: "Use relative paths in a Test Studio test - upload/download dialog position: 1 --- -#Use Relative Paths in File Upload/Downloads# +# Use Relative Paths in File Upload/Downloads *I need to upload/download a file to a path relative to my test execution folder. I don't want to use an absolute file path.* -##Solution## +## Solution This can only be done in a coded step. The key is to use this.ExecutionContext.DeploymentDirectory. This property identifies the folder the test is running in. You want to use it in a coded step to create an absolute path for file upload/download like this: diff --git a/docs/advanced-topics/coded-samples/general/send-keystrokes.md b/docs/advanced-topics/coded-samples/general/send-keystrokes.md index fa1fbdd3..132dc59a 100644 --- a/docs/advanced-topics/coded-samples/general/send-keystrokes.md +++ b/docs/advanced-topics/coded-samples/general/send-keystrokes.md @@ -5,13 +5,13 @@ description: "Send key press or combination of key presses in Test Studio test r previous_url: /user-guide/code-samples/general/send-keystrokes.aspx, /user-guide/code-samples/general/send-keystrokes position: 1 --- -#Send Keystrokes# +# Send Keystrokes -##Problem 1## +## Problem 1 *I want to press Enter key.* -##Solution 1## +## Solution 1 This is possible with a coded solution: @@ -53,11 +53,11 @@ Namespace TestProject8 End Namespace ``` -##Problem 2## +## Problem 2 *I want to type text with keystrokes.* -##Solution 2## +## Solution 2 This is possible with a coded solution: @@ -102,11 +102,11 @@ End Namespace > Here you can find the list with key codes. -##Problem 3## +## Problem 3 *I want to perform combination of key presses like Ctrl+A.* -##Solution 3## +## Solution 3 This is possible with a coded solution: diff --git a/docs/advanced-topics/coded-samples/general/skip-iteration.md b/docs/advanced-topics/coded-samples/general/skip-iteration.md index 86773840..8dd89658 100644 --- a/docs/advanced-topics/coded-samples/general/skip-iteration.md +++ b/docs/advanced-topics/coded-samples/general/skip-iteration.md @@ -4,11 +4,11 @@ page_title: Skip Iteration description: "Skip one or more iterations in a data driven Test Studio test execution." position: 1 --- -#How to Skip a Specific Iteration While Executing a Data-Bound Test# +# How to Skip a Specific Iteration While Executing a Data-Bound Test *You're executing a data-driven test. You need to skip one or more iterations based on a specific condition.* -##Solution## +## Solution You'll need to create two tests. Let's call them **MainTest** and **Subtest**. Put the actual test steps you want to invoke (i.e. your test) in Subtest. diff --git a/docs/advanced-topics/coded-samples/general/use-elements-from-repository-in-utility-class.md b/docs/advanced-topics/coded-samples/general/use-elements-from-repository-in-utility-class.md index 2027f501..5e6b1f60 100644 --- a/docs/advanced-topics/coded-samples/general/use-elements-from-repository-in-utility-class.md +++ b/docs/advanced-topics/coded-samples/general/use-elements-from-repository-in-utility-class.md @@ -4,11 +4,11 @@ page_title: Using Elements From Repository In A Utility Class description: "Use Elements From Repository In A Utility Class in Test Studio code file." position: 1 --- -#How to Use Elements From Repository In A Utility Class# +# How to Use Elements From Repository In A Utility Class *I would like to use elements recorded in the Elements repository in my standalone code class file.* -##Solution## +## Solution We do not recommend using elements from the repository in a standalone class file. If there is a specific scenario you could not avoid you could refer to the example below. You would need to add references to ***ArtOfTest.WebAii.Core.dll*** and ***ArtOfTest.WebAii.Design.dll*** and include *using* statements for these in the code file. The ***Utility class*** inherits the ***BaseWebAiiTest*** and requires definition for region ***[Dynamic Pages Reference]***. diff --git a/docs/advanced-topics/coded-samples/general/use-external-dll-in-vs.md b/docs/advanced-topics/coded-samples/general/use-external-dll-in-vs.md index 82cababc..3e94a7a7 100644 --- a/docs/advanced-topics/coded-samples/general/use-external-dll-in-vs.md +++ b/docs/advanced-topics/coded-samples/general/use-external-dll-in-vs.md @@ -4,11 +4,11 @@ page_title: Use External DLL in VS description: "Use External DLL in the Test Studio project from the Visual Studio solution." position: 1 --- -# Use External DLL in VS # +# Use External DLL in VS *I need to reference and use an external DLL that contains global functions from a coded step in Visual Studio.* -## Solution ## +## Solution You'll find an attached sample Visual Studio Solution attached at bottom of the page. The solution contains two projects. One is a Test Studio project and the other is a "normal" Class Library Project. We use functions from the Class Library inside a coded step in the test project. diff --git a/docs/advanced-topics/coded-samples/general/using-the-http-proxy.md b/docs/advanced-topics/coded-samples/general/using-the-http-proxy.md index 21442001..56af33b4 100644 --- a/docs/advanced-topics/coded-samples/general/using-the-http-proxy.md +++ b/docs/advanced-topics/coded-samples/general/using-the-http-proxy.md @@ -5,7 +5,7 @@ description: "Use the HTTP Proxy in Test Studio coded tests." previous_url: /user-guide/code-samples/general/using_the_http_proxy.aspx, /user-guide/code-samples/general/using_the_http_proxy position: 1 --- -#Using the HTTP Proxy in Test Studio# +# Using the HTTP Proxy in Test Studio The Telerik Testing *Framework ArtOfTest.WebAii.Messaging.Http* namespace contains classes to intercept HTTP requests and responses. However, using these classes in a Test Studio coded step and executing against browsers other than Internet Explorer, the HTTP proxy may not become enabled. To use this code in a Test Studio test, enable the HTTP proxy in the Test Studio Project Settings. diff --git a/docs/advanced-topics/coded-samples/general/utility-class-in-standalone.md b/docs/advanced-topics/coded-samples/general/utility-class-in-standalone.md index 162ec93b..c4924959 100644 --- a/docs/advanced-topics/coded-samples/general/utility-class-in-standalone.md +++ b/docs/advanced-topics/coded-samples/general/utility-class-in-standalone.md @@ -5,13 +5,13 @@ description: "Utility Class Helper class file In Test Studio Standalone project" previous_url: /user-guide/code-samples/general/utility-in-standalone.aspx, /user-guide/code-samples/general/utility-in-standalone position: 1 --- -# How To Use A Utility Class In Test Studio Standalone Version # +# How To Use A Utility Class In Test Studio Standalone Version -## Problem ## +## Problem *I would like to create/use global variables and/or functions in Test Studio Standalone version and access these from all tests within the current project.* -## Solution ## +## Solution Here you could read how to create a standalone code file within a Test Studio project. Below are listed two examples how a class file named *Utility* could be adjusted to cover two common scenarios: ***write text to external file*** and ***perform certain action against an element***. The provided sample code requires reference to ***System.IO.dll*** and ***ArtOfTest.WebAii.Controls.HtmlControls.dll*** added in the project settings and the respective *using* statements in the code. Note that the namespace of the standalone code file must be the same as the namespace of the project. @@ -76,7 +76,7 @@ End Namespace Once the code file is ready for use compile the project to build the assembly. Then you'll be able to access the functions/variables within your *Utility* class from all tests in this project. Note that the Test Studio code editor will not auto-complete references to the contents of the *Utility* class. -### How To Use Methods And Variables From The Utility Class File ### +### How To Use Methods And Variables From The Utility Class File The code sample below demonstrates how the global methods and variables could be accessed in a coded step. diff --git a/docs/advanced-topics/coded-samples/general/verify-not-empty.md b/docs/advanced-topics/coded-samples/general/verify-not-empty.md index 0fd988ea..87b4d1d0 100644 --- a/docs/advanced-topics/coded-samples/general/verify-not-empty.md +++ b/docs/advanced-topics/coded-samples/general/verify-not-empty.md @@ -4,7 +4,7 @@ page_title: Verify The Text Content of an Element is Not Empty description: "Verify the text content of an element is not empty in Test Studio test run." position: 1 --- -# Verify Not Empty # +# Verify Not Empty *I would like to verify the text content of an element is not empty. In other words, that it contains one or more characters.* diff --git a/docs/advanced-topics/coded-samples/general/wait-for-element-in-code.md b/docs/advanced-topics/coded-samples/general/wait-for-element-in-code.md index 0eb2b0e8..34b86a6c 100644 --- a/docs/advanced-topics/coded-samples/general/wait-for-element-in-code.md +++ b/docs/advanced-topics/coded-samples/general/wait-for-element-in-code.md @@ -5,11 +5,11 @@ description: "Wait for Element in Coded Test Studio test." previous_url: /user-guide/code-samples/general/wait-for-element-to-exist-in-code.aspx, /user-guide/code-samples/general/wait-for-element-to-exist-in-code position: 1 --- -#Wait for Element in Code# +# Wait for Element in Code *In a coded step you need to wait for an element to exist before performing an action or a verification against that element. Perhaps you selected to "Customize Step in Code" and the default element wait time is not sufficient.* -##Solution## +## Solution After customizing a step in code you may have code that looks like this for an HTML element: diff --git a/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md b/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md index 00e5c63c..6362d26c 100644 --- a/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md +++ b/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/tagframe.aspx, /user-guide/code-samples/html/tagframe position: 1 --- -#Add Tag to iFrame# +# Add Tag to iFrame To help Test Studio locate your iframes, you can add a custom tag to the iframe. You can then add this tag to the frame properties in your test. There are two ways to add a tag to an iframe: @@ -13,7 +13,7 @@ To help Test Studio locate your iframes, you can add a custom tag to the iframe. * Add the tag dynamically in a coded step. -##Add a Tag to a iframe in HTML## +## Add a Tag to a iframe in HTML To add a tag to a iframe in your application's HTML, add the 'testStudioTag' attribute to the frame element. For example: @@ -21,7 +21,7 @@ To add a tag to a iframe in your application's HTML, add the 'testStudioTag' att ``` -##Add a Tag Dynamically in Code## +## Add a Tag Dynamically in Code If it is not possible to add custom tags to your iframes, you can add them at runtime using a coded step. @@ -61,6 +61,6 @@ public void WebTest1_CodedStep() } ``` -##See also## +## See also * Recording Frames \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/html/ajax-calendar-random-date.md b/docs/advanced-topics/coded-samples/html/ajax-calendar-random-date.md index 43525790..c18b7302 100644 --- a/docs/advanced-topics/coded-samples/html/ajax-calendar-random-date.md +++ b/docs/advanced-topics/coded-samples/html/ajax-calendar-random-date.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/ajax-calendar-random-date-selection.aspx, /user-guide/code-samples/html/ajax-calendar-random-date-selection position: 1 --- -#AJAX Calendar - Random Date Selection# +# AJAX Calendar - Random Date Selection *I would like to select a random date from an Ajax Calendar.* -##Solution## +## Solution The code below will show you how to select a random date from the Calendar on this site. diff --git a/docs/advanced-topics/coded-samples/html/async-upload-dialog.md b/docs/advanced-topics/coded-samples/html/async-upload-dialog.md index dd78b57d..21caea31 100644 --- a/docs/advanced-topics/coded-samples/html/async-upload-dialog.md +++ b/docs/advanced-topics/coded-samples/html/async-upload-dialog.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/handling-radasynchdialog.aspx, /user-guide/code-samples/html/handling-radasynchdialog position: 1 --- -#How to Handle the AsyncUpload Dialog# +# How to Handle the AsyncUpload Dialog There are differences in how RadAsyncUpload is interpreted across different browsers. AsyncUpload is built over Silverlight in Internet Explorer, but rendered in HTML5 in the other browsers (Firefox, Safari, and Chrome). This greatly affects cross-browser UI Automation. You can work around the problem by using a coded step to handle the dialog: diff --git a/docs/advanced-topics/coded-samples/html/common-find-expressions.md b/docs/advanced-topics/coded-samples/html/common-find-expressions.md index c06bdeb6..76810e21 100644 --- a/docs/advanced-topics/coded-samples/html/common-find-expressions.md +++ b/docs/advanced-topics/coded-samples/html/common-find-expressions.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/common-find-expressions.aspx, /user-guide/code-samples/html/common-find-expressions position: 1 --- -#Common HTML Find Expressions# +# Common HTML Find Expressions *I would like to click on a hyperlink based on its text value. I prefer to do this in code and not by editing an existing element's Find Settings*. -##Solution## +## Solution Let's use wikipedia.org as an example. First we'll find and click the top bold English link. diff --git a/docs/advanced-topics/coded-samples/html/conditional-dialog-handling.md b/docs/advanced-topics/coded-samples/html/conditional-dialog-handling.md index 5f7b399b..dfd6119a 100644 --- a/docs/advanced-topics/coded-samples/html/conditional-dialog-handling.md +++ b/docs/advanced-topics/coded-samples/html/conditional-dialog-handling.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/conditional-dialog-handling.aspx, /user-guide/code-samples/html/conditional-dialog-handling position: 1 --- -#Conditionally Handling Dialog# +# Conditionally Handling Dialog ***I would like to conditionally handle a dialog. If it appears, I'd like to handle it normally. If it doesn't, I'd like to continue with test execution.*** -##Solution## +## Solution This is possible with a coded solution. The action that potentially triggers the dialog must be included in the code. diff --git a/docs/advanced-topics/coded-samples/html/dynamic-grid.md b/docs/advanced-topics/coded-samples/html/dynamic-grid.md index 3cc8afbc..05525d5b 100644 --- a/docs/advanced-topics/coded-samples/html/dynamic-grid.md +++ b/docs/advanced-topics/coded-samples/html/dynamic-grid.md @@ -4,13 +4,13 @@ page_title: Dynamic Grid description: "Automating a dynamic grid - how to overcome the challenge that the content of the cells in grid changes? The recorded elements use the text content of cells which changes and I can't execute the tests unless if I don't change the find expressions of elements. How can avoid constant update of grid elements?" position: 1 --- -#Automating a Dynamically Generated Grid# +# Automating a Dynamically Generated Grid You need to automate an ASP .NET Grid control like the one seen here. **Note:** this is a Telerik-manufactured RadControl but this solution applies to generic/custom grids as well. -##Solution## +## Solution This can be achieved in both the Standalone version and Visual Studio plugin through a coded solution. We will use this grid to demonstrate how to do it. @@ -32,7 +32,7 @@ Going back to Test Studio, you will notice a new element has appeared in Project ![Add to project][3] -##Outputting the content of each (visible) cell to the Log +## Outputting the content of each (visible) cell to the Log Create a new coded step and add the following lines that go through each (visible) cell in the Grid: @@ -48,7 +48,7 @@ foreach (HtmlTableRow r in Pages.TelerikWebUIGridRow.ContentPlaceholder1RadGrid1 This is C# code, the VB code will follow the same logic only transcribed in the corresponding syntax. Make sure the coded steps executes at a point in your test when the page congaing the Grid is loaded in the Active Browser. -##Locate a specific row and click on a specific cell in that row +## Locate a specific row and click on a specific cell in that row Let's look at the grid in the below image. Let's imagine we want to get the row that contains the Contact Name "Thomas Hardy" and from there we want to click the checkbox in the same Row: diff --git a/docs/advanced-topics/coded-samples/html/extract-an-attribute.md b/docs/advanced-topics/coded-samples/html/extract-an-attribute.md index 85b4e652..c281fbd1 100644 --- a/docs/advanced-topics/coded-samples/html/extract-an-attribute.md +++ b/docs/advanced-topics/coded-samples/html/extract-an-attribute.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/extract-an-attribute.aspx, /user-guide/code-samples/html/extract-an-attribute position: 1 --- -#Extract an Individual HTML Attribute# +# Extract an Individual HTML Attribute *I would like to extract an individual HTML attribute and use it later in the test.* -##Solution## +## Solution This is possible with a coded solution. First, be aware that if you're simply verifying the value for a specific attribute, that can be accomplished without code using an Advanced Verification. diff --git a/docs/advanced-topics/coded-samples/html/image-comparison.md b/docs/advanced-topics/coded-samples/html/image-comparison.md index 4d37a948..2fde4f32 100644 --- a/docs/advanced-topics/coded-samples/html/image-comparison.md +++ b/docs/advanced-topics/coded-samples/html/image-comparison.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/image-comparison.aspx, /user-guide/code-samples/html/image-comparison position: 1 --- -#Perform an Image Comparison in Code# +# Perform an Image Comparison in Code *I would like to compare a specific image from the browser to one stored on disk.* -##Solution## +## Solution Here is sample code showing how to perform an image comparison: diff --git a/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md b/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md index b9f87b7a..0506aef7 100644 --- a/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md +++ b/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/jquery-events-do-not-fire.aspx, /user-guide/code-samples/html/jquery-events-do-not-fire position: 1 --- -#jQuery Events Do Not Fire During Test Execution# +# jQuery Events Do Not Fire During Test Execution **Note:** As of 2012 R1 SP1, use the TriggerjQueryEvent Test Step Property to trigger jQuery events for HTML drop-down menus. Minimum supported jQuery version is 1.4. diff --git a/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md b/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md index ab703893..4c40dc4f 100644 --- a/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md +++ b/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md @@ -5,9 +5,9 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/search-control-type-by-partial-attributes-fails.aspx, /user-guide/code-samples/html/search-control-type-by-partial-attributes-fails position: 1 --- -#Partial Attributes Search by Control Type Fails# +# Partial Attributes Search by Control Type Fails -##PROBLEM## +## PROBLEM A partial search of control by attribute may return null even with correct partial search syntax. For example a HtmlInputButton search on the page having a complex ID containing some specific string should be located successfully using the following syntax: @@ -23,13 +23,13 @@ Although the next example works: HtmlInputButton button = Find.ById("SomeButtonIDPart_MyButtonIDPart"); ``` -##DESCRIPTION## +## DESCRIPTION The framework locates the first element matching the given attribute search criteria. Next, it compares the control type of the element and returns that element if the control type matches. If it does not, it simply returns null. In the first example, the framework returns null if there is another element that matches the given attribute search criteria and it is found before the target element. The control type does not match. -##Solution## +## Solution A simple solution is available. Use Find.AllByAttributes overload and return the first (and actually the only completely matching control): diff --git a/docs/advanced-topics/coded-samples/html/radwindow-width-height.md b/docs/advanced-topics/coded-samples/html/radwindow-width-height.md index 0503f2af..5ddd45ab 100644 --- a/docs/advanced-topics/coded-samples/html/radwindow-width-height.md +++ b/docs/advanced-topics/coded-samples/html/radwindow-width-height.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/getting-radwindow-width-and-height.aspx, /user-guide/code-samples/html/getting-radwindow-width-and-height position: 1 --- -#Getting RadWindow Width and Height# +# Getting RadWindow Width and Height *You need to get the RadWindow width or height property.* -##Solution## +## Solution First you need to get a reference to the RadWindow control by ID. Once you get it there are two options for getting the width/height. The first option is to use the relevant width/height properties of the RadWindow. The second is by invoking a straight JavaScript on the page. diff --git a/docs/advanced-topics/coded-samples/html/table-searching-paging.md b/docs/advanced-topics/coded-samples/html/table-searching-paging.md index 80ae67a4..8b025685 100644 --- a/docs/advanced-topics/coded-samples/html/table-searching-paging.md +++ b/docs/advanced-topics/coded-samples/html/table-searching-paging.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/table-search-and-paging.aspx, /user-guide/code-samples/html/table-search-and-paging position: 1 --- -#HTML Table Searching and Paging# +# HTML Table Searching and Paging *I would like to search an HTML table for specific content and continue through the pages until it is found.* -##Solution## +## Solution This is possible with a coded solution. The example below is against this Telerik demo site. diff --git a/docs/advanced-topics/coded-samples/html/table-sum-average.md b/docs/advanced-topics/coded-samples/html/table-sum-average.md index e02a7158..5fd62718 100644 --- a/docs/advanced-topics/coded-samples/html/table-sum-average.md +++ b/docs/advanced-topics/coded-samples/html/table-sum-average.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/table-sum-and-average.aspx, /user-guide/code-samples/html/table-sum-and-average position: 1 --- -#HTML Table Sum and Average# +# HTML Table Sum and Average *I would like to get the sum and the average of the values in a certain column of an HTML table.* -##Solution## +## Solution This is possible with a coded solution. The example below is against this W3Schools site. diff --git a/docs/advanced-topics/coded-samples/html/verify-dialog-text.md b/docs/advanced-topics/coded-samples/html/verify-dialog-text.md index 0fde964c..13d29168 100644 --- a/docs/advanced-topics/coded-samples/html/verify-dialog-text.md +++ b/docs/advanced-topics/coded-samples/html/verify-dialog-text.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/verify-dialog-text.aspx, /user-guide/code-samples/html/verify-dialog-text position: 1 --- -#How to Verify Dialog Text (Internet Explorer only)# +# How to Verify Dialog Text (Internet Explorer only) *I would like to verify the text of a Dialog that is fired from the browser during test execution.* -##Solution## +## Solution This is possible with a coded solution. The code serves two purposes. It handles the dialog and verifies the text within it. The first part is the standard way to handle dialogs in code as seen here. The second part uses a delegate to implement a custom handler for the dialog. diff --git a/docs/advanced-topics/coded-samples/html/verify-sort-order-html.md b/docs/advanced-topics/coded-samples/html/verify-sort-order-html.md index 301acdc0..bdc6c8c2 100644 --- a/docs/advanced-topics/coded-samples/html/verify-sort-order-html.md +++ b/docs/advanced-topics/coded-samples/html/verify-sort-order-html.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/verify-sort-order.aspx, /user-guide/code-samples/html/verify-sort-order position: 1 --- -#Verify Sort Order in an HTML Table# +# Verify Sort Order in an HTML Table *I would like to sort a column in an HTML Table and verify the content is in the correct order.* -##Solution## +## Solution This is possible with a coded solution. The example below is against this Telerik demo site. diff --git a/docs/advanced-topics/coded-samples/html/verify-style.md b/docs/advanced-topics/coded-samples/html/verify-style.md index 7f15ad13..68c1e16a 100644 --- a/docs/advanced-topics/coded-samples/html/verify-style.md +++ b/docs/advanced-topics/coded-samples/html/verify-style.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/html/verify-style.aspx, /user-guide/code-samples/html/verify-style position: 1 --- -#Verify HTML Style# +# Verify HTML Style *I would like to verify an HTML element's style and extract it for use later in the test.* -##Solution## +## Solution This is possible with a coded solution. First, be aware that if you're simply verifying a style, that can be accomplished without code using an Advanced Verification. diff --git a/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md b/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md index a82a44d7..cdc996da 100644 --- a/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md +++ b/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md @@ -5,13 +5,13 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/silverlight/change-find-strategy.aspx, /user-guide/code-samples/silverlight/change-find-strategy position: 1 --- -#Change Silverlight Find Strategy# +# Change Silverlight Find Strategy The default behavior of Test Studio and the Telerik Testing Framework is to time out after a certain interval if the element is not found. *I would like to avoid the Timeout Exception and perform a different set of steps depending on whether the element is found.* -##Solution## +## Solution This is possible with a coded solution. Change the SilverlightApp or any FrameworkElement VisualFind.Strategy value to WhenNotVisibleReturnNull. diff --git a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md index 585c4dbe..b1ace23e 100644 --- a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md +++ b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md @@ -4,7 +4,7 @@ page_title: Verify All Text description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Verify All Text in a Silverlight ComboBox# +# Verify All Text in a Silverlight ComboBox This is possible with a coded solution: diff --git a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md index 284210eb..62fadd3a 100644 --- a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md +++ b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md @@ -4,11 +4,11 @@ page_title: Verify Specific Text description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Verify Silverlight ComboBox Contains Specific Text# +# Verify Silverlight ComboBox Contains Specific Text I would like to iterate through a Silverlight ComboBox and verify that it contains specific text strings. -##Solution## +## Solution This is possible with a coded solution: diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/go-through-all-grid-cells.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/go-through-all-grid-cells.md index 5b607841..eb609117 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/go-through-all-grid-cells.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/go-through-all-grid-cells.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/silverlight/radgridview/go-through-cells.aspx, /user-guide/code-samples/silverlight/radgridview/go-through-cells position: 1 --- -## Welcome to Test Studio## +## Welcome to Test Studio *I'd like to go through each cell in a Silverlight RadGridView in order to perform some action or verification.* -##Solution## +## Solution This is possible with a coded solution. Here's an example: diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md index 1488d100..12627b7b 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md @@ -5,13 +5,13 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/silverlight/radgridview/find-element-scrolling-and-paging.aspx, /user-guide/code-samples/silverlight/radgridview/find-element-scrolling-and-paging position: 1 --- -#RadGridView Scrolling & Paging # +# RadGridView Scrolling & Paging I have a lot of data contained in a RadGridView with scrolling and paging. I need to find a specific element in the Grid. To find it, I need to scroll down through the entire GridView and go through every page verifying the data. ![Paging][1] -##Solution## +## Solution This is possible with a coded solution. To accomplish the main goal, we need to combine the solutions of the two sub-problems (Scrolling and Paging) seen here and here. We need to take the following steps to implement the solution: diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md index 64e898ca..8192eb7a 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md @@ -5,13 +5,13 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/silverlight/radgridview/scrolling.aspx, /user-guide/code-samples/silverlight/radgridview/scrolling position: 1 --- -#RadGridView Scrolling# +# RadGridView Scrolling > This issue can now be resolved without code. *I need to scroll down through the entire GridView verifying the data, because currently only the rows presented in the Visual Tree can be tested.* -##Solution## +## Solution This is a limitation of the Visual Tree contained in the Silverlight engine. Silverlight puts into the Visual Tree only the UI components necessary to render the page on the screen. diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md index d5f5f0c5..e7e46e78 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/silverlight/radgridview/total-rows-count.aspx, /user-guide/code-samples/silverlight/radgridview/total-rows-count position: 1 --- -#RadGridView Total Rows Count # +# RadGridView Total Rows Count *I need to get the total number of rows contained in a RadGridView. The Rows.Count property of the RadGridView only returns the number of rows on the current page.* -##Solution## +## Solution The only way to get the total rows count is by calculating the number of rows per page and adding them to the running total. diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md index 2a2816c5..4a7c4c95 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md @@ -5,12 +5,12 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/silverlight/radgridview/verify-data-in-specific-column.aspx, /user-guide/code-samples/silverlight/radgridview/verify-data-in-specific-column position: 1 --- -#RadGridView Verify Data in a Specific Column# +# RadGridView Verify Data in a Specific Column *I need to find the correct column of a GridView based on something other than index, such as text content or a data driven variable.* -##Solution## +## Solution Here is how to accomplish this on a Telerik demo site.. First you need to retrieve all the Header Row Cells from the Grid and iterate through each one looking for a specific string. Each time it isn't found, the integer idx is increased by one. Once a match is made, idx will equal the index of the target column. Then you can use that integer to identify the column later: diff --git a/docs/advanced-topics/coded-samples/silverlight/select-listbox-item-by-text.md b/docs/advanced-topics/coded-samples/silverlight/select-listbox-item-by-text.md index 2d9116cb..c5deaf0b 100644 --- a/docs/advanced-topics/coded-samples/silverlight/select-listbox-item-by-text.md +++ b/docs/advanced-topics/coded-samples/silverlight/select-listbox-item-by-text.md @@ -5,12 +5,12 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/silverlight/select-listbox-item-by-text.aspx, /user-guide/code-samples/silverlight/select-listbox-item-by-text position: 1 --- -#Select Listbox Item by Text in Silverlight# +# Select Listbox Item by Text in Silverlight *I have a listbox contained in my Silverlight application. I want to be able to find and select an item contained in the listbox by its text, not by its index. I can't use select by index because the position of the item that needs to be selected may change at any time.* -##Solution## +## Solution This is a tricky one to solve. There are two subtle problems that need to be dealt with before accomplishing the end goal: diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md b/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md index 0d3225d6..e91ccd52 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md @@ -4,11 +4,11 @@ page_title: Verify Colors in Silverlight description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Verify Colors in Silverlight# +# Verify Colors in Silverlight I would like to add a color verificaiton for an element in a Silverlight application. -##Solution## +## Solution The code below demonstrates this approach against this Telerik demo site. It gets the first item in the menu and verifies that its foreground color macthes pre-defined values: diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md b/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md index c82a836f..d2814ae7 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/silverlight/verify-sort-order.aspx, /user-guide/code-samples/silverlight/verify-sort-order position: 1 --- -#Verify Sort Order in a Silverlight DataGrid# +# Verify Sort Order in a Silverlight DataGrid I would like to sort a column in a Silverlight DataGrid and verify the content is in the correct order. -##Solution## +## Solution This is possible with a coded solution. The example below is against a Silverlight toolkit sample. diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md b/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md index 7f0299b0..62d13016 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md @@ -4,11 +4,11 @@ page_title: Verify Text in Rich TextBox description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Verify Text in a Silverlight RichTextBox# +# Verify Text in a Silverlight RichTextBox * I cannot verify all the text or its properties in my Silverlight RichTextBox. The contents are either not visible or each word is contained in an individual TextBlock in the Visual Tree.* -##Solution## +## Solution The Silverlight RichTextBox is tricky to work with. It is a "container" type of control, meaning it contains other "block" elements, usually the Paragraph or Section. It is these block elements that hold the actual text displayed in the RichTextBox. Thus, to fetch the displayed text, you must enumerate through the individual blocks and fetch the text from each block element. diff --git a/docs/advanced-topics/coded-samples/wpf/connect-to-running-app.md b/docs/advanced-topics/coded-samples/wpf/connect-to-running-app.md index 51b516dd..f1b403eb 100644 --- a/docs/advanced-topics/coded-samples/wpf/connect-to-running-app.md +++ b/docs/advanced-topics/coded-samples/wpf/connect-to-running-app.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/wpf/connect-to-running-wpf-app.aspx, /user-guide/code-samples/wpf/connect-to-running-wpf-app position: 1 --- -#Connect to a Running WPF Application# +# Connect to a Running WPF Application *I would like to connect to an already running WPF application and execute the test there, instead of launching a new instance of the app.* -##Solution## +## Solution When you Quick Execute or execute a Test List, a new instance of the app launches from its pre-configured location. diff --git a/docs/advanced-topics/coded-samples/wpf/go-through-grid-cells.md b/docs/advanced-topics/coded-samples/wpf/go-through-grid-cells.md index 12e087da..3fb7eb94 100644 --- a/docs/advanced-topics/coded-samples/wpf/go-through-grid-cells.md +++ b/docs/advanced-topics/coded-samples/wpf/go-through-grid-cells.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/wpf/go-through-cells.aspx, /user-guide/code-samples/wpf/go-through-cells position: 4 --- -#Go Through Each Cell in a WPF RadGridView# +# Go Through Each Cell in a WPF RadGridView *I would like to go through each cell in a WPF RadGridView and perform some action or verification.* -##Solution## +## Solution This is possible with a coded solution. Here's an example that goes through all the visible cells in a WPF demo grid (as opposed to all the cells contained in the grid). It writes the text content of each cell into the test log. diff --git a/docs/advanced-topics/coded-samples/wpf/go-through-radtreeview.md b/docs/advanced-topics/coded-samples/wpf/go-through-radtreeview.md index d7b239cc..ba123fbc 100644 --- a/docs/advanced-topics/coded-samples/wpf/go-through-radtreeview.md +++ b/docs/advanced-topics/coded-samples/wpf/go-through-radtreeview.md @@ -5,11 +5,11 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/wpf/go-through-radtreeview.aspx, /user-guide/code-samples/wpf/go-through-radtreeview position: 3 --- -#Go Through Each Node in a WPF RadTreeView# +# Go Through Each Node in a WPF RadTreeView *I would like to go through each node in a WPF RadTreeView until a match is made.* -##Solution## +## Solution This is possible with a coded solution. You'll expand each node and refresh the tree until you find your match. diff --git a/docs/advanced-topics/coded-samples/wpf/parameterize-wpf-app.md b/docs/advanced-topics/coded-samples/wpf/parameterize-wpf-app.md index 9d244490..f74aaa4d 100644 --- a/docs/advanced-topics/coded-samples/wpf/parameterize-wpf-app.md +++ b/docs/advanced-topics/coded-samples/wpf/parameterize-wpf-app.md @@ -5,13 +5,13 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/code-samples/wpf/parameterize-wpf-app-location.aspx, /user-guide/code-samples/wpf/parameterize-wpf-app-location position: 2 --- -#Parameterize the Location of a WPF Application# +# Parameterize the Location of a WPF Application Currently Test Studio is rigged that you cannot run a WPF Test unless you provide a definite (non-parameterized) location for the application under testing. ![Configure WPF path][1] -##Solution## +## Solution To work around this limitation, create a mock application to feed to Test Studio. Then change the application under testing in a coded step. This allows you to use a parameterization method of your choosing for the app's location. This solution is applicable for both Test Studio Standalone version and the Visual Studio plugin. diff --git a/docs/automated-tests/elements/element-repository.md b/docs/automated-tests/elements/element-repository.md index 11422ca2..7b856f5e 100644 --- a/docs/automated-tests/elements/element-repository.md +++ b/docs/automated-tests/elements/element-repository.md @@ -16,7 +16,7 @@ When a test project is loaded, all the elements from all tests are merged into t With this approach there should be no problem having two people working on the same test project at the same time. As soon as person two gets the latest files from the source control repository and reloads the test project, the elements from any newly created tests will automatically get merged into the Element Repository for person two. -### What is the Pages.g.cs/vb file? Do I need to merge the Pages.g.cs/vb file created by different developers? ### +### What is the Pages.g.cs/vb file? Do I need to merge the Pages.g.cs/vb file created by different developers? The Pages.g.cs file (or Pages.g.vb file in VB test projects) is normally a hidden file. It is automatically generated by Test Studio and is only used by coded test steps. Test Studio generates this file from the elements contained in the element repository, which are displayed in the Elements Explorer. @@ -32,7 +32,7 @@ You do not, and should not ever change its contents. Any changes you try to make Since this file is automatically generated, it should not be checked into your source control repository. Test Studio does all the work to generate and maintain this file for you. -### How is the Element Repository used during test execution? ### +### How is the Element Repository used during test execution? When you look at the elements being displayed in the Elements Explorer pane, you will see them in a tree structure. At the root is the web page from which they were recorded. Under that may be a Frame node if the element was contained on the source page that an \ -``` +```` -## Add a Tag Dynamically in Code ## +## Add a Tag Dynamically in Code If it is not possible to add custom tags to your iframes, you can add them at runtime using a coded step. 1. Add the following using directive to your ode-behind file: -#### __[C#]__ - - {{region }} - - using ArtOfTest.WebAii.Design.Extensions; - {{endregion}} +````C# + using ArtOfTest.WebAii.Design.Extensions; +```` 2. Call the **myFrame()** method on the frame object in a coded step. For example: -#### __[C#]__ - - {{region }} - - [CodedStep(@"Tag Frame with 'MyCustomTag'")] - public void WebTest1_CodedStep() +````C# + [CodedStep(@"Tag Frame with 'MyCustomTag'")] + public void WebTest1_CodedStep() + { + Browser myFrame = this.ActiveBrowser.Frames[0] as Browser; + if (myFrame != null ) { - Browser myFrame = this.ActiveBrowser.Frames[0] as Browser; - if (myFrame != null ) - { - myFrame.TagFrame("MyCustomTag"); - } - } - {{endregion}} + myFrame.TagFrame("MyCustomTag"); + } + } +```` To tag a nested iframe, ensure the entire DOM is built, so that Test Studio Dev can access the iframes. For example: -#### __[C#]__ - - {{region }} - +````C# [CodedStep(@"Tag nested frame with 'MyCustomTag'")] public void WebTest1_CodedStep() { @@ -67,7 +58,7 @@ To tag a nested iframe, ensure the entire DOM is built, so that Test Studio Dev myFrame.TagFrame("MyCustomTag"); } } - {{endregion}} +```` __See also:__ diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/ajax-calendar-random-date.md b/docs-teststudiodev/code-in-test/coded-samples/html/ajax-calendar-random-date.md index fd3b018f..2e36b50f 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/ajax-calendar-random-date.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/ajax-calendar-random-date.md @@ -4,18 +4,15 @@ page_title: AJAX Calendar Random Date - Test Studio Dev Documentation description: AJAX Calendar Random Date position: 1 --- -#AJAX Calendar - Random Date Selection# +# AJAX Calendar - Random Date Selection *I would like to select a random date from an Ajax Calendar.* -##Solution## +## Solution The code below will show you how to select a random date from the Calendar on this site. -#### __[C#]__ - - {{region }} - +````C# //We scroll to the date picker so that we can see the click occurring. //Pages.WeekEndCourseullesSurMer.WeekendFormFormTag is a definition which Test Studio Dev automatically generated. Pages.WeekEndCourseullesSurMer.WeekendFormFormTag.ScrollToVisible(ScrollToVisibleType.ElementBottomAtWindowBottom); @@ -52,12 +49,8 @@ The code below will show you how to select a random date from the Calendar on Find Settings*. -## Solution ## +## Solution Let's use wikipedia.org as an example. First we'll find and click the top bold English link. @@ -16,7 +16,7 @@ Let's use wikipedia.org Here's the HTML code for that link: -```HTML +````HTML English
@@ -24,27 +24,21 @@ Here's the HTML code for that link:
3 907 000+ articles
-``` +```` The anchor element has no direct TextContent, so we'll need to locate by a partial match on InnerText: -#### __[C#]__ - - {{region }} - +````C# HtmlAnchor a = Find.ByExpression("InnerText=~English", "tagname=a"); Assert.IsNotNull(a); a.Click(); - {{endregion}} - -#### __[VB]__ - - {{region }} +```` +````VB Dim a As HtmlAnchor = Find.ByExpression(Of HtmlAnchor)("InnerText=~English", "tagname=a") Assert.IsNotNull(a) a.Click() - {{endregion}} +```` If we locate by an exact match on TextContent, the bottom *English* link will found. @@ -52,77 +46,50 @@ If we locate by an exact match on TextContent, the bottom *English* link will fo Here's the HTML code for that link: -```HTML +````HTML English -``` +```` Here's how to locate and click that link: -#### __[C#]__ - - {{region }} +````C# HtmlAnchor a = Find.ByExpression("TextContent=English", "tagname=a"); Assert.IsNotNull(a); a.Click(); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim a As HtmlAnchor = Find.ByExpression(Of HtmlAnchor)("TextContent=English", "tagname=a") Assert.IsNotNull(a) a.Click() - {{endregion}} +```` The following attributes apply to both links, however Test Studio returns the first HtmlAnchor that matches. In this case, that's the top bold *English* link. -#### __[C#]__ - - {{region }} - +````C# HtmlAnchor a = Find.ByExpression("tagname=a", "href=//en.wikipedia.org/"); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim a As HtmlAnchor = Find.ByExpression(Of HtmlAnchor)("tagname=a", "href=//en.wikipedia.org/") - {{endregion}} +```` You can find it by xpath: -#### __[C#]__ - - {{region }} - +````C# HtmlAnchor a = Find.ByXPath("//*[@id=\"www-wikipedia-org\"]/div[5]/div/a[2]"); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim a As HtmlAnchor = Find.ByXPath(Of HtmlAnchor)("//*[@id=""www-wikipedia-org""]/div[5]/div/a[2]") - {{endregion}} +```` You can also data drive the find expression: -#### __[C#]__ - - {{region }} - +````C# HtmlAnchor a = Find.ByExpression("tagname=a", "textcontent=" + Data["Col1"].ToString()); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim a As HtmlAnchor = Find.ByExpression(Of HtmlAnchor)("tagname=a", "textcontent=" + Data("Col1").ToString()) - {{endregion}} +```` [1]: images/common-find-expressions/fig1.png [2]: images/common-find-expressions/fig2.png diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/conditional-dialog-handling.md b/docs-teststudiodev/code-in-test/coded-samples/html/conditional-dialog-handling.md index 1c76fde7..9b6558a9 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/conditional-dialog-handling.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/conditional-dialog-handling.md @@ -4,18 +4,15 @@ page_title: Conditional Dialog Handling - Test Studio Dev Documentation description: Conditional Dialog Handling position: 1 --- -#Conditionally Handling Dialog# +# Conditionally Handling Dialog *I would like to conditionally handle a dialog. If it appears, I'd like to handle it normally. If it doesn't, I'd like to continue with test execution.* -##Solution## +## Solution This is possible with a coded solution. The action that potentially triggers the dialog must be included in the code. -#### __[C#]__ - - {{region }} - +````C# ActiveBrowser.NavigateTo("http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert"); //Create the dialog and add it to the monitor @@ -40,12 +37,8 @@ This is possible with a coded solution. The action that potentially triggers the Manager.DialogMonitor.RemoveDialog(ad); ActiveBrowser.NavigateTo("http://www.bing.com"); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB ActiveBrowser.NavigateTo("http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert") @@ -65,5 +58,5 @@ This is possible with a coded solution. The action that potentially triggers the Manager.DialogMonitor.RemoveDialog(ad) ActiveBrowser.NavigateTo("http://www.bing.com") - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/dynamic-grid.md b/docs-teststudiodev/code-in-test/coded-samples/html/dynamic-grid.md index 435b430e..67233118 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/dynamic-grid.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/dynamic-grid.md @@ -34,10 +34,7 @@ Going back to Test Studio Dev project, you will notice a new element has appeare Create a new coded step and add the following lines that go through each (visible) cell in the Grid: -#### __[C#]__ - - {{region }} - +````C# foreach (HtmlTableRow r in Pages.ClientSideRowSelection.ContentPlaceholder1RadGrid1Table.AllRows) { foreach(HtmlTableCell c in r.Cells) @@ -45,7 +42,7 @@ Create a new coded step and add the following lines that go through each (visibl Log.WriteLine("Cell found. TextContent:"+c.TextContent); } } - {{endregion}} +```` This is C# code, the VB code will follow the same logic only transcribed in the corresponding syntax. Make sure the coded step executes at a point in your test when the page contains the grid fully loaded in the currently active browser. @@ -57,10 +54,7 @@ Let's look at the grid in the below image. Let's imagine we want to get the row In this example we want to check a checkbox but this could be any kind of control. The code we will use doesn't take into account what the content of the actual cell is: we just click it. Once again we'll be using the definition of the grid that we've stored in the the elements repository. Here's the code: -#### __[C#]__ - - {{region }} - +````C# HtmlTableRow containerRow=null; //The variable that will store the row that contains the name cell and the checkbox cell foreach (HtmlTableRow r in Pages.ClientSideRowSelection.ContentPlaceholder1RadGrid1Table.AllRows) @@ -83,7 +77,7 @@ In this example we want to check a checkbox but this could be any kind of contro checkbox.ScrollToVisible(); checkbox.MouseClick(); - {{endregion}} +```` [1]: images/dynamic-grid/fig1.png [2]: images/dynamic-grid/fig2.png diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/extract-an-attribute.md b/docs-teststudiodev/code-in-test/coded-samples/html/extract-an-attribute.md index a81f5cfb..d4455aff 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/extract-an-attribute.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/extract-an-attribute.md @@ -4,46 +4,39 @@ page_title: Extract an Attribute - Test Studio Dev Documentation description: Extract an Attribute position: 1 --- -# Extract an Individual HTML Attribute # +# Extract an Individual HTML Attribute *I would like to extract an individual HTML attribute and use it later in the test.* -## Solution ## +## Solution This is possible with a coded solution. Note that if you're simply verifying the value for a specific attribute you could use an Advanced Verification. HTML elements are formatted the following way: -```HTML +````HTML content -``` +```` -```HTML +````HTML Go to Google -``` +```` Here's how to set the value of the *lang* attribute (*which is en*) to a string. That string is then set as an extracted value to use later in the test through data binding (either attached to an input value or a verification). -#### __[C#]__ - - {{region }} - +````C# HtmlAnchor a = Find.ById("googleLink"); Assert.IsNotNull(a); string atr = a.Attributes.Single(x => x.Name == "lang").Value; Log.WriteLine(atr); SetExtractedValue("extraction", atr); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim a As HtmlAnchor = Find.ById(Of HtmlAnchor)("googleLink") Assert.IsNotNull(a) Dim atr As String = a.Attributes.[Single](Function(x) x.Name = "lang").Value Log.WriteLine(atr) SetExtractedValue("extraction", atr) - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/image-comparison.md b/docs-teststudiodev/code-in-test/coded-samples/html/image-comparison.md index 0ba25394..29fc9be9 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/image-comparison.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/image-comparison.md @@ -4,18 +4,15 @@ page_title: Image Comparison - Test Studio Dev Documentation description: Image Comparison position: 1 --- -# Perform an Image Comparison in Code # +# Perform an Image Comparison in Code *I would like to compare a specific image from the browser to one stored on disk.* -## Solution ## +## Solution Here is sample code showing how to perform the image comparison: -#### __[C#]__ - - {{region }} - +````C# HtmlImage img = Find.ById("myImageId"); System.Drawing.Bitmap actualbmp = img.Capture(); @@ -23,12 +20,8 @@ Here is sample code showing how to perform the image comparison: ArtOfTest.Common.PixelMap actual = ArtOfTest.Common.PixelMap.FromBitmap(actualbmp); Assert.IsTrue(expected.Compare(actual, 5.0)); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim img As HtmlImage = Find.ById(Of HtmlImage)("myImageId") Dim actualbmp As System.Drawing.Bitmap = img.Capture() @@ -36,6 +29,6 @@ Here is sample code showing how to perform the image comparison: Dim actual As ArtOfTest.Common.PixelMap = ArtOfTest.Common.PixelMap.FromBitmap(actualbmp) Assert.IsTrue(expected.Compare(actual, 5.0)) - {{endregion}} +```` In the above code I am getting the image of the "myImageId" element from the browser and comparing it to the expected image stored on disk named "myExpected.png". The comparison is allowing a 5% tolerance, meaning there may be up to a 5% difference in the image or else the Assert fails and the test aborts. diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/jQuery-events-do-not-fire.md b/docs-teststudiodev/code-in-test/coded-samples/html/jQuery-events-do-not-fire.md index 8d7c003f..9be09ac2 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/jQuery-events-do-not-fire.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/jQuery-events-do-not-fire.md @@ -20,17 +20,16 @@ Inputting text into -``` +```` Invoke the script that changes the background color with the following coded step: -#### __[C#]__ - - {{region }} +````C# + Pages.TryitEditorV220.FrameIframeResult.Text.AsjQueryControl().InvokejQueryEvent(ArtOfTest.WebAii.jQuery.jQueryControl.jQueryControlEvents.change); - {{endregion}} +```` * The guideline is to always pair the two steps together. Immediately after performing the change step (input, radio button, etc.), run the coded step that calls the .change function for that element. diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/partial-attributes-search-fails.md b/docs-teststudiodev/code-in-test/coded-samples/html/partial-attributes-search-fails.md index cf20b66e..a9ffd018 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/partial-attributes-search-fails.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/partial-attributes-search-fails.md @@ -4,42 +4,33 @@ page_title: Partial Attributes Search Fails - Test Studio Dev Documentation description: Partial Attributes Search Fails position: 1 --- -# Partial Attributes Search by Control Type Fails # +# Partial Attributes Search by Control Type Fails _A partial search of control by attribute may return null even with correct partial search syntax._ For example a HtmlInputButton search on the page having a complex ID containing some specific string should be located successfully using the following syntax: -#### __[C#]__ - - {{region }} - +````C# HtmlInputButton button = Find.ById("~MyButtonIDPart"); - {{endregion}} +```` Although the next example works as well: -#### __[C#]__ - - {{region }} - +````C# HtmlInputButton button = Find.ById("SomeButtonIDPart_MyButtonIDPart"); - {{endregion}} +```` -## Notes ## +## Notes The framework locates the first element matching the given attribute search criteria. Next, it compares the control type of the element and returns that element if the control type matches. If it does not, it simply returns null. In the first example, the framework returns null if there is another element that matches the given attribute search criteria and it is found before the target element. The control type does not match. -## Solution ## +## Solution A simple solution is available. Use Find.AllByAttributes overload and return the first (and actually the only completely matching control): -#### __[C#]__ - - {{region }} - +````C# HtmlInputButton button = Find.AllByAttributes("id=~MyButtonIDPart")[0]; - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/radwindow-width-height.md b/docs-teststudiodev/code-in-test/coded-samples/html/radwindow-width-height.md index 79af0fd0..43e25220 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/radwindow-width-height.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/radwindow-width-height.md @@ -4,20 +4,17 @@ page_title: RadWindow Width & Height - Test Studio Dev Documentation description: RadWindow Width & Height position: 1 --- -# Getting RadWindow Width and Height # +# Getting RadWindow Width and Height *I need to get the RadWindow width or height property.* -## Solution ## +## Solution First you need to get a reference to the RadWindow control by ID. Once you get it there are two options for getting the width/height. The first option is to use the relevant width/height properties of the RadWindow. The second is by invoking a straight JavaScript on the page. Here is the standard approach: -#### __[C#]__ - - {{region }} - +````C# Manager.LaunchNewBrowser(); ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/window/examples/contenttemplatevsnavigateurl/defaultcs.aspx"); Find.ById("Button3").MouseClick(); @@ -27,12 +24,8 @@ Here is the standard approach: //First Option Assert.AreEqual(300, window.Width); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Manager.LaunchNewBrowser() ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/window/examples/contenttemplatevsnavigateurl/defaultcs.aspx") Find.ById(Of HtmlInputSubmit)("Button3").MouseClick() @@ -41,14 +34,11 @@ Here is the standard approach: Dim window As RadWindow = Find.ById(Of RadWindow)("RadWindowWrapper_RadWindow_ContentTemplate") Assert.AreEqual(300, window.Width) - {{endregion}} +```` Invoking JavaScript on the page: -#### __[C#]__ - - {{region }} - +````C# Manager.LaunchNewBrowser(); ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/window/examples/contenttemplatevsnavigateurl/defaultcs.aspx"); Find.ById("Button3").MouseClick(); @@ -59,11 +49,8 @@ Invoking JavaScript on the page: //Second Option string windowWidth = this.ActiveBrowser.Actions.InvokeScript(String.Format("$telerik.getBounds($find('RadWindow_ContentTemplate').get_popupElement()).width")); Assert.AreEqual("300", windowWidth); - {{endregion}} - -#### __[VB]__ - - {{region }} +```` +````VB Manager.LaunchNewBrowser() ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/window/examples/contenttemplatevsnavigateurl/defaultcs.aspx") @@ -74,6 +61,6 @@ Invoking JavaScript on the page: Dim windowWidth As String = Me.ActiveBrowser.Actions.InvokeScript([String].Format("$telerik.getBounds($find('RadWindow_ContentTemplate').get_popupElement()).width")) Assert.AreEqual("300", windowWidth) - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/table-searching-paging.md b/docs-teststudiodev/code-in-test/coded-samples/html/table-searching-paging.md index 32c1000e..1501f50d 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/table-searching-paging.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/table-searching-paging.md @@ -4,18 +4,15 @@ page_title: Table Searching & Paging - Test Studio Dev Documentation description: Table Searching & Paging position: 1 --- -#HTML Table Searching and Paging# +# HTML Table Searching and Paging *I would like to search an HTML table for specific content and continue through the pages until it is found.* -##Solution## +## Solution This is possible with a coded solution. The example below is against this Telerik demo site. -#### __[C#]__ - - {{region }} - +````C# HtmlTable table = Find.ByExpression("id=Grid", "|", "tagIndex=table:1"); HtmlSpan next = Find.ByExpression("class=k-icon k-i-arrow-e"); HtmlAnchor a = Find.ByExpression("title=Go to the next page"); @@ -54,12 +51,8 @@ This is possible with a coded solution. The example below is against this this W3Schools site. -#### __[C#]__ - - {{region }} - +````C# HtmlTable table = Find.ByTagIndex("table", 0); double r = table.Rows.Count; @@ -38,12 +35,8 @@ This is possible with a coded solution. The example below is against Dialog that is fired from the browser during test execution.* -##Solution## +## Solution This could be achieved in a coded solution. The code will both handle the dialog and verify the text within it. What is used to handle this in Chrome is **AutomationElement Class**. A new AutomationElement object is retrieved for the dialog window referenced by the specified window handle and its node is located. The location of the text may vary depending on the machine used for execution though this is handled in the if..else statement. @@ -21,10 +21,7 @@ This could be achieved in a coded solution. The code will both handle the dialog The last three could be usually found in *'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\'*. -#### __[C#]__ - - {{region }} - +````C# [CodedStep(@"New Coded Step")] public void WebTest_CodedStep() { @@ -54,12 +51,8 @@ The last three could be usually found in *'C:\Program Files (x86)\Reference Asse // handle the dialog Manager.Desktop.KeyBoard.KeyPress(Keys.Enter); } - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB _ Public Sub WebTest_CodedStep() System.Threading.Thread.Sleep(1000) @@ -85,24 +78,17 @@ The last three could be usually found in *'C:\Program Files (x86)\Reference Asse ' handle the dialog Manager.Desktop.KeyBoard.KeyPress(Keys.Enter) End Sub - {{endregion}} +```` Ensure you add the following *using or Imports* statements to the top of the code-behind file: -#### __[C#]__ - - {{region }} - +````C# using System.Windows.Automation; using ArtOfTest.Common.Extensions; using System.Windows.Forms; - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Imports System.Windows.Automation Imports ArtOfTest.Common.Extensions Imports System.Windows.Forms - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/verify-dialog-text.md b/docs-teststudiodev/code-in-test/coded-samples/html/verify-dialog-text.md index a4473de9..180baa00 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/verify-dialog-text.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/verify-dialog-text.md @@ -4,18 +4,15 @@ page_title: Verify Dialog Text - Test Studio Dev Documentation description: Verify Dialog Text position: 1 --- -# How to Verify Dialog Text (Internet Explorer only) # +# How to Verify Dialog Text (Internet Explorer only) *I would like to verify the text of a Dialog that is fired from the browser during test execution.* -## Solution ## +## Solution This is possible with a coded solution. The code will both handle the dialog and verify the text within it. The second part uses a delegate to implement a custom handler for the dialog. -#### __[C#]__ - - {{region }} - +````C# string dialogText; [CodedStep(@"Navigate then verify text in popup dialog")] @@ -53,12 +50,8 @@ This is possible with a coded solution. The code will both handle the dialog an Manager.Desktop.KeyBoard.KeyPress(Keys.Enter); dialog.HandleCount++; } - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Private dialogText As String _ @@ -90,22 +83,15 @@ This is possible with a coded solution. The code will both handle the dialog an Manager.Desktop.KeyBoard.KeyPress(Keys.Enter) dialog.HandleCount += 1 End Sub - {{endregion}} +```` Ensure you add the following *using* or *Imports* statements to the top of the code-behind file. -#### __[C#]__ - - {{region }} - +````C# using ArtOfTest.WebAii.Win32.Dialogs; using System.Windows.Forms; - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Imports ArtOfTest.WebAii.Win32.Dialogs Imports System.Windows.Forms - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/verify-sort-order-html.md b/docs-teststudiodev/code-in-test/coded-samples/html/verify-sort-order-html.md index 7dd7020c..c1ce9065 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/verify-sort-order-html.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/verify-sort-order-html.md @@ -4,20 +4,17 @@ page_title: Verify Sort Order - Test Studio Dev Documentation description: Verify Sort Order position: 1 --- -# Verify Sort Order in an HTML Table # +# Verify Sort Order in an HTML Table *I would like to sort a column in an HTML Table and verify the content is in the correct order.* -## Solution ## +## Solution This is possible with a coded solution. The example below is against this Telerik demo site. Let's verify the first column, Order ID, is in sequential order: -#### __[C#]__ - - {{region }} - +````C# //Get the table. HtmlTable table = Find.ByExpression("id=Grid", "|", "tagIndex=table:1"); @@ -45,12 +42,8 @@ Let's verify the first column, Order ID, is in sequential order: Assert.IsTrue(list[j+1].CompareTo(list[j]) >= 0); } } - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim table As HtmlTable = Find.ByExpression(Of HtmlTable)("id=Grid", "|", "tagIndex=table:1") Dim r As Integer = table.Rows.Count @@ -72,4 +65,4 @@ Let's verify the first column, Order ID, is in sequential order: Assert.IsTrue(list(j + 1).CompareTo(list(j)) >= 0) End If Next - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/html/verify-style.md b/docs-teststudiodev/code-in-test/coded-samples/html/verify-style.md index 11702230..fc8a1478 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/html/verify-style.md +++ b/docs-teststudiodev/code-in-test/coded-samples/html/verify-style.md @@ -4,20 +4,17 @@ page_title: Verify Style - Test Studio Dev Documentation description: Verify Style position: 1 --- -# Verify HTML Style # +# Verify HTML Style *I would like to verify an HTML element's style and extract it for use later in the test.* -## Solution ## +## Solution This is possible with a coded solution. Note that if you're simply verifying the style of an element you could use an Advanced Verification. The example below is against this W3Schools site. Two styles are verified, retrieved as strings, and set as extracted values to use later in the test through data binding (either attached to an input value or a verification). -#### __[C#]__ - - {{region }} - +````C# Browser frame = ActiveBrowser.Frames["view"]; HtmlControl paragraph = frame.Find.ByTagIndex("p", 0); Assert.IsNotNull(paragraph); @@ -32,12 +29,8 @@ The example below is against Silverlight demo site. After navigating there, click DataGrid in the left-hand menu. Then add a coded step: -#### __[C#]__ - - {{region }} - +````C# SilverlightApp app = ActiveBrowser.SilverlightApps()[0]; FindStrategy originalStrategy = app.Find.Strategy; @@ -44,12 +41,8 @@ The example below is against this Telerik demo site. -#### __[C#]__ - - {{region }} - +````C# public FrameworkElement FindElementByTextContent(string content) { int extentHeight; // The total height of the grid, visible plus non-visible @@ -79,12 +76,8 @@ The following code demonstrates how to accomplish this on a Telerik demo page. -#### __[C#]__ - - {{region }} +````C# + int verticalOffset = 0; // Holds the current vertical offset in the viewport int viewPortHeight; // The height of the visible part of the grid int extentHeight; // The total height of the grid, visible plus non-visible @@ -54,12 +53,10 @@ The following code demonstrates how to accomplish this against a Due to the volume of data contained in the sample RadGridView, this test will take hours to run through it all. But it shows all the necessary steps. diff --git a/docs-teststudiodev/code-in-test/coded-samples/silverlight/radgridview-automation/total-rows-count.md b/docs-teststudiodev/code-in-test/coded-samples/silverlight/radgridview-automation/total-rows-count.md index ea1b1acc..ade0b9e3 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/silverlight/radgridview-automation/total-rows-count.md +++ b/docs-teststudiodev/code-in-test/coded-samples/silverlight/radgridview-automation/total-rows-count.md @@ -4,20 +4,17 @@ page_title: Total Rows Count - Test Studio Dev Documentation description: Total Rows Count position: 1 --- -# RadGridView Total Rows Count # +# RadGridView Total Rows Count *I need to get the total number of rows contained in a RadGridView. The Rows.Count property of the RadGridView only returns the number of rows on the current page.* -## Solution # +## Solution The only way to get the total rows count is by calculating the number of rows per page and adding them to the running total. The following code demonstrates how to get the rows count of the RadGridView shown on this Telerik demo site. We use a Do/While loop in code which exits once the "Next Page" button is no longer Enabled. Then the row count is performed once more to account for the last page. -#### __[C#]__ - - {{region }} - +````C# int extentHeight; // The total height of the grid, visible plus non-visible int rowHeight; // The height of the row @@ -48,12 +45,8 @@ The following code demonstrates how to get the rows count of the RadGridView sho // Show the result Log.WriteLine("Total Number of Rows: "+ totalOverallRows.ToString()); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim extentHeight As Integer Dim rowHeight As Integer @@ -83,4 +76,4 @@ The following code demonstrates how to get the rows count of the RadGridView sho Log.WriteLine("Total Number of Rows: " + totalOverallRows.ToString()) - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/silverlight/radgridview-automation/verify-specific-column.md b/docs-teststudiodev/code-in-test/coded-samples/silverlight/radgridview-automation/verify-specific-column.md index 91847036..bd19b874 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/silverlight/radgridview-automation/verify-specific-column.md +++ b/docs-teststudiodev/code-in-test/coded-samples/silverlight/radgridview-automation/verify-specific-column.md @@ -4,18 +4,15 @@ page_title: Verify Specific Column - Test Studio Dev Documentation description: Verify Specific Column position: 1 --- -# RadGridView Verify Data in a Specific Column # +# RadGridView Verify Data in a Specific Column *I need to find the correct column of a GridView based on something other than index, such as text content or a data driven variable.* -## Solution ## +## Solution Here is how to accomplish this against a Telerik demo site. First you need to retrieve all the Header Row Cells from the Grid and iterate through each one looking for a specific string. Each time it isn't found, the integer idx is increased by one. Once a match is made, idx will equal the index of the target column. Then you can use that integer to identify the column later: -#### __[C#]__ - - {{region }} - +````C# int verticalOffset = 0; // Holds the current vertical offset in the viewport int viewPortHeight; // The height of the visible part of the grid int extentHeight; // The total height of the grid, visible plus non-visible @@ -59,12 +56,8 @@ Here is how to accomplish this against a @@ -88,14 +88,11 @@ My sample Silverlight application to test contains this XAML code to render my l -``` +```` To help make the code necessary to accomplish our search task more modular, let's define a function that takes a listbox, a string to search for and finds and returns the listbox item want. Here is that function: -#### __[C#]__ - - {{region }} - +````C# private static ListBoxItem FindListboxItemByText (string itemToFind, ListBox myLB) { @@ -130,15 +127,12 @@ To help make the code necessary to accomplish our search task more modular, let' // We scanned the entire list and didn't find the right item to select. return null; } - {{endregion}} +```` We call this resusable function from a coded step like this: -#### __[C#]__ - - {{region }} - +````C# [CodedStep("Select a listbox item by text")] public void SelectListItemByTextCodedStep() { @@ -151,4 +145,4 @@ We call this resusable function from a coded step like this: Assert.IsNotNull(item, "\"" + itemToFind + "\" not found in the listbox."); item.User.Click(); } - {{endregion}} \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/coded-samples/silverlight/verify-colors-in-silverlight.md b/docs-teststudiodev/code-in-test/coded-samples/silverlight/verify-colors-in-silverlight.md index 17db3151..07a56fe3 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/silverlight/verify-colors-in-silverlight.md +++ b/docs-teststudiodev/code-in-test/coded-samples/silverlight/verify-colors-in-silverlight.md @@ -4,18 +4,15 @@ page_title: Verify Colors in Silverlight - Test Studio Dev Documentation description: Verify Colors in Silverlight position: 1 --- -# Verify Colors in Silverlight # +# Verify Colors in Silverlight _I would like to add a color verification for an element in a Silverlight application._ -## Solution ## +## Solution The code below demonstrates this approach against this Telerik demo site. It gets the first item in the menu and verifies that its foreground color matches pre-defined values: -#### __[C#]__ - - {{region }} - +````C# Manager.Settings.Web.EnableSilverlight = true; Manager.LaunchNewBrowser(); ActiveBrowser.NavigateTo("http://demos.telerik.com/silverlight/#TreeView/Performance"); @@ -47,11 +44,8 @@ The code below demonstrates this approach against this a Silverlight toolkit sample. After navigating there, click DataGrid in the left-hand menu. Then click the **FirstName** column header to sort that column. Finally, add a coded step: -#### __[C#]__ - - {{region }} - +````C# //Get the data grid. SilverlightApp app = ActiveBrowser.SilverlightApps()[0]; DataGrid grid = app.Find.ByAutomationId("dataGrid"); @@ -46,12 +43,8 @@ After navigating there, click DataGrid in the left-hand menu. Then click the **F Assert.IsTrue(list[j+1].CompareTo(list[j]) >= 0); } } - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim app As SilverlightApp = ActiveBrowser.SilverlightApps()(0) Dim grid As DataGrid = app.Find.ByAutomationId(Of DataGrid)("dataGrid") @@ -74,6 +67,6 @@ After navigating there, click DataGrid in the left-hand menu. Then click the **F Assert.IsTrue(list(j + 1).CompareTo(list(j)) >= 0) End If Next - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/silverlight/verify-text-in-rich-textbox.md b/docs-teststudiodev/code-in-test/coded-samples/silverlight/verify-text-in-rich-textbox.md index 7a5d0182..64935b68 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/silverlight/verify-text-in-rich-textbox.md +++ b/docs-teststudiodev/code-in-test/coded-samples/silverlight/verify-text-in-rich-textbox.md @@ -4,23 +4,23 @@ page_title: Verify Text in Rich TextBox - Test Studio Dev Documentation description: Verify Text in Rich TextBox position: 1 --- -# Verify Text in a Silverlight RichTextBox # +# Verify Text in a Silverlight RichTextBox _I cannot verify all the text or its properties in my Silverlight RichTextBox. The contents are either not visible or each word is contained in an individual TextBlock in the Visual Tree._ -## Solution ## +## Solution The Silverlight RichTextBox is tricky to work with. It is a "container" type of control, meaning it contains other "block" elements, usually the Paragraph or Section. It is these block elements that hold the actual text displayed in the RichTextBox. Thus, to fetch the displayed text, you must enumerate through the individual blocks and fetch the text from each block element. To make matters worse, the contents of the RichTextBox may not be contained in the Silverlight Visual Tree. You have to get the Xaml property and parse the contents yourself. Here is an example. Let's assume that you have this in the XAML file for your Silverlight application: -```XAML +````XAML -``` +```` The application will show text as shown below. @@ -28,7 +28,7 @@ The application will show text as shown below. However in DOM Explorer all you see is this: -```XAML +````XAML @@ -52,14 +52,13 @@ However in DOM Explorer all you see is this: -``` +```` Notice that there's no text in the DOM view, even though it is specified in the XAML and displayed in the application. We have to use code to fetch the XAML that the RichTextBox holds as data, then parse out the text buried in it. Here's an example: -#### __[C#]__ - - {{region }} +````C# + // Fetch the XAML property of the RichTextBox string rtbContents = (string)Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(new AutomationProperty("Xaml", typeof(string))); @@ -75,12 +74,10 @@ Notice that there's no text in the DOM view, even though it is specified in the { Log.WriteLine(runNode.Attributes["Text"].Value); } - {{endregion}} - -#### __[VB]__ - - {{region }} +```` +````VB + Dim rtbContents As String = DirectCast(Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(New AutomationProperty("Xaml", GetType(String))), String) Dim doc As XmlDocument = New System.Xml.XmlDocument() @@ -91,14 +88,13 @@ Notice that there's no text in the DOM view, even though it is specified in the For Each runNode As XmlNode In runNodes Log.WriteLine(runNode.Attributes("Text").Value) Next - {{endregion}} +```` Here's how to verify the text is bold: -#### __[C#]__ - - {{region }} +````C# + string rtbContents = (string)Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(new AutomationProperty("Xaml", typeof(string))); Log.WriteLine(rtbContents); @@ -114,12 +110,10 @@ Here's how to verify the text is bold: // Verify it is Bold Assert.AreEqual("Bold", attr.Value); - {{endregion}} - -#### __[VB]__ - - {{region }} +```` +````VB + Dim rtbContents As String = DirectCast(Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(New AutomationProperty("Xaml", GetType(String))), String) Log.WriteLine(rtbContents) @@ -135,6 +129,6 @@ Here's how to verify the text is bold: Assert.AreEqual(Of String)("Bold", attr.Value) - {{endregion}} +```` [1]: images/verify-text-in-rich-textbox/fig1.png \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/coded-samples/wpf/automate-clickonce-app.md b/docs-teststudiodev/code-in-test/coded-samples/wpf/automate-clickonce-app.md index eb0a5235..6cc475dd 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/wpf/automate-clickonce-app.md +++ b/docs-teststudiodev/code-in-test/coded-samples/wpf/automate-clickonce-app.md @@ -14,33 +14,23 @@ To automate a WPF application it is necessary to p.ProcessName == "WPFHelloWorld"); @@ -31,12 +28,8 @@ To work around this limitation, create a mock application to feed to Test Studio } Manager.ActiveApplication.MainWindow.RefreshVisualTrees(); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB ActiveApplication.Quit() Dim runningApp = System.Diagnostics.Process.GetProcesses().Where(Function(p) p.ProcessName = "WPFHelloWorld") @@ -47,4 +40,4 @@ To work around this limitation, create a mock application to feed to Test Studio End If Manager.ActiveApplication.MainWindow.RefreshVisualTrees() - {{endregion}} \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/coded-samples/wpf/go-through-grid-cells.md b/docs-teststudiodev/code-in-test/coded-samples/wpf/go-through-grid-cells.md index 1fb84917..82b1701b 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/wpf/go-through-grid-cells.md +++ b/docs-teststudiodev/code-in-test/coded-samples/wpf/go-through-grid-cells.md @@ -4,18 +4,15 @@ page_title: Go Through Grid Cells - Test Studio Dev Documentation description: Connect to Running App position: 4 --- -# Go Through Each Cell in a WPF RadGridView # +# Go Through Each Cell in a WPF RadGridView *I would like to go through each cell in a WPF RadGridView and perform some action or verification.* -##Solution## +## Solution This is possible with a coded solution. Here's an example that goes through all the visible cells in a WPF demo grid (as opposed to all the cells contained in the grid). It writes the text content of each cell into the test log. -#### __[C#]__ - - {{region }} - +````C# WpfApplication app = Manager.ActiveApplication; Assert.IsNotNull(app); @@ -36,12 +33,8 @@ This is possible with a coded solution. Here's an example that goes through all } rowCounter++; } - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim app As WpfApplication = Manager.ActiveApplication Assert.IsNotNull(app) @@ -60,7 +53,7 @@ This is possible with a coded solution. Here's an example that goes through all Next rowCounter += 1 Next - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/wpf/go-through-radtreeview.md b/docs-teststudiodev/code-in-test/coded-samples/wpf/go-through-radtreeview.md index 34806d22..99e79797 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/wpf/go-through-radtreeview.md +++ b/docs-teststudiodev/code-in-test/coded-samples/wpf/go-through-radtreeview.md @@ -4,18 +4,15 @@ page_title: Go Through RadTreeView - Test Studio Dev Documentation description: Go Through RadTreeView position: 3 --- -# Go Through Each Node in a WPF RadTreeView # +# Go Through Each Node in a WPF RadTreeView *I would like to go through each node in a WPF RadTreeView until a match is made.* -## Solution ## +## Solution This is possible with a coded solution. You'll expand each node and refresh the tree until you find your match. -#### __[C#]__ - - {{region }} - +````C# WpfApplication app = Manager.ActiveApplication; Assert.IsNotNull(app); Telerik.WebAii.Controls.Xaml.Wpf.RadTreeView tree = app.MainWindow.Find.ByName("treeView"); @@ -55,12 +52,8 @@ This is possible with a coded solution. You'll expand each node and refresh the break; } } - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim app As WpfApplication = Manager.ActiveApplication Assert.IsNotNull(app) Dim tree As Telerik.WebAii.Controls.Xaml.Wpf.RadTreeView = app.MainWindow.Find.ByName(Of Telerik.WebAii.Controls.Xaml.Wpf.RadTreeView)("treeView") @@ -92,6 +85,6 @@ This is possible with a coded solution. You'll expand each node and refresh the Exit While End If End While - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/coded-samples/wpf/parameterize-wpf-app.md b/docs-teststudiodev/code-in-test/coded-samples/wpf/parameterize-wpf-app.md index aca91549..d7c214f0 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/wpf/parameterize-wpf-app.md +++ b/docs-teststudiodev/code-in-test/coded-samples/wpf/parameterize-wpf-app.md @@ -4,13 +4,13 @@ page_title: Parameterize WPF App - Test Studio Dev Documentation description: Parameterize WPF App position: 2 --- -# Parameterize the Location of a WPF Application # +# Parameterize the Location of a WPF Application Currently Test Studio Dev is rigged that you cannot run a WPF Test unless you provide a definite (non-parameterized) location for the application under testing. ![Configure WPF path][1] -## Solution ## +## Solution To work around this limitation, create a mock application to feed to Test Studio Dev. Then change the application under testing in a coded step. This allows you to use a parameterization method of your choosing for the app's location. @@ -24,10 +24,7 @@ To work around this limitation, create a mock application to feed to Test Studio Let's assume that the "real" application is in the following location: **C:\myapps\Go.exe**. Here's the code: -#### __[C#]__ - - {{region }} - +````C# //Shut down "mock" app ActiveApplication.Quit(); @@ -45,12 +42,8 @@ Let's assume that the "real" application is in the following location: **C:\myap //Check whether we connected successfully Assert.IsNotNull(app); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB ActiveApplication.Quit() @@ -64,15 +57,12 @@ Let's assume that the "real" application is in the following location: **C:\myap Assert.IsNotNull(app) - {{endregion}} +```` You can extend this code to include parameterization for the app's location. You can use data binding, for instance. Let's say your test is bound to a data sheet with a column named "paths": -#### __[C#]__ - - {{region }} - +````C# var pinfo = new System.Diagnostics.ProcessStartInfo(Data["paths"]); - {{endregion}} +```` [1]: images/parameterize-wpf-app/fig1.png diff --git a/docs-teststudiodev/code-in-test/element-identification/dom-navigation.md b/docs-teststudiodev/code-in-test/element-identification/dom-navigation.md index 3dc8807a..92eb1f9d 100644 --- a/docs-teststudiodev/code-in-test/element-identification/dom-navigation.md +++ b/docs-teststudiodev/code-in-test/element-identification/dom-navigation.md @@ -4,7 +4,7 @@ page_title: DOM Navigation - Test Studio Dev Documentation description: DOM Navigation position: 1 --- -#DOM Navigation# +# DOM Navigation Once you have an element, you can navigate to other elements relative to this element. Navigation methods include: @@ -20,7 +20,7 @@ Once you have an element, you can navigate to other elements relative to this el Suppose we have some HTML that looks like this: -```HTML +````HTML
DIV1 TEXT
@@ -30,13 +30,10 @@ Suppose we have some HTML that looks like this: SPAN3 TEXT
-``` +```` Here is how we can navigate around the DOM once we have a starting element: -#### __[C#]__ - - {{region }} - +````C# // Let's start with the span1 element. Element span1 = Find.ById("span1"); Element span2 = span1.GetNextSibling(); @@ -67,12 +64,8 @@ Here is how we can navigate around the DOM once we have a starting element: Assert.IsTrue(span1.IdAttributeValue.Equals("span1"), string.Format("Actual ID: {0}", span1.IdAttributeValue)); Assert.IsTrue(span2.IdAttributeValue.Equals("span2"), string.Format("Actual ID: {0}", span2.IdAttributeValue)); Assert.IsTrue(span3.IdAttributeValue.Equals("span3"), string.Format("Actual ID: {0}", span3.IdAttributeValue)); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB ' Let's start with the span1 element. Dim span1 As Element = Find.ById("span1") Dim span2 As Element = span1.GetNextSibling() @@ -103,4 +96,4 @@ Here is how we can navigate around the DOM once we have a starting element: Assert.IsTrue(span1.IdAttributeValue.Equals("span1"), String.Format("Actual ID: {0}", span1.IdAttributeValue)) Assert.IsTrue(span2.IdAttributeValue.Equals("span2"), String.Format("Actual ID: {0}", span2.IdAttributeValue)) Assert.IsTrue(span3.IdAttributeValue.Equals("span3"), String.Format("Actual ID: {0}", span3.IdAttributeValue)) - {{endregion}} \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/element-identification/find-expressions.md b/docs-teststudiodev/code-in-test/element-identification/find-expressions.md index e6216b72..2c4f3398 100644 --- a/docs-teststudiodev/code-in-test/element-identification/find-expressions.md +++ b/docs-teststudiodev/code-in-test/element-identification/find-expressions.md @@ -4,7 +4,7 @@ page_title: Find Expressions - Test Studio Dev Documentation description: Find Expressions position: 1 --- -#HTML and XAML Find Expressions# +# HTML and XAML Find Expressions FindExpression's are the replacement/evolution of FindParam's. We will be using FindExpression's as the base for all element searches in the DOM, HWnd, or control trees (including Translator Locators). The key design goal for FindExpressions is to enable a flexible, rich and extensible search definition pattern that can be used across all of our Telerik technologies. This will enable our customers to carry over their product experience as they move across our product stacks making the learning curve for customers moving from one technology to another minimal.ma @@ -32,28 +32,28 @@ FindExpression's are the following: 6.Can't easily be leveraged for searches within other technologies. -##Basic Concept## +## Basic Concept The key to understanding FindExpression's is to understand its basic component: the FindClause. A FindClause is a name/value pair with an optional comparison operator. A FindExpression consists of 1-n FindClauses. For example: -###FindClauses Without Operators### +### FindClauses Without Operators -``` +```` TagName=div id=bar innermarkup=hellothere -``` +```` -###FindClauses With Operators### +### FindClauses With Operators -``` +```` name=~bar [name attribute partially contains bar] automationid=^hat [the automation id of an element starts with hat] -``` +```` **Note:** The optional operator is ALWAYS the first character after the = in the expression. This special character can be escaped with a preceding ' character if it is meant to be interpreted as a literal character. -###Supported Operators### +### Supported Operators
@@ -108,17 +108,17 @@ automationid=^hat [the automation id of an element starts with hat] The name portion of the clause can be a well known enumeration that a certain technology (i.e. HTML, XAML) recognizes as a certain search pattern. For example, in HTML: -``` +```` xpath=HTML[0]/div[1] -``` +```` is interpreted by the HTML search tree as a specific search that requires XPATH interpretation. -``` +```` automationid=?sam -``` +```` -##Constructing FindExpressions## +## Constructing FindExpressions Each technology (HTML, Silverlight, etc.) will define its own FindExpression that inherits from the base FindExpression object. All FindExpression's need only one constructor to define any type of search. @@ -126,14 +126,11 @@ For example: Find the HTML element with an id that ends with 'sam' and also has a class attribute that contains bar and also has a text content that does not contain foo. -#### __[C#]__ - - {{region }} - +````C# HtmlFindExpression expr = new HtmlFindExpression("id=bar","|","tagindex=td:0","|","tagname=img","src=~png"); - {{endregion}} +```` -##Hierarchy Constraint## +## Hierarchy Constraint You can also describe a certain hierarchal constraint to be applied against that FindExpression so that the decision on whether a specific element matches a specific translator or not is not solely based on the tag but also takes into consideration its hierarchical position. For example a tag that looks like
might be part of a grid while at the same time other elements on the page could contain that tag. The only way to distinguish whether that tag is part of the grid is to inspect its parent or child hierarchy. @@ -147,19 +144,18 @@ A hierarchy constraint contains two pieces of data: For example, suppose we have the following HTML code snippet to deal with: -```HTML +````HTML
-``` +```` Now we want to match the div tag that has class='bar' and its parent's parent has an id='foo1': -#### __[C#]__ - - {{region }} +````C# + // This expression will locate both p tags at [0] & [3] HtmlFindExpression expression = new HtmlFindExpression("class=bar", "tagname=div"); @@ -170,12 +166,10 @@ Now we want to match the div tag that has class='bar' and its parent's parent ha // -2 signifies two parents up. // Note that HierarchyConstraints are [1] based. Zero signifies the target element or reference point. expression.AddHierarchyConstraint(new HierarchyConstraint(parentExpr, -2)); - {{endregion}} - -#### __[VB]__ - - {{region }} +```` +````VB + ' This expression will locate both p tags at [0] & [3] Dim expression As New HtmlFindExpression("class=bar", "tagname=div") @@ -186,13 +180,13 @@ Now we want to match the div tag that has class='bar' and its parent's parent ha ' -2 signifies two parents up. ' Note that HierarchyConstraints are [1] based. Zero signifies the target element or reference point. expression.AddHierarchyConstraint(New HierarchyConstraint(parentExpr, -2)) - {{endregion}} +```` The resulting expression now will match [3] ONLY. Here is a more involved scenario: -```HTML +````HTML

@@ -204,13 +198,13 @@ Here is a more involved scenario:

-``` +```` If we wish the constraint to match the first child of the parent's parent (i.e. [2]) and to be an 'span' instead, that is also doable. The path in that case is -2, 1 => Two parents up, one down at index 1. (Or -1, -1, 1, both are the same) and the second FindExpression will be "TagName=span" instead of "id=foo1". -##HtmlFindExpression Types## +## HtmlFindExpression Types The following is a list of the types that can appear on the left side of the expression in HtmlFindExpressions: @@ -234,7 +228,7 @@ The following is a list of the types that can appear on the left side of the exp * XPath - search for an element at the specified XPath expression. -##XamlFindExpression Types## +## XamlFindExpression Types The following is a list of the types that can appear on the left side of the expression in XamlFindExpressions: diff --git a/docs-teststudiodev/code-in-test/element-identification/find-param-as-xml-data.md b/docs-teststudiodev/code-in-test/element-identification/find-param-as-xml-data.md index 9fffa750..4f1dbad2 100644 --- a/docs-teststudiodev/code-in-test/element-identification/find-param-as-xml-data.md +++ b/docs-teststudiodev/code-in-test/element-identification/find-param-as-xml-data.md @@ -4,7 +4,7 @@ page_title: FindParam as XML Data - Test Studio Dev Documentation description: FindParam as XML Data position: 1 --- -#FindParams as External XML Data Sources# +# FindParams as External XML Data Sources **Note:** This topics assumes a basic understanding of FindParam objects. It is recommended to read the
Finding Page Elements topic first before reading this topic. @@ -18,15 +18,12 @@ By doing so we can: * Enable the same test logic/code to run against different versions of the same application that differ in UI layout or DOM structure. By versioning the external data sources per each different application version, we can configure our tests to consume different data source versions for each application being tested without having to duplicate test code and worry about maintaining multiple code bases. This approach can dramatically cut down maintenance and support costs especially for product teams that maintain and service multiple versions of the same application. It is also a great approach to take on if you are starting a new project and you think you will end up having to support multiple versions of that product in the future. -##Building FindParam Data Sources## +## Building FindParam Data Sources We currently don't offer any UI design tools that can help build these data sources directly from your application. Therefore, to build these data source we need to craft our FindParams manually and then using FindParam and FindParamCollection XML serialization methods, store the generated sources to our storage medium of choice (i.e. database, file system ...etc). The sample below shows an example of how to build an XML file that can be later consumed by your test code to identify elements to use in the automation logic. -#### __[C#]__ - - {{region }} - // First we build the list of FindParam objects we want serialized +````C# // First we build the list of FindParam objects we want serialized // and add them to a FindParamCollection object. FindParam param1 = new FindParam("table", 0); @@ -48,16 +45,13 @@ The sample below shows an example of how to build an XML file that can be later // in your choice of storage medium. // // string serializedParams = paramCol.ToXml(); - {{endregion}} +```` -##Consuming the Data Sources## +## Consuming the Data Sources The are three different methods you can use to consume the data source generated above. We can deserialize the data back into a FindParamCollection object and then select one of these FindParams to locate a specific element on the page. -#### __[C#]__ - - {{region }} - +````C# // Given we already have a datasource of FindParam's stored on a different medium, // we can deserialize the data back into a FindParamCollection object and then // select one of these FindParam's to locate a specific element on the page @@ -69,14 +63,11 @@ The are three different methods you can use to consume the data source generated // Perform your automation actions on the element. ActiveBrowser.Actions.SetText(inputText, "sometext"); - {{endregion}} +```` Alternatively we can can create a Dictionary lookup object from the external datasource. -#### __[C#]__ - - {{region }} - +````C# // FindParams can be completely extracted out of test code and stored in an external xml file. // // This allows you to: @@ -101,14 +92,11 @@ Alternatively we can can create a Dictionary lookup object from the external dat // Note: // 1. If you have the XML string stored in a DataBase, you can use the Find.FromXml() // to find these elements directly from the string. - {{endregion}} +```` Finally we can load the external datasource using a FindParamAttribute. -#### __[C#]__ - - {{region }} - +````C# // The SupportFiles\FindElementsFromFile.xml shows a sample xml file with two FindParams defined; one for // the MainTable and the other for ProgramsTable. @@ -120,9 +108,9 @@ Finally we can load the external datasource using a FindParamAttribute. Assert.IsTrue(Find.Elements.Count == 2); Assert.IsTrue(Find.Elements["MainTable"].ElementType == ElementType.Table); Assert.IsTrue(Find.Elements["ProgramsTable"].ElementType == ElementType.Table); - {{endregion}} +```` -##Managing and Organizing Data Sources for an Entire Application## +## Managing and Organizing Data Sources for an Entire Application There are probably many ways you can think of to organize your external data sources for your an entire application. We though want to discuss three approaches you might want to consider. You can organize your external sources: diff --git a/docs-teststudiodev/code-in-test/element-identification/find-param-objects.md b/docs-teststudiodev/code-in-test/element-identification/find-param-objects.md index ec5a6454..fe3f01c2 100644 --- a/docs-teststudiodev/code-in-test/element-identification/find-param-objects.md +++ b/docs-teststudiodev/code-in-test/element-identification/find-param-objects.md @@ -4,27 +4,21 @@ page_title: FindParam Objects - Test Studio Dev Documentation description: FindParam Objects position: 1 --- -#FindParam Objects# +# FindParam Objects All the identification methods exposed by the 'Find' object described above use FindParam objects under the covers to describe the desired element within the DOM tree to Telerik's identification engine. The engine itself can only understand searches using FindParam's. You can directly invoke element searches against the identification engine using the Find.ByParam() or Find.AllByParam() methods. When FindParam's are used directly to define a search, they enable a richer, consistent and more flexible way to describe a certain element than just the Find.Byxx() which were designed to cater for the most common scenarios. For example, if you want to describe the second 'div' on a page with class=myclass. You can't directly do that using the Find.Byxx() methods unless you first find the second 'div' element then inspect its attributes to figure out if the class attribute is set 'myclass'. With FindParam objects, you can simply describe that search by: -#### __[C#]__ - - {{region }} - +````C# // The find object will only return an element if all conditions // exist. Else NULL. Element e = Find.ByParam(new FindParam("div", 1,"class=myclass")); Assert.IsNotNull(e); - {{endregion}} +```` Here are some other examples: -#### __[C#]__ - - {{region }} - +````C# Element e; // Find.ById() is implemented as @@ -42,9 +36,9 @@ Here are some other examples: p.ContentType = FindContentType.InnerMarkup; e = Find.ByParam(p); Assert.IsNotNull(e); - {{endregion}} +```` -##Chained Identification## +## Chained Identification Chained identification is simply using multiple FindParam objects (as in a chain) to identify an element. Chained identification is used to help simplify locating nested and complex markup elements and promote a more robust approach for element identification in these scenarios. @@ -54,7 +48,7 @@ To help understand chained identification better, let's take a concrete example. Many times developers find themselves struggling with a markup nesting similar to the one below; particularly on rich content websites when heavy styling is applied or when using dynamic web development technologies like ASP.NET. In the sample below, the outer table contains an id attribute but the rest of the nested tables don't. Let's assume a test needs to access the inner most table to verify its content. Instead of looking up the overall 'table' occurrence index over an entire document which can easily become difficult on large complex pages, we would like to first identify the "table1" element by its id and then simply count two table occurrences from it (occurrence index 1) to locate the inner table. -```HTML +````HTML
@@ -80,15 +74,12 @@ Many times developers find themselves struggling with a markup nesting similar t
-``` +```` Below is the chained identification code to accomplish that. -#### __[C#]__ - - {{region }} - +````C# // Generic chained identification FindParam idtable1 = new FindParam("id=table1"); @@ -99,8 +90,8 @@ Below is the chained identification code to accomplish that. Element innerTable = Find.ByParam(new FindParam[] { idtable1, innertable }); Assert.IsNotNull(innertable); Assert.AreEqual(3, innerTable.Children[0].Children.Count); - {{endregion}} +```` -##Defining FindParam Objects Outside Test Code (i.e. FindParam Serialization)## +## Defining FindParam Objects Outside Test Code (i.e. FindParam Serialization) FindParam objects support serialization including the FindParamCollection. This support allows you to define your FindParam's outside your test code and consume them as data sources. This enables you to be more agile when changes are made to your application by simply updating the xml that defines your FindParam objects. This topic is covered in more detail under FindParams as External Xml DataSources. diff --git a/docs-teststudiodev/code-in-test/element-identification/finding-page-elements.md b/docs-teststudiodev/code-in-test/element-identification/finding-page-elements.md index 1d838545..5b200569 100644 --- a/docs-teststudiodev/code-in-test/element-identification/finding-page-elements.md +++ b/docs-teststudiodev/code-in-test/element-identification/finding-page-elements.md @@ -31,7 +31,7 @@ padding: 8px; } -# Finding Page Elements # +# Finding Page Elements Telerik Testing Framework provides one of the richest markup identification infrastructures currently available on the market. It builds on top of commonly known element identification methods like 'getElementById', 'getElementByName' or 'XPath' and extends them to provide identification routines that cater more to application automation scenarios. In addition to maintaining a simple and easy to use set of APIs, Telerik Testing Framework introduces a consistent and extensible way to build identification and persist it using 'FindParam' objects. @@ -39,7 +39,7 @@ All the Find.Byxxx methods now support LINQ queries. It is important to understand how Telerik's identification method works because that understanding will allow you to exploit the power of these identification methods to build robust automation quicker. -##Element Identification Overview## +## Element Identification Overview The following identification methods are supported: @@ -54,7 +54,7 @@ The following identification methods are supported: ``` // Find element with id=input1 Element e = Find.ById("input1"); -``` +```` @@ -64,7 +64,7 @@ Element e = Find.ById("input1"); ``` // Find element with name=goButton Element e = Find.ByName("goButton") -``` +```` @@ -72,14 +72,14 @@ Element e = Find.ByName("goButton") **Find.AllByImage()** Searches for an element or 'All' elements that look like a predefined image -``` +```` // Specify the predefined image on which the search will be based System.Drawing.Image img1 = System.Drawing.Image.FromFile(@"C:\sampleImg.png"); // Find an element that looks like the predefind image var elementImg1 = Manager.ActiveBrowser.Find.ByImage(img1, 70); // the second argument is the threshold % to use, while searching for the image // Cast the found element to be able to use it. The type of located element needs to be specified. HtmlButton btn1 = elementImg1.As(); -``` +```` @@ -89,7 +89,7 @@ HtmlButton btn1 = elementImg1.As(); ``` // Find the 3rd occurrence of table tag Element table = Find.ByTagIndex("table", 2); -``` +```` @@ -105,7 +105,7 @@ Element e = Find.ByAttributes("class=myclass"); Element e = Find.ByAttributes("class=myclass", "src=~foo.gif"); // Find all elements with class=myclass and src has a partial foo.gif IList allbtns = Find.AllByAttributes("class=myclass", "src=~foo.gif"); -``` +```` @@ -138,7 +138,7 @@ IList alle = Find.AllByContent("p:car") // TextContent of div1 : Text1 {non-recursive} // // Default for ByContent is TextContent which is the most common usage. -``` +```` @@ -151,7 +151,7 @@ IList alle = Find.AllByContent("p:car") HtmlFindExpression expr = new HtmlFindExpression("id=?sam","class=~bar","textcontent=!foo"); // Return all elements matching HtmlFindExpression IList allSams = Find.AllByExpression(expr); -``` +```` @@ -164,7 +164,7 @@ IList allSams = Find.AllByExpression(expr); Element img = Find.ByXPath("//body[1]/table[1]/tbody[1]/tr[1]/td[1]/img[1]"); // Find all times with id=div IList allDivs = Find.AllByXPath("/descendant::node()[starts-with(@id,'div')]"); -``` +```` @@ -177,7 +177,7 @@ IList allDivs = Find.AllByXPath("/descendant::node()[starts-with(@id,'d HtmlAnchor activeLink = Find.ByCssSelector("a:active"); // Find all links IList allLinks = Find.AllByCssSelector("a"); -``` +```` @@ -187,7 +187,7 @@ IList allLinks = Find.AllByCssSelector("a"); ``` // Return all img elements IList allimg = Find.AllByTagName("img"); -``` +```` @@ -217,7 +217,7 @@ Given this DOM: // We can find the element by: Element target = Find.ByNodeIndexPath("0/2/0/1"); -``` +```` @@ -227,7 +227,7 @@ Element target = Find.ByNodeIndexPath("0/2/0/1"); ``` FindParamCollection col = FindParamCollection.LoadFromXml(xml); return this.FromCollection(col); -``` +```` @@ -247,12 +247,12 @@ HtmlInputButton btn = Find.ByCustom( } ); Assert.IsNotNull(btn); -``` +```` -##Identification Methods Usage## +## Identification Methods Usage Telerik Testing Framework identification methods are accessible using the **Find** object that is exposed as a property off of the 'Browser' object : *Manager.ActiveBrowser.Find.Byxx(...)* and also as a property off of each TestRegion object : *TestRegion.Find.Byxx(...)*. @@ -260,7 +260,7 @@ The difference between the Find object off of the Browser class (Root Base Ident With TestRegions, depending on the areas of the application that each automated test is targeting, you can use different Find objects to give each test a greater level of independence and shield it from product changes outside its target area. This topic is discussed in greater details in Introduction to TestRegions. -##Matching Syntax Used in Parameters## +## Matching Syntax Used in Parameters The Byxxx functions that take a nameValuePairs parameter recognizes the following matching syntax: @@ -280,11 +280,11 @@ The Byxxx functions that take a content string parameter recognizes the followin * Prefix the string parameter with 'x:' for regular expression matching. e.g. 'x:[*foo*]' will match any content containing the string 'foo' in the middle of it. For more information about regular expressions see: http://msdn.microsoft.com/en-us/library/2k3te2cs.aspx. -##Identification Sample## +## Identification Sample To help illustrate the above identification methods, let's use the following sample application. Note that this application uses TestRegions excessively to allow it to demonstrate the different identification methods that can be performed using both **RBI** and **RGBI**: -```HTML +````HTML @@ -328,11 +328,11 @@ To help illustrate the above identification methods, let's use the following sam -``` +```` The code below shows the different methods you can use in your test code to identify elements. Note in the sample below, we are using Visual Studio's Assert class to demonstrate how different objects can be identified differently and to illustrate how to scope the identification with TestRegions using RGBI and across the entire document DomTree using RBI. -```C# +````C# // Set the short-cuts to the main automation objects. Browser brwser = mgr.ActiveBrowser; Find rootFind = brwser.Find; @@ -386,8 +386,8 @@ Assert.IsTrue(rootFind.ByNodeIndexPath("1/0/0").TagName.Equals("div", StringComp //*** Using name Assert.IsNull(r1.Find.ByName("bla")); -``` -```VB +```` +````VB ' Set the short-cuts to the main automation objects. Dim brwser As ArtOfTest.WebAii.Core.Browser = Manager.ActiveBrowser Dim rootFind As Find = brwser.Find @@ -441,4 +441,4 @@ Assert.IsTrue(rootFind.ByNodeIndexPath("1/0/0").TagName.Equals("div", StringComp '*** Using name Assert.IsNull(r1.Find.ByName("bla")) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/element-identification/linq-queries.md b/docs-teststudiodev/code-in-test/element-identification/linq-queries.md index 3ca34780..82eb5143 100644 --- a/docs-teststudiodev/code-in-test/element-identification/linq-queries.md +++ b/docs-teststudiodev/code-in-test/element-identification/linq-queries.md @@ -4,7 +4,7 @@ page_title: LINQ Queries - Test Studio Dev Documentation description: LINQ Queries position: 1 --- -#LINQ Queries# +# LINQ Queries The Find.Byxxx methods now support Language-Integrated Query (LINQ) queries. Some of the Find functions are intended to be used by LINQ queries only. These include: @@ -29,8 +29,7 @@ Using LINQ we can create strongly typed advanced queries with intellisense suppo ### __[VB]__ - {{region }} - + // Find all images on a page. var images = Find.AllControls(); @@ -38,14 +37,13 @@ Using LINQ we can create strongly typed advanced queries with intellisense suppo { // Do what you want with each img. } - {{endregion}} +```` We can also use lambda expressions like this: ### __[VB]__ - {{region }} - + // Find the first element that contains "Go Google" Element el = Find.ByCustom(e => e.TextContent.Contains("Go Google")); @@ -69,4 +67,4 @@ We can also use lambda expressions like this: // Fetch a list of HTML anchor's that contain 'a' in the ID IList li = (from b in Find.AllElements() where b.IdAttributeValue.Contains("a") select b).ToArray(); Assert.IsTrue(li.Count > 0); - {{endregion}} \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/generate-unit-test.md b/docs-teststudiodev/code-in-test/generate-unit-test.md index 054427c5..d26e83c0 100644 --- a/docs-teststudiodev/code-in-test/generate-unit-test.md +++ b/docs-teststudiodev/code-in-test/generate-unit-test.md @@ -22,15 +22,14 @@ A unit test file and XML file containing your data are created in your Test Proj **Note:** When you convert an entire test to code, it doesn't take into account the **Enable Silverlight** setting. You need to enable it in code prior to the LaunchNewBrowser call: -```C# +````C# Manager.Settings.Web.EnableSilverlight = true; Manager.LaunchNewBrowser(); -``` - -```VB +```` +````VB Manager.Settings.Web.EnableSilverlight = True Manager.LaunchNewBrowser() -``` +```` ## Preview Code diff --git a/docs-teststudiodev/code-in-test/html-control-suite/custom-html-control.md b/docs-teststudiodev/code-in-test/html-control-suite/custom-html-control.md index 6620429b..098c3de5 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/custom-html-control.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/custom-html-control.md @@ -4,13 +4,13 @@ page_title: Custom HtmlControl - Test Studio Dev Documentation description: Custom HtmlControl position: 2 --- -#Creating Your Own Custom HtmlControls# +# Creating Your Own Custom HtmlControls Let's suppose you're testing a web site that uses a third party or custom control. You can easily create your own custom HtmlControl class and then design tests that interact with the custom control via your custom HtmlControl class. As an example, let's create a custom HtmlControl that wraps the ASP.NET calendar control. We'll give it some methods for reading and controlling the date selection along with a custom ClientSideLocator just for an example. First here's our ASPX web page containing a calendar control that we want to test -``` +```` <% @ Page Language="C#" MasterPageFile="~/AppMaster.master" Title="Untitled Page" %> <% @ Import Namespace="System.Data" %> <% @ Register Assembly="ArtOfTest.WebAii.AspNet" Namespace="ArtOfTest.WebAii.AspNet.WebControls" TagPrefix="test" %> @@ -146,14 +146,11 @@ As an example, let's create a custom HtmlControl that wraps the ASP.NET calendar -``` +```` Let's put together our custom HtmlControl that we can use interact with an ASP.NET calendar control: -#### __[C#]__ - - {{region }} - +````C# public class AspNetCalendar : HtmlTable { /// @@ -284,12 +281,8 @@ Let's put together our custom HtmlControl that we can use interact with an ASP.N return GetMonth(); } } - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Public Class AspNetCalendar Inherits HtmlTable ''' @@ -408,7 +401,7 @@ Let's put together our custom HtmlControl that we can use interact with an ASP.N Return GetMonth() End Function End Class - {{endregion}} +```` Notice how we derive from an HtmlTable. That way we can take advantage of all the functionality already built into a standard table. We'll just add all the functions useful for our calendar control which include: diff --git a/docs-teststudiodev/code-in-test/html-control-suite/drag-and-drop.md b/docs-teststudiodev/code-in-test/html-control-suite/drag-and-drop.md index 65f36f0c..8adea8eb 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/drag-and-drop.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/drag-and-drop.md @@ -4,7 +4,7 @@ page_title: Drag & Drop - Test Studio Dev Documentation description: Drag & Drop position: 2 --- -#How to Drag and Drop# +# How to Drag and Drop The HTML element wrapper classes make mouse drag & drop operations significantly easier. There are 7 different drag methods defined: @@ -33,10 +33,7 @@ The HTML element wrapper classes make mouse drag & drop operations significantly Suppose we have an sales by area table that supports drag & drop between cells. We can easily drag & drop the contents of one cell to another cell like this: -#### __[C#]__ - - {{region }} - +````C# // Find the sales table HtmlTable salesTable = Find.ById("area_1_table"); @@ -46,13 +43,10 @@ salesTable.BodyRows[3].Cells[1].DragTo(salesTable.BodyRows[2].Cells[1]); // Verify the new row subtotals are correct Assert.AreEqual(salesTable.Rows[2].Cells[5].TextContent, "$3342.78"); Assert.AreEqual(salesTable.Rows[3].Cells[5].TextContent, "$2175.17"); -{{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB ' Find the sales table Dim salesTable As HtmlTable = Find.ById(Of HtmlTable)("area_1_table") @@ -62,4 +56,4 @@ salesTable.BodyRows(3).Cells(1).DragTo(salesTable.BodyRows(2).Cells(1)) ' Verify the new row subtotals are correct Assert.AreEqual(salesTable.Rows(2).Cells(5).TextContent, "$3342.78") Assert.AreEqual(salesTable.Rows(3).Cells(5).TextContent, "$2175.17") -{{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/html-control-suite/element-styles.md b/docs-teststudiodev/code-in-test/html-control-suite/element-styles.md index 1db155db..c46071bf 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/element-styles.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/element-styles.md @@ -4,7 +4,7 @@ page_title: Element Styles - Test Studio Dev Documentation description: Element Styles position: 2 --- -#Element Styles and HtmlStyle, GetStyle, GetComputedStyle# +# Element Styles and HtmlStyle, GetStyle, GetComputedStyle Telerik Testing Framework includes a good set of classes and methods for reading and validating the styles often attached to HTML controls. With this feature you can do things like: @@ -25,10 +25,7 @@ Telerik Testing Framework includes a good set of classes and methods for reading Let's look at some code samples to see how this works: -#### __[C#]__ - - {{region }} - +````C# // Verify the color of the warning text is Red HtmlSpan warningSpan = Find.ById("Warning"); HtmlStyle warningColorStyle = warningSpan.GetStyle("color"); @@ -64,14 +61,11 @@ HtmlStyle warningMarginStyle = warningSpan.GetStyle("margin"); Assert.IsTrue(warningMarginStyle.IsInt()); int warningMargin = warningMarginStyle.ToInt(); Assert.AreEqual(30, warningMargin); -{{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB ' Verify the color of the warning text is Red Dim warningSpan As HtmlSpan = Find.ById(Of HtmlSpan)("Warning") Dim warningColorStyle As HtmlStyle = warningSpan.GetStyle("color") @@ -105,17 +99,14 @@ Assert.AreEqual(30, warningMargin); Assert.IsTrue(warningMarginStyle.IsInt()) Dim warningMargin As Integer = warningMarginStyle.ToInt() Assert.AreEqual(30, warningMargin) - {{endregion}} +```` The GetComputedStyle is especially powerful. It will follow the CSS chain up through all the parent elements until it finds the first matching style and returns the value picked up from that style. This is quite different from GetStyle which only returns an explicitly set style value on the specific element (i.e. it does not follow the CSS chain). If no explicit value has been set then GetStyle returns an empty string for the value. Here's an example: -#### __[C#]__ - - {{region }} - +````C# // GetStyle returns the value of an explicit style applied to the element. // If the element does not have an explicit style applied, GetStyle returns an empty value. // Since our warning span does not have the padding style explicitly applied to it, @@ -128,13 +119,10 @@ Here's an example: // Therefore GetComputedStyle on the warning span will return the value set in the parent form tag. paddingStyle = warningSpan.GetComputedStyle("padding"); Assert.IsFalse(string.IsNullOrEmpty(paddingStyle.Value)); - {{endregion}} - - -#### __[VB]__ +```` - {{region }} +````VB ' GetStyle returns the value of an explicit style applied to the element. ' If the element does not have an explicit style applied, GetStyle returns an empty value. ' Since our warning span does not have the padding style explicitly applied to it, @@ -147,4 +135,4 @@ Here's an example: ' Therefore GetComputedStyle on the warning span will return the value set in the parent form tag. paddingStyle = warningSpan.GetComputedStyle("padding") Assert.IsFalse(String.IsNullOrEmpty(paddingStyle.Value)) - {{endregion}} \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/html-control-suite/find-and-navigate-elements.md b/docs-teststudiodev/code-in-test/html-control-suite/find-and-navigate-elements.md index 9131b557..b54e7f2c 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/find-and-navigate-elements.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/find-and-navigate-elements.md @@ -4,15 +4,12 @@ page_title: Find and Navigate Elements - Test Studio Dev Documentation description: Find and Navigate Elements position: 2 --- -#Finding and Navigating HTML Elements# +# Finding and Navigating HTML Elements The example above used just two of the available find methods, the Find.ById<**TControl**> and the Find.AllByTagName<**TControl**> and did not take advantage of the powerful navigation features. Let's look at some other find examples: -#### __[C#]__ - - {{region }} - +````C# // Find the first table on the page. HtmlTable outertable = Find.ByTagIndex("table", 0); @@ -42,13 +39,10 @@ Assert.AreEqual(1, imgCtrls.Count); // Find the
section containing the Eastern US Division sales report HtmlDiv EasternUSDivision = Find.ByContent("Eastern US Division", FindContentType.TextContent); Assert.IsNotNull(EasternUSDivision); -{{endregion}} - - -#### __[VB]__ +```` - {{region }} +````VB ' Find the first table on the page. Dim outertable As HtmlTable = Find.ByTagIndex(Of HtmlTable)("table", 0) Assert.AreEqual(3, outertable.Rows.Count) @@ -79,15 +73,12 @@ Assert.IsNotNull(EasternUSDivision); ' Find the
section containing the Eastern US Division sales report Dim EasternUSDivision As HtmlDiv = Find.ByContent(Of HtmlDiv)("Eastern US Division", FindContentType.TextContent) Assert.IsNotNull(EasternUSDivision) - {{endregion}} +```` The above example demonstrates how to use many of the more useful find methods. There are many more. It would take up too much space to try and document them all here. Refer to the API reference to learn about the others. Let's look at some HTML navigation functions: -#### __[C#]__ - - {{region }} - +````C# // Traverse the control tree upwards too. You can easily // Find the container control of a certain type from its children. @@ -113,14 +104,11 @@ The above example demonstrates how to use many of the more useful find methods. // Find the form this table is contained in. HtmlForm form1 = table2.Parent(); Assert.IsTrue(form1.ID.Equals("form1")); - {{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB ' Traverse the control tree upwards too. You can easily ' Find the container control of a certain type from its children. @@ -147,4 +135,4 @@ Assert.IsTrue(table2.ID.Equals(outertable.ID)) ' Find the form this table is contained in. Dim form1 As HtmlForm = table2.Parent(Of HtmlForm)() Assert.IsTrue(form1.ID.Equals("form1")) -{{endregion}} \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/html-control-suite/get-set-properties.md b/docs-teststudiodev/code-in-test/html-control-suite/get-set-properties.md index 23ab10b4..12ca8dae 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/get-set-properties.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/get-set-properties.md @@ -4,15 +4,12 @@ page_title: Get & Set Properties - Test Studio Dev Documentation description: Get & Set Properties position: 2 --- -#Getting and Setting Properties# +# Getting and Setting Properties We can also get and set the current value of any property of the wrapped element: -#### __[C#]__ - - {{region }} - +````C# // Get whether a checkbox is enabled or disabled. HtmlInputCheckBox cks = Find.ById("checkbox1"); bool disabled = cks.GetValue("disabled"); @@ -36,14 +33,11 @@ string strColor = mySpan.GetStyleValue("color"); // style. HtmlStyle styleMargin = mySpan.GetComputedStyle("margin"); string strMargin = mySpan.GetComputedStyleValue("margin"); -{{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB ' Get whether a checkbox is enabled or disabled. Dim cks As HtmlInputCheckBox = Find.ById(Of HtmlInputCheckBox)("checkbox1") Dim disabled As Boolean = cks.GetValue(Of Boolean)("disabled") @@ -61,6 +55,6 @@ Dim strColor As String = mySpan.GetStyleValue("color") ' style. Dim styleMargin As HtmlStyle = mySpan.GetComputedStyle("margin") Dim strMargin As String = mySpan.GetComputedStyleValue("margin") -{{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/html-control-suite/html-actions.md b/docs-teststudiodev/code-in-test/html-control-suite/html-actions.md index f4514b8a..7778842a 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/html-actions.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/html-actions.md @@ -4,7 +4,7 @@ page_title: HTML Actions - Test Studio Dev Documentation description: HTML Actions position: 2 --- -#Common HTML Control Actions# +# Common HTML Control Actions What are some of the things we can do after finding the element we want to act upon? We can: @@ -22,10 +22,7 @@ What are some of the things we can do after finding the element we want to act u Here are some examples: -#### __[C#]__ - - {{region }} - +````C# // All controls have a Click/MouseClick. The .Click invokes a click from the DOM, // the MouseClick(), moves the mouse to the control and clicks it. @@ -116,13 +113,10 @@ Here are some examples: // Invoke any events on the control link.InvokeEvent(ScriptEventType.OnFocus); - {{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB ' All controls have a Click/MouseClick. The .Click invokes a click from the DOM, ' the MouseClick(), moves the mouse to the control and clicks it. @@ -213,4 +207,4 @@ Here are some examples: ' Invoke any events on the control link.InvokeEvent(ScriptEventType.OnFocus) - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/html-control-suite/html-asserts.md b/docs-teststudiodev/code-in-test/html-control-suite/html-asserts.md index e8848095..7e07366a 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/html-asserts.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/html-asserts.md @@ -4,7 +4,7 @@ page_title: HTML Asserts - Test Studio Dev Documentation description: position: 2 --- -#HTML Asserts# +# HTML Asserts Telerik Testing Framework has a set of Assert classes to make validation of your HTML controls easier. An 'Assert' basically says "Verify the specified property of the control has the specified value or setting. If it doesn't have that setting/value, then throw an error and stop the test." @@ -142,10 +142,7 @@ For example: AssertCheck.IsTrue() will verify the associated checkbox control is Now let's see how this works in action: -#### __[C#]__ - - {{region }} - +````C# // Attribute checks HtmlSpan span = Find.ById("Warning"); span.AssertAttribute().Exists("style"); @@ -201,12 +198,9 @@ table.AssertTable().RowCount(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts. table.AssertTable().RowRange(ArtOfTest.Common.NumberRangeCompareType.OutsideRange, 1, 2); table.AssertTable().Contains(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts.StringCompareType.Contains, "TD5"); table.AssertTable().Contains(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts.StringCompareType.NotContain, "TD37"); -{{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB ' Attribute checks Dim span As HtmlSpan = Find.ById(Of HtmlSpan)("Warning") span.AssertAttribute().Exists("style") @@ -260,7 +254,7 @@ table.AssertTable().RowCount(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts. table.AssertTable().RowRange(ArtOfTest.Common.NumberRangeCompareType.OutsideRange, 1, 2) table.AssertTable().Contains(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts.StringCompareType.Contains, "TD5") table.AssertTable().Contains(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts.StringCompareType.NotContain, "TD37") -{{endregion}} +```` There are many other possible assert verification combinations built into the framework that you can take advantage of. The above examples are just a small subset of what is possible to help you get started implementing them in your code and crafting the kinds of verification you need for your particular website. Consult the API reference manual to learn about the other combinations. diff --git a/docs-teststudiodev/code-in-test/html-control-suite/html-wait-class.md b/docs-teststudiodev/code-in-test/html-control-suite/html-wait-class.md index ee2f739e..4a95029f 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/html-wait-class.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/html-wait-class.md @@ -4,7 +4,7 @@ page_title: HtmlWait Class - Test Studio Dev Documentation description: HtmlWait Class position: 2 --- -#How to Use the HtmlWait Class# +# How to Use the HtmlWait Class The HtmlWait class extends and enhances the Element.Wait class with some powerful methods that are very useful with the HTML control suite. It adds: @@ -17,10 +17,7 @@ The HtmlWait class extends and enhances the Element.Wait class with some powerfu The HtmlWait.ForVisible and HtmlWait.ForVisibleNot use the HtmlControl.IsVisible function to test whether or not the element is currently visible in the browser. Since IsVisible follows the CSS chain, we get a true reading of whether or not the element actually is visible. For example: -#### __[C#]__ - - {{region }} - +````C# HtmlDiv div = Find.ByTagIndex("div", 0); HtmlWait waitObj = div.Wait; @@ -35,12 +32,8 @@ The HtmlWait.ForVisible and HtmlWait.ForVisibleNot use the HtmlControl.IsVisible waitObj.ForVisible(); // Wait 120 seconds for the div to become invisible waitObj.ForVisibleNot(); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB HtmlDiv div = Find.ByTagIndex("div", 0); HtmlWait waitObj = div.Wait; @@ -55,14 +48,11 @@ The HtmlWait.ForVisible and HtmlWait.ForVisibleNot use the HtmlControl.IsVisible waitObj.ForVisible(); // Wait 120 seconds for the div to become invisible waitObj.ForVisibleNot(); - {{endregion}} +```` Using the HtmlWait.ForStyles and HtmlWait.ForStylesNot methods you can wait for a particular style to be set or removed from the element. For example: -#### __[C#]__ - - {{region }} - +````C# HtmlSpan span = Find.ByTagIndex("span", 0); HtmlWait spanWaitObj = div.Wait; @@ -94,13 +84,10 @@ Using the HtmlWait.ForStyles and HtmlWait.ForStylesNot methods you can wait for // Will continue to wait if either style is still set to the specified value. // Uses the default timeout value from Settings.Current.ExecuteCommandTimeout span.Wait.ForStylesNot("backgroundColor=red", "margin=30px"); - {{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB Dim span As HtmlSpan = Find.ByTagIndex(Of HtmlSpan)("span", 0) Dim spanWaitObj As HtmlWait = div.Wait @@ -132,38 +119,28 @@ Using the HtmlWait.ForStyles and HtmlWait.ForStylesNot methods you can wait for ' Will continue to wait if either style is still set to the specified value. ' Uses the default timeout value from Settings.Current.ExecuteCommandTimeout span.Wait.ForStylesNot("backgroundColor=red", "margin=30px") - {{endregion}} +```` The HtmlWait.ForCondition is an advanced method that calls a user defined function to determine whether or not the wait condition has been satisfied. You, the test automation programmer, may code up any sort of wait condition you can imagine. The only requirement is that your function must return true to indicate that the condition has been satisfied or return false to indicate the condition has not been satisfied. The overloads of the HtmlWait.ForCondition are split into two virtually identical sets of three overloads. The first set operates on basic Element objects. The second set operates on Control objects, which all of the classes contained in the HTML control suite derive from. Except for this difference, they operate identically. The sample below shows only the Control version: -#### __[C#]__ - - {{region }} - +````C# HtmlTextArea textArea = Find.ByTagIndex("textarea", 0); HtmlWait textAreaWaitObj = textArea.Wait; // Wait 30 seconds for the HtmlTextArea element to contain the text "Now is the time" textArea.Wait.ForCondition(textAreaContainsStr, false, "Now is the time", 30000); - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB Dim textArea As HtmlTextArea = Find.ByTagIndex(Of HtmlTextArea)("textarea", 0) Dim textAreaWaitObj As HtmlWait = textArea.Wait ' Wait 30 seconds for the HtmlTextArea element to contain the text "Now is the time" textArea.Wait.ForCondition(AddressOf textAreaContainsStr, False, "Now is the time", 30000) - {{endregion}} +```` Now we need the definition of the condition function 'textAreaContainsStr': -#### __[C#]__ - - {{region }} - +````C# /// /// Tests whether or not the HtmlTextArea element contains the specified string. /// @@ -185,13 +162,10 @@ Now we need the definition of the condition function 'textAreaContainsStr': HtmlTextArea textArea = (HtmlTextArea)ctl; return textArea.Text.Contains((string)obj); } - {{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB ''' ''' Tests whether or not the HtmlTextArea element contains the specified string. ''' @@ -212,4 +186,4 @@ Now we need the definition of the condition function 'textAreaContainsStr': Return textArea.Text.Contains(CType(obj, String)) End Function - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/html-control-suite/introduction.md b/docs-teststudiodev/code-in-test/html-control-suite/introduction.md index 5c9b159b..a8923c71 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/introduction.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/introduction.md @@ -4,7 +4,7 @@ page_title: Introduction - Test Studio Dev Documentation description: Introduction position: 1 --- -#Intro to Test Studio Devs HTML Control Element Wrappers Suite# +# Intro to Test Studio Devs HTML Control Element Wrappers Suite Telerik Framework includes an extensive suite of strongly typed HTML element wrappers that abstracts out actions and verifications of the controls contained on the webpage. With the classes contained in the control suite you can do things like: @@ -425,14 +425,11 @@ Here is a list of the support classes that make it easier to use the rest of the
*Table 3. List of HtmlControl support classes contained in Telerik Testing Framework's HTML control suite.* -##Example of How to Fill Out a Web Form Using the HTML Element Wrapper Control Suite## +## Example of How to Fill Out a Web Form Using the HTML Element Wrapper Control Suite Suppose we're automating a form to submit an auto classified ad. Here's how to write the code and take advantage of the HTML element wrapper suite: -#### __[C#]__ - - {{region }} - +````C# [TestClass] public class SubmitAdTestClass : BaseTest { @@ -502,13 +499,10 @@ Suppose we're automating a form to submit an auto classified ad. Here's how to w submit.Click(); } } - {{endregion}} +```` -#### __[VB]__ - - {{region }} - +````VB _ Public Class SubmitAdTestClass Inherits BaseTest @@ -581,7 +575,7 @@ Suppose we're automating a form to submit an auto classified ad. Here's how to w End Sub End Class - {{endregion}} +```` By taking advantage of the object oriented nature of the HTML element wrapper classes, our test code that fills in the fields and clicks the submit button is much simpler, more descriptive and more intuitive in nature. Note how simple it was to enter text into all the input fields, as well as make all the drop down selections using intuitive methods included with Telerik's HTML element wrapper classes! Also notice how we're doing a nested find. The line **form.Find.AllByTagName("select");** is returning all of the **\ elements on the page, perhaps even on other forms contained on the same page. diff --git a/docs-teststudiodev/code-in-test/html-control-suite/transfer-files.md b/docs-teststudiodev/code-in-test/html-control-suite/transfer-files.md index f38956bc..261820c3 100644 --- a/docs-teststudiodev/code-in-test/html-control-suite/transfer-files.md +++ b/docs-teststudiodev/code-in-test/html-control-suite/transfer-files.md @@ -4,33 +4,27 @@ page_title: Transfer Files - Test Studio Dev Documentation description: Transfer Files position: 2 --- -#How to Transfer Files# +# How to Transfer Files We can even perform complete file uploads and downloads with Telerik Testing Framework automatically handling all of the popup dialogs that appear as part of the file upload/download: -#### __[C#]__ - - {{region }} - +````C# // Initiate a file upload Find.ByTagIndex("input", 0).Upload( Path.Combine(Globals.PATH_TO_PAGES, @"..\SupportFiles\EmptyTextFile.txt"), 5000); // Initiate a file download. Download will not return until the download is complete. Find.ByTagIndex("a", 0).Download(false, DownloadOption.Save, saveLocation, 20000); -{{endregion}} +```` -#### __[C#]__ - - {{region }} - +````C# ' Initiate a file upload Find.ByTagIndex(Of HtmlInputFile)("input", 0).Upload( _ Path.Combine(Globals.PATH_TO_PAGES, "..\SupportFiles\EmptyTextFile.txt"), 5000) ' Initiate a file download. Download will not return until the download is complete. Find.ByTagIndex(Of HtmlAnchor)("a", 0).Download(False, DownloadOption.Save, saveLocation, 20000) - {{endregion}} +```` diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/Annotator.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/Annotator.md index 98d9d9be..931f1181 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/Annotator.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/Annotator.md @@ -4,63 +4,63 @@ page_title: Annotator description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Annotator# +# Annotator The annotator displays in the browser window the actions that Telerik Testing Framework is performing along with highlighting the UI element that it is acting upon. If the action does not involve a UI element (such as navigating to a URL or creating a cookie) the action is displayed at the top of the browsers window. Here is what the annotator looks like in action: ![Annotation][1] -##Activating the Annotator via the Application .config File## +## Activating the Annotator via the Application .config File There are 2 methods to activating Telerik Testing Framework's automatic annotator. The simplest method is to activate it via the application .config file. By setting "annotateExecution" to true, the framework turns on the annotator and begins annotating all actions in the browser -```XML +````XML -``` +```` -##Activating the Annotator Programmatically## +## Activating the Annotator Programmatically The next method is to turn on the annotator programmatically in your application. This is accomplished by placing this simple line of code in your unit test: -```C# +````C# // Enable Annotated Execution. Manager.Settings.AnnotateExecution = true; // Disable Annotated Execution. Manager.Settings.AnnotateExecution = false; -``` +```` -```VB +````VB ' Enable Annotated Execution. Manager.Settings.AnnotateExecution = True ' Disable Annotated Execution. Manager.Settings.AnnotateExecution = False -``` +```` -##Performing Your Own Annotation## +## Performing Your Own Annotation You can also perform your own annotation programmatically using the Annotator class. First you must create an Annotator object passing into it which browser window to display annotation in. Once you have an Annotator object you can call one of the annotate functions. For example: -```C# +````C# Annotator myAnnotator = new Annotator(ActiveBrowser); myAnnotator.Annotate("This annotation message appears at the top of the browser document window"); myAnnotator.Annotate("This annotation message appears at the top left corner of the browser document window", 350, OffsetReference.TopLeftCorner); myAnnotator.Annotate(new Point(100, 300), "This annotation message appears under the point at 100,300 in the browser document window"); myAnnotator.Annotate(Find.ById("btn1").GetRectangle(), "This annotation highlights the Color On button"); -``` +```` -```VB +````VB Dim myAnnotator As Annotator = New Annotator(ActiveBrowser) myAnnotator.Annotate("This annotation message appears at the top of the browser document window") myAnnotator.Annotate("This annotation message appears at the top left corner of the browser document window", _ 350, OffsetReference.TopLeftCorner) myAnnotator.Annotate(New Point(100, 300), "This annotation message appears under the point at 100,300 in the browser document window") myAnnotator.Annotate(Find.ById("btn1").GetRectangle(), "This annotation highlights the Color On button") -``` +```` [1]: images/annotator/fig1.png diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/ajax-support.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/ajax-support.md index abf6a709..cc9cf04b 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/ajax-support.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/ajax-support.md @@ -4,7 +4,7 @@ page_title: Ajax Support description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Ajax Support# +# Ajax Support Ajax is one of the latest and fastest growing web development technologies that is fueling today's Web 2.0 era. The technology enables developers to build great and rich web content. However at the same time it adds great complexity to the testing methods required to validate the web applications that use it. To a certain extent, websites that rely heavily on Ajax can no longer rely on using the legacy HTTP record/replay methods to test the entire functionality given that major portions of the website logic are executed within the browser JavaScript engine and in some cases no HTTP requests are being made to the server at all! @@ -26,23 +26,23 @@ Telerik Testing Framework has been built from the ground up with features like A * **Attach event handlers** directly to JavaScript events. This topic is covered in detail under JavaScript Events. -##Waiting on DOM Changes: WaitForElement(s)## +## Waiting on DOM Changes: WaitForElement(s) **WaitForElement**(s) is a great method to use when trying to suspend test execution until a certain element is present or has changed or a specific value of a certain attribute for an element has been set (or even a combination of values). This is a common scenario when automating Ajax applications. WaitForElement(s) requires a basic understanding of FindParams and how to define them. Once you know how to craft FindParam's, you will be able to write custom and rich wait routines using a consistent pattern. Let's examine a couple of examples to illustrate how WaitForElement(s) is used. Assume that you are waiting for a table to be inserted in your DOM tree at a certain location and you want to wait until the whole table is built including the sixth row. The following is the DOM segment before the Ajax call is made: -```HTML +````HTML
-``` +```` Here is the DOM after the call has been made: -```HTML +````HTML
@@ -55,11 +55,11 @@ Here is the DOM after the call has been made:
-``` +```` The following code will perform this wait: -```C# +````C# // Get the ajaxupdate region. // Notice how using a testregion simplifies our identification and makes it // more isolated to the current DOM region being targeted and less prone @@ -75,10 +75,10 @@ FindParam sixth_row = new FindParam("tr", 6); // perform the wait for both elements. WaitForElements() takes 1-N FindParam objects to // to wait for. ActiveBrowser.Actions.WaitForElements(500, ajaxupdate, false, table, sixth_row); -``` +```` -```VB +````VB ' Get the ajaxupdate region. ' Notice how using a testregion simplifies our identification and makes it ' more isolated to the current DOM region being targeted and less prone @@ -94,13 +94,13 @@ Dim sixth_row As FindParam = New FindParam("tr", 6) ' perform the wait for both elements. WaitForElements() takes 1-N FindParam objects to ' to wait for. ActiveBrowser.Actions.WaitForElements(500, ajaxupdate, False, table, sixth_row) -``` +```` In the above code sample, we used TestRegions to make our automation simpler and targeted at the DOM region we are interested in. If you choose to not use TestRegions, you can simply use the WaitForElement(s) overload that takes in only the FindParam and the Timeout. In that case, all identification will be performed with reference to the root element of the DomTree. You can also use "Chained Identification" to wait for an element. For example if we have a DOM segment that looks like the sample below: -```HTML +````HTML
@@ -113,10 +113,10 @@ You can also use "Chained Identification" to wait for an element. For example if
-``` +```` ... and we want to wait until we have six rows available, then we can use chained identification as follows: -```C# +````C# // First find the span by id FindParam myspan = new FindParam("id=myspan"); @@ -125,10 +125,10 @@ FindParam sixth_row = new FindParam("tr", 5); // perform the wait for the row element. ActiveBrowser.Actions.WaitForElement(new FindParam[] { myspan, sixth_row }, 500); -``` +```` -```VB +````VB ' First find the span by id Dim myspan As FindParam = New FindParam("id=myspan") @@ -137,11 +137,11 @@ Dim sixth_row As FindParam = New FindParam("tr", 5) ' perform the wait for the row element. ActiveBrowser.Actions.WaitForElement(New FindParam() {myspan, sixth_row}, 500) -``` +```` The above scenario is one of the most common when testing Ajax apps. Therefore, the WaitForElement provides an easy to use overload for these common scenarios where you need to first identify an element by id/name then validate a certain attribute list. This helps reduce the lines of code each time you need to identify an element. If you need a more complex identification, you can use chained identification as described above. -##Retrieving Dynamic Property Values Directly From the DOM## +## Retrieving Dynamic Property Values Directly From the DOM When using Ajax the application, in most scenarios, updates the document's DOM using JavaScript. The DOM tree provided to your test code by Telerik Testing Framework is automatically updated after each command gets executed against the browser if Browser.AutoDomRefresh property is set to "true," which is the default value. In most scenarios the DOM tree is the latest up-to-date DOM tree from the browser. In cases where the DOM tree is updated without using Telerik browser commands (for example, the page auto-refreshes based on an internal timer, or you are using Pure UI automation), you can always refresh the DOM by calling Browser.RefreshDomTree(). @@ -151,7 +151,7 @@ To help address this issue and potentially other issues, the Telerik infrastruct For example, if you want to retrieve the text set by a user in an input textbox in Firefox, you can simply do the following: -```C# +````C# // Get the element. Element input = ActiveBrowser.Find.ById("myinput"); @@ -163,10 +163,10 @@ string display = input.GetValue("display"); // Get its 'visibility' property from the DOM string visibility = input.GetValue("visibility"); -``` +```` -```VB +````VB ' Get the element. Dim input As Element = ActiveBrowser.Find.ById("myinput") @@ -178,19 +178,19 @@ Dim display As String = input.GetValue(Of String)("display") ' Get its 'visibility' property from the DOM Dim visibility As String = input.GetValue(Of String)("visibility") -``` +```` **Note:** If you are retrieving property values of set attributes available in the serialized DOM string, you should use the GetAttribute() method to retrieve these attributes and their values. -##Browser.WaitForAjax()## +## Browser.WaitForAjax() This method will wait for any active AJAX requests to complete. -```C# +````C# Manager.ActiveBrowser.WaitForAjax(30000); -``` +```` -```VB +````VB Manager.ActiveBrowser.WaitForAjax(30000) -``` +```` diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/app-config-file.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/app-config-file.md index b899ddf7..a57b6f47 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/app-config-file.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/app-config-file.md @@ -5,19 +5,19 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/write-tests-in-code/intermediate-topics/settings-and-configuration/using-application-config-file.aspx, /user-guide/write-tests-in-code/intermediate-topics/settings-and-configuration/using-application-config-file position: 1 --- -#Using the Application's .config File# +# Using the Application's .config File Instead of programmatically setting the configuration, the application or test program can use an application .config file to fetch the appropriate settings. The Telerik infrastructure has a built in .NET Config SectionHandler (under the 'ArtOfTest.Core' namespace) that can read the configuration settings from the .config file associated with the application or test. You place the settings in your .config file as follows: 1.  First add the following line to the 'configSections' section: -```XML +````XML
-``` +```` 2.  Then add the settings you need under the 'WebAii.Settings' section or WebAii.Settings.Web' section. @@ -26,7 +26,7 @@ Instead of programmatically setting the configuration, the application or test p **Note:** The configuration setting names are case sensitive e.g. **AnnotateExecution** will not be recognized and will cause an exception to be thrown while **annotateExecution** will be recognized and used. -```XML +````XML -``` +```` Here is an example of a complete app.config file that contains all of Telerik's configuration settings: -```XML +````XML @@ -60,14 +60,14 @@ Here is an example of a complete app.config file that contains all of Telerik's ``` In your test code initialization, you read these settings by simply setting the UseConfig flag to true when calling the Manager() constructor. If you use the BaseTest template (which is what the VsUnit, MbUnit, NUnit and xUnit templates do) this call is done for you by BaseTest during the Initialize call: -```C# +````C# Manager mgr = new Manager(true); -``` +```` -```VB +````VB Dim myManager As Manager = New Manager(True) -``` +```` **Note:** If you are using Telerik's BaseTest (which the Telerik VS item templates use), there is no need to for your test code to read from the app.config file as shown above. The base class already does that for you. Read the item template's comments for the initialization routine for more details. diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/configure-browser-In-code.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/configure-browser-In-code.md index 91630a51..f089574f 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/configure-browser-In-code.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/configure-browser-In-code.md @@ -4,11 +4,11 @@ page_title: Configure Browser In Code description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Configure Browser In Code# +# Configure Browser In Code Apart from manually configuring each of the browsers for test execution this could be also accomplished in code. -```C# +````C# //declare string variable to write possible errors in string error; // to configure FireFox @@ -21,13 +21,12 @@ Manager.ConfigureBrowser(BrowserType.InternetExplorer, out error); Manager.ConfigureBrowser(BrowserType.Safari, out error); // to configure Edge Manager.ConfigureBrowser(BrowserType.MicrosoftEdge, out error); -``` - -```VB +```` +````VB Dim error As String Manager.ConfigureBrowser(BrowserType.FireFox, error) Manager.ConfigureBrowser(BrowserType.Chrome, error) Manager.ConfigureBrowser(BrowserType.InternetExplorer, error) Manager.ConfigureBrowser(BrowserType.Safari, error) Manager.ConfigureBrowser(BrowserType.MicrosoftEdge, error) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/cookie-support.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/cookie-support.md index 071a65d8..cd93fd45 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/cookie-support.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/cookie-support.md @@ -4,7 +4,7 @@ page_title: Cookie Support description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Cookie Support# +# Cookie Support Using the CookieManager class you can: @@ -16,81 +16,81 @@ Using the CookieManager class you can: * Delete a cookie in the browser -##Retrieving Cookies## +## Retrieving Cookies There are two functions that can be used to retrieve cookies from the browser: -```C# +````C# public CookieCollection GetCookies (string url) public CookieCollection GetCookies (Uri uri) -``` +```` -```VB +````VB Public Function GetCookies(ByVal url As String) As System.Net.CookieCollection Public Function GetCookies(ByVal uri As System.Uri) As System.Net.CookieCollection -``` +```` These functions retrieve all the cookies from the browser for the specified website. For example: -```C# +````C# // Query the cookie System.Net.CookieCollection siteCookies = ActiveBrowser.Cookies.GetCookies("http://www.telerik.com"); -``` +```` -```VB +````VB ' Query the cookie Dim siteCookies As System.Net.CookieCollection = ActiveBrowser.Cookies.GetCookies("http://www.telerik.com") -``` +```` -##Creating and Setting Cookies## +## Creating and Setting Cookies Below is an example of how to create or set a cookie. If the cookie already exists, it will be overwritten. If it does not exist, a new cookie will be created in the browser: -```C# +````C# // Let's create a new cookie for a url. ActiveBrowser.Cookies.SetCookie(new System.Net.Cookie("WebAii", "Rocks", "/", "http://www.telerik.com")); -``` +```` -```VB +````VB ' Let's create a new cookie for a url. ActiveBrowser.Cookies.SetCookie(New System.Net.Cookie("WebAii", "Rocks", "/", "http://www.telerik.com")) -``` +```` -##Deleting Cookies## +## Deleting Cookies Here is an example of how to delete a cookie: -```C# +````C# // Now delete the cookie. ActiveBrowser.Cookies.DeleteCookie(siteCookies[0]); -``` +```` -```VB +````VB ' Now delete the cookie. ActiveBrowser.Cookies.DeleteCookie(siteCookies(0)) -``` +```` A simple foreach loop can be used to delete all the cookies for a particular website: -```C# +````C# // Purge any cookies associated with this server System.Net.CookieCollection cookies = ActiveBrowser.Cookies.GetCookies(Settings.Current.BaseUrl); foreach (System.Net.Cookie cookie in cookies) { ActiveBrowser.Cookies.DeleteCookie(cookie); } -``` +```` -```VB +````VB ' Purge any cookies associated with this server Dim cookies As System.Net.CookieCollection = ActiveBrowser.Cookies.GetCookies(Settings.Current.BaseUrl) For Each cookie As System.Net.Cookie In cookies ActiveBrowser.Cookies.DeleteCookie(cookie) Next cookie -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/desktop-manager.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/desktop-manager.md index 1656222e..f2ce3c09 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/desktop-manager.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/desktop-manager.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an position: 1 --- -#The Desktop Manager Class# +# The Desktop Manager Class The Desktop manager class is used to control interaction between the Windows desktop and the browser. It also contains instances of the Keyboard and Mouse managers. It has the following properties: diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/keyboard-manager.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/keyboard-manager.md index dde8cc1e..f57979f7 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/keyboard-manager.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/keyboard-manager.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an position: 1 --- -#The KeyBoard Manager Class# +# The KeyBoard Manager Class The KeyBoard manager class is used to simulate typing keys on the keyboard. It has the following methods: diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/mouse-manager.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/mouse-manager.md index c6630c01..3ded53f0 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/mouse-manager.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/mouse-manager.md @@ -4,7 +4,7 @@ page_title: Mouse Manager description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Mouse Manager Class# +# Mouse Manager Class The Mouse manager class is used to simulate moving the physical mouse and performing various types of mouse clicks. It has the following properties: diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/settings-class.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/settings-class.md index fb3795ca..6611b711 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/settings-class.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/settings-class.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/write-tests-in-code/intermediate-topics/settings-and-configuration/settings-class.aspx, /user-guide/write-tests-in-code/intermediate-topics/settings-and-configuration/settings-class position: 1 --- -#Settings Class# +# Settings Class How the Telerik Testing Framework behaves during a test run is controlled by the settings contained in the Settings object. There are many settings you can take advantage of to modify its behavior to better meet your testing requirements or testing environment. The complete list of settings is detailed in the table below. A few of the more commonly used settings include: @@ -17,11 +17,11 @@ How the Telerik Testing Framework behaves during a test run is controlled by the There are a few methods of controlling the settings in the Settings object. Which method you use depends on when and how you want them set in your unit test. -##Initializing the Settings Object Without Using a Telerik Test Template## +## Initializing the Settings Object Without Using a Telerik Test Template If you're not using one of Telerik's test templates (VsUnit, NUnit, MbUnit, xUnit) to create your unit test, you'll need to create your own Settings object and then pass that object as a parameter to the constructor of your Manager object. For example: -```C# +````C# // Create my own Settings object and then modify the defaults Settings mySettings = new Settings(); mySettings.DefaultBrowser = BrowserType.FireFox; @@ -29,10 +29,10 @@ mySettings.ClientReadyTimeout = 60000; // Use my Settings object to construct my Manager object Manager myManager = new Manager(mySettings); -``` +```` -```VB +````VB ' Create my own Settings object and then modify the defaults Dim mySettings As New Settings() mySettings.DefaultBrowser = BrowserType.FireFox @@ -40,13 +40,13 @@ mySettings.ClientReadyTimeout = 60000 ' Use my Settings object to construct my Manager object Dim myManager As New Manager(mySettings) -``` +```` -##Initializing the Settings Object When Using a Test Template## +## Initializing the Settings Object When Using a Test Template If you're using one of Telerik's test templates (VsUnit, NUnit, MbUnit, xUnit) to create your unit test, you'll need to create your own Settings object in the TestInitialize section (or Setup section if you're using NUnit) and then pass that object as a parameter to the Initialize method of the base class. For example: -```C# +````C# // This will get a new Settings object. If a configuration // section exists, then settings from that section will be // loaded @@ -57,10 +57,10 @@ settings.UseHttpProxy = true; // Now call Initialize again with your updated settings object Initialize(settings, new TestContextWriteLine(this.TestContext.WriteLine)); -``` +```` -```VB +````VB ' This will get a new Settings object. If a configuration ' section exists, then settings from that section will be ' loaded @@ -71,28 +71,28 @@ settings.UseHttpProxy = True ' Now call Initialize again with your updated settings object Initialize(settings, New TestContextWriteLine(AddressOf Me.TestContext.WriteLine)) -``` +```` **Note:** Be sure to call Initialize only once. Calling Initialize a second time will simply be ignored and you'll be left wondering why your settings did not take effect. -##Changing Settings On-The-Fly## +## Changing Settings On-The-Fly Lastly you can modify most of the settings after your test is already initialized and under-way. Here's how you to do that: -```C# +````C# Manager.Settings.AnnotateExecution = true; Manager.Settings.DefaultBrowser = BrowserType.FireFox; -``` +```` -```VB +````VB Manager.Settings.AnnotateExecution = True Manager.Settings.DefaultBrowser = BrowserType.FireFox -``` +```` **Note:** The following settings can only be set during initialization: AspNetDevServerPort, CreateLogFile, EnableUILessRequestViewing, LocalWebServer, LogLocation, VerboseHttpProxy and WebAppPhysicalPath. -##Using the RecycleBrowser Feature## +## Using the RecycleBrowser Feature The RecycleBrowser feature was added in version 2.0. Using it can significantly speed up running an entire test suite, no more starting and shutting down of the browser for each individual unit test. It works by launching one browser window in the test fixture initialization of your test suite and then constantly reusing that same browser window for all unit tests contained in your test suite. @@ -102,18 +102,18 @@ There are a just a couple of things you need to be aware of to properly use the 2. You must call the base classes ShutDown() method in the test fixture teardown section to properly the browser window at the end of the test suite. If you miss this then browser windows will be left behind after your test suite has finished and exited. -##Restoring Default Settings## +## Restoring Default Settings If it ever becomes necessary you can restore all the settings (except for those that can only be set during initialization) back to their default values. Just use the Reset() method of the Settings object. For example: -```C# +````C# Manager.Settings.Reset(); -``` +```` -```VB +````VB Manager.Settings.Reset() -``` +```` This table lists all of the WebAii framework settings that are available for you to use: diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/visual-capturing.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/visual-capturing.md index 20c1ed2c..b27ffbb0 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/visual-capturing.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/visual-capturing.md @@ -4,48 +4,48 @@ page_title: Visual Capturing description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Visual Capturing# +# Visual Capturing -##Visual Capturing of Browser States and Win32 Windows## +## Visual Capturing of Browser States and Win32 Windows Each Telerik Testing Framework Window object provides functionality to capture the visual bitmaps of the actual window it represents. You can capture the entire window or a targeted portion of that window using the Window.GetBitmap() method. You can use this method for any Win32 window represented by the Window object. Lets take a quick example: -```C# +````C# // Get the current browser window bitmap. System.Drawing.Bitmap browserImage = ActiveBrowser.Window.GetBitmap(); -``` +```` -```VB +````VB Dim browserImage As System.Drawing.Bitmap = ActiveBrowser.Window.GetBitmap() -``` +```` The Log uses the above method to capture the browser window when calling the Log.CaptureBrowser() method. The log also saves the captured bitmap to the 'LogLocation' as provided by your settings and a line is added to the log file that points to that bitmap file. The bitmaps are also added to the Log.CapturedBitmaps[] array. For example: -```C# +````C# // Capture the bitmap of my current ActiveBrowser and save it to the LogLocation // [LogLocation is set using the Settings object that is passed in to the Manager's constructor] Manager.Log.CaptureBrowser(Manager.ActiveBrowser); // Note: If you are automating multiple browser instances, you can simply // call the CaptureBrowser() passing in any instance from the Manager.Browser[] collection. -``` +```` -```VB +````VB Manager.Log.CaptureBrowser(Manager.ActiveBrowser) -``` +```` -##Visual Capturing of Elements## +## Visual Capturing of Elements In addition to capturing the entire window, you can also capture targeted portions of that window. Such functionality can be extremely useful when combined with the functionality provided by each DOM element in Telerik Testing Framework. For example, you can use the Element.GetRectangle() to get the coordinates of a specific element and pass that to the Window.GetBitmap(targetRectangle) to visually capture that element. You can then do bitmap comparisons of that element to a base line or even compare it across browsers. Let's take a simple example to demonstrate this functionality. Assume we have the following simple page: -```HTML +````HTML Visual Capturing sample @@ -65,7 +65,7 @@ Let's take a simple example to demonstrate this functionality. Assume we have th -``` +```` The above page renders as follows: @@ -73,22 +73,22 @@ The above page renders as follows: The below code shows how we can get the visual capture of the second 'div' element: -```C# +````C# // Get the element Element myDiv = ActiveBrowser.Find.ById("mydiv"); // Capture it visually as a bitmap System.Drawing.Bitmap divimage = ActiveBrowser.Window.GetBitmap(myDiv.GetRectangle()); -``` +```` -```VB +````VB ' Get the element Dim myDiv As Element = ActiveBrowser.Find.ById("mydiv") ' Capture it visually as a bitmap Dim divimage As System.Drawing.Bitmap = ActiveBrowser.Window.GetBitmap(myDiv.GetRectangle()) -``` +```` The divimage bitmap captured object is: ![Captured div][2] diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/win32-windows.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/win32-windows.md index 495f9ddd..3549345a 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/win32-windows.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/win32-windows.md @@ -4,7 +4,7 @@ page_title: Win32 Windows description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 --- -#Native Win32 Windows Handling# +# Native Win32 Windows Handling Telerik Testing Framework provides generic support for Win32 Windows handling. Under the 'ArtOfTest.Common.Win32' namespace, Telerik Framework provides two key objects that you can use in your test code to generically manage Win32 Windows and Dialogs. @@ -17,7 +17,7 @@ In addition to the functionality described above, the WindowManager exposes a st Let's take an example to illustrate how these two classes can help provide automation functionality for native Win32 windows: -```C# +````C# Window vsWindow = null; // Get all desktop Windows @@ -39,10 +39,10 @@ foreach (Window win in winManager.Items) // Find the vsWindow recursively. Passing IntPtr.Zero will start from the desktop. Window vsWindowRecur = WindowManager.FindWindowRecursively( IntPtr.Zero, "Microsoft Visual Studio", true, 0); -``` +```` -```VB +````VB Dim vsWindow As Window = Nothing ' Get all desktop Windows @@ -63,5 +63,5 @@ Next ' Find the vsWindow recursively. Passing IntPtr.Zero will start from the desktop. Dim vsWindowRecur As Window = WindowManager.FindWindowRecursively( _ IntPtr.Zero, "Microsoft Visual Studio", True, 0) -``` +```` diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/element-validation.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/element-validation.md index 463bd977..51cce436 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/element-validation.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/element-validation.md @@ -4,23 +4,23 @@ page_title: Element Validation description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 3 --- -#Validating Properties of Silverlight Elements# +# Validating Properties of Silverlight Elements -```C# +````C# Assert.IsTrue(guidanceOverlays.Count == 15); Assert.IsTrue(CompareUtils.NumberCompareRange(foundPatients.Count, 93, 105, NumberRangeCompareType.InRange); Assert.IsTrue(patientSearchItem.Find.ByName("Address").Visibility == Visibility.Collapsed); Assert.IsTrue(searchScroll.VerticalOffset == 2000); Assert.AreEqual(new System.Drawing.Rectangle(1700, 259, 813, 465), admin1.GetScreenRectangle()); -``` +```` -```VB +````VB app.Find.Strategy = FindStrategy.WhenNotVisibleReturnElementProxy Assert.IsTrue(CompareUtils.NumberCompareRange(foundPatients.Count, 93, 105, NumberRangeCompareType.InRange)) Assert.IsTrue(patientSearchItem.Find.ByName("Address").Visibility = Visibility.Collapsed) Assert.AreEqual(2000, searchScroll.VerticalOffset) Assert.AreEqual(Of System.Drawing.Rectangle)(New System.Drawing.Rectangle(1700, 259, 813, 465), admin1.GetScreenRectangle()) -``` +```` diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/framework-element-object.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/framework-element-object.md index 8d4010a2..6f0766ba 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/framework-element-object.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/framework-element-object.md @@ -4,7 +4,7 @@ page_title: FrameworkElement Object description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 3 --- -#FrameworkElement Object# +# FrameworkElement Object The **FrameworkElement** object is analogous to the FrameworkElement in Silverlight and is the base object that all visual elements and controls inherit from in the **ArtOfTest.WebAii.Silverlight.UI** namespace. For customers interested in our extensibility model, the Silverlight Extension does not expose a UIElement and therefore, our **FrameworkElement** can be viewed as the combination of Silverlight's **UIElement + FrameworkElement**. @@ -139,7 +139,7 @@ The **FrameworkElement** and all objects that inherit from it get the following -##The FrameworkElement Methods## +## The FrameworkElement Methods Before describing all of the methods of the FrameworkElement object I'd like to point out the following special features: diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/invoking-actions.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/invoking-actions.md index 51da741c..3c7ce209 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/invoking-actions.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/invoking-actions.md @@ -4,7 +4,7 @@ page_title: Invoking Actions description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 3 --- -#Invoking Actions on Elements# +# Invoking Actions on Elements Once you have found an element you can then interact with it. Many different types of interactions are supported like clicking, mouse hover over, mouse wheel-related actions, keyboard clicks etc. @@ -21,11 +21,11 @@ Once you have found an element you can then interact with it. Many different typ * [Getting and Setting Properties on Elements](#Getting-and-Setting-Properties-on-Elements) - working with non-built in Properties. 5. [Invoking Element Methods](#Invoking-Element-Methods) - invoke any method attached to an element. -##Clicking On an Element## +## Clicking On an Element To invoke a UI action, use the User object that is attached to every UI element. For example, to click on an element such as a button, enter code like this: -```C# +````C# //In this example app can be a Silverlight application or the MainWindow element of a WPF application // Click the ShowGuide button. app.Find.ByName("guideButton").User.Click(); @@ -33,10 +33,10 @@ app.Find.ByName("guideButton").User.Click(); // Right click the ShowGuide button 5 pixels away from the center of the control app.Find.ByName("guideButton").User.Click(MouseClickType.RightClick, new System.Drawing.Point(5, 5), OffsetReference.AbsoluteCenter); -``` +```` -```VB +````VB 'In this example app can be a Silverlight application or the MainWindow of a WPF application ' Click the ShowGuide button. app.Find.ByName("guideButton").User.Click() @@ -45,53 +45,53 @@ app.Find.ByName("guideButton").User.Click() app.Find.ByName("guideButton").User.Click(MouseClickType.RightClick, _ New System.Drawing.Point(5, 5), _ OffsetReference.AbsoluteCenter) -``` +```` -##Sending Text to a Control## +## Sending Text to a Control To send text to the control use one of the following lines of code: -```C# +````C# searchText.User.TypeText("Abe Lincoln", 100); searchText.User.KeyPress(System.Windows.Forms.Keys.L, 100); searchText.User.KeyDown(System.Windows.Forms.Keys.L); searchText.User.KeyUp(System.Windows.Forms.Keys.L); -``` +```` -```VB +````VB searchText.User.TypeText("Abe Lincoln", 100) searchText.User.KeyPress(Windows.Forms.Keys.L, 100) searchText.User.KeyDown(Windows.Forms.Keys.L) searchText.User.KeyUp(Windows.Forms.Keys.L) -``` +```` -##Mouse Actions## +## Mouse Actions To perform one of the various possible mouse actions use one of the following lines of code: -```C# +````C# admin2.Find.ByType("Thumb").User.DragTo(admin3.Find.ByType("Thumb")); admin1.User.HoverOver(); admin1.User.MouseEnter(OffsetReference.LeftCenter); admin1.User.MouseLeave(OffsetReference.RightCenter); admin1.User.TurnMouseWheel(5, MouseWheelTurnDirection.Backward, false); -``` +```` -```VB +````VB admin2.Find.ByType("Thumb").User.DragTo(admin3.Find.ByType("Thumb")) admin1.User.HoverOver() admin1.User.MouseEnter(OffsetReference.LeftCenter) admin1.User.MouseLeave(OffsetReference.RightCenter) admin1.User.TurnMouseWheel(5, MouseWheelTurnDirection.Backward, False) -``` +```` -##Framework Element Properties and Actions## +## Framework Element Properties and Actions All of the Telerik Testing Framework UI controls derive from the FrameworkElement object. Our FrameworkElement object mirrors as closely as possible XAML's FrameworkElement as defined in MSDN here. For customers interested in our extensibility model, the Silverlight Extension does not expose a UIElement and therefore, our FrameworkElement can be viewed as the combination of Silverlight/WPF's UIElement + FrameworkElement. These are just few examples of the many available properties of our FrameworkElement object: @@ -122,11 +122,11 @@ All of the Telerik Testing Framework UI controls derive from the FrameworkElemen
-##UI Element Actions## +## UI Element Actions Each UI element wrapper class contained in Telerik Testing Framework has a set of properties used to access the properties appropriate for that UI element. For example: The Calendar control has a SelectedDate property that you can use to read and/or set the currently selected date of the control. It also has a SelectionMode property you can use to read and/or change the selection mode from a single date to a multi-range date selection. The CheckBox control has an IsChecked property you can use to read/set the checked state of the control and so on. -##Telerik Testing Framework Specific Properties## +## Telerik Testing Framework Specific Properties We have implemented a few special properties in our FrameworkElement object to aid in automation. These include: @@ -163,7 +163,7 @@ We have implemented a few special properties in our FrameworkElement object to a
-##Telerik Testing Framework Specific Methods## +## Telerik Testing Framework Specific Methods The FrameworkElement class implements a number of methods just for purpose of test automation. Some of the most commonly used include: @@ -188,11 +188,11 @@ The FrameworkElement class implements a number of methods just for purpose of te
-##Getting and Setting Properties on Elements## +## Getting and Setting Properties on Elements If the property of an element you want to get or set isn't available as a property in the UI element wrapper object, you can use the GetProperty and SetProperty from the FrameworkElement object to get/set it. This is especially useful if you start designing your own custom Silverlight UI controls or use a third party custom control. Let's suppose I have a UI element that represents an airline ticket. One of the many obvious properties such a control would need to have is flight number. To fetch this property from the control I can use code like this: -```C# +````C# // Fetch the flight number from the ticket FrameworkElement ticket = app.FindName("airlineTicket"); AutomationProperty flightNoProperty = new AutomationProperty("flightNo", typeof(string)); @@ -200,10 +200,10 @@ string flightNo = (string)ticket.GetProperty(flightNoProperty); // Update the flight number on the ticket ticket.SetProperty(flightNoProperty, "HX-1572"); -``` +```` -```VB +````VB ' Fetch the flight number from the ticket Dim ticket As FrameworkElement = app.FindName("airlineTicket") Dim flightNoProperty As New AutomationProperty("flightNo", GetType(String)) @@ -211,24 +211,24 @@ Dim flightNo As String = DirectCast(ticket.GetProperty(flightNoProperty), String ' Update the flight number on the ticket ticket.SetProperty(flightNoProperty, "HX-1572") -``` +```` -##Invoking Element Methods## +## Invoking Element Methods Another advanced feature of the framework is the ability to invoke any method attached to an element. Here's how to invoke the ScrollToVerticalOffset method of a ScrollViewer element. -```C# +````C# ScrollViewer searchScroll = app.FindName("patientSearchScroller").Find.ByType(); searchScroll = app.FindName().Find.ByType<>(); AutomationMethod scrollVert = new AutomationMethod("ScrollToVerticalOffset", null); searchScroll.InvokeMethod(scrollVert, 2000); -``` +```` -```VB +````VB Dim searchScroll As ScrollViewer = app.FindName("patientSearchScroller").Find.ByType(Of ScrollViewer)() Dim scrollVert As New AutomationMethod("ScrollToVerticalOffset", Nothing) searchScroll.InvokeMethod(scrollVert, 2000) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/locating-elements.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/locating-elements.md index a0681483..7d80e00a 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/locating-elements.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/locating-elements.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/write-tests-in-code/silverlight-test-automation/locating-elements.aspx, /user-guide/write-tests-in-code/silverlight-test-automation/locating-elements position: 3 --- -#Locating Elements in Silverlight and WPF applications +# Locating Elements in Silverlight and WPF applications Before you can automate interaction with elements contained in a Silverlight/WPF application, you need to first locate the elements contained within the application. For complex applications, locating elements is probably going to be one of the more time consuming tasks. Testers will need to spend time understanding how to reliably find an element. Silverlight/WPF applications that we studied that rely heavily on control templates and data binding produce quite complex visual trees. Their elements are not easily searchable by **Find.ByName()** given the different Silverlight and WPF name scopes created, and the duplication of names within those templates. @@ -19,16 +19,16 @@ Before you can automate interaction with elements contained in a Silverlight/WPF The simplest method of searching is to use the **Find.ByName(String name)** method or the **Find.ByName\(String name)** method. Both methods take a string parameter that specifies the name of the element to locate in the application. The first method returns a FrameworkElement object while the second method returns an object of type T having the specified name. If an element having the specified name does not exist or is not currently visible, or if the found element cannot be cast into type T, the functions will return null ('Nothing' in VB.NET). For example: -```C# +````C# FrameworkElement zoomBox = app.FindName("zoomBox"); TextBox searchText = app.FindName("searchText"); -``` +```` -```VB +````VB Dim zoomBox As FrameworkElement = app.FindName("zoomBox") Dim searchText As TextBox = app.FindName(Of TextBox)("searchText") -``` +```` You might be asking "How do I know what name to use to find the element I want?" There really are only a few ways to find out: @@ -62,7 +62,7 @@ All of the common methods for finding an element to operate on are:
-##The Find Strategy## +## The Find Strategy The Find object has a 'Strategy' property that controls how the method behaves when searching for an element. To change the strategy simply change the Strategy property on the Find object. The following strategies can be set: @@ -84,21 +84,21 @@ The Find object has a 'Strategy' property that controls how the method behaves w
-##Finding All Elements## +## Finding All Elements Sometimes you may need to fetch a list of the elements contained in the application. Suppose we want a list of all the DataGrids contained in the application. Either of the following lines of code will return this list: -```C# +````C# IList dataGrids1 = app.Find.AllByType("DataGrid"); IList dataGrids2 = app.Find.AllByType(); -``` +```` -```VB +````VB Dim dataGrids1 As IList(Of FrameworkElement) = app.Find.AllByType("DataGrid") Dim dataGrids2 As IList(Of DataGrid) = app.Find.AllByType(Of DataGrid)() -``` +```` All of the Find.AllByxxx functions are: @@ -120,33 +120,33 @@ All of the Find.AllByxxx functions are:
-##Scoped Searches## +## Scoped Searches A more advanced feature is scoped searches. Suppose you need to find the ScrollBar attached to some other element. You would use code like this: -```C# +````C# ScrollViewer searchScroll = app.FindName("patientSearchScroller").Find.ByType(); searchScroll = app.FindName().Find.ByType<>(); -``` +```` -```VB +````VB Dim searchScroll As ScrollViewer = app.FindName("patientSearchScroller").Find.ByType(Of ScrollViewer)() searchScroll ScrollViewer = app.FindName().Find.ByType( ScrollViewer)() -``` +```` The above code first locates the element named "patientSearchScroller" and then within that control finds the element of type "ScrollViewer". The search for "ScrollViewer" is considered a scoped search (aka chained search) because the search is limited to only those elements found underneath the "patientSearchScroller" element of the Visual Tree. The FrameworkElement base class has a Find property which allows scoped searches for all elements of an application. -##Finding Elements by XamlFindExpression## +## Finding Elements by XamlFindExpression Another advanced feature is to find the element using a XamlFindExpression. FindExpressions are the replacement/evolution of FindParams. Telerik Testing Framework uses FindExpressions as the basis for all element searches in the DOM, HWnd, or control trees (including Translator Locators). For example, the above scoped search to retrieve a ScrollViewer can be written using Find.ByExpression as follows: -```C# +````C# ScrollViewer searchScroll = app.Find.ByExpression(new XamlFindExpression("Name=patientSearchScroller", "|", "XamlTag=ScrollViewer")).As(); -``` +```` -```VB +````VB Dim searchScroll2 As ScrollViewer = app.Find.ByExpression(New XamlFindExpression("Name=patientSearchScroller", "|", "XamlTag=ScrollViewer")).[As](Of ScrollViewer)() -``` +```` diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/silverlight-ui-automation.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/silverlight-ui-automation.md index 90f28c33..2b6ec6ac 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/silverlight-ui-automation.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/silverlight-ui-automation.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/write-tests-in-code/silverlight-test-automation/introduction.aspx, /user-guide/write-tests-in-code/silverlight-test-automation/introduction position: 1 --- -#Getting Started with Silverlight UI Automation# +# Getting Started with Silverlight UI Automation When thinking about Silverlight applications and automated testing, there are a couple of different approaches that come to mind: @@ -15,7 +15,7 @@ To get started, let's use a simple application and demo some basic automation sc To automate the application above to set the text, click the button and then verify the hello text in Telerik Testing Framework, we can simply write the following code using the Silverlight Extension (which resides under ArtOfTest.WebAii.Silverlight). -```C# +````C# [TestMethod] public void SLDemo() { @@ -40,10 +40,10 @@ public void SLDemo() // Verify the text Assert.IsTrue(app.Find.ByTextContent("p:Hello").TextContent.Equals("Hello Telerik")); } -``` +```` -```VB +````VB _ Public Sub SampleWebAiiTest() 'Enable Silverlight @@ -67,7 +67,7 @@ Public Sub SampleWebAiiTest() ' Verify the text Assert.IsTrue(app.Find.ByTextContent("p:Hello").TextContent.Equals("Hello Telerik")) End Sub -``` +```` Let's take a closer look at the code above line by line: * Line 8-12 diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/silverlight-ui-namespace.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/silverlight-ui-namespace.md index 3017b17b..08eb817e 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/silverlight-ui-namespace.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/silverlight-ui-namespace.md @@ -4,7 +4,7 @@ page_title: Silverlight UI Namespace description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 3 --- -#The ArtOfTest.WebAii.Silverlight.UI Namespace# +# The ArtOfTest.WebAii.Silverlight.UI Namespace The UI namespace includes all the strongly-typed controls like **Button**, **DataGrid**, **TextBox**, etc. and their properties/methods and enum's, mirroring as much as possible the set of controls available in Silverlight as documented here. The namespace also includes the types used by these properties like **Brush**, **SolidBrush**, etc. diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/synchronization.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/synchronization.md index 402b1ae9..fca5ef74 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/synchronization.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/synchronization.md @@ -4,7 +4,7 @@ page_title: Synchronization description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 3 --- -#Synchronization# +# Synchronization In the world of testing mostly static HTML pages synchronization was easy. Telerik Testing Framework was even able to automatically take care of synchronization for you (most of the time). All you had to do was click on a button and wait for the browser to be ready, which the framework does behind the scenes for most HTML UI actions. @@ -36,62 +36,62 @@ The framework has many features implemented to aid you in synchronizing with you
-##Waiting for an Element to Exist## +## Waiting for an Element to Exist Before you can use the VisualWait.ForExists method to wait for an element to exist you need to create what is called an "Element Proxy". An element proxy is a lightweight FrameworkElement that doesn't actually represent a real element but contains information on how to find the desired element in the Visual Tree. To create an element proxy implement code like this: -```C# +````C# app.Find.Strategy = FindStrategy.WhenNotVisibleReturnElementProxy; FrameworkElement myElementProxy = app.Find.ByName("MyElement"); -``` +```` -```VB +````VB app.Find.Strategy = FindStrategy.WhenNotVisibleReturnElementProxy Dim myElementProxy As FrameworkElement = app.Find.ByName("MyElement") -``` +```` Now that you have an element proxy you use it to wait for the element to exist using this line of code: -```C# +````C# // Wait 15 seconds for the element to exist proxy.Wait.ForExists(15000); -``` +```` -```VB +````VB ' Wait 15 seconds for the element to exist proxy.Wait.ForExists(15000) -``` +```` -##Using ForExistsNot, ForVisible, ForVisibleNot, ForNoMotion## +## Using ForExistsNot, ForVisible, ForVisibleNot, ForNoMotion Using any of these functions is pretty straightforward. Just call the method with appropriate parameters, for example: -```C# +````C# FrameworkElement ticket = app.FindName("airlineTicket"); ticket.Wait.ForExistsNot(); // Wait for the element to no longer exist ticket.Wait.ForVisible(3000); // Wait up to 3 seconds for the element to become visible ticket.Wait.ForVisibleNot(2500); // Wait up to 2.5 seconds for the element to no longer be visible ticket.Wait.ForNoMotion(250, 4500); // Wait up to 4.5 seconds for the element to stop moving. Check every 1/4 second. -``` +```` -```VB +````VB Dim ticket As FrameworkElement = app.FindName("airlineTicket") ticket.Wait.ForExistsNot() ' Wait for the element to no longer exist ticket.Wait.ForVisible(3000) ' Wait up to 3 seconds for the element to become visible ticket.Wait.ForVisibleNot(2500) ' Wait up to 2.5 seconds for the element to no longer be visible ticket.Wait.ForNoMotion(250, 4500) ' Wait up to 4.5 seconds for the element to stop moving. Check every 1/4 second. -``` +```` -##Creating Your Own Wait Condition## +## Creating Your Own Wait Condition If none of the built-in framework wait for methods meet your needs, the framework has the ability to use your own coded conditional predicate instead. This feature relieves you of the burden of having to fully implement your own custom wait loop. You can implement your conditional predicate in a function or a lambda expression. Here is a sample of how to implement and use your own conditional predicate in a function: -```C# +````C# FrameworkElement guideButton = app.FindName("guideButton"); guideButton.Wait.For(myComparator); @@ -99,27 +99,27 @@ public bool myComparator(FrameworkElement elem) { return elem.Visibility == ArtOfTest.WebAii.Silverlight.UI.Visibility.Visible; } -``` +```` -```VB +````VB Dim guideButton As FrameworkElement = app.FindName("guideButton") guideButton.Wait.[For](AddressOf myComparator) Public Function myComparator(ByVal elem As FrameworkElement) As Boolean Return elem.Visibility = ArtOfTest.WebAii.Silverlight.UI.Visibility.Visible End Function -``` +```` To do the same thing in a lambda expression would look like this: -```C# +````C# FrameworkElement guideButton = app.FindName("guideButton"); guideButton.Wait.For(new System.Predicate((fe) => fe.Visibility == ArtOfTest.WebAii.Silverlight.UI.Visibility.Visible)); -``` +```` -```VB +````VB Dim guideButton As FrameworkElement = app.FindName("guideButton") guideButton.Wait.[For](New System.Predicate(Of FrameworkElement)(Function(fe) fe.Visibility = ArtOfTest.WebAii.Silverlight.UI.Visibility.Visible)) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/wpf-ui-automation.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/wpf-ui-automation.md index b2364c16..9689ffc5 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/wpf-ui-automation.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/wpf-ui-automation.md @@ -5,7 +5,7 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an previous_url: /user-guide/write-tests-in-code/silverlight-test-automation/wpf-test-automation.aspx, /user-guide/write-tests-in-code/silverlight-test-automation/wpf-test-automation position: 2 --- -#Getting started with WPF UI Automation# +# Getting started with WPF UI Automation To get started, let's use a simple application and demo some basic automation scenarios like button click and set text. Then we will expand into more advanced topics and scenarios. Let's take the following simple application that contains a button and a text box. When you click the button, it simply changes "Push the button" to "Hello world!" in the text box. The application looks like this: @@ -13,7 +13,7 @@ To get started, let's use a simple application and demo some basic automation sc To automate the application above to set the text, click the button and then verify the hello text in **Telerik Testing Framework**, we can simply write the following code using the **WPF Extension** (which resides under **ArtOfTest.WebAii.Wpf**). The template for this method is based on a VsUnit test. However, the code itself can be reused in other type of Unit tests - it's just the template that will be different. -```C# +````C# [TestMethod] public void wpfDemo() { @@ -36,10 +36,10 @@ public void wpfDemo() Assert.IsTrue(tb.Text.Equals("Hello World!")); } -``` +```` -```VB +````VB _ Public Sub wpfDemo() ' Launch the application instance from its location in file system @@ -61,7 +61,7 @@ public void wpfDemo() Assert.IsTrue(tb.Text.Equals("Hello World!")) End Sub -``` +```` Let's take a closer look at the code above line by line: * Line 5 (*WpfApplication wpfApp = Manager.LaunchNewApplication(@"C:\Projects\WpfApplication2\bin\Debug\WpfApplication2.exe");*) diff --git a/docs-teststudiodev/features/cli-runner.md b/docs-teststudiodev/features/cli-runner.md index 4dd39178..a9fbbc67 100644 --- a/docs-teststudiodev/features/cli-runner.md +++ b/docs-teststudiodev/features/cli-runner.md @@ -66,7 +66,7 @@ Several execution options use file paths as values. When using file paths in the Below is an example of a complete JSON setting file that contains all of Telerik's test/test list run configuration settings. These are corresponding to the available test list settings. -```JSON +````JSON { "Settings": { "__type": "ArtOfTest.WebAii.Core.Settings", @@ -131,7 +131,7 @@ Below is an example of a complete JSON setting file that contains all of Telerik "PropertyBag": null } -``` +```` ## Exit Codes diff --git a/docs-teststudiodev/features/data-driven-testing/add-data-source.md b/docs-teststudiodev/features/data-driven-testing/add-data-source.md index 4d05b79a..766fe053 100644 --- a/docs-teststudiodev/features/data-driven-testing/add-data-source.md +++ b/docs-teststudiodev/features/data-driven-testing/add-data-source.md @@ -46,13 +46,13 @@ Then select data source and data table in the _Bind test to data source_ dialog Here is an example of a basic XML file with two columns: -```xml +````XML -``` +```` *Search* is the equivalent of an Excel Sheet. *UserName* and *Password* translate as the column names. Use **$(UserName)** and **$(Password)** to data bind the applicable properties. diff --git a/docs-teststudiodev/features/logical-steps/while-loop.md b/docs-teststudiodev/features/logical-steps/while-loop.md index 5cc5381b..4f10cea3 100644 --- a/docs-teststudiodev/features/logical-steps/while-loop.md +++ b/docs-teststudiodev/features/logical-steps/while-loop.md @@ -10,7 +10,7 @@ position: 1 Walk--through of Do...While Statement process and execution status overview. -##Build a While loop +## Build a While loop 1.  Create a Web Test and click Record. diff --git a/docs-teststudiodev/features/recorder/verifications/extraction.md b/docs-teststudiodev/features/recorder/verifications/extraction.md index ae7a92bc..86a8ca19 100644 --- a/docs-teststudiodev/features/recorder/verifications/extraction.md +++ b/docs-teststudiodev/features/recorder/verifications/extraction.md @@ -45,7 +45,7 @@ This example is against a advanced verification for an attribute of an element (e.g. Title). diff --git a/docs-teststudiodev/features/recorder/verifications/quick-verification.md b/docs-teststudiodev/features/recorder/verifications/quick-verification.md index 644e23c6..28b9b460 100644 --- a/docs-teststudiodev/features/recorder/verifications/quick-verification.md +++ b/docs-teststudiodev/features/recorder/verifications/quick-verification.md @@ -5,7 +5,7 @@ description: How to create a quick verification in Test Studio Dev slug: recorder/quick-execution position: 1 --- -# Add a Quick Verification# +# Add a Quick Verification The easiest and fastest way to add a _verification_ to your test is through the Quick Steps section in the element's context menu. diff --git a/docs-teststudiodev/features/recorder/verifications/wait.md b/docs-teststudiodev/features/recorder/verifications/wait.md index 2634951f..cc2dd31c 100644 --- a/docs-teststudiodev/features/recorder/verifications/wait.md +++ b/docs-teststudiodev/features/recorder/verifications/wait.md @@ -5,7 +5,7 @@ description: How to create a wait step to pause the Test Studio Dev test executi slug: recorder/wait-step position: 3 --- -# Create a Wait Step# +# Create a Wait Step You can create a _Wait step_ in the same manner as a quick verification step. Instead of passing or failing based on a comparison, this step will wait for the comparison to be true before proceeding. The verification is performed after the server has responded. diff --git a/docs-teststudiodev/features/test-execution/test-list-settings.md b/docs-teststudiodev/features/test-execution/test-list-settings.md index 82821171..1536b7eb 100644 --- a/docs-teststudiodev/features/test-execution/test-list-settings.md +++ b/docs-teststudiodev/features/test-execution/test-list-settings.md @@ -4,13 +4,13 @@ page_title: Test List Settings - Test Studio Dev Documentation description: "Test Studio Test List Settings. Change the browser for a test list run. RunnerResponseTimeout. UnexpectedDialogAction. KillBrowserProcessOnClose KillBrowsersBeforeStart Test list baseURL" position: 4 --- -# Test List Settings # +# Test List Settings The Test lists in Test Studio Dev have various settings to modify and customize the test runs. These are specific for the test lists in Test Studio Dev project. ![Test List Settings][1] -## General Tab ## +## General Tab * ***Annotation*** * **AnnotateExecution** - whether to highlight and annotate the target element that the current action is being executed against. @@ -49,7 +49,7 @@ The Test lists in Test Studio Dev have various settings to modify and customize * **RecordingScale** - sets downscaling of the recorded video in percents. From 10 to 100. * **RecordingSizeLimit** - sets file size limit in megabytes, 0 is unlimited size. If the limit is reached, video recording will be stopped before the test execution ends. -## Web Tab ## +## Web Tab * ***ASP.NET*** * **AspNetDevServerPort** - the ASP.NET development server port to use, if enabled. If set to -1, a random port is generated each time the manager is created. @@ -77,7 +77,7 @@ The Test lists in Test Studio Dev have various settings to modify and customize * **SilverlightApplicationPath** - the web address or local directory from which to load a Silverlight application. * **SilverlightConnectTimeout** - the amount of time to wait for a Silverlight application to load before timing out. -## WPF Tab ## +## WPF Tab * ***Misc*** * **DefaultApplicationPath** - represents the default application path for WPF tests. diff --git a/docs-teststudiodev/features/test-execution/test-lists-in-vs-2017-2019.md b/docs-teststudiodev/features/test-execution/test-lists-in-vs-2017-2019.md index feba54fb..756523d0 100644 --- a/docs-teststudiodev/features/test-execution/test-lists-in-vs-2017-2019.md +++ b/docs-teststudiodev/features/test-execution/test-lists-in-vs-2017-2019.md @@ -4,7 +4,7 @@ page_title: Test Lists in Visual Studio 2017 and Later - Test Studio Dev Documen description: "Test Lists in Visual Studio. How to create a Test Studio Dev test list (suite) in Visual Studio. Static test list dynamic test list" position: 3 --- -# Test Lists in Visual Studio 2017 and 2019 # +# Test Lists in Visual Studio 2017 and 2019 As of **Test Studio 2019 R3 (v.2019.3) release** test lists can be also created and executed in a Visual Studio project. There are two types of Test Lists - **Static** and **Dynamic**. @@ -13,7 +13,7 @@ As of **Test Studio 2019 R3 (v.2019.3) release** test lists can be also created > __Note!__ Test lists in Visual Studio can only execute web or WPF functional tests. -## Create a Test List File in Visual Studio ## +## Create a Test List File in Visual Studio A test list file has the extension ___*.aiilist___ and can be added in a Visual Studio project under a predefined folder named ___TestLists___ - this folder exists in each new project. @@ -35,11 +35,11 @@ Build the solution (press F6) and all test list files will appear in the Test Ex ![Test list files listed in Test Explorer][5] -### Add a Test List in Newly Created Project ### +### Add a Test List in Newly Created Project Ensure you are using Test Studio with minimum version 2019.3 and create a new Test Studio project in Visual Studio 2017 or 2019. In the Solution Explorer you can add test list files under the folder named ___TestLists___. -### Add a Test List in an Existing Project ### +### Add a Test List in an Existing Project Once you upgrade Test Studio to minimum version 2019.3 and open an existing project, you will be prompted with a message, that the project needs to be upgraded as well. Once the upgrade is done and the project is loaded, you will need to include the ___TestLists___ folder in the solution. @@ -55,7 +55,7 @@ Now all files from the project root folder will be listed in the __Solution Expl Again click the ___Show All Files___ button to hide the other files. Save and reopen the solution to apply the changes. Now the ___TestLists___ folder can be used to add test list files in it. -## Add Test Files to Static Test List ## +## Add Test Files to Static Test List Once a test list file is added into the ___TestLists___ folder, double click it to choose the test files to add in it. @@ -63,7 +63,7 @@ Once a test list file is added into the ___TestLists___ folder, double click it Save the test list file to apply the changes and execute the test list from the ___Test Explorer___ in Visual Studio. -## Add Test Files to Dynamic Test List ## +## Add Test Files to Dynamic Test List Once a test list file is added into the ___TestLists___ folder, double click it to craft the rules to filter, upon specific criteria, the test files to add. @@ -77,13 +77,13 @@ The rules can be built upon the specific in-depth look at Dynamic Test Lists. -## Test List Settings in Visual Studio ## +## Test List Settings in Visual Studio To change any of the Test List settings in Visual Studio, use the gear icon in the upper right corner in each test list. ![Test List Settings][11] -## Execute Test List Files in Visual Studio ## +## Execute Test List Files in Visual Studio To execute the designed test lists in Visual Studio, you can use the different Run options in Visual Studio Test Explorer. diff --git a/docs-teststudiodev/features/test-execution/vs-test-console.md b/docs-teststudiodev/features/test-execution/vs-test-console.md index 82ea908a..2ff2f6f4 100644 --- a/docs-teststudiodev/features/test-execution/vs-test-console.md +++ b/docs-teststudiodev/features/test-execution/vs-test-console.md @@ -37,11 +37,11 @@ __2.__  Change the __working folder__ to the one, which __contains the vste __3.__  __Set the following two variables__ - ***TS_PROJECT_PATH*** (the folder, which contains the Test Studio project _Settings.aiis_) and ***TS_DLL_PATH*** (the folder, which contains the built project dll - by default it is in the project root under _\bin\Debug_). -``` +```` set TS_PROJECT_PATH=C:\Projects\TestStudioProject11\TestStudioProject11 set TS_DLL_PATH=C:\Projects\TestStudioProject11\TestStudioProject11\bin\Debug\TestStudioProject11.dll -``` +```` > __Important!__ >
@@ -67,7 +67,7 @@ __2.__  It is recommended to use the argument __/Settings:[fullPathToFile]_ Below are listed sample commands to execute a Test Studio test and test list with the **VSTestConsole.exe in Visual Studio 2019**, after the **TS\_PROJECT\_PATH** and **TS\_DLL\_PATH** variables are set for the current instance of the VS Developer Command Prompt: -``` +```` trigger Parent.tstest run C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow>vstest.console.exe "C:\Projects\TestStudioProject11\TestStudioProject11\Parent.tstest" /TestAdapterPath:"C:\Program Files (x86)\Progress\Test Studio\VS2019" /Settings:"C:\Projects\TestStudioProject11\TestStudioProject11\TestSettings1.testsettings @@ -75,4 +75,4 @@ C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Com trigger sampleList.aiilist run C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow>vstest.console.exe "C:\Projects\TestStudioProject11\TestStudioProject11\TestLists\sampleList.aiilist" /TestAdapterPath:"C:\Program Files (x86)\Progress\Test Studio\VS2019" /Settings:"C:\Projects\TestStudioProject11\TestStudioProject11\TestSettings1.testsettings -``` +```` diff --git a/docs-teststudiodev/features/test-execution/vs-test-explorer.md b/docs-teststudiodev/features/test-execution/vs-test-explorer.md index 8bc52711..afad38df 100644 --- a/docs-teststudiodev/features/test-execution/vs-test-explorer.md +++ b/docs-teststudiodev/features/test-execution/vs-test-explorer.md @@ -4,11 +4,11 @@ page_title: Visual Studio Test Explorer - Test Studio Dev Documentation description: Test Studio Dev tests are recognized by VS Test Explorer and can be executed from its context. Run Test Studio Dev tests via the Test Explorer in Visual Studio position: 1 --- -# Visual Studio Test Explorer # +# Visual Studio Test Explorer The Test Explorer in Visual Studio discovers and runs tests, including Test Studio Dev tests and test lists. -## View Tests and Test Lists in Test Explorer ## +## View Tests and Test Lists in Test Explorer If the __Test Explorer__ pane is not opened in your Visual Studio, you can access this as follows: @@ -22,13 +22,13 @@ The Test Studio Dev tests and test lists are listed in the __Test Explorer__ aut ![Test Explorer][2] -## Group Tests and Test Lists in Test Explorer ## +## Group Tests and Test Lists in Test Explorer You can use Test Explorer to group tests into categories, filter the list of tests, and create, save, and run playlists of tests. There are few different options to group the test files and what makes sense in the context of Test Studio test project is to use __custom grouping starting with either _Namespace_ or _Project_, and use _Class_ and _State_ as sub-filters__ in the desired order. ![Group Tests and Test lists][3] -## Run Tests and Test Lists in Test Explorer ## +## Run Tests and Test Lists in Test Explorer To execute the test files from __Test Explorer__, use the **Run...** buttons and their available options. diff --git a/docs-teststudiodev/images/avatar-ninja.svg b/docs-teststudiodev/images/avatar-ninja.svg new file mode 100644 index 00000000..d98c1b20 --- /dev/null +++ b/docs-teststudiodev/images/avatar-ninja.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs-teststudiodev/images/ninja-no-results.svg b/docs-teststudiodev/images/ninja-no-results.svg new file mode 100644 index 00000000..5d84ade5 --- /dev/null +++ b/docs-teststudiodev/images/ninja-no-results.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-teststudiodev/introduction.md b/docs-teststudiodev/introduction.md index 84a0194b..285fc088 100644 --- a/docs-teststudiodev/introduction.md +++ b/docs-teststudiodev/introduction.md @@ -18,7 +18,7 @@ Releases can be stressful especially with the market’s high demand for continu Test Automation can replace error-prone, repetitive and tedious manual testing tasks, with minimal efforts to maintain sustainable levels of software quality on schedule. {% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} +{% include cta-panel-introduction.html %} {% endif %} ## How Test Studio Dev Edition Helps You in Automation Testing diff --git a/docs-teststudiodev/prerequisites/system-requirements.md b/docs-teststudiodev/prerequisites/system-requirements.md index e8baaa3f..c24ed02d 100644 --- a/docs-teststudiodev/prerequisites/system-requirements.md +++ b/docs-teststudiodev/prerequisites/system-requirements.md @@ -15,7 +15,7 @@ __Test Studio Dev__ is an extension for Visual Studio tool and as such it inheri {% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} +{% include cta-panel-introduction.html %} {% endif %} diff --git a/docs-teststudiodev/quickstart.md b/docs-teststudiodev/quickstart.md index d363e44e..85e2196e 100644 --- a/docs-teststudiodev/quickstart.md +++ b/docs-teststudiodev/quickstart.md @@ -14,7 +14,7 @@ __Test Studio Dev Edition__ is the Test Studio plugin for Visual Studio.With thi Follow the steps lised below to get familiar with the Test Studio Dev Edition capabilities. {% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-introduction.html %} +{% include cta-panel-introduction.html %} {% endif %} - [Create a project](#create-a-test-studio-dev-project) From 26adaf9bd490ab465cb852fbfccaab62392f78c7 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Mon, 13 Jan 2025 17:44:38 +0200 Subject: [PATCH 11/65] Unify code blocks and fix some mistakes Unify code blocks and fix some mistakes --- docs/advanced-topics/build-server/bamboo.md | 16 +++---- .../build-server/cruise-control.net-builds.md | 36 +++++++------- .../build-server/docker-container-testing.md | 12 ++--- .../build-server/execute-test-with-vstest.md | 8 ++-- .../microsoft-hosted-agent-testing.md | 4 +- .../build-server/team-city-builds.md | 12 ++--- .../general/aborted-test-list-results.md | 4 +- .../general/access-oracle-database.md | 16 +++---- .../general/access-performance-data.md | 8 ++-- .../general/access-sql-database.md | 24 +++++----- .../coded-samples/general/add-message-box.md | 32 ++++++------- .../general/attach-data-columns.md | 16 +++---- .../general/browser-specific-actions.md | 8 ++-- .../coded-samples/general/cookies.md | 8 ++-- .../general/custom-scripts-before-after.md | 16 +++---- .../general/data-driven-find-expressions.md | 8 ++-- .../general/execution-extensions.md | 48 +++++++++---------- .../general/extend-basewebaiitest-class.md | 16 +++---- .../general/external-log-file.md | 16 +++---- .../general/extracted-variables-in-code.md | 24 +++++----- .../coded-samples/general/fail-the-test.md | 16 +++---- .../general/framework-in-console-app.md | 8 ++-- .../general/generate-random-number.md | 8 ++-- .../general/generate-random-text.md | 8 ++-- .../coded-samples/general/get-project-path.md | 16 +++---- .../general/grayed-out-controls.md | 8 ++-- .../general/invoke-application.md | 8 ++-- .../general/invoke-web-service-call.md | 8 ++-- .../general/load-testing-extensions.md | 4 +- .../general/log-clipboard-text.md | 8 ++-- .../general/log-error-dialogs.md | 8 ++-- .../general/mouse-wheel-scroll.md | 8 ++-- .../general/non-iterative-data-driving.md | 28 +++++------ .../general/override-app-config.md | 8 ++-- .../coded-samples/general/random-row.md | 8 ++-- .../general/relative-dialog-path.md | 16 +++---- .../coded-samples/general/send-keystrokes.md | 24 +++++----- .../coded-samples/general/skip-iteration.md | 16 +++---- ...ements-from-repository-in-utility-class.md | 16 +++---- .../general/using-the-http-proxy.md | 4 +- .../general/utility-class-in-standalone.md | 16 +++---- .../coded-samples/general/verify-not-empty.md | 8 ++-- .../general/wait-for-element-in-code.md | 28 +++++++---- .../general/write-into-data-source.md | 8 ++-- .../coded-samples/html/add-tag-to-iframe.md | 8 ++-- .../html/ajax-calendar-random-date.md | 8 ++-- .../coded-samples/html/async-upload-dialog.md | 8 ++-- .../html/common-find-expressions.md | 48 +++++++++---------- .../html/conditional-dialog-handling.md | 8 ++-- .../coded-samples/html/dynamic-grid.md | 11 ++--- .../html/extract-an-attribute.md | 16 +++---- .../coded-samples/html/image-comparison.md | 8 ++-- .../html/jquery-events-do-not-fire.md | 8 ++-- .../html/partial-attributes-search-fails.md | 12 ++--- .../html/radwindow-width-height.md | 16 +++---- .../html/table-searching-paging.md | 8 ++-- .../coded-samples/html/table-sum-average.md | 8 ++-- .../html/verify-dialog-text-chrome.md | 16 +++---- .../coded-samples/html/verify-dialog-text.md | 16 +++---- .../html/verify-sort-order-html.md | 8 ++-- .../coded-samples/html/verify-style.md | 8 ++-- .../silverlight/change-find-strategy.md | 8 ++-- .../combobox-automation/verify-all-text.md | 8 ++-- .../verify-specific-text.md | 8 ++-- .../go-through-all-grid-cells.md | 12 ++--- .../scrolling-paging.md | 8 ++-- .../radgridview-automation/scrolling.md | 8 ++-- .../total-rows-count.md | 8 ++-- .../verify-specific-column.md | 8 ++-- .../select-listbox-item-by-text.md | 12 ++--- .../verify-colors-in-silverlight.md | 8 ++-- .../silverlight/verify-sort-order.md | 8 ++-- .../verify-text-in-rich-textbox.md | 24 ++++------ .../wpf/automate-clickonce-app.md | 24 +++++----- .../wpf/connect-to-running-app.md | 8 ++-- .../wpf/go-through-grid-cells.md | 12 +++-- .../wpf/go-through-radtreeview.md | 8 ++-- .../coded-samples/wpf/parameterize-wpf-app.md | 12 ++--- .../data-drive-test/data-binding-in-code.md | 34 +++++-------- .../data-driven-image-verification.md | 8 ++-- .../desktop-testing/demo-desktop-test.md | 12 ++--- .../desktop-app-user-model-id.md | 8 ++-- .../dynamic-targets-custom.md | 20 ++++---- .../designing-load-tests/dynamic-targets.md | 24 +++++----- .../troubleshooting/element-not-found.md | 8 ++-- .../troubleshooting/use-annotated-run.md | 4 +- docs/docs-builder.yml | 2 +- .../azure-results-sync.md | 8 ++-- .../data-driven-testing/add-data-source.md | 4 +- .../data-driven-testing/oracle-db-example.md | 4 +- .../sql-database-example.md | 4 +- .../integration/bug-tracking/custom-plugin.md | 16 +++---- .../bug-tracking/jira-custom-fields.md | 4 +- .../bug-tracking/tfs-custom-fields.md | 4 +- .../features/test-runners/artoftest-runner.md | 38 +++++++-------- .../regular-vs-coded-step.md | 12 ++--- .../register-certificate.md | 4 +- .../scheduling-kb/configure-reverse-proxy.md | 20 ++++---- .../scheduling-kb/locked-machine.md | 8 ++-- .../scheduling-kb/upgrade-to-mongo-4-0.md | 12 ++--- .../fail-test-programmatically.md | 4 +- .../get-set-position-radslider-wpf.md | 16 +++---- .../read-wpf-automation-properties.md | 4 +- .../security-certificates.md | 8 ++-- .../run-api-test-in-web-test.md | 16 +++---- .../run-mobile-test-in-web-test.md | 8 ++-- .../run-web-test-in-other-test.md | 8 ++-- .../set-test-execution-time-limit.md | 8 ++-- ...ommand-failed-error-telerik-test-studio.md | 4 +- ...ooting-error-cs0246-telerik-test-studio.md | 4 +- ...lure-downloading-excel-file-test-studio.md | 4 +- .../disabled-attribute-html.md | 12 ++--- .../verification-kb/verify-html-tool-tips.md | 8 ++-- .../automate-browser-actions.md | 24 +++++----- .../frequently-asked-questions.md | 2 +- docs/testing-framework/getting-started.md | 8 ++-- docs/testing-framework/using-mbunit.md | 24 +++++----- docs/testing-framework/using-nunit.md | 40 ++++++++-------- docs/testing-framework/using-vs-team-test.md | 8 ++-- docs/testing-framework/using-xunit.md | 24 +++++----- .../asp-net-host-server.md | 20 ++++---- .../attribute-extensions.md | 32 ++++++------- .../advanced-topics-wtc/frames-support.md | 12 ++--- .../JavaScript-dialogs.md | 8 ++-- .../confirm-dialogs.md | 8 ++-- .../custom-dialogs.md | 8 ++-- .../custom-handlers.md | 32 ++++++------- .../file-download-dialog.md | 8 ++-- .../file-upload-dialog.md | 12 ++--- .../firefox-dialogs.md | 40 ++++++++-------- .../html-popups.md | 28 +++++------ .../modal-dialogs.md | 8 ++-- .../prompt-dialogs.md | 8 ++-- .../win32-dialogs.md | 8 ++-- .../wpf-dialogs.md | 8 ++-- .../javascript-wtc/check-javascript-errors.md | 7 +-- .../javascript-wtc/invoking-javascript.md | 20 ++++---- .../javascript-wtc/javascript-events.md | 24 +++++----- .../javascript-wtc/javascript-logging.md | 12 ++--- .../javascript-wtc/json-objects.md | 24 +++++----- .../multi-browser-support.md | 8 ++-- .../test-regions-wtc/Introduction.md | 40 ++++++++-------- .../using-the-http-proxy.md | 28 +++++------ .../intermediate-topics-wtc/Annotator.md | 20 ++++---- .../intermediate-topics-wtc/ajax-support.md | 44 ++++++++--------- .../configure-browser-In-code.md | 8 ++-- .../intermediate-topics-wtc/cookie-support.md | 40 ++++++++-------- .../dom-navigation.md | 12 ++--- .../find-expressions.md | 36 +++++++------- .../find-param-as-xml-data.md | 16 +++---- .../find-param-objects.md | 16 +++---- .../finding-page-elements.md | 40 ++++++++-------- .../linq-queries.md | 8 ++-- .../custom-html-control.md | 12 ++--- .../html-control-suite-wtc/drag-and-drop.md | 12 ++--- .../html-control-suite-wtc/element-styles.md | 16 +++---- .../find-and-navigate-elements.md | 16 +++---- .../get-set-properties.md | 8 ++-- .../html-control-suite-wtc/html-actions.md | 8 ++-- .../html-control-suite-wtc/html-asserts.md | 8 ++-- .../html-control-suite-wtc/html-wait-class.md | 32 ++++++------- .../html-control-suite-wtc/introduction.md | 8 ++-- .../html-control-suite-wtc/transfer-files.md | 8 ++-- .../app-config-file.md | 18 +++---- .../settings-class.md | 30 ++++++------ .../visual-capturing.md | 28 +++++------ .../intermediate-topics-wtc/win32-windows.md | 8 ++-- .../element-validation.md | 8 ++-- .../invoking-actions.md | 40 ++++++++-------- .../locating-elements.md | 32 ++++++------- .../silverlight-ui-automation.md | 8 ++-- .../synchronization.md | 40 ++++++++-------- .../wpf-ui-automation.md | 8 ++-- .../rendering-differences.md | 8 ++-- .../recording-problems-tg/refresh-dom.md | 8 ++-- .../ts-fails-to-start-msedge.md | 4 +- .../test-from-tfs-dont-run.md | 8 ++-- .../artoftestconnector-error.md | 4 +- .../invoke-blind-keyboard-typing.md | 16 +++---- .../missing-api-assembly-files.md | 4 +- .../pages-not-defined.md | 4 +- ...tests-not-executed-in-chrome-or-firefox.md | 4 +- .../unable-to-locate-element.md | 8 ++-- .../unable-to-show-data.md | 4 +- .../wait-for-condition-timed-out.md | 4 +- .../why-find-by-content.md | 24 +++++----- .../windows-security-dialog.md | 8 ++-- .../coded-steps-disappear-vs.md | 4 +- 188 files changed, 1296 insertions(+), 1318 deletions(-) diff --git a/docs/advanced-topics/build-server/bamboo.md b/docs/advanced-topics/build-server/bamboo.md index 66f9c19a..a072504d 100644 --- a/docs/advanced-topics/build-server/bamboo.md +++ b/docs/advanced-topics/build-server/bamboo.md @@ -33,15 +33,15 @@ First step is to add new executable, it's path should be path to the Test Studio To configure the task add following arguments: -``` +```` list="PATH_TO_PROJECT\TEST_LIST_NAME.aiilist" out=${bamboo.build.working.directory} junitstep -``` +```` **OR** -``` +```` test="PATH_TO_PROJECT\TEST_NAME.tstest" out=$bamboo.build.working.directory} junitstep -``` +```` ![Command task][5] @@ -57,7 +57,7 @@ test="PATH_TO_PROJECT\TEST_NAME.tstest" out=$bamboo.build.working.directory} jun Source of the script: -``` +```` Write-Output $env:WORKDIR; Get-ChildItem $env:WORKDIR -Filter *.xml | @@ -67,14 +67,14 @@ Foreach-Object { $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False) [System.IO.File]::WriteAllLines($_.FullName, $MyFile, $Utf8NoBomEncoding) } -``` +```` Save the script in desired location. Add following Environment variable to the task: -``` +```` WORKDIR=${bamboo.build.working.directory} -``` +```` ![Script config][7] diff --git a/docs/advanced-topics/build-server/cruise-control.net-builds.md b/docs/advanced-topics/build-server/cruise-control.net-builds.md index 575d2597..9d58a4e5 100644 --- a/docs/advanced-topics/build-server/cruise-control.net-builds.md +++ b/docs/advanced-topics/build-server/cruise-control.net-builds.md @@ -35,7 +35,7 @@ With CruiseControl.NET you have two different build configurations you can use. To build using the Visual Studio task, you simply add the task configuration to your project file. The following example assumes you're using Visual Studio 2010. Refer to the CruiseControl.NET documentation for other settings to make it work with other versions of Visual Studio. It should look something like this: -```XML +````XML @@ -57,13 +57,13 @@ To build using the MSBuild task. It should look something like this: -```XML +````XML @@ -86,7 +86,7 @@ This method is pretty much the same but instead of a Visual Studio task we repla -``` +```` ### 4.2 Adding a Run Tests Task @@ -94,7 +94,7 @@ The program that runs Visual Studio unit tests is @@ -121,11 +121,11 @@ An MSTest task is an "Exec" task to CruiseControl.NET. It should look something -``` +```` If you want to run a suite of tests, add them to a Visual Studio test list and use a buildArgs like this: -```XML +````XML @@ -152,13 +152,13 @@ If you want to run a suite of tests, add them to a Visual Studio test list and u -``` +```` ### 4.3 Publishing Test Results You need to merge the generated .trx file from MSTest into the build results. Add something like this to the 'publishers' section of your project configuration: -```XML +````XML @@ -168,14 +168,14 @@ You need to merge the generated .trx file from MSTest into the build results. Ad -``` +```` ### 4.4 Publishing Test Results One caveat to using MSTest is that you must delete the .trx file it creates before doing another test run. Otherwise MSTest will fail indicating it was unable to create the output file. This is done via another "Exec" task in ccnet.config. Place this section just in before your Exec task that runs MSTest. It probably would be best to place it at the beginning of the build because if a build fails (which causes CruiseControl.NET to skip any remaining tasks) to compile, CruiseControl.NET will still pick up and merge any left over .trx file into the build log: -```XML +````XML @@ -184,7 +184,7 @@ This is done via another "Exec" task in ccnet.config. Place this section just in /c if exist testResults.trx del testResults.trx /f 30 -``` +```` ### 4.5 Publishing Test Results @@ -208,7 +208,7 @@ This section is a list of .xsl files that will be used after every build to gene If you are running Test Studio tests you will want to install and use the TestStudioMSTest2010Report.xsl file. Download the file from the previous link and place it in the folder C:\Program Files (x86)\CruiseControl.NET\webdashboard\xsl. Next we need to add TestStudioMSTest2010Report.xsl so that it looks something like this: -```XML +````XML @@ -228,11 +228,11 @@ If you are running Test Studio tests you will want to install and use the TestSt -``` +```` If instead you are running Telerik Testing Framework coded unit tests we need to add MsTestSummary2010.xsl and MsTestReport2010 so that it looks something like this: -```XML +````XML @@ -253,7 +253,7 @@ If instead you are running Telerik Testing Framework coded unit tests we need to -``` +```` ### 5.2 Modifying the xslReportBuildPlugin Section @@ -263,7 +263,7 @@ This section is used to generate a menu of the different detail reports you can Note the last entry in the list. To obtain this entry we need to modify this section in the dashboard.config file to look something like this: -```XML +````XML @@ -278,7 +278,7 @@ Note the last entry in the list. To obtain this entry we need to modify this sec -``` +```` After making the above changes, the next build will successfully display test results. diff --git a/docs/advanced-topics/build-server/docker-container-testing.md b/docs/advanced-topics/build-server/docker-container-testing.md index 3ef88133..32af46f4 100644 --- a/docs/advanced-topics/build-server/docker-container-testing.md +++ b/docs/advanced-topics/build-server/docker-container-testing.md @@ -41,10 +41,10 @@ Below are listed the steps to setup a Docker container for testing. 2.  Pull the official Microsoft Windows Docker image from the Docker Hub. Use the command that is provided in the Docker Hub and make sure to specify the exact build to be pulled. -``` +```` //For Windows build 1909, use the following command docker pull mcr.microsoft.com/windows:1909 -``` +```` > __Note__ >
@@ -68,9 +68,9 @@ Then, expand the _Optional Settings_ and specify **Host Path** and **Container P __Install both Test Studio Run-Time and Chrome browser enterprise edition in passive mode__, because there is no UI in the container and active installation can not complete. You can use the following command, but make sure that each installer is finished without errors before you proceed with the next one. -``` +```` msiexec.exe /i msiInstallerFileName.msi /passive /le c:\tools\errorLogForThisInstaller.txt -``` +```` > __Note__ >
@@ -88,10 +88,10 @@ After completing the above steps in this article, you need to copy the project, Open the container's Command Line Interface (CLI) and use the ArtOfTest.Runner.exe to start the execution. This test runner provide multiple options for execution and output, which are all explained in the linked documentation. The below example command triggers a test list execution. -``` +```` //navigate to the Test Studio installation bin sub-folder ArtOfTest.Runner.exe /list="full path to the test list file with extension .aiilist" -``` +```` You can apply specific settings for Docker container test list execution, like the browser type. Since the test list execution runs only in Headless mode, you can choose different settings file to be used from the ArtOfTest.Runner.exe. Using such file allows you to not change the Test List Settings on your original test list and still execute it in Headless mode in the container. diff --git a/docs/advanced-topics/build-server/execute-test-with-vstest.md b/docs/advanced-topics/build-server/execute-test-with-vstest.md index 9c8da8ba..7836eaf5 100644 --- a/docs/advanced-topics/build-server/execute-test-with-vstest.md +++ b/docs/advanced-topics/build-server/execute-test-with-vstest.md @@ -25,11 +25,11 @@ __3.__  Change the __working folder__ to this, which __contains the vstest. __4.__  __Set these two variables__ - ***TS_PROJECT_PATH*** (the folder, which contains the Test Studio project _Settings.aiis_) and ***TS_DLL_PATH*** (the folder, which contains the built project dll - by default it is in the project root under _\bin\Debug_). -``` +```` set TS_PROJECT_PATH=C:\Projects\TestStudioProject11\TestStudioProject11 set TS_DLL_PATH=C:\Projects\TestStudioProject11\TestStudioProject11\bin\Debug\TestStudioProject11.dll -``` +```` > __Important__ >
@@ -49,7 +49,7 @@ __6.__  __Visual Studio 2019 requires the argument /Settings:[_file name_]_ Below are listed sample commands to execute a Test Studio test and test list with the **VSTestConsole.exe in Visual Studio 2019**, after the **TS\_PROJECT\_PATH** and **TS\_DLL\_PATH** variables are set for the current instance of the VS Developer Command Prompt: -``` +```` trigger Parent.tstest run C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow>vstest.console.exe "C:\Projects\TestStudioProject11\TestStudioProject11\Parent.tstest" /TestAdapterPath:"C:\Program Files (x86)\Progress\Test Studio\VS2019" /Settings:"C:\Projects\TestStudioProject11\TestStudioProject11\TestSettings1.testsettings @@ -57,4 +57,4 @@ C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Com trigger sampleList.aiilist run C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow>vstest.console.exe "C:\Projects\TestStudioProject11\TestStudioProject11\TestLists\sampleList.aiilist" /TestAdapterPath:"C:\Program Files (x86)\Progress\Test Studio\VS2019" /Settings:"C:\Projects\TestStudioProject11\TestStudioProject11\TestSettings1.testsettings -``` +```` diff --git a/docs/advanced-topics/build-server/microsoft-hosted-agent-testing.md b/docs/advanced-topics/build-server/microsoft-hosted-agent-testing.md index 9ad3db2d..463a692d 100644 --- a/docs/advanced-topics/build-server/microsoft-hosted-agent-testing.md +++ b/docs/advanced-topics/build-server/microsoft-hosted-agent-testing.md @@ -93,9 +93,9 @@ To trigger the installation of the downloaded package, add the next task and cho The installation can be triggered with a msiexec command in passive mode due to the lack of UI session. Find below an example command to use in the task. -``` +```` msiexec.exe /i c:\TestStudio_Runtime_2021_3_1103_1.msi /passive /le c:\errorlog.txt -``` +```` ### Execute the Tests on Microsoft-hosted Agent diff --git a/docs/advanced-topics/build-server/team-city-builds.md b/docs/advanced-topics/build-server/team-city-builds.md index 1bde8fd4..887f8986 100644 --- a/docs/advanced-topics/build-server/team-city-builds.md +++ b/docs/advanced-topics/build-server/team-city-builds.md @@ -49,15 +49,15 @@ For "Build script content" enter: Path to Test Studio runner -``` +```` list="PATH_TO_PROJECT\TEST_LIST_NAME.aiilist" out="PATH_TO_RESULT_DIR" junitstep -``` +```` **OR** -``` +```` test="PATH_TO_PROJECT\TEST_NAME.tstest" out="PATH_TO_RESULT_DIR" junitstep -``` +```` 4.  Add new Build Feature @@ -70,9 +70,9 @@ For report type select "Ant JUnit" and save build feature. For "Monitoring rules" specify output directory from previous step and ad all xml files. Example: -``` +```` C:\Users\deyan\Desktop\TestStudioResults\*.xml -``` +```` [1]: /img/advanced-topics/build-server/team-city-builds/New_project.png [2]: /img/advanced-topics/build-server/team-city-builds/New_Build_config.png diff --git a/docs/advanced-topics/coded-samples/general/aborted-test-list-results.md b/docs/advanced-topics/coded-samples/general/aborted-test-list-results.md index 178643b3..47b0b8a5 100644 --- a/docs/advanced-topics/coded-samples/general/aborted-test-list-results.md +++ b/docs/advanced-topics/coded-samples/general/aborted-test-list-results.md @@ -14,12 +14,12 @@ Test Studio has the ability to store run results on each executed step and this -```XML +````XML -``` +```` ## Command line runner arguments diff --git a/docs/advanced-topics/coded-samples/general/access-oracle-database.md b/docs/advanced-topics/coded-samples/general/access-oracle-database.md index 50a81556..b68eff89 100644 --- a/docs/advanced-topics/coded-samples/general/access-oracle-database.md +++ b/docs/advanced-topics/coded-samples/general/access-oracle-database.md @@ -24,22 +24,22 @@ For default installation the dll file could be found in the Oracle data base ins Include the following *usings* in the code. -```C# +````C# using Oracle.DataAccess.Client; using Oracle.DataAccess.Types; -``` -```VB +```` +````VB import Oracle.DataAccess.Client import Oracle.DataAccess.Types -``` +```` ## Data Connection String An Oracle connection string is required to identify the database to connect to. Here is an example: -``` +```` Data Source=XE;User Id=SYSTEM;Password=pass; -``` +```` Different connection strings could be used. See here for more examples. @@ -47,7 +47,7 @@ Different connection strings could be used. See this example: -```C# +````C# string oradb = "Data Source=XE;User Id=SYSTEM;Password=pass;"; OracleConnection conn = new OracleConnection(oradb); @@ -71,7 +71,7 @@ dr.Read(); Log.WriteLine(dr.GetString(0).ToString()); conn.Dispose(); -``` +```` >This code won't run without modification. The database, table, and column in the original code won't exist in your environment unless you create the same database. diff --git a/docs/advanced-topics/coded-samples/general/access-performance-data.md b/docs/advanced-topics/coded-samples/general/access-performance-data.md index 230b2d4b..eac5264f 100644 --- a/docs/advanced-topics/coded-samples/general/access-performance-data.md +++ b/docs/advanced-topics/coded-samples/general/access-performance-data.md @@ -21,7 +21,7 @@ In order to access the results of a performance test in code, it will be necessa The following extension class will store the full path to each performance test result and its ID in a Dictionary data structure. This structure will be updated after each test completion in the *OnAfterTestCompleted()* method. Then at the end of the test list execution in *OnAfterTestListCompleted()* method - all files will be opened one by one to collect necessary data and save it in *C:\temp\lastPerformanceResults.txt* file. -```C# +````C# namespace ExecutionExtensionSample { using System.Collections.Generic; @@ -89,8 +89,8 @@ namespace ExecutionExtensionSample } } } -``` -```VB +```` +````VB Imports System.Collections.Generic Imports System.Data Imports ArtOfTest.WebAii.Design.Execution @@ -138,4 +138,4 @@ Namespace ExecutionExtensionSample End Sub End Class End Namespace -``` +```` diff --git a/docs/advanced-topics/coded-samples/general/access-sql-database.md b/docs/advanced-topics/coded-samples/general/access-sql-database.md index c72b92f3..5c890cb4 100644 --- a/docs/advanced-topics/coded-samples/general/access-sql-database.md +++ b/docs/advanced-topics/coded-samples/general/access-sql-database.md @@ -19,12 +19,12 @@ If a reference to System.Data 2.0 already exists, remove it add it again from th Ensure you add the *using* or *Imports* statement to the top of the code-behind file. Click the View Class button, scroll to the top of the code, and add this line: -```C# +````C# using System.Data.SqlClient; -``` -```VB +```` +````VB Imports System.Data.SqlClient; -``` +```` ## Sample Code @@ -34,7 +34,7 @@ Here we've create a SQL database named **myFirstDB**. This database contains a t ### Read from SQL Database -```C# +````C# //Define a new SQL connection with a connection string. //The connection string will be different depending on your environment and the name of the database, table, etc. //See http://www.connectionstrings.com for connection string examples. @@ -57,8 +57,8 @@ while (thisReader.Read()) thisReader.Close(); thisConnection.Close(); -``` -```VB +```` +````VB 'Define a new SQL connection with a connection string. 'The connection string will be different depending on your environment and the name of the database, table, etc. 'See http://www.connectionstrings.com for connection string examples. @@ -80,11 +80,11 @@ End While thisReader.Close() thisConnection.Close() -``` +```` ### Write into SQL Database -```C# +````C# //Define a new SQL connection with a connection string. //The connection string will be different depending on your environment and the name of the database, table, etc. //See http://www.connectionstrings.com for connection string examples. @@ -98,8 +98,8 @@ Log.WriteLine(thisConnection.Database); SqlCommand thisCommand = thisConnection.CreateCommand(); thisCommand.CommandText = "INSERT INTO Table_1 (City) VALUES ('Richmond')"; thisCommand.ExecuteNonQuery(); -``` -```VB +```` +````VB 'Define a new SQL connection with a connection string. 'The connection string will be different depending on your environment and the name of the database, table, etc. 'See http://www.connectionstrings.com for connection string examples. @@ -113,7 +113,7 @@ Log.WriteLine(thisConnection.Database) Dim thisCommand As SqlCommand = thisConnection.CreateCommand() thisCommand.CommandText = "INSERT INTO Table_1 (City) VALUES ('Richmond')" thisCommand.ExecuteNonQuery() -``` +```` **Note**: This code won't run without modification. The database, table, and column in the original code won't exist in your environment. diff --git a/docs/advanced-topics/coded-samples/general/add-message-box.md b/docs/advanced-topics/coded-samples/general/add-message-box.md index de8c196c..d1da4424 100644 --- a/docs/advanced-topics/coded-samples/general/add-message-box.md +++ b/docs/advanced-topics/coded-samples/general/add-message-box.md @@ -14,30 +14,30 @@ The .NET Framework includes the MessageBox class which offers the intended funct This implementation is very similar to a pop-up this is fired when Test Studio executes a Manual Step. The only important difference is that the MessageBox can be made to display custom text content. This might come in handy in certain situations - you can use it to perform improvised debugging. -```C# +````C# NativeWindow window = new NativeWindow(); window.AssignHandle(ActiveBrowser.Window.Handle); MessageBox.Show(window, "This is a message!"); -``` -```VB +```` +````VB Dim window As New NativeWindow() window.AssignHandle(ActiveBrowser.Window.Handle) MessageBox.Show(window, "This is a message!") -``` +```` Here's how to do it in a **WPF Test**: -```C# +````C# NativeWindow window = new NativeWindow(); window.AssignHandle(ActiveApplication.MainWindow.Window.Handle); MessageBox.Show(window, "This is a message!"); -``` -```VB +```` +````VB Dim window As New NativeWindow() window.AssignHandle(ActiveApplication.MainWindow.Window.Handle) MessageBox.Show(window, "This is a message!") -``` +```` This will pause the test and the alert box will be displayed: @@ -48,24 +48,24 @@ Test Execution will not continue until you click the button. Ensure you add the *using* or *Imports* statement to the top of the code-behind file. Click the **View Class** button, scroll to the top of the code, and add this line: -```C# +````C# using System.Windows.Forms; -``` -```VB +```` +````VB Imports Windows.Forms; -``` +```` You can use the alert box to display a variety of information. Here's how to display the value of the data source for the current iteration (when using Data Driven Testing): -```C# +````C# NativeWindow window = new NativeWindow(); window.AssignHandle(ActiveBrowser.Window.Handle); MessageBox.Show(window, Data["excelColumnName"].ToString()); -``` -```VB +```` +````VB Dim window As New NativeWindow() window.AssignHandle(ActiveBrowser.Window.Handle) MessageBox.Show(window, Data("excelColumnName").ToString()) -``` +```` [1]: /img/advanced-topics/coded-samples/general/add-message-box/fig1.png diff --git a/docs/advanced-topics/coded-samples/general/attach-data-columns.md b/docs/advanced-topics/coded-samples/general/attach-data-columns.md index a4eecb2e..772c6cb8 100644 --- a/docs/advanced-topics/coded-samples/general/attach-data-columns.md +++ b/docs/advanced-topics/coded-samples/general/attach-data-columns.md @@ -15,34 +15,34 @@ Use the Data object in conjunction with the column name or index. In this example on Bing.com, I added the *SbFormQText* element to the Elements Explorer via the Add To Project Elements feature from the Elements Menu. Now I can reference that element in code and data drive its input text: -```C# +````C# //Reference a column by name Pages.Bing.SbFormQText.Text = Data["Col1"].ToString(); //Reference a column by index (zero based) Pages.Bing.SbFormQText.Text = Data[0].ToString(); -``` -```VB +```` +````VB 'Reference a column by name Pages.Bing.SbFormQText.Text = Data("Col1").ToString() 'Reference a column by index (zero based) Pages.Bing.SbFormQText.Text = Data(0).ToString() -``` +```` This method can also be applied to a **Verification**: -```C# +````C# //Reference a column by name Assert.IsTrue(ActiveBrowser.ContainsText(Data["Col1"].ToString())); //Reference a column by index (zero based) Assert.IsTrue(ActiveBrowser.ContainsText(Data[0].ToString())); -``` -```VB +```` +````VB 'Reference a column by name Assert.IsTrue(ActiveBrowser.ContainsText(Data("Col1").ToString())) 'Reference a column by index (zero based) Assert.IsTrue(ActiveBrowser.ContainsText(Data(0).ToString())) -``` +```` diff --git a/docs/advanced-topics/coded-samples/general/browser-specific-actions.md b/docs/advanced-topics/coded-samples/general/browser-specific-actions.md index 1587e504..ab1e6ddc 100644 --- a/docs/advanced-topics/coded-samples/general/browser-specific-actions.md +++ b/docs/advanced-topics/coded-samples/general/browser-specific-actions.md @@ -20,7 +20,7 @@ Keep in mind that if you use this feature, the step will run against the specifi You can put together a much more complex use-case by using a coded solution. Here's the code from the test sample. It demonstrates how to use a different search word based on browser type: -```C# +````C# ActiveBrowser.NavigateTo("http://www.telerik.com/"); //Navigate to the page @@ -46,8 +46,8 @@ Log.WriteLine("Test is executing in the following browser:" + ActiveBrowser.Brow Find.ById("~btnSearchSubmit").Click(); //Click submit button System.Threading.Thread.Sleep(2000); //Wait a bit so we can see the result -``` -```VB +```` +````VB ActiveBrowser.NavigateTo("http://www.telerik.com/") 'Navigate to the page @@ -75,7 +75,7 @@ Find.ById(Of HtmlInputSubmit)("~btnSearchSubmit").Click() 'Click submit button System.Threading.Thread.Sleep(2000) 'Wait a bit so we can see the result -``` +```` The coded solution is also applicable to the Telerik Testing Framework. diff --git a/docs/advanced-topics/coded-samples/general/cookies.md b/docs/advanced-topics/coded-samples/general/cookies.md index 8ab23d76..2c345980 100644 --- a/docs/advanced-topics/coded-samples/general/cookies.md +++ b/docs/advanced-topics/coded-samples/general/cookies.md @@ -8,7 +8,7 @@ position: 1 Here is a working code sample: -```C# +````C# Manager.LaunchNewBrowser(); const string url = "http://www.google.com"; @@ -26,8 +26,8 @@ foreach (Cookie cookie in ActiveBrowser.Cookies.GetCookies("http://www.google.co { Log.WriteLine(cookie.Name); } -``` -```VB +```` +````VB Manager.LaunchNewBrowser() Const url As String = "http://www.google.com" @@ -44,4 +44,4 @@ Log.WriteLine(count.ToString()) For Each cookie As Cookie In ActiveBrowser.Cookies.GetCookies("http://www.google.com") Log.WriteLine(cookie.Name) Next -``` +```` diff --git a/docs/advanced-topics/coded-samples/general/custom-scripts-before-after.md b/docs/advanced-topics/coded-samples/general/custom-scripts-before-after.md index 5b643f2c..c7341bf1 100644 --- a/docs/advanced-topics/coded-samples/general/custom-scripts-before-after.md +++ b/docs/advanced-topics/coded-samples/general/custom-scripts-before-after.md @@ -45,35 +45,35 @@ First, create a coded step in order to generate a code-behind file. Then open th The TestResult object lets you access the test results from the run that just finished (i.e. the one invoking the **OnAfterTestCompleted** method): -```C# +````C# public override void OnAfterTestCompleted(TestResult result) { string overall = Convert.ToString(result.Result); Log.WriteLine(overall); result.ExportToResultFile(@"C:\", result.TestName); } -``` -```VB +```` +````VB Public Overrides Sub OnAfterTestCompleted(result As TestResult) Dim overall As String = Convert.ToString(result.Result) Log.WriteLine(overall) result.ExportToResultFile("C:\", result.TestName) End Sub -``` +```` The **OnBeforeTestStarted** method allows you to perform actions required for the initialization of your test (starting scripts, etc.): -```C# +````C# public override void OnBeforeTestStarted(BeforeTestStartedArgs args) { this.ExecuteTest("Folder1\\WebTest2.tstest"); } -``` -```VB +```` +````VB Public Overrides Sub OnBeforeTestStarted(BeforeTestStartedArgs args) Me.ExecuteTest("Folder1\WebTest2.tstest") End Sub -``` +```` You can use logic from assemblies in these methods. First add references to the assemblies. For Test Studio Standalone version, see the article on how to Add an Assembly Reference. diff --git a/docs/advanced-topics/coded-samples/general/data-driven-find-expressions.md b/docs/advanced-topics/coded-samples/general/data-driven-find-expressions.md index b7890e5b..df3f4b7c 100644 --- a/docs/advanced-topics/coded-samples/general/data-driven-find-expressions.md +++ b/docs/advanced-topics/coded-samples/general/data-driven-find-expressions.md @@ -28,16 +28,16 @@ The example below is against this Finding Page Elements article. Here's the code for our Script Step: -```C# +````C# HtmlListItem listItem = Pages.TelerikExtensionsForASP.UnorderedList.Find.ByContent(Data["Col1"].ToString()); Assert.IsNotNull(listItem); listItem.Click(); -``` -```VB +```` +````VB Dim listItem As HtmlListItem = Pages.TelerikExtensionsForASP.UnorderedList.Find.ByContent(Of HtmlListItem)(Data("Col1").ToString()) Assert.IsNotNull(listItem) listItem.Click() -``` +```` 7.  Test Studio uses the data table to find the element in the list, performs an Assert on it, and then clicks it. diff --git a/docs/advanced-topics/coded-samples/general/execution-extensions.md b/docs/advanced-topics/coded-samples/general/execution-extensions.md index 88607142..4761cc95 100644 --- a/docs/advanced-topics/coded-samples/general/execution-extensions.md +++ b/docs/advanced-topics/coded-samples/general/execution-extensions.md @@ -30,38 +30,38 @@ Also add the following **.NET** references (these are required for the demonstra 3.  Add the following using statements to the class file: -```C# +````C# using System.IO; using System.Data; using System.Data.OleDb; using System.Windows.Forms; using ArtOfTest.WebAii.Design.Execution; -``` -```VB +```` +````VB Imports System.IO Imports System.Data Imports System.Data.OleDb Imports System.Windows.Forms Imports ArtOfTest.WebAii.Design.Execution -``` +```` 4.  The *ArtOfTest.WebAii.Design.Execution* namespace contains an IExecutionExtension that the class library needs to inherit and implement: -```C# +````C# namespace ClassLibrary1 { public class Class1 : IExecutionExtension { } } -``` -```VB +```` +````VB Namespace ClassLibrary1 Public Class Class1 Implements IExecutionExtension End Class End Namespace -``` +```` 5.  Right click on **IExecutionExtension** and select **Implement Interface > Implement Interface**. This displays all the methods and notifications exposed by Test Studio. Here are definitions for each **IExecutionExtension** member: @@ -70,7 +70,7 @@ End Namespace - The rest of the functions, which you're not using, should be left empty (remove *throw new NotImplementedException*). -```C# +````C# namespace ClassLibrary1 { public class Class1 : IExecutionExtension @@ -126,8 +126,8 @@ namespace ClassLibrary1 #endregion } } -``` -```VB +```` +````VB Namespace ClassLibrary1 Public Class Class1 Implements IExecutionExtension @@ -176,7 +176,7 @@ Namespace ClassLibrary1 #End Region End Class End Namespace -``` +```` A few notes about the code above: @@ -191,7 +191,7 @@ A few notes about the code above: 6.  For the first example, we'll add code to the **OnAfterTestListCompleted** method to write the result of a test list as a basic string to a text file: -```C# +````C# public void OnAfterTestListCompleted(RunResult result) { string msg = string.Format("TestList '{0}' completed on '{1}'. ({2}/{3}) Passed", result.Name, result.EndTime, result.PassedCount, result.TestResults.Count); @@ -199,15 +199,15 @@ public void OnAfterTestListCompleted(RunResult result) file.WriteLine(msg); file.Close(); } -``` -```VB +```` +````VB Public Sub OnAfterTestListCompleted(result As RunResult) Dim msg As String = String.Format("TestList '{0}' completed on '{1}'. ({2}/{3}) Passed", result.Name, result.EndTime, result.PassedCount, result.TestResults.Count) Dim file As New StreamWriter("c:\test-list-results.txt") file.WriteLine(msg) file.Close() End Sub -``` +```` 7.  Compile the class library. @@ -223,7 +223,7 @@ Let's see another example using the **OnInitializeDataSource** method. This assu 1.  Add the following code to that method: -```C# +````C# public System.Data.DataTable OnInitializeDataSource(ExecutionContext executionContext) { System.Data.DataTable table = null; @@ -252,8 +252,8 @@ public System.Data.DataTable OnInitializeDataSource(ExecutionContext executionCo thread.Join(); return table; } -``` -```VB +```` +````VB Public Function OnInitializeDataSource(executionContext As ExecutionContext) As System.Data.DataTable Dim table As System.Data.DataTable = Nothing Dim thread = New System.Threading.Thread(Function(obj) @@ -277,11 +277,11 @@ End Function) thread.Join() Return table End Function -``` +```` 2.  Now add the following *ImportExcelXLS* method within the same public class: -```C# +````C# private static DataSet ImportExcelXLS(string FileName, bool hasHeaders) { string HDR = hasHeaders ? "Yes" : "No"; @@ -318,8 +318,8 @@ private static DataSet ImportExcelXLS(string FileName, bool hasHeaders) } return output; } -``` -```VB +```` +````VB Private Shared Function ImportExcelXLS(FileName As String, hasHeaders As Boolean) As DataSet Dim HDR As String = If(hasHeaders, "Yes", "No") Dim strConn As String = Nothing @@ -349,7 +349,7 @@ Private Shared Function ImportExcelXLS(FileName As String, hasHeaders As Boolean End Using Return output End Function -``` +```` 3.  Rebuild the class library, copy the resulting DLL file, and paste it into the Plugins folder (overwriting the existing file). diff --git a/docs/advanced-topics/coded-samples/general/extend-basewebaiitest-class.md b/docs/advanced-topics/coded-samples/general/extend-basewebaiitest-class.md index 9b7e6624..a8fbdeb3 100644 --- a/docs/advanced-topics/coded-samples/general/extend-basewebaiitest-class.md +++ b/docs/advanced-topics/coded-samples/general/extend-basewebaiitest-class.md @@ -14,7 +14,7 @@ Steps to implement such approach are as follows: 2.  Add a stand alone class file *ExtendedBaseWebAiiTest* which inherits from the abstract class *BaseWebAiiTest*. A sample implementation of such file containing the method *PrintMessage()* is given below: -```C# +````C# using ArtOfTest.WebAii.Design; namespace ExtendBaseWebAiiTestProject @@ -28,8 +28,8 @@ Steps to implement such approach are as follows: } } } -``` -```VB +```` +````VB Imports ArtOfTest.WebAii.Design Namespace ExtendBaseWebAiiTestProject @@ -42,7 +42,7 @@ Steps to implement such approach are as follows: End Sub End Class End Namespace -``` +```` 3.  Close the project and edit project settings file (Settings.aiis - located in the project folder) to use *ExtendedBaseWebAiiTest* as a base class to each test in the project as shown on the next screen-shot: @@ -50,7 +50,7 @@ Steps to implement such approach are as follows: 4.  Re-open the project, add a WebTest and a coded step inside. Then in the step it will be available the *PrintMessage()* defined in the *ExtendedBaseWebAiiTest* class. Below is given a sample of the code behind file of the WebTest. -```C# +````C# using ArtOfTest.WebAii.Core; using ArtOfTest.WebAii.Design.Execution; @@ -65,8 +65,8 @@ Steps to implement such approach are as follows: } } } -``` -```VB +```` +````VB Imports ArtOfTest.WebAii.Core Imports ArtOfTest.WebAii.Design.Execution @@ -81,6 +81,6 @@ Steps to implement such approach are as follows: End Sub End Class End Namespace -``` +```` [1]: /img/advanced-topics/coded-samples/general/extend-BaseWebAiiTest-class/fig1.png diff --git a/docs/advanced-topics/coded-samples/general/external-log-file.md b/docs/advanced-topics/coded-samples/general/external-log-file.md index 76ee45dd..8db4c8f3 100644 --- a/docs/advanced-topics/coded-samples/general/external-log-file.md +++ b/docs/advanced-topics/coded-samples/general/external-log-file.md @@ -26,7 +26,7 @@ We have code samples for two file types: ## Text File -```C# +````C# public IList stepResults { get; set; } public override void OnAfterTestCompleted(TestResult result) { @@ -45,8 +45,8 @@ public override void OnAfterTestCompleted(TestResult result) file.WriteLine("Total Test Result: "+ overall); file.Close(); } -``` -```VB +```` +````VB Public Property stepResults() As IList(Of AutomationStepResult) Get Return m_stepResults @@ -72,7 +72,7 @@ Public Overrides Sub OnAfterTestCompleted(result As TestResult) file.WriteLine("Total Test Result: " & overall) file.Close() End Sub -``` +```` Finally you'll need to Add an Assembly Reference for *ArtOfTest.Common.Design*. If it is already present, remove it and add it again. Add it from the \**Test Studio\Bin** directory: @@ -86,7 +86,7 @@ Finally you'll need to ("id=Grid", "|", "tagIndex=table:1"); Assert.IsNotNull(table); @@ -22,8 +22,8 @@ Assert.IsNotNull(table); int r = table.Rows.Count; Assert.AreEqual(r, 10); Assert.IsTrue(table.InnerText.Contains("Mario")); -``` -```VB +```` +````VB ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-mvc/grid") Dim table As HtmlTable = Find.ByExpression(Of HtmlTable)("id=Grid", "|", "tagIndex=table:1") Assert.IsNotNull(table) @@ -31,13 +31,13 @@ Assert.IsNotNull(table) Dim r As Integer = table.Rows.Count Assert.AreEqual(r, 10) Assert.IsTrue(table.InnerText.Contains("Mario")) -``` +```` ## Throw New Exception When an *Assert* statement is not appropriate, you can throw your own exception. In the example below, the *FileNotFoundException* will result in failure if the specified file does not exist on disk. -```C# +````C# string fileName = "C:\\test.txt"; if (System.IO.File.Exists(fileName) == true) @@ -48,8 +48,8 @@ else { throw new System.IO.FileNotFoundException("File does not exist: ", fileName); } -``` -```VB +```` +````VB Dim fileName As String = "C:\test.txt" If System.IO.File.Exists(fileName) = True Then @@ -57,4 +57,4 @@ If System.IO.File.Exists(fileName) = True Then Else Throw New System.IO.FileNotFoundException("File does not exist: ", fileName) End If -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/framework-in-console-app.md b/docs/advanced-topics/coded-samples/general/framework-in-console-app.md index d5f0a0b7..2cbbd2f2 100644 --- a/docs/advanced-topics/coded-samples/general/framework-in-console-app.md +++ b/docs/advanced-topics/coded-samples/general/framework-in-console-app.md @@ -51,7 +51,7 @@ Once you've added the assembly references, change the .NET Framework version of The application gets values from *Yahoo! Finance* and outputs them to the console screen. Here's the sole class that holds the logic for the application: -```C# +````C# class Program { //The URL to navigate to @@ -91,8 +91,8 @@ class Program Console.Read(); } } -``` -```VB +```` +````VB Class Program 'The URL to navigate to Shared ReadOnly url As String = "http://finance.yahoo.com/" @@ -131,4 +131,4 @@ class Program Console.Read() End Sub End Class -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/generate-random-number.md b/docs/advanced-topics/coded-samples/general/generate-random-number.md index c47dc82c..2b88558e 100644 --- a/docs/advanced-topics/coded-samples/general/generate-random-number.md +++ b/docs/advanced-topics/coded-samples/general/generate-random-number.md @@ -15,7 +15,7 @@ This is possible with a coded solution. The .NET Framework provides the this Telerik demo page and use the DataPager control to navigate to a random page number between 1 and 10. -```C# +````C# ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/datapager/examples/firstlook/defaultcs.aspx"); System.Random random = new System.Random(); @@ -23,8 +23,8 @@ int randomPage = random.Next(1, 11); Find.ByExpression("id=~TextBox_text").Text = randomPage.ToString(); Find.ByExpression("id=~GoToPageButton").Click(); -``` -```VB +```` +````VB ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/datapager/examples/firstlook/defaultcs.aspx") Dim random As New System.Random() @@ -32,4 +32,4 @@ Dim randomPage As Integer = random.[Next](1, 11) Find.ByExpression(Of HtmlInputText)("id=~TextBox_text").Text = randomPage.ToString() Find.ByExpression(Of HtmlInputControl)("id=~GoToPageButton").Click() -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/generate-random-text.md b/docs/advanced-topics/coded-samples/general/generate-random-text.md index e3333b32..e0d9450a 100644 --- a/docs/advanced-topics/coded-samples/general/generate-random-text.md +++ b/docs/advanced-topics/coded-samples/general/generate-random-text.md @@ -23,7 +23,7 @@ The .NET Framework provides the Find.ById("sb_form_q").Text = randomText; Find.ById("sb_form_go").Click(); -``` -```VB +```` +````VB ActiveBrowser.NavigateTo("http://www.bing.com") 'Define the length of the text @@ -50,6 +50,6 @@ Dim randomText As String = New [String](Enumerable.Repeat(charSet, length).[Sele Find.ById(Of HtmlInputSearch)("sb_form_q").Text = randomText Find.ById(Of HtmlInputSubmit)("sb_form_go").Click() -``` +```` __See also:__ Check our blog post **How to input random data in your test**. diff --git a/docs/advanced-topics/coded-samples/general/get-project-path.md b/docs/advanced-topics/coded-samples/general/get-project-path.md index 092c48a7..dc8a5834 100644 --- a/docs/advanced-topics/coded-samples/general/get-project-path.md +++ b/docs/advanced-topics/coded-samples/general/get-project-path.md @@ -12,12 +12,12 @@ position: 1 This is doable with a coded solution. Create a coded step inside of a test: -```C# +````C# this.ExecutionContext.DeploymentDirectory; -``` -```VB +```` +````VB Me.ExecutionContext.DeploymentDirectory -``` +```` ![Current path][1] @@ -31,12 +31,12 @@ However, when running tests from the Visual Studio ("Button1").Click(); Find.ById("RadAjaxLoadingPanel1Panel1").Wait.ForExistsNot(10000); //Now we're free to click around the page without worrying whether the click will actually occur -``` -```VB +```` +````VB ' Launch a browser instance Manager.LaunchNewBrowser(BrowserType.InternetExplorer) @@ -59,6 +59,6 @@ Find.ById(Of HtmlInputButton)("Button1").Click() Find.ById("RadAjaxLoadingPanel1Panel1").Wait.ForExistsNot(10000) 'Now we're free to click around the page without worrying whether the click will actually occur -``` +```` [1]: /img/advanced-topics/coded-samples/general/grayed-out-controls/fig1.png \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/invoke-application.md b/docs/advanced-topics/coded-samples/general/invoke-application.md index df40c582..881ba24c 100644 --- a/docs/advanced-topics/coded-samples/general/invoke-application.md +++ b/docs/advanced-topics/coded-samples/general/invoke-application.md @@ -12,18 +12,18 @@ I want to invoke a desktop application (i.e. an .exe file) from a test step. You can write your own code in a coded step that triggers the application you need. Here's a simple example taken from this article: -```C# +````C# System.Diagnostics.Process notePad = new System.Diagnostics.Process(); notePad.StartInfo.FileName = "notepad.exe"; notePad.StartInfo.Arguments = @"c:\myText.txt"; notePad.Start(); -``` -```VB +```` +````VB Dim notePad As New System.Diagnostics.Process() notePad.StartInfo.FileName = "notepad.exe" notePad.StartInfo.Arguments = "c:\myText.txt" notePad.Start() -``` +```` * In the above sample, **C:\myText.txt** is the argument fed to **notepad.exe**. If you want to test this sample code, you'll need to create this file on your local disk first. Otherwise, the notepad application will throw a *file can't be found* error. diff --git a/docs/advanced-topics/coded-samples/general/invoke-web-service-call.md b/docs/advanced-topics/coded-samples/general/invoke-web-service-call.md index a4159543..05c9c86c 100644 --- a/docs/advanced-topics/coded-samples/general/invoke-web-service-call.md +++ b/docs/advanced-topics/coded-samples/general/invoke-web-service-call.md @@ -21,7 +21,7 @@ Below you will find a code sample which demonstrates one possible solution for t See this article. which explains how to add an assembly reference in Test Studio (Standalone version). -```C# +````C# // Create the WebRequest object we'll use for sending the request WebRequest request = WebRequest.Create("http://money.service.msn.com/StockQuotes.aspx?v=1&symbols=$INDU,AAPL,NFLX"); request.Method = "GET"; @@ -53,8 +53,8 @@ using (WebResponse response = request.GetResponse()) Assert.IsNotNull(indu); } } -``` -```VB +```` +````VB ' Create the WebRequest object we'll use for sending the request Dim request As WebRequest = WebRequest.Create("http://money.service.msn.com/StockQuotes.aspx?v=1&symbols=$INDU,AAPL,NFLX") request.Method = "GET" @@ -84,4 +84,4 @@ Using response As WebResponse = request.GetResponse() Assert.IsNotNull(indu) End Using End Using -``` +```` diff --git a/docs/advanced-topics/coded-samples/general/load-testing-extensions.md b/docs/advanced-topics/coded-samples/general/load-testing-extensions.md index 05502e1c..4e3fda58 100644 --- a/docs/advanced-topics/coded-samples/general/load-testing-extensions.md +++ b/docs/advanced-topics/coded-samples/general/load-testing-extensions.md @@ -19,7 +19,7 @@ Each of these has its own set of functions that extend load testing functionalit The below code creates a new, randomly-named file every time Test Studio creates a new Virtual User during load testing The code overrides all the extensible load functions, but only gives **VirtualUserAllocated** an implementation. The rest of the functions do nothing, and the exceptions they throw are benign. This class requires an assembly reference to *Telerik.TestStudio.Load.Common.dll*. -```C# +````C# using System; using System.Collections.Generic; using System.Linq; @@ -72,4 +72,4 @@ namespace ClassLibrary1 } } } -``` +```` diff --git a/docs/advanced-topics/coded-samples/general/log-clipboard-text.md b/docs/advanced-topics/coded-samples/general/log-clipboard-text.md index 5f1a86e3..8495330b 100644 --- a/docs/advanced-topics/coded-samples/general/log-clipboard-text.md +++ b/docs/advanced-topics/coded-samples/general/log-clipboard-text.md @@ -17,7 +17,7 @@ This is possible with a coded solution: Here is the full code-behind file, excluding the standard *using/Imports* statements and the Dynamic Pages Reference region: -```C# +````C# using System.Windows.Forms; using System.Threading; @@ -49,8 +49,8 @@ namespace TestProject8 } } } -``` -```VB +```` +````VB Imports System.Windows.Forms Imports System.Threading @@ -78,4 +78,4 @@ Namespace TestProject8 End Sub End Class End Namespace -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/log-error-dialogs.md b/docs/advanced-topics/coded-samples/general/log-error-dialogs.md index 8f15c0cc..9ae82ea6 100644 --- a/docs/advanced-topics/coded-samples/general/log-error-dialogs.md +++ b/docs/advanced-topics/coded-samples/general/log-error-dialogs.md @@ -24,7 +24,7 @@ This is possible with a coded solution. The stipulation is that the dialog is di Here is the full code-behind file, excluding the standard *using/Imports* statements and the Dynamic Pages Reference region: -```C# +````C# using System.Threading; using System.Windows.Forms; using ArtOfTest.WebAii.Win32.Dialogs; @@ -67,8 +67,8 @@ namespace TestProject7 } } } -``` -```VB +```` +````VB Imports System.Threading Imports System.Windows.Forms Imports ArtOfTest.WebAii.Win32.Dialogs @@ -106,6 +106,6 @@ Namespace TestProject7 End Sub End Class End Namespace -``` +```` [1]: /img/advanced-topics/coded-samples/general/log-error-dialogs/fig1.png \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/mouse-wheel-scroll.md b/docs/advanced-topics/coded-samples/general/mouse-wheel-scroll.md index 1546ee53..bb209011 100644 --- a/docs/advanced-topics/coded-samples/general/mouse-wheel-scroll.md +++ b/docs/advanced-topics/coded-samples/general/mouse-wheel-scroll.md @@ -12,9 +12,9 @@ position: 1 This is doable with a coded solution. The code is desktop-based, which means it is not associated with an element in your Test Project. Because of this you will need to make sure that the intended target element has focus within the browser before the attempted mouse scroll action. Typically you can give an element focus by invoking a mouse click on it (via regular, non-coded step). Here's an example: -```C# +````C# Manager.Desktop.Mouse.TurnWheel(100, MouseWheelTurnDirection.Backward); -``` -```VB +```` +````VB Manager.Desktop.Mouse.TurnWheel(100, MouseWheelTurnDirection.Backward) -``` +```` diff --git a/docs/advanced-topics/coded-samples/general/non-iterative-data-driving.md b/docs/advanced-topics/coded-samples/general/non-iterative-data-driving.md index 4ed8820e..680c9185 100644 --- a/docs/advanced-topics/coded-samples/general/non-iterative-data-driving.md +++ b/docs/advanced-topics/coded-samples/general/non-iterative-data-driving.md @@ -21,12 +21,12 @@ The solution is to save the number of the row into an XML file. Each time you ex 1.3 Write the following code into the file: -```XML +````XML 0 -``` +```` 2.  Create your data source, if you don't have one already. In my case this is an Excel file called "foo.xlsx" containing numbers from 1 to 20. @@ -47,7 +47,7 @@ The solution is to save the number of the row into an XML file. Each time you ex 3.5 Create a method which will save the row number into the XML file: -```C# +````C# public void SaveValue(int numVal) { string path = @"C:\Box\NextRowOnEachRun\IterationValue.xml"; @@ -55,19 +55,19 @@ public void SaveValue(int numVal) e.Add(new XElement("numVal", numVal)); e.Save(path); } -``` -```VB +```` +````VB Public Sub SaveValue(numVal As Integer) Dim path As String = "C:\Box\NextRowOnEachRun\IterationValue.xml" Dim e As New XElement("IterationValue") e.Add(New XElement("numVal", numVal)) e.Save(path) End Sub -``` +```` 3.6 Create a method which will load the row number from the XML file: -```C# +````C# public int LoadValue() { string path = @"C:\Box\NextRowOnEachRun\IterationValue.xml"; @@ -77,8 +77,8 @@ public int LoadValue() return numVal; } -``` -```VB +```` +````VB Public Function LoadValue() As Integer Dim path As String = "C:\Box\NextRowOnEachRun\IterationValue.xml" Dim e As XElement = XElement.Load(path) @@ -87,11 +87,11 @@ Public Function LoadValue() As Integer Return numVal End Function -``` +```` 3.7 Create a method which will read the row from the Excel file: -```C# +````C# public string ReadingExcel() { int rowValue = LoadValue(); @@ -113,8 +113,8 @@ public string ReadingExcel() return value; } -``` -```VB +```` +````VB Public Function ReadingExcel() As String Dim rowValue As Integer = LoadValue() Dim input As String = "C:\Box\NextRowOnEachRun\foo.xlsx" @@ -136,7 +136,7 @@ Public Function ReadingExcel() As String Return value End Function -``` +```` See this video to see how this sample works. diff --git a/docs/advanced-topics/coded-samples/general/override-app-config.md b/docs/advanced-topics/coded-samples/general/override-app-config.md index d4c21872..33cd7614 100644 --- a/docs/advanced-topics/coded-samples/general/override-app-config.md +++ b/docs/advanced-topics/coded-samples/general/override-app-config.md @@ -20,7 +20,7 @@ However, this doesn't work with a default Test Studio project. A Test Studio pro * *System.Configuration* -```C# +````C# Assembly me = Assembly.GetExecutingAssembly(); Configuration config = ConfigurationManager.OpenExeConfiguration(me.ManifestModule.Assembly.Location); @@ -29,8 +29,8 @@ string name = config.AppSettings.Settings["LoginName"].Value; string pw = config.AppSettings.Settings["Pass"].Value; string UserId = config.AppSettings.Settings["UserId"].Value; string conn = config.ConnectionStrings.ConnectionStrings["ConnectionString"].ConnectionString; -``` -```VB +```` +````VB Dim [me] As Assembly = Assembly.GetExecutingAssembly() Dim config As Configuration = ConfigurationManager.OpenExeConfiguration([me].ManifestModule.Assembly.Location) @@ -39,4 +39,4 @@ Dim name As String = config.AppSettings.Settings("LoginName").Value Dim pw As String = config.AppSettings.Settings("Pass").Value Dim UserId As String = config.AppSettings.Settings("UserId").Value Dim conn As String = config.ConnectionStrings.ConnectionStrings("ConnectionString").ConnectionString -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/random-row.md b/docs/advanced-topics/coded-samples/general/random-row.md index 84aacb2e..63355632 100644 --- a/docs/advanced-topics/coded-samples/general/random-row.md +++ b/docs/advanced-topics/coded-samples/general/random-row.md @@ -22,7 +22,7 @@ In code, generate a random number based on the number of rows. Then use the corr * **Note:** Ensure you Add an Assembly Reference to *Microsoft.Office.Interop.Excel*. You can download a version of that file on Microsoft's website that matches your version of MS Office. -```C# +````C# Random random = new Random(); int num = random.Next(1, 6); @@ -37,8 +37,8 @@ app.Quit(); app = null; Pages.Bing.SbFormQText.Text = value; -``` -```VB +```` +````VB Dim random As New Random() Dim num As Integer = random.[Next](1, 6) @@ -55,7 +55,7 @@ app.Quit() app = Nothing Pages.Bing.SbFormQText.Text = value -``` +```` ## How to find and use Office PIA's without Visual Studio installed diff --git a/docs/advanced-topics/coded-samples/general/relative-dialog-path.md b/docs/advanced-topics/coded-samples/general/relative-dialog-path.md index df604de0..ef934b7c 100644 --- a/docs/advanced-topics/coded-samples/general/relative-dialog-path.md +++ b/docs/advanced-topics/coded-samples/general/relative-dialog-path.md @@ -13,27 +13,27 @@ position: 1 This can only be done in a coded step. The key is to use this.ExecutionContext.DeploymentDirectory. This property identifies the folder the test is running in. You want to use it in a coded step to create an absolute path for file upload/download like this: -```C# +````C# public void RelativePathDownloadStep() { Directory.CreateDirectory(System.IO.Path.Combine(this.ExecutionContext.DeploymentDirectory, "download")); string fullPath = System.IO.Path.Combine(this.ExecutionContext.DeploymentDirectory, "download\\myfile.txt"); Pages.ThinkbroadbandDownload.IconDownload5MBPngImage.Download(false, DownloadOption.Save, fullPath, 30000); } -``` -```VB +```` +````VB Public Sub RelativePathDownloadStep() Directory.CreateDirectory(System.IO.Path.Combine(Me.ExecutionContext.DeploymentDirectory, "download")) Dim fullPath As String = System.IO.Path.Combine(Me.ExecutionContext.DeploymentDirectory, "download\myfile.txt") Pages.ThinkbroadbandDownload.IconDownload5MBPngImage.Download(False, DownloadOption.Save, fullPath, 30000) End Sub -``` +```` You'll have to add an assembly reference to *System.Windows.Forms.dll* and to include the following line at the top of your code file to use the given sample: -```C# +````C# using System.IO; -``` -```VB +```` +````VB Imports System.IO -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/send-keystrokes.md b/docs/advanced-topics/coded-samples/general/send-keystrokes.md index 132dc59a..d1b635bb 100644 --- a/docs/advanced-topics/coded-samples/general/send-keystrokes.md +++ b/docs/advanced-topics/coded-samples/general/send-keystrokes.md @@ -20,7 +20,7 @@ This is possible with a coded solution: Here is the full code-behind file, excluding the standard *using/Imports* statements and the *Dynamic Pages Reference* region: -```C# +````C# using System.Windows.Forms; namespace TestProject8 @@ -35,8 +35,8 @@ namespace TestProject8 } } } -``` -```VB +```` +````VB Imports System.Windows.Forms Namespace TestProject8 @@ -51,7 +51,7 @@ Namespace TestProject8 End Sub End Class End Namespace -``` +```` ## Problem 2 @@ -66,7 +66,7 @@ This is possible with a coded solution: Here is the full code-behind file, excluding the standard *using/Imports* statements and the *Dynamic Pages Reference* region: -```C# +````C# using System.Windows.Forms; namespace TestProject8 @@ -81,8 +81,8 @@ namespace TestProject8 } } } -``` -```VB +```` +````VB Imports System.Windows.Forms Namespace TestProject8 @@ -97,7 +97,7 @@ Namespace TestProject8 End Sub End Class End Namespace -``` +```` > Here you can find the list with key codes. @@ -115,7 +115,7 @@ This is possible with a coded solution: Here is the full code-behind file, excluding the standard *using/Imports* statements and the *Dynamic Pages Reference* region: -```C# +````C# using System.Windows.Forms; namespace TestProject8 @@ -130,8 +130,8 @@ namespace TestProject8 } } } -``` -```VB +```` +````VB Imports System.Windows.Forms Namespace TestProject8 @@ -146,5 +146,5 @@ Namespace TestProject8 End Sub End Class End Namespace -``` +```` diff --git a/docs/advanced-topics/coded-samples/general/skip-iteration.md b/docs/advanced-topics/coded-samples/general/skip-iteration.md index 8dd89658..12d0854b 100644 --- a/docs/advanced-topics/coded-samples/general/skip-iteration.md +++ b/docs/advanced-topics/coded-samples/general/skip-iteration.md @@ -18,28 +18,28 @@ Now it's time to bind your test to a data source. Make **MainTest** (which is st After this add **Subtest** via the Test as Step feature in MainTest. However, we're going to do that in a coded step. Here's what the code looks like: -```C# +````C# this.ExecuteTest("Subtest.tstest"); -``` -```VB +```` +````VB Me.ExecuteTest("Subtest.tstest") -``` +```` For each iteration of **MainTest**, Test Studio will attempt to implement this code and run **SubTest**. Now we can implement conditional logic which determines whether we execute the above logic. In effect, this will control whether a given iteration executes the **SubTest**. If it doesn't, the iteration is effectively skipped - it will invoke no actions of any consequence. We'll skip the iteration even though it won't seem so from **MainTest**'s point of view (i.e. all the iterations will be listed in **MainTest**'s Log file). Let's say we want to implement a data-driven test that navigates to random.org, generates a random number, and executes some steps if the number is even. First we record the required steps in MainTest. A step will Extract the generated number in a variable we're going to name num. Now we check whether this value is even and execute SubTest if it is: -```C# +````C# if (Convert.ToInt16(this.GetExtractedValue("num")) % 2 == 0 ) { this.ExecuteTest("SubTest.tstest"); } -``` -```VB +```` +````VB If Convert.ToInt16(Me.GetExtractedValue("num")) Mod 2 = 0 Then Me.ExecuteTest("SubTest.tstest") End If -``` +```` If you want to access data from your data source, set the **SubTest** to inherit its parent's data source: diff --git a/docs/advanced-topics/coded-samples/general/use-elements-from-repository-in-utility-class.md b/docs/advanced-topics/coded-samples/general/use-elements-from-repository-in-utility-class.md index 5e6b1f60..5bd35467 100644 --- a/docs/advanced-topics/coded-samples/general/use-elements-from-repository-in-utility-class.md +++ b/docs/advanced-topics/coded-samples/general/use-elements-from-repository-in-utility-class.md @@ -12,7 +12,7 @@ position: 1 We do not recommend using elements from the repository in a standalone class file. If there is a specific scenario you could not avoid you could refer to the example below. You would need to add references to ***ArtOfTest.WebAii.Core.dll*** and ***ArtOfTest.WebAii.Design.dll*** and include *using* statements for these in the code file. The ***Utility class*** inherits the ***BaseWebAiiTest*** and requires definition for region ***[Dynamic Pages Reference]***. -```C# +````C# using ArtOfTest.WebAii.Core; using ArtOfTest.WebAii.Design; @@ -44,8 +44,8 @@ namespace SomeTestProject } } } -``` -```VB +```` +````VB Imports ArtOfTest.WebAii.Core Imports ArtOfTest.WebAii.Design @@ -73,21 +73,21 @@ Namespace SomeTestProject End Class End Namespace -``` +```` In a coded step you would need to create an instance of this class in order to use its methods as shown below: -```C# +````C# // create an instance of the class var MyClass = new Utility(); // call a method of this class MyClass.DoSomething(); -``` -```VB +```` +````VB // create an instance of the class Dim [MyClass] = New Utility() // call a method of this class [MyClass].DoSomething() -``` +```` diff --git a/docs/advanced-topics/coded-samples/general/using-the-http-proxy.md b/docs/advanced-topics/coded-samples/general/using-the-http-proxy.md index 56af33b4..1832e2a1 100644 --- a/docs/advanced-topics/coded-samples/general/using-the-http-proxy.md +++ b/docs/advanced-topics/coded-samples/general/using-the-http-proxy.md @@ -14,10 +14,10 @@ The Telerik Testing *Framework ArtOfTest.WebAii.Messaging.Http* namespace contai The project setting 'Use http proxy' enables the HTTP proxy for the use of the HTTP proxy classes in Test Studio coded steps. It functions like the following line from the HTTP Proxy code sample, which is only necessary in Telerik Testing Framework tests: -```C# +````C# // Override the settings you want. For example: settings.Web.UseHttpProxy = true; -``` +```` [1]: /img/advanced-topics/coded-samples/general/using-the-http-proxy/fig1.png diff --git a/docs/advanced-topics/coded-samples/general/utility-class-in-standalone.md b/docs/advanced-topics/coded-samples/general/utility-class-in-standalone.md index c4924959..490c36ab 100644 --- a/docs/advanced-topics/coded-samples/general/utility-class-in-standalone.md +++ b/docs/advanced-topics/coded-samples/general/utility-class-in-standalone.md @@ -15,7 +15,7 @@ position: 1 Here you could read how to create a standalone code file within a Test Studio project. Below are listed two examples how a class file named *Utility* could be adjusted to cover two common scenarios: ***write text to external file*** and ***perform certain action against an element***. The provided sample code requires reference to ***System.IO.dll*** and ***ArtOfTest.WebAii.Controls.HtmlControls.dll*** added in the project settings and the respective *using* statements in the code. Note that the namespace of the standalone code file must be the same as the namespace of the project. -```C# +````C# using System.IO; using ArtOfTest.WebAii.Controls.HtmlControls; @@ -42,8 +42,8 @@ namespace YourTestProjectNamespace } } } -``` -```VB +```` +````VB Imports System.IO Imports ArtOfTest.WebAii.Controls.HtmlControls @@ -72,7 +72,7 @@ Namespace YourTestProjectNamespace End Sub End Class End Namespace -``` +```` Once the code file is ready for use compile the project to build the assembly. Then you'll be able to access the functions/variables within your *Utility* class from all tests in this project. Note that the Test Studio code editor will not auto-complete references to the contents of the *Utility* class. @@ -80,7 +80,7 @@ Once the code file is ready for use compile the project to build the assembly. T The code sample below demonstrates how the global methods and variables could be accessed in a coded step. -```C# +````C# //set value to the global variable Utility.valueHolder = 2; @@ -95,8 +95,8 @@ HtmlControl searchBtn = Find.ById("controlId"); //call Utility class method to perform click on element using the predefined static function Utility.ClickOnElement(searchBtn); -``` -```VB +```` +````VB Utility.valueHolder = 2 Log.WriteLine("Value from Utility class:" + Utility.valueHolder.ToString()) @@ -106,4 +106,4 @@ Utility.writeToFile("c:\myNewText200.txt", "some content") Dim searchBtn As HtmlControl = Find.ById(Of HtmlControl)("sb_form_go") Utility.clickOnElement(searchBtn) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/verify-not-empty.md b/docs/advanced-topics/coded-samples/general/verify-not-empty.md index 87b4d1d0..56296337 100644 --- a/docs/advanced-topics/coded-samples/general/verify-not-empty.md +++ b/docs/advanced-topics/coded-samples/general/verify-not-empty.md @@ -10,19 +10,19 @@ position: 1 This is possible with a coded solution. The example below is against this W3Schools site. -```C# +````C# HtmlTable table = Find.ByTagIndex("table", 0); HtmlTableRow row = table.Rows[0]; HtmlTableCell cell = row.Cells[1]; Log.WriteLine(cell.TextContent); Assert.IsTrue(cell.TextContent.Length > 0); -``` -```VB +```` +````VB Dim table As HtmlTable = Find.ByTagIndex(Of HtmlTable)("table", 0) Dim row As HtmlTableRow = table.Rows(0) Dim cell As HtmlTableCell = row.Cells(1) Log.WriteLine(cell.TextContent) Assert.IsTrue(cell.TextContent.Length > 0) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/general/wait-for-element-in-code.md b/docs/advanced-topics/coded-samples/general/wait-for-element-in-code.md index 34b86a6c..3264c880 100644 --- a/docs/advanced-topics/coded-samples/general/wait-for-element-in-code.md +++ b/docs/advanced-topics/coded-samples/general/wait-for-element-in-code.md @@ -13,42 +13,54 @@ position: 1 After customizing a step in code you may have code that looks like this for an HTML element: -```C# +````C# //Check 'VehicleCheckBox0' to be 'False' Pages.HTMLFormsAndInput.VehicleCheckBox0.Check(true, true); -``` +```` Or like this for a WPF element: -```C# +````C# //LeftClick on CheckBoxCheckbox Pages.Pale2.App.CheckBoxCheckbox.Click(ArtOfTest.WebAii.Core.MouseClickType.LeftClick, true, true, 8, 7, ArtOfTest.Common.OffsetReference.TopLeftCorner, ArtOfTest.Common.ActionPointUnitType.Pixel, ((System.Windows.Forms.Keys)(0))); -``` +```` In the above code sample, the parts **Pages.HTMLFormsAndInput.VehicleCheckBox0 and Pages.Pale2.App.CheckBoxCheckbox** actually perform an implied Find under the hood. This implied Find uses the global timeout setting of 10 seconds by default. If the element does not exist within this 10 seconds, your test fails indicating an "element not found" error. You might think you could avoid this by calling the **Wait.ForExists** function on the element like this: -```C# +````C# Pages.HTMLFormsAndInput.VehicleCheckBox0.Wait.ForExists(30000); -``` +```` However, **Pages.HTMLFormsAndInput.VehicleCheckBox0** performs the implied Find using the global timeout setting prior to calling the **Wait.ForExists function**. Instead, for HTML elements, you should precede your line of code with an **ActiveBrowser.WaitForElement** call that uses the Find Expression for the element you need to wait for: -```C# +````C# ActiveBrowser.WaitForElement(Pages.HTMLFormsAndInput.Expressions.VehicleCheckBox0, 33000, false); //Check 'VehicleCheckBox0' to be 'False' Pages.HTMLFormsAndInput.VehicleCheckBox0.Check(true, true); -``` +```` In this sample, **Pages.HTMLFormsAndInput.Expressions.VehicleCheckBox0** returns the Find Expression associated with the **VehicleCheckBox0** element, then calls **WaitForElement** with a 33 second timeout parameter. This will have the desired effect of waiting 33 seconds for the element to exist prior to acting on it. +For **Silverlight** elements, precede your line of code with something like this: + +````C# +CheckBox cbox = Pages.SilverlightGridControl.SilverlightApp.Get(Pages.SilverlightGridControl.SilverlightApp.Expressions.Item0Checkbox, true, 33000); + +//LeftClick on CheckBoxCheckbox +Pages.Pale2.SilverlightApp.CheckBoxCheckbox.Click(ArtOfTest.WebAii.Core.MouseClickType.LeftClick, true, true, 8, 7, ArtOfTest.Common.OffsetReference.TopLeftCorner, ArtOfTest.Common.ActionPointUnitType.Pixel, ((System.Windows.Forms.Keys)(0))); +```` + + +In this sample, **Pages.SilverlightGridControl.SilverlightApp.Expressions.Item0Checkbox** returns the Find Expression associated with the Item0Checkbox element. The Find Expression is used in the Get method with a 33 second timeout parameter to wait for the element to exist and return it as an object. This will have the desired effect of waiting 33 seconds for the element to exist prior to acting on it. + diff --git a/docs/advanced-topics/coded-samples/general/write-into-data-source.md b/docs/advanced-topics/coded-samples/general/write-into-data-source.md index 9cd30a96..9b865d7a 100644 --- a/docs/advanced-topics/coded-samples/general/write-into-data-source.md +++ b/docs/advanced-topics/coded-samples/general/write-into-data-source.md @@ -29,7 +29,7 @@ Here's a sample test that automates this case: Here's the code from that sample: -```C# +````C# string dataSourcePath = this.ExecutionContext.DeploymentDirectory + @"\Data\domainResults.xlsx"; string myPath = "C:\\domainResults.xlsx"; @@ -63,8 +63,8 @@ Here's the code from that sample: excelApp.Quit(); GC.Collect(); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); -``` -```VB +```` +````VB Dim dataSourcePath As String = Me.ExecutionContext.DeploymentDirectory + "\Data\domainResults.xlsx" Dim myPath As String = "C:\domainResults.xlsx" @@ -95,7 +95,7 @@ Here's the code from that sample: excelApp.Quit() GC.Collect() System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp) -``` +```` ## How to Find and Use Office PIA's diff --git a/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md b/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md index 6362d26c..bb88508f 100644 --- a/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md +++ b/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md @@ -17,9 +17,9 @@ To help Test Studio locate your iframes, you can add a custom tag to the iframe. To add a tag to a iframe in your application's HTML, add the 'testStudioTag' attribute to the frame element. For example: -```HTML +````HTML -``` +```` ## Add a Tag Dynamically in Code @@ -47,7 +47,7 @@ If it is not possible to add custom tags to your iframes, you can add them at ru To tag a nested iframe, ensure the entire DOM is built, so that Test Studio can access the iframes. For example: -```C# +````C# [CodedStep(@"Tag nested frame with 'MyCustomTag'")] public void WebTest1_CodedStep() { @@ -59,7 +59,7 @@ public void WebTest1_CodedStep() myFrame.TagFrame("MyCustomTag"); } } -``` +```` ## See also diff --git a/docs/advanced-topics/coded-samples/html/ajax-calendar-random-date.md b/docs/advanced-topics/coded-samples/html/ajax-calendar-random-date.md index c18b7302..38d445e5 100644 --- a/docs/advanced-topics/coded-samples/html/ajax-calendar-random-date.md +++ b/docs/advanced-topics/coded-samples/html/ajax-calendar-random-date.md @@ -13,7 +13,7 @@ position: 1 The code below will show you how to select a random date from the Calendar on this site. -```C# +````C# //We scroll to the date picker so that we can see the click occuring. //Pages.WeekEndCourseullesSurMer.WeekendFormFormTag is a definiton which Test Studio automatically generated. Pages.WeekEndCourseullesSurMer.WeekendFormFormTag.ScrollToVisible(ScrollToVisibleType.ElementBottomAtWindowBottom); @@ -50,8 +50,8 @@ while (randomNum != 0) //Click on the node after we reach it in the list. l.Value.MouseClick(); -``` -```VB +```` +````VB 'We scroll to the date picker so that we can see the click occuring. //Pages.WeekEndCourseullesSurMer.WeekendFormFormTag is a definiton which Test Studio automatically generated. Pages.WeekEndCourseullesSurMer.WeekendFormFormTag.ScrollToVisible(ScrollToVisibleType.ElementBottomAtWindowBottom) @@ -85,4 +85,4 @@ End While 'Click on the node after we reach it in the list. l.Value.MouseClick() -``` +```` diff --git a/docs/advanced-topics/coded-samples/html/async-upload-dialog.md b/docs/advanced-topics/coded-samples/html/async-upload-dialog.md index 21caea31..78f53c47 100644 --- a/docs/advanced-topics/coded-samples/html/async-upload-dialog.md +++ b/docs/advanced-topics/coded-samples/html/async-upload-dialog.md @@ -9,7 +9,7 @@ position: 1 There are differences in how RadAsyncUpload is interpreted across different browsers. AsyncUpload is built over Silverlight in Internet Explorer, but rendered in HTML5 in the other browsers (Firefox, Safari, and Chrome). This greatly affects cross-browser UI Automation. You can work around the problem by using a coded step to handle the dialog: -```C# +````C# public void Upload(int index, string filePath) { FileUploadDialog uploadDialog = new FileUploadDialog(OwnerBrowser, filePath, DialogButton.OPEN, this.UploadDialogTitle); @@ -21,8 +21,8 @@ uploadDialog.WaitUntilHandled(); Manager.Current.DialogMonitor.Stop(); Manager.Current.DialogMonitor.RemoveDialog(uploadDialog); } -``` -```VB +```` +````VB Public Sub Upload(index As Integer, filePath As String) Dim uploadDialog As New FileUploadDialog(OwnerBrowser, filePath, DialogButton.OPEN, Me.UploadDialogTitle) Manager.Current.DialogMonitor.AddDialog(uploadDialog) @@ -33,6 +33,6 @@ Public Sub Upload(index As Integer, filePath As String) Manager.Current.DialogMonitor.[Stop]() Manager.Current.DialogMonitor.RemoveDialog(uploadDialog) End Sub -``` +```` diff --git a/docs/advanced-topics/coded-samples/html/common-find-expressions.md b/docs/advanced-topics/coded-samples/html/common-find-expressions.md index 76810e21..248039e0 100644 --- a/docs/advanced-topics/coded-samples/html/common-find-expressions.md +++ b/docs/advanced-topics/coded-samples/html/common-find-expressions.md @@ -17,7 +17,7 @@ Let's use wikipedia.org Here's the HTML code for that link: -```HTML +````HTML English
@@ -25,20 +25,20 @@ Here's the HTML code for that link:
3 907 000+ articles
-``` +```` The anchor element has no direct TextContent, so we'll need to locate by a partial match on InnerText: -```C# +````C# HtmlAnchor a = Find.ByExpression("InnerText=~English", "tagname=a"); Assert.IsNotNull(a); a.Click(); -``` -```VB +```` +````VB Dim a As HtmlAnchor = Find.ByExpression(Of HtmlAnchor)("InnerText=~English", "tagname=a") Assert.IsNotNull(a) a.Click() -``` +```` If we locate by an exact match on TextContent, the bottom *English* link will found. @@ -46,49 +46,49 @@ If we locate by an exact match on TextContent, the bottom *English* link will fo Here's the HTML code for that link: -```HTML +````HTML English -``` +```` Here's how to locate and click that link: -```C# +````C# HtmlAnchor a = Find.ByExpression("TextContent=English", "tagname=a"); Assert.IsNotNull(a); a.Click(); -``` -```VB +```` +````VB Dim a As HtmlAnchor = Find.ByExpression(Of HtmlAnchor)("TextContent=English", "tagname=a") Assert.IsNotNull(a) a.Click() -``` +```` The following attributes apply to both links, however Test Studio returns the first HtmlAnchor that matches. In this case, that's the top bold *English* link. -```C# +````C# HtmlAnchor a = Find.ByExpression("tagname=a", "href=//en.wikipedia.org/"); -``` -```VB +```` +````VB Dim a As HtmlAnchor = Find.ByExpression(Of HtmlAnchor)("tagname=a", "href=//en.wikipedia.org/") -``` +```` You can find it by xpath: -```C# +````C# HtmlAnchor a = Find.ByXPath("//*[@id=\"www-wikipedia-org\"]/div[5]/div/a[2]"); -``` -```VB +```` +````VB Dim a As HtmlAnchor = Find.ByXPath(Of HtmlAnchor)("//*[@id=""www-wikipedia-org""]/div[5]/div/a[2]") -``` +```` You can also data drive the find expression: -```C# +````C# HtmlAnchor a = Find.ByExpression("tagname=a", "textcontent=" + Data["Col1"].ToString()); -``` -```VB +```` +````VB Dim a As HtmlAnchor = Find.ByExpression(Of HtmlAnchor)("tagname=a", "textcontent=" + Data("Col1").ToString()) -``` +```` [1]: /img/advanced-topics/coded-samples/html/common-find-expressions/fig1.png diff --git a/docs/advanced-topics/coded-samples/html/conditional-dialog-handling.md b/docs/advanced-topics/coded-samples/html/conditional-dialog-handling.md index dfd6119a..f87dd176 100644 --- a/docs/advanced-topics/coded-samples/html/conditional-dialog-handling.md +++ b/docs/advanced-topics/coded-samples/html/conditional-dialog-handling.md @@ -13,7 +13,7 @@ position: 1 This is possible with a coded solution. The action that potentially triggers the dialog must be included in the code. -```C# +````C# ActiveBrowser.NavigateTo("http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert"); //Create the dialog and add it to the monitor @@ -38,8 +38,8 @@ catch (TimeoutException) Manager.DialogMonitor.RemoveDialog(ad); ActiveBrowser.NavigateTo("http://www.bing.com"); -``` -```VB +```` +````VB ActiveBrowser.NavigateTo("http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert") @@ -59,5 +59,5 @@ End Try Manager.DialogMonitor.RemoveDialog(ad) ActiveBrowser.NavigateTo("http://www.bing.com") -``` +```` diff --git a/docs/advanced-topics/coded-samples/html/dynamic-grid.md b/docs/advanced-topics/coded-samples/html/dynamic-grid.md index 05525d5b..81ff4751 100644 --- a/docs/advanced-topics/coded-samples/html/dynamic-grid.md +++ b/docs/advanced-topics/coded-samples/html/dynamic-grid.md @@ -36,7 +36,7 @@ Going back to Test Studio, you will notice a new element has appeared in Project Create a new coded step and add the following lines that go through each (visible) cell in the Grid: -```C# +````C# foreach (HtmlTableRow r in Pages.TelerikWebUIGridRow.ContentPlaceholder1RadGrid1Table.AllRows) { foreach(HtmlTableCell c in r.Cells) @@ -44,7 +44,7 @@ foreach (HtmlTableRow r in Pages.TelerikWebUIGridRow.ContentPlaceholder1RadGrid1 Log.WriteLine("Cell found. TextContent: "+c.TextContent); } } -``` +```` This is C# code, the VB code will follow the same logic only transcribed in the corresponding syntax. Make sure the coded steps executes at a point in your test when the page congaing the Grid is loaded in the Active Browser. @@ -56,9 +56,8 @@ Let's look at the grid in the below image. Let's imagine we want to get the row In this example we want to click a checkbox but the nested control in the grid may be any other type. To adjust it you will need to change the Find.ByXX statement. For this example we again use the definition of the Grid that we've stored in the Project's Elements Explorer (as seen in Solution 1 of this article). Here's the code: -```C# -//The variable that will store the row which contains the name cell and the checkbox cell -HtmlTableRow containerRow=null; +````C# +HtmlTableRow containerRow=null; //The variable that will store the row that contains the name cell and the checkbox cell foreach (HtmlTableRow r in Pages.TelerikWebUIGridRow.ContentPlaceholder1RadGrid1Table.AllRows) { @@ -89,7 +88,7 @@ Assert.IsNotNull(checkbox); // Scroll the element to be visible and click on it checkbox.ScrollToVisible(ScrollToVisibleType.ElementCenterAtWindowCenter); checkbox.MouseClick(); -``` +```` [1]: /img/advanced-topics/coded-samples/html/dynamic-grid/fig1.png [2]: /img/advanced-topics/coded-samples/html/dynamic-grid/fig2.png diff --git a/docs/advanced-topics/coded-samples/html/extract-an-attribute.md b/docs/advanced-topics/coded-samples/html/extract-an-attribute.md index c281fbd1..d13d3b68 100644 --- a/docs/advanced-topics/coded-samples/html/extract-an-attribute.md +++ b/docs/advanced-topics/coded-samples/html/extract-an-attribute.md @@ -15,31 +15,31 @@ This is possible with a coded solution. First, be aware that if you're simply ve HTML elements are formatted the following way: -``` +```` content -``` +```` -```HTML +````HTML Go to Google -``` +```` Here's how to set the value of the *lang* attribute (*which is en*) to a string. That string is then set as an extracted value to use later in the test through data binding (either attached to an input value or a verification). -```C# +````C# HtmlAnchor a = Find.ById("googleLink"); Assert.IsNotNull(a); string atr = a.Attributes.Single(x => x.Name == "lang").Value; Log.WriteLine(atr); SetExtractedValue("extraction", atr); -``` -```VB +```` +````VB Dim a As HtmlAnchor = Find.ById(Of HtmlAnchor)("googleLink") Assert.IsNotNull(a) Dim atr As String = a.Attributes.[Single](Function(x) x.Name = "lang").Value Log.WriteLine(atr) SetExtractedValue("extraction", atr) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/html/image-comparison.md b/docs/advanced-topics/coded-samples/html/image-comparison.md index 2fde4f32..01763eff 100644 --- a/docs/advanced-topics/coded-samples/html/image-comparison.md +++ b/docs/advanced-topics/coded-samples/html/image-comparison.md @@ -13,7 +13,7 @@ position: 1 Here is sample code showing how to perform an image comparison: -```C# +````C# HtmlImage img = Find.ById("myImageId"); System.Drawing.Bitmap actualbmp = img.Capture(); @@ -21,8 +21,8 @@ ArtOfTest.Common.PixelMap expected = ArtOfTest.Common.PixelMap.FromBitmap(expect ArtOfTest.Common.PixelMap actual = ArtOfTest.Common.PixelMap.FromBitmap(actualbmp); Assert.IsTrue(expected.Compare(actual, 5.0)); -``` -```VB +```` +````VB Dim img As HtmlImage = Find.ById(Of HtmlImage)("myImageId") Dim actualbmp As System.Drawing.Bitmap = img.Capture() @@ -30,6 +30,6 @@ Dim expected As ArtOfTest.Common.PixelMap = ArtOfTest.Common.PixelMap.FromBitmap Dim actual As ArtOfTest.Common.PixelMap = ArtOfTest.Common.PixelMap.FromBitmap(actualbmp) Assert.IsTrue(expected.Compare(actual, 5.0)) -``` +```` In the above code I am getting the image of the "myImageId" element from the browser and comparing it to the expected image stored on disk named "myExpected.png". The comparison is allowing a 5% tolerance, meaning there may be up to a 5% difference in the image or else the Assert fails and the test aborts. \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md b/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md index 0506aef7..9644925e 100644 --- a/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md +++ b/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md @@ -23,16 +23,16 @@ Inputting text into -``` +```` Invoke the script that changes the background color with the following coded step: -```C# +````C# Pages.TryitEditorV220.FrameIframeResult.Text.AsjQueryControl().InvokejQueryEvent(ArtOfTest.WebAii.jQuery.jQueryControl.jQueryControlEvents.change); -``` +```` * The guideline is to always pair the two steps together. Immediately after performing the change step (input, radio button, etc.), run the coded step that calls the .change function for that element. diff --git a/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md b/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md index 4c40dc4f..d3270ddd 100644 --- a/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md +++ b/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md @@ -11,17 +11,17 @@ position: 1 A partial search of control by attribute may return null even with correct partial search syntax. For example a HtmlInputButton search on the page having a complex ID containing some specific string should be located successfully using the following syntax: -```C# +````C# HtmlInputButton button = Find.ById("~MyButtonIDPart"); -``` +```` Although the next example works: -```C# +````C# HtmlInputButton button = Find.ById("SomeButtonIDPart_MyButtonIDPart"); -``` +```` ## DESCRIPTION @@ -33,9 +33,9 @@ In the first example, the framework returns null if there is another element tha A simple solution is available. Use Find.AllByAttributes overload and return the first (and actually the only completely matching control): -```C# +````C# HtmlInputButton button = Find.AllByAttributes("id=~MyButtonIDPart")[0]; -``` +```` diff --git a/docs/advanced-topics/coded-samples/html/radwindow-width-height.md b/docs/advanced-topics/coded-samples/html/radwindow-width-height.md index 5ddd45ab..13ac91c5 100644 --- a/docs/advanced-topics/coded-samples/html/radwindow-width-height.md +++ b/docs/advanced-topics/coded-samples/html/radwindow-width-height.md @@ -15,7 +15,7 @@ First you need to get a reference to the RadWindow control by ID. Once you get i Here is the standard approach: -```C# +````C# Manager.LaunchNewBrowser(); ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/window/examples/contenttemplatevsnavigateurl/defaultcs.aspx"); Find.ById("Button3").MouseClick(); @@ -25,8 +25,8 @@ RadWindow window = Find.ById("RadWindowWrapper_RadWindow_ContentTempl //First Option Assert.AreEqual(300, window.Width); -``` -```VB +```` +````VB Manager.LaunchNewBrowser() ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/window/examples/contenttemplatevsnavigateurl/defaultcs.aspx") Find.ById(Of HtmlInputSubmit)("Button3").MouseClick() @@ -35,11 +35,11 @@ ActiveBrowser.RefreshDomTree() Dim window As RadWindow = Find.ById(Of RadWindow)("RadWindowWrapper_RadWindow_ContentTemplate") Assert.AreEqual(300, window.Width) -``` +```` Invoking JavaScript on the page: -```C# +````C# Manager.LaunchNewBrowser(); ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/window/examples/contenttemplatevsnavigateurl/defaultcs.aspx"); Find.ById("Button3").MouseClick(); @@ -50,8 +50,8 @@ RadWindow window = Find.ById("RadWindowWrapper_RadWindow_ContentTempl //Second Option string windowWidth = this.ActiveBrowser.Actions.InvokeScript(String.Format("$telerik.getBounds($find('RadWindow_ContentTemplate').get_popupElement()).width")); Assert.AreEqual("300", windowWidth); -``` -```VB +```` +````VB Manager.LaunchNewBrowser() ActiveBrowser.NavigateTo("http://demos.telerik.com/aspnet-ajax/window/examples/contenttemplatevsnavigateurl/defaultcs.aspx") Find.ById(Of HtmlInputSubmit)("Button3").MouseClick() @@ -61,4 +61,4 @@ Dim window As RadWindow = Find.ById(Of RadWindow)("RadWindowWrapper_RadWindow_Co Dim windowWidth As String = Me.ActiveBrowser.Actions.InvokeScript([String].Format("$telerik.getBounds($find('RadWindow_ContentTemplate').get_popupElement()).width")) Assert.AreEqual("300", windowWidth) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/html/table-searching-paging.md b/docs/advanced-topics/coded-samples/html/table-searching-paging.md index 8b025685..1a38f90e 100644 --- a/docs/advanced-topics/coded-samples/html/table-searching-paging.md +++ b/docs/advanced-topics/coded-samples/html/table-searching-paging.md @@ -13,7 +13,7 @@ position: 1 This is possible with a coded solution. The example below is against this Telerik demo site. -```C# +````C# HtmlTable table = Find.ByExpression("id=Grid", "|", "tagIndex=table:1"); HtmlSpan next = Find.ByExpression("class=k-icon k-i-arrow-e"); HtmlAnchor a = Find.ByExpression("title=Go to the next page"); @@ -52,8 +52,8 @@ while (false == found && false == disabled) System.Threading.Thread.Sleep(1000); table.Refresh(); } -``` -```VB +```` +````VB Dim table As HtmlTable = Find.ByExpression(Of HtmlTable)("id=Grid", "|", "tagIndex=table:1") Dim [next] As HtmlSpan = Find.ByExpression(Of HtmlSpan)("class=k-icon k-i-arrow-e") Dim a As HtmlAnchor = @@ -87,4 +87,4 @@ While False = found AndAlso False = disabled System.Threading.Thread.Sleep(1000) table.Refresh() End While -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/html/table-sum-average.md b/docs/advanced-topics/coded-samples/html/table-sum-average.md index 5fd62718..5ca80fb5 100644 --- a/docs/advanced-topics/coded-samples/html/table-sum-average.md +++ b/docs/advanced-topics/coded-samples/html/table-sum-average.md @@ -13,7 +13,7 @@ position: 1 This is possible with a coded solution. The example below is against this W3Schools site. -```C# +````C# HtmlTable table = Find.ByTagIndex("table", 0); double r = table.Rows.Count; @@ -36,8 +36,8 @@ Log.WriteLine("Sum: " + sum.ToString()); double average = sum / r; Log.WriteLine("Average: " + average.ToString()); Assert.IsTrue(sum == 90); -``` -```VB +```` +````VB Dim table As HtmlTable = Find.ByTagIndex(Of HtmlTable)("table", 0) Dim r As Double = table.Rows.Count @@ -59,6 +59,6 @@ Log.WriteLine("Sum: " + sum.ToString()) Dim average As Double = sum / r Log.WriteLine("Average: " + average.ToString()) Assert.IsTrue(sum = 90) -``` +```` diff --git a/docs/advanced-topics/coded-samples/html/verify-dialog-text-chrome.md b/docs/advanced-topics/coded-samples/html/verify-dialog-text-chrome.md index 97cb2b70..9279f353 100644 --- a/docs/advanced-topics/coded-samples/html/verify-dialog-text-chrome.md +++ b/docs/advanced-topics/coded-samples/html/verify-dialog-text-chrome.md @@ -24,7 +24,7 @@ This could be achieved in a coded solution. The code will both handle the dialog >
> The last three could be usually found in *'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\'*. -```C# +````C# [CodedStep(@"New Coded Step")] public void WebTest_CodedStep() { @@ -54,8 +54,8 @@ This could be achieved in a coded solution. The code will both handle the dialog // handle the dialog Manager.Desktop.KeyBoard.KeyPress(Keys.Enter); } -``` -```VB +```` +````VB _ Public Sub WebTest_CodedStep() System.Threading.Thread.Sleep(1000) @@ -81,18 +81,18 @@ Public Sub WebTest_CodedStep() ' handle the dialog Manager.Desktop.KeyBoard.KeyPress(Keys.Enter) End Sub -``` +```` Ensure you __add the following *using or Imports* statements__ to the top of the code-behind file.Scroll to the top of the code file and add these lines: -```C# +````C# using System.Windows.Automation; using ArtOfTest.Common.Extensions; using System.Windows.Forms; -``` -```VB +```` +````VB Imports System.Windows.Automation Imports ArtOfTest.Common.Extensions Imports System.Windows.Forms -``` +```` diff --git a/docs/advanced-topics/coded-samples/html/verify-dialog-text.md b/docs/advanced-topics/coded-samples/html/verify-dialog-text.md index 13d29168..5fc96962 100644 --- a/docs/advanced-topics/coded-samples/html/verify-dialog-text.md +++ b/docs/advanced-topics/coded-samples/html/verify-dialog-text.md @@ -15,7 +15,7 @@ This is possible with a coded solution. The code serves two purposes. It handles **Note:** This code requires an assembly reference to System.Windows.Forms. Here is an article on how to add an assembly reference in the Standalone version. -```C# +````C# string dialogText; [CodedStep(@"Navigate then verify text in popup dialog")] @@ -53,8 +53,8 @@ public void MyCustomAlertHandler(IDialog dialog) Manager.Desktop.KeyBoard.KeyPress(Keys.Enter); dialog.HandleCount++; } -``` -```VB +```` +````VB Private dialogText As String _ @@ -86,17 +86,17 @@ Public Sub MyCustomAlertHandler(dialog As IDialog) Manager.Desktop.KeyBoard.KeyPress(Keys.Enter) dialog.HandleCount += 1 End Sub -``` +```` Ensure you add the following *using or Imports* statements to the top of the code-behind file. Click the **View Entire Code Behind File** button, scroll to the top of the code, and add these lines: -```C# +````C# using ArtOfTest.WebAii.Win32.Dialogs; using System.Windows.Forms; -``` -```VB +```` +````VB Imports ArtOfTest.WebAii.Win32.Dialogs Imports System.Windows.Forms -``` +```` diff --git a/docs/advanced-topics/coded-samples/html/verify-sort-order-html.md b/docs/advanced-topics/coded-samples/html/verify-sort-order-html.md index bdc6c8c2..5075161f 100644 --- a/docs/advanced-topics/coded-samples/html/verify-sort-order-html.md +++ b/docs/advanced-topics/coded-samples/html/verify-sort-order-html.md @@ -15,7 +15,7 @@ This is possible with a coded solution. The example below is against this ("id=Grid", "|", "tagIndex=table:1"); @@ -43,8 +43,8 @@ for (int j = 0; j < list.Count; j++) Assert.IsTrue(list[j+1].CompareTo(list[j]) >= 0); } } -``` -```VB +```` +````VB Dim table As HtmlTable = Find.ByExpression(Of HtmlTable)("id=Grid", "|", "tagIndex=table:1") Dim r As Integer = table.Rows.Count @@ -66,4 +66,4 @@ For j As Integer = 0 To list.Count - 1 Assert.IsTrue(list(j + 1).CompareTo(list(j)) >= 0) End If Next -``` +```` diff --git a/docs/advanced-topics/coded-samples/html/verify-style.md b/docs/advanced-topics/coded-samples/html/verify-style.md index 68c1e16a..d975a2b6 100644 --- a/docs/advanced-topics/coded-samples/html/verify-style.md +++ b/docs/advanced-topics/coded-samples/html/verify-style.md @@ -15,7 +15,7 @@ This is possible with a coded solution. First, be aware that if you're simply ve The example below is against this W3Schools site. Two styles are verified, retrieved as strings, and set as extracted values to use later in the test through data binding (either attached to an input value or a verification). -```C# +````C# Browser frame = ActiveBrowser.Frames["view"]; HtmlControl paragraph = frame.Find.ByTagIndex("p", 0); Assert.IsNotNull(paragraph); @@ -30,8 +30,8 @@ SetExtractedValue("colorVar", color); paragraph.AssertStyle().Font(HtmlStyleFont.Family, "verdana", HtmlStyleType.Computed, StringCompareType.Exact); paragraph.AssertStyle().ColorAndBackground(HtmlStyleColorAndBackground.Color, "#FF0000", HtmlStyleType.Computed, StringCompareType.Exact); -``` -```VB +```` +````VB Dim frame As Browser = ActiveBrowser.Frames("view") Dim paragraph As HtmlControl = frame.Find.ByTagIndex(Of HtmlControl)("p", 0) Assert.IsNotNull(paragraph) @@ -46,4 +46,4 @@ SetExtractedValue("colorVar", color) paragraph.AssertStyle().Font(HtmlStyleFont.Family, "verdana", HtmlStyleType.Computed, StringCompareType.Exact) paragraph.AssertStyle().ColorAndBackground(HtmlStyleColorAndBackground.Color, "#FF0000", HtmlStyleType.Computed, StringCompareType.Exact) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md b/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md index cdc996da..d07fd865 100644 --- a/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md +++ b/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md @@ -17,7 +17,7 @@ This is possible with a coded solution. Change the SilverlightApp or any Framewo The example below is against this Silverlight demo site. After navigating there, click DataGrid in the left-hand menu. Then add a coded step: -```C# +````C# SilverlightApp app = ActiveBrowser.SilverlightApps()[0]; FindStrategy originalStrategy = app.Find.Strategy; @@ -42,9 +42,7 @@ finally { app.Find.Strategy = originalStrategy; } -``` - -```VB +````VB Dim app As SilverlightApp = ActiveBrowser.SilverlightApps()(0) Dim originalStrategy As FindStrategy = app.Find.Strategy @@ -63,6 +61,6 @@ Try Finally app.Find.Strategy = originalStrategy End Try -``` +```` **Note:** As is, the IF portion is executed. You can disable step two (treeview item 'DataGrid' select action) to see the ELSE portion execute. diff --git a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md index b1ace23e..f94ccada 100644 --- a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md +++ b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md @@ -8,7 +8,7 @@ position: 1 This is possible with a coded solution: -```C# +````C# ComboBox cb = Pages.SilverlightToolkitSamples.SilverlightApp.Item0Combobox; string full = cb.TextBlockContent.ToString(); @@ -16,9 +16,7 @@ full = full.Trim(); Log.WriteLine(full); Assert.AreEqual(full, "All Add Delete Edit Navigation None"); -``` - -```VB +````VB Dim cb As ComboBox = Pages.SilverlightToolkitSamples.SilverlightApp.Item0Combobox Dim full As String = cb.TextBlockContent.ToString() @@ -26,6 +24,6 @@ full = full.Trim() Log.WriteLine(full) Assert.AreEqual(full, "All Add Delete Edit Navigation None") -``` +```` diff --git a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md index 62fadd3a..ab6edafd 100644 --- a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md +++ b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md @@ -12,18 +12,16 @@ I would like to iterate through a Silverlight ComboBox and verify that it contai This is possible with a coded solution: -```C# +````C# ComboBox cb = Pages.SilverlightToolkitSamples.SilverlightApp.Item0Combobox; bool found = cb.TextBlockContent.Contains(Data["Col1"].ToString()); Log.WriteLine("Match found: " + found.ToString()); Assert.IsTrue(found); -``` - -```VB +````VB Dim cb As ComboBox = Pages.SilverlightToolkitSamples.SilverlightApp.Item0Combobox Dim found As Boolean = cb.TextBlockContent.Contains(Data("Col1").ToString()) Log.WriteLine("Match found: " + found.ToString()) Assert.IsTrue(found) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/go-through-all-grid-cells.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/go-through-all-grid-cells.md index eb609117..d7eadb50 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/go-through-all-grid-cells.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/go-through-all-grid-cells.md @@ -25,11 +25,11 @@ The first test uses code to go through all the visible cells in the grid (as opp The code can be resued in a Telerik Testing Framework test, but you'll need to add the following line of code: -``` +```` Settings.Current.Web.EnableSilverlight = true; -``` +```` -```C# +````C# SilverlightApp app = ActiveBrowser.SilverlightApps()[0]; //Get Silverlight app Telerik.WebAii.Controls.Xaml.RadGridView rgv = app.Find.ByType(); //Get RadGrid @@ -49,8 +49,8 @@ foreach (Telerik.WebAii.Controls.Xaml.GridViewRow gRow in rgv.Rows) { //Loop to } rowCounter++; } -``` -```VB +```` +````VB Dim app As SilverlightApp = ActiveBrowser.SilverlightApps()(0) 'Get Silverlight app Dim rgv As Telerik.WebAii.Controls.Xaml.RadGridView = app.Find.ByType(Of Telerik.WebAii.Controls.Xaml.RadGridView)() @@ -68,7 +68,7 @@ For Each gRow As Telerik.WebAii.Controls.Xaml.GridViewRow In rgv.Rows Next rowCounter += 1 Next -``` +```` The second test, **GoThroughAllCellsInGrid**, scrolls through the Grid and goes through all its cells, not just the ones that are currently visible. Basically it combines the above code with the code from this article. diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md index 12627b7b..8e7a67aa 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md @@ -23,7 +23,7 @@ This is possible with a coded solution. To accomplish the main goal, we need to The following code demonstrates how to accomplished this on a Telerik demo site. -```C# +````C# public FrameworkElement FindElementByTextContent(string content) { int extentHeight; // The total height of the grid, visible plus non-visible @@ -77,9 +77,7 @@ public FrameworkElement FindElementByTextContent(string content) grid.Find.Strategy = originalStrategy; return null; } -``` - -```VB +````VB Public Function FindElementByTextContent(content As String) As FrameworkElement Dim extentHeight As Integer @@ -132,7 +130,7 @@ Public Function FindElementByTextContent(content As String) As FrameworkElement grid.Find.Strategy = originalStrategy Return Nothing End Function -``` +```` Place this in the code-behind and then call this method from a coded step. diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md index 8192eb7a..6cf8f89b 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md @@ -19,7 +19,7 @@ Here is an example. Let's say you have a grid that holds 100 rows of data but ca The following code demonstrates how to accomplished this on a Telerik demo page. -```C# +````C# int verticalOffset = 0; // Holds the current vertical offset in the viewport int viewPortHeight; // The height of the visible part of the grid int extentHeight; // The total height of the grid, visible plus non-visible @@ -54,9 +54,7 @@ grid.Refresh(); verticalOffset += viewPortHeight; VirtualizingPanel.InvokeMethod("SetVerticalOffset", verticalOffset); } -``` - -```VB +````VB Dim verticalOffset As Integer = 0 ' Holds the current vertical offset in the viewport @@ -91,6 +89,6 @@ Next verticalOffset += viewPortHeight VirtualizingPanel.InvokeMethod("SetVerticalOffset", verticalOffset) End While -``` +```` Due to the volume of data contained in the sample RadGridView, this test will take hours to run through it all. But it shows all the necessary steps. diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md index e7e46e78..48c4c16d 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md @@ -15,7 +15,7 @@ The only way to get the total rows count is by calculating the number of rows pe The following code demonstrates how to get the rows count of the RadGridView shown on this Telerik demo site. We use a Do/While loop in code which exits once the "Next Page" button is no longer Enabled. Then the row count is performed once more to account for the last page. -```C# +````C# int extentHeight; // The total height of the grid, visible plus non-visible int rowHeight; // The height of the row @@ -46,9 +46,7 @@ totalOverallRows = totalPageRows + totalOverallRows; // Show the result Log.WriteLine("Total Number of Rows: "+ totalOverallRows.ToString()); -``` - -```VB +````VB Dim extentHeight As Integer Dim rowHeight As Integer @@ -78,4 +76,4 @@ totalOverallRows = totalPageRows + totalOverallRows Log.WriteLine("Total Number of Rows: " + totalOverallRows.ToString()) -``` +```` diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md index 4a7c4c95..0bbd6a54 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md @@ -14,7 +14,7 @@ position: 1 Here is how to accomplish this on a Telerik demo site.. First you need to retrieve all the Header Row Cells from the Grid and iterate through each one looking for a specific string. Each time it isn't found, the integer idx is increased by one. Once a match is made, idx will equal the index of the target column. Then you can use that integer to identify the column later: -```C# +````C# int verticalOffset = 0; // Holds the current vertical offset in the viewport int viewPortHeight; // The height of the visible part of the grid int extentHeight; // The total height of the grid, visible plus non-visible @@ -58,9 +58,7 @@ while (verticalOffset < extentHeight) verticalOffset += viewPortHeight; VirtualizingPanel.InvokeMethod("SetVerticalOffset", verticalOffset); } -``` - -```VB +````VB Dim verticalOffset As Integer = 0 @@ -103,7 +101,7 @@ While verticalOffset < extentHeight verticalOffset += viewPortHeight VirtualizingPanel.InvokeMethod("SetVerticalOffset", verticalOffset) End While -``` +```` diff --git a/docs/advanced-topics/coded-samples/silverlight/select-listbox-item-by-text.md b/docs/advanced-topics/coded-samples/silverlight/select-listbox-item-by-text.md index c5deaf0b..17a499c8 100644 --- a/docs/advanced-topics/coded-samples/silverlight/select-listbox-item-by-text.md +++ b/docs/advanced-topics/coded-samples/silverlight/select-listbox-item-by-text.md @@ -28,7 +28,7 @@ The solution is to use this approach in a **loop**: My sample Silverlight application to test contains this XAML code to render my listbox: -```XAML +````XAML @@ -90,11 +90,11 @@ My sample Silverlight application to test contains this XAML code to render my l -``` +```` To help make the code necessary to accomplish our search task more modular, let's define a function that takes a listbox, a string to search for and finds and returns the listbox item want. Here is that function: -```C# +````C# private static ListBoxItem FindListboxItemByText (string itemToFind, ListBox myLB) { @@ -129,12 +129,12 @@ private static ListBoxItem FindListboxItemByText // We scanned the entire list and didn't find the right item to select. return null; } -``` +```` We call this resusable function from a coded step like this: -```C# +````C# [CodedStep("Select a listbox item by text")] public void SelectListItemByTextCodedStep() { @@ -147,5 +147,5 @@ public void SelectListItemByTextCodedStep() Assert.IsNotNull(item, "\"" + itemToFind + "\" not found in the listbox."); item.User.Click(); } -``` +```` diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md b/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md index e91ccd52..cbb41859 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md @@ -12,7 +12,7 @@ I would like to add a color verificaiton for an element in a Silverlight applica The code below demonstrates this approach against this Telerik demo site. It gets the first item in the menu and verifies that its foreground color macthes pre-defined values: -```C# +````C# Manager.Settings.Web.EnableSilverlight = true; Manager.LaunchNewBrowser(); ActiveBrowser.NavigateTo("http://demos.telerik.com/silverlight/#TreeView/Performance"); @@ -44,9 +44,7 @@ else // If it's not a SolidColorBrush what is it? How do we handle it? throw new ApplicationException("Expecting a SolidColorBrush, but got a " + textblockBrush.GetType().ToString()); } -``` - -```VB +````VB Manager.Settings.Web.EnableSilverlight = True Manager.LaunchNewBrowser() ActiveBrowser.NavigateTo("http://demos.telerik.com/silverlight/#TreeView/Performance") @@ -78,7 +76,7 @@ If TypeOf textblockBrush Is SolidColorBrush Then Else Throw New ApplicationException("Expecting a SolidColorBrush, but got a " + textblockBrush.[GetType]().ToString()) End If -``` +```` diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md b/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md index d2814ae7..b93c730b 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md @@ -15,7 +15,7 @@ This is possible with a coded solution. The example below is against = 0); } } -``` - -```VB +````VB Dim app As SilverlightApp = ActiveBrowser.SilverlightApps()(0) Dim grid As DataGrid = app.Find.ByAutomationId(Of DataGrid)("dataGrid") @@ -70,6 +68,6 @@ For j As Integer = 0 To list.Count - 1 Assert.IsTrue(list(j + 1).CompareTo(list(j)) >= 0) End If Next -``` +```` diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md b/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md index 62d13016..14bbdbf5 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md @@ -14,13 +14,13 @@ The -``` +```` The application will show text as shown below. @@ -29,7 +29,7 @@ The application will show text as shown below. However in DOM Explorer all you see is this: -```XAML +````XAML @@ -53,11 +53,11 @@ However in DOM Explorer all you see is this: -``` +```` Notice that there's no text in the DOM view, even though it is specified in the XAML and displayed in the application. We have to use code to fetch the XAML that the RichTextBox holds as data, then parse out the text buried in it. Here's an example: -```C# +````C# // Fetch the XAML property of the RichTextBox string rtbContents = (string)Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(new AutomationProperty("Xaml", typeof(string))); @@ -73,9 +73,7 @@ foreach(XmlNode runNode in runNodes) { Log.WriteLine(runNode.Attributes["Text"].Value); } -``` - -```VB +````VB Dim rtbContents As String = DirectCast(Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(New AutomationProperty("Xaml", GetType(String))), String) Dim doc As XmlDocument = New System.Xml.XmlDocument() @@ -86,11 +84,11 @@ Dim runNodes As XmlNodeList = doc.GetElementsByTagName("Run") For Each runNode As XmlNode In runNodes Log.WriteLine(runNode.Attributes("Text").Value) Next -``` +```` Here's how to verify the text is bold: -```C# +````C# string rtbContents = (string)Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(new AutomationProperty("Xaml", typeof(string))); Log.WriteLine(rtbContents); @@ -106,9 +104,7 @@ Log.WriteLine(attr.Value); // Verify it is Bold Assert.AreEqual("Bold", attr.Value); -``` - -```VB +````VB Dim rtbContents As String = DirectCast(Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(New AutomationProperty("Xaml", GetType(String))), String) Log.WriteLine(rtbContents) @@ -124,6 +120,6 @@ Log.WriteLine(attr.Value) Assert.AreEqual(Of String)("Bold", attr.Value) -``` +```` [1]: /img/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox/fig1.png diff --git a/docs/advanced-topics/coded-samples/wpf/automate-clickonce-app.md b/docs/advanced-topics/coded-samples/wpf/automate-clickonce-app.md index 6ae8f7d6..1da1e8de 100644 --- a/docs/advanced-topics/coded-samples/wpf/automate-clickonce-app.md +++ b/docs/advanced-topics/coded-samples/wpf/automate-clickonce-app.md @@ -16,25 +16,25 @@ To automate a WPF application it is necessary to stand alone class file (*Utility*) which static property (*pathFile*) will be used to store the path to the latest app version: -```C# +````C# public class Utility { public static string pathFile = string.Empty; } -``` -```VB +```` +````VB Public Class Utility Public Shared pathFile As String = String.Empty End Class -``` +````
The following scenario assumes that the app is downloaded form a web destination, installed and ran from a browser. In such case the first test in the list will be a Web test that will complete the app installation part. At the end of the installation the latest app version will be up and running. This test have to end with a coded step that will save in a variable path to the new application as given below: -```C# +````C# // check if there is running process with same name var runningApp = System.Diagnostics.Process.GetProcesses().Where(p => p.ProcessName == "YourClickOnceWpfApp"); @@ -46,8 +46,8 @@ Log.WriteLine(proc.MainModule.FileName.ToString()); // save the full path to a common variable Utility.pathFile = proc.MainModule.FileName.ToString(); -``` -```VB +```` +````VB Dim runningApp = System.Diagnostics.Process.GetProcesses().Where(Function(p) p.ProcessName = "YourClickOnceWpfApp") @@ -57,14 +57,14 @@ Log.WriteLine(proc.MainModule.FileName.ToString()) Utility.pathFile = proc.MainModule.FileName.ToString() -``` +````
Next step is to create a WPF test that begins with a coded step and is configured to run a dummy WPF app. In the coded step the initially started mock app will be closed. Then depending on the latest version state (running/stoped) Test Studio will connect to or open it for next test steps execution: -```C# +````C# // Shut down "mock" app ActiveApplication.Quit(); @@ -81,8 +81,8 @@ else // or - launch new application Manager.LaunchNewApplication(Utility.pathFile); } -``` -```VB +```` +````VB ActiveApplication.Quit() @@ -98,7 +98,7 @@ Else End If -``` +````
diff --git a/docs/advanced-topics/coded-samples/wpf/connect-to-running-app.md b/docs/advanced-topics/coded-samples/wpf/connect-to-running-app.md index f1b403eb..56efd577 100644 --- a/docs/advanced-topics/coded-samples/wpf/connect-to-running-app.md +++ b/docs/advanced-topics/coded-samples/wpf/connect-to-running-app.md @@ -15,7 +15,7 @@ When you Quick Execute or execute a Test List, a new instance of the app launche To work around this limitation, create a mock application to feed to Test Studio. Then insert a coded step as the first step of the test. Use the following code which closes the mock application and connects to the desired application if it's running. If not, a new instance is launched. This solution is applicable for both Test Studio Standalone version and the Visual Studio plugin. -```C# +````C# ActiveApplication.Quit(); var runningApp = System.Diagnostics.Process.GetProcesses().Where(p => p.ProcessName == "WPFHelloWorld"); @@ -29,8 +29,8 @@ else } Manager.ActiveApplication.MainWindow.RefreshVisualTrees(); -``` -```VB +```` +````VB ActiveApplication.Quit() Dim runningApp = System.Diagnostics.Process.GetProcesses().Where(Function(p) p.ProcessName = "WPFHelloWorld") @@ -41,7 +41,7 @@ Else End If Manager.ActiveApplication.MainWindow.RefreshVisualTrees() -``` +```` diff --git a/docs/advanced-topics/coded-samples/wpf/go-through-grid-cells.md b/docs/advanced-topics/coded-samples/wpf/go-through-grid-cells.md index 3fb7eb94..a83c53fb 100644 --- a/docs/advanced-topics/coded-samples/wpf/go-through-grid-cells.md +++ b/docs/advanced-topics/coded-samples/wpf/go-through-grid-cells.md @@ -17,7 +17,11 @@ This is possible with a coded solution. Here's an example that goes through all >
> The application used to build the sample code is the official Telerik UI for WPF Controls Demo app. -```C# +> **Note** +>
+> The application used to build the sample code is the official Telerik UI for WPF Controls Demo app. + +````C# WpfApplication app = Manager.ActiveApplication; Assert.IsNotNull(app); @@ -38,8 +42,8 @@ foreach (Telerik.WebAii.Controls.Xaml.Wpf.GridViewRow gRow in grid.Rows) } rowCounter++; } -``` -```VB +```` +````VB Dim app As WpfApplication = Manager.ActiveApplication Assert.IsNotNull(app) @@ -58,7 +62,7 @@ For Each gRow As Telerik.WebAii.Controls.Xaml.Wpf.GridViewRow In grid.Rows Next rowCounter += 1 Next -``` +```` diff --git a/docs/advanced-topics/coded-samples/wpf/go-through-radtreeview.md b/docs/advanced-topics/coded-samples/wpf/go-through-radtreeview.md index ba123fbc..772e89dc 100644 --- a/docs/advanced-topics/coded-samples/wpf/go-through-radtreeview.md +++ b/docs/advanced-topics/coded-samples/wpf/go-through-radtreeview.md @@ -13,7 +13,7 @@ position: 3 This is possible with a coded solution. You'll expand each node and refresh the tree until you find your match. -```C# +````C# WpfApplication app = Manager.ActiveApplication; Assert.IsNotNull(app); Telerik.WebAii.Controls.Xaml.Wpf.RadTreeView tree = app.MainWindow.Find.ByName("treeView"); @@ -53,8 +53,8 @@ while (found == false) break; } } -``` -```VB +```` +````VB Dim app As WpfApplication = Manager.ActiveApplication Assert.IsNotNull(app) Dim tree As Telerik.WebAii.Controls.Xaml.Wpf.RadTreeView = app.MainWindow.Find.ByName(Of Telerik.WebAii.Controls.Xaml.Wpf.RadTreeView)("treeView") @@ -86,6 +86,6 @@ While found = False Exit While End If End While -``` +```` diff --git a/docs/advanced-topics/coded-samples/wpf/parameterize-wpf-app.md b/docs/advanced-topics/coded-samples/wpf/parameterize-wpf-app.md index f74aaa4d..815cc1af 100644 --- a/docs/advanced-topics/coded-samples/wpf/parameterize-wpf-app.md +++ b/docs/advanced-topics/coded-samples/wpf/parameterize-wpf-app.md @@ -25,7 +25,7 @@ To work around this limitation, create a mock application to feed to Test Studio Let's assume that the "real" application is in the following location: **C:\myapps\Go.exe**. Here's the code: -```C# +````C# //Shut down "mock" app ActiveApplication.Quit(); @@ -43,8 +43,8 @@ WpfApplication app = Manager.LaunchNewApplication(pinfo); //Check whether we connected successfully Assert.IsNotNull(app); -``` -```VB +```` +````VB ActiveApplication.Quit() @@ -58,15 +58,15 @@ Dim app As WpfApplication = Manager.LaunchNewApplication(pinfo) Assert.IsNotNull(app) -``` +```` You can extend this code to include parameterization for the app's location. You can use data binding, for instance. Let's say your test is bound to a data sheet with a column named "paths": -```C# +````C# var pinfo = new System.Diagnostics.ProcessStartInfo(Data["paths"]); -``` +```` Of course this is only one of the possible solutions you can implement. If you need to use additional assemblies, here is how to do that in the Standalone version. diff --git a/docs/automated-tests/data-drive-test/data-binding-in-code.md b/docs/automated-tests/data-drive-test/data-binding-in-code.md index 45d3bb74..1a9f6cb4 100644 --- a/docs/automated-tests/data-drive-test/data-binding-in-code.md +++ b/docs/automated-tests/data-drive-test/data-binding-in-code.md @@ -11,59 +11,49 @@ Test Studio allows you to insert any custom code in the tests - that includes th Given that, you may need to use the values from the data source in coded steps and this article describes how to access the data columns through code. -#### __[C#]__ - - {{region }} - +````C# //Reference a column by name Pages.Bing.SbFormQText.Text = Data["Numbers"].ToString(); //Reference a column by index (zero based) Pages.Bing.SbFormQText.Text = Data[0].ToString(); - - {{endregion}} - -#### __[VB]__ - - {{region }} - +```` +````VB 'Reference a column by name Pages.Bing.SbFormQText.Text = Data("Numbers").ToString() 'Reference a column by index (zero based) Pages.Bing.SbFormQText.Text = Data(0).ToString() +```` - {{endregion}} - - -```C# +````C# //Reference a column by name Pages.Bing.SbFormQText.Text = Data["Col1"].ToString(); //Reference a column by index (zero based) Pages.Bing.SbFormQText.Text = Data[0].ToString(); -``` -```VB +```` +````VB 'Reference a column by name Pages.Bing.SbFormQText.Text = Data("Col1").ToString() 'Reference a column by index (zero based) Pages.Bing.SbFormQText.Text = Data(0).ToString() -``` +```` This method can also be applied to a **Verification**: -```C# +````C# //Reference a column by name Assert.IsTrue(ActiveBrowser.ContainsText(Data["Col1"].ToString())); //Reference a column by index (zero based) Assert.IsTrue(ActiveBrowser.ContainsText(Data[0].ToString())); -``` -```VB +```` +````VB 'Reference a column by name Assert.IsTrue(ActiveBrowser.ContainsText(Data("Col1").ToString())) 'Reference a column by index (zero based) Assert.IsTrue(ActiveBrowser.ContainsText(Data(0).ToString())) -``` +```` diff --git a/docs/automated-tests/data-drive-test/data-driven-image-verification.md b/docs/automated-tests/data-drive-test/data-driven-image-verification.md index 6ad5ef87..9ba7afdd 100644 --- a/docs/automated-tests/data-drive-test/data-driven-image-verification.md +++ b/docs/automated-tests/data-drive-test/data-driven-image-verification.md @@ -14,7 +14,7 @@ To data bind an coded step as demonstrated below: -```C# +````C# // get an image of MyImage element System.Drawing.Bitmap bitmap = Pages.MyPage.MyImage.Capture(); @@ -39,8 +39,8 @@ double tolerance = 10D; // Assert statement ArtOfTest.Common.UnitTesting.Assert.IsTrue(tolerance >= compareValue); -``` -```VB +```` +````VB Dim bitmap As System.Drawing.Bitmap = Pages.MyPage.MyImage.Capture() @@ -59,7 +59,7 @@ Dim compareValue As Double = (histogram.Compare(histogramToCompare) * 100) Dim tolerance As Double = 10.0 ArtOfTest.Common.UnitTesting.Assert.IsTrue(tolerance >= compareValue) -``` +```` To complete this scenario using the provided sample: diff --git a/docs/automated-tests/desktop-testing/demo-desktop-test.md b/docs/automated-tests/desktop-testing/demo-desktop-test.md index 11e662a3..fbf05f00 100644 --- a/docs/automated-tests/desktop-testing/demo-desktop-test.md +++ b/docs/automated-tests/desktop-testing/demo-desktop-test.md @@ -57,15 +57,15 @@ Launch the Inspect tool and highlight the desired element to reveal its properti Make sure you have the following using statements included: -```C# +````C# using ArtOfTest.WebAii.DesktopAutomation; using ArtOfTest.WebAii.DesktopAutomation.Controls; using ArtOfTest.WebAii.DesktopAutomation.FindExpressions; -``` +```` By following the below code flow, users can automate the selection of a radio button within a Windows desktop application using the Test Studio Framework. -```C# +````C# //The code begins by obtaining the root element of the desktop using ‘DesktopElement.FromDesktopRoot()’. var desktop = DesktopElement.FromDesktopRoot(); @@ -84,7 +84,7 @@ By following the below code flow, users can automate the selection of a radio bu //Finally, the code selects the radio button: radioButton.Select(); -``` +```` ### DesktopInvokePattern Example @@ -92,7 +92,7 @@ Test Studio also provides support for invoking patterns on desktop applications. Here are the general steps to use the `DesktopInvokePattern` with the radio button from the above example. -```C# +````C# //Find the targer UI element var desktop = DesktopElement.FromDesktopRoot(); @@ -104,7 +104,7 @@ Here are the general steps to use the `DesktopInvokePattern` with the radio butt //Invoke the desired action invokePattern.Invoke(); -``` +```` ## Automation Properties diff --git a/docs/automated-tests/desktop-testing/desktop-app-user-model-id.md b/docs/automated-tests/desktop-testing/desktop-app-user-model-id.md index 1b638c4e..f158a7ce 100644 --- a/docs/automated-tests/desktop-testing/desktop-app-user-model-id.md +++ b/docs/automated-tests/desktop-testing/desktop-app-user-model-id.md @@ -20,7 +20,7 @@ The __Note__ diff --git a/docs/automated-tests/load/designing-load-tests/dynamic-targets-custom.md b/docs/automated-tests/load/designing-load-tests/dynamic-targets-custom.md index 25675eb2..7dd9d7c0 100644 --- a/docs/automated-tests/load/designing-load-tests/dynamic-targets-custom.md +++ b/docs/automated-tests/load/designing-load-tests/dynamic-targets-custom.md @@ -44,10 +44,10 @@ Once any custom targets are added to the user profile these will be displayed un __Example:__ The head section of a HTTP response's body is: -``` +```` Example ASP Scripts -``` +```` To get the actual title you may use __Starts after:__ \ and __Ends before:__ \ @@ -57,31 +57,31 @@ To get the actual title you may use __Starts after:__ \ and __Ends befor __Example:__ The cookie of a HTTP response is the following string and the requirement is to get the domain name value only: -``` +```` _EDGE_S=SID=04D5974D8509631807D39B2484BF62E4; path=/; httponly; domain=bing.com -``` +```` The only possible approach is to use the partial search using Regex. The standard regex for extracting the desired value looks like this: -``` +```` domain=(.*?)$ -``` +```` This returns the following match information: -``` +```` Full match 65-80 `domain=bing.com` Group 1. 72-80 `bing.com` -``` +```` Using that standard regular expression in Test Studio will return the _Full match_ instead the value in _Group 1_. Therefore Test Studio uses \ to express the first match group and the regular expression becomes: -``` +```` domain=(?.*?)$ -``` +```` - ___JSON___ - use JSONPath to locate the desired value in response. diff --git a/docs/automated-tests/load/designing-load-tests/dynamic-targets.md b/docs/automated-tests/load/designing-load-tests/dynamic-targets.md index 39e8b3ae..bf55bddc 100644 --- a/docs/automated-tests/load/designing-load-tests/dynamic-targets.md +++ b/docs/automated-tests/load/designing-load-tests/dynamic-targets.md @@ -91,10 +91,10 @@ __See Also:__ A sample scenario to cover with the help of custom dynamic targets __Example:__ The head section of a HTTP response's body is: -``` +```` Example ASP Scripts -``` +```` To get the actual title you may use __Starts after:__ \ and __Ends before:__ \ @@ -104,28 +104,28 @@ To get the actual title you may use __Starts after:__ \ and __Ends befor __Example:__ The cookie of a HTTP response is the following string and the requirement is to get the domain name value only: -``` +```` _EDGE_S=SID=04D5974D8509631807D39B2484BF62E4; path=/; httponly; domain=bing.com -``` +```` The only possible approach is to use the partial search using Regex. The standard regex for extracting the desired value looks like this: -``` +```` domain=(.*?)$ -``` +```` This returns the following match information: -``` +```` Full match 65-80 `domain=bing.com` Group 1. 72-80 `bing.com` -``` +```` Using that standard regular expression in Test Studio will return the _Full match_ instead the value in _Group 1_. Therefore Test Studio uses \ to express the first match group and the regular expression becomes: -``` +```` domain=(?.*?)$ -``` +```` - ___JSON___ - use JSONPath to locate the desired value in response. @@ -145,13 +145,13 @@ In some cases the dynamic parameter is built by a value from any previous HTTP r In Test Studio load module you can create such dynamic target using the available append options allowed in the Destination section's **Field Name** text box. All of these use the following template, where ___Prefix and Suffix are optional___: -``` +```` Query Parameter, Cookie, Header 'ParamName:Prefix{value}Suffix' URL 'Prefix{value}Suffix' -``` +```` > __Note!__ Keep in mind that **blank spaces in the *Field Name* text box are considered valid character** and thus are included in the final string. Therefore, leave intervals in the text only if these are expected. diff --git a/docs/automated-tests/troubleshooting/element-not-found.md b/docs/automated-tests/troubleshooting/element-not-found.md index 6c28deaf..0bbc4184 100644 --- a/docs/automated-tests/troubleshooting/element-not-found.md +++ b/docs/automated-tests/troubleshooting/element-not-found.md @@ -36,11 +36,11 @@ Upon e Looking at the step failure details and the images, we can clearly see the correct page is loaded, the element is there, but the test failed with the following failure reason: -``` +```` Attempting to find [Html] element using Find logic (Html): [id 'Exact' 1fe4125d-59c9-51c3-ba05-59d1e602d1dc] AND [tagname 'Exact' input] Unable to locate element. Search failed! -``` +```` ## Troubleshoot the 'Element Not Found' Error @@ -64,9 +64,9 @@ Click on __Update Filters__ button to replace the id in the find expression with The Test Studio find expression builder lists all attributes of the opened element and any of these can be added in the find expression. If we look closely at the _input_ element, we see its __name__ attribute is unique and, if it is used in the find expression instead of the __id__, finding the element in test runtime gets more robust. -```HTML +````HTML -``` +```` Remove the __id__ filter from the current find expression and add the __name__ filter instead. diff --git a/docs/automated-tests/troubleshooting/use-annotated-run.md b/docs/automated-tests/troubleshooting/use-annotated-run.md index 44ee9dc1..7535cbc0 100644 --- a/docs/automated-tests/troubleshooting/use-annotated-run.md +++ b/docs/automated-tests/troubleshooting/use-annotated-run.md @@ -28,13 +28,13 @@ Upon e The standard troubleshooting implies to refer the step failure details for more information and you can see the following failure message: -``` +```` Unable to locate element by Find Expression! Attempting to find [Html] element using Find logic (Html): [tagname 'Exact' span] AND [TextContent 'Exact' Impressive] Unable to locate element. Search failed! -``` +```` Based on this message, you find out that Test Studio is looking for a _span_ element with _Text Content_, which is exactly _Impressive_. As the find expression seems to be pointing to a specific element, Test Studio should not have a troubles to locate the element and this doesn't look as the reason for the failure. diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index 53ac93b4..7d02c90a 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -4,7 +4,7 @@ product-id: 846 product-name: Progress Test Studio product-url: https://www.telerik.com/teststudio search-engine-id: 001595215763381649090:ymztq4og6vc -cta-overview: "@ProductLink is a UI test automation platform that helps QA and Engineering teams build stable and easily maintainable automated tests. Sign up for a free 30-day trial!" +cta-overview: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" cta-intro: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" default-title-prefix: Telerik Test Studio avatar-path: ./images/avatar-ninja.svg diff --git a/docs/features/azure-dev-ops-mapper/azure-results-sync.md b/docs/features/azure-dev-ops-mapper/azure-results-sync.md index 08711da7..9aaf86e5 100644 --- a/docs/features/azure-dev-ops-mapper/azure-results-sync.md +++ b/docs/features/azure-dev-ops-mapper/azure-results-sync.md @@ -28,9 +28,9 @@ position: 3 # Local Machine Example -```cmd +````cmd "c:\Program Files (x86)\Progress\Test Studio\Bin\AzureResultsMapper\Telerik.TestStudio.AzureResultsSync.exe" url=https://dev.azure.com/my-org token= map="" aiiresult="" -``` +```` # Azure DevOps Example @@ -38,7 +38,7 @@ In the scenario of building a CI pipeline the test list run needs to be set thro Below is an example pipeline with only these two jobs: -```yml +````yml jobs: - job: Run and Upload Results steps: @@ -58,7 +58,7 @@ jobs: script: | "c:\Program Files (x86)\Progress\Test Studio\Bin\AzureResultsMapper\Telerik.TestStudio.AzureResultsSync.exe" url=https://dev.azure.com/prgs-devtools map=$(System.DefaultWorkingDirectory)\TestingProjects\HTMLProject\MapperPipeline\AzDoMap.tsazdo aiiresult=$(System.DefaultWorkingDirectory)\TestingProjects\HTMLProject\MapperPipeline\Results\myResult.aiiresult -``` +```` - The __'Run Test Studio tests'__ task executes a test list with the ArtOfTest.Runner.exe and stores the results in file named myResult.aiiresult. - The __'Upload results'__ task converts the Test Studio results from myResult.aiiresult file and uploads them as new Azure DevOps run. diff --git a/docs/features/data-driven-testing/add-data-source.md b/docs/features/data-driven-testing/add-data-source.md index 1bf581e6..6c38e47b 100644 --- a/docs/features/data-driven-testing/add-data-source.md +++ b/docs/features/data-driven-testing/add-data-source.md @@ -58,13 +58,13 @@ In the below section you can read how to prepare the XML file and add it to the XML files are type of documents that both humans and machines can read. The structure of the document is defined by tags and Test Studio uses these to define the data source values. Here is an example of a basic XML file with two columns: -```xml +````XML -``` +```` *Search* is the equivalent of an Excel Sheet. *UserName* and *Password* translate as the column names. diff --git a/docs/features/data-driven-testing/oracle-db-example.md b/docs/features/data-driven-testing/oracle-db-example.md index 149e046c..e900c47d 100644 --- a/docs/features/data-driven-testing/oracle-db-example.md +++ b/docs/features/data-driven-testing/oracle-db-example.md @@ -28,9 +28,9 @@ Once the table is created it is possible to connect to it and use it for data-dr 4.  Here's an example for **Connection String**: -``` +```` Data Source=XE;User Id=SYSTEM;Password=pass; -``` +```` It is possible to create many different connection strings. See here for more examples. diff --git a/docs/features/data-driven-testing/sql-database-example.md b/docs/features/data-driven-testing/sql-database-example.md index 1934d71a..133c958a 100644 --- a/docs/features/data-driven-testing/sql-database-example.md +++ b/docs/features/data-driven-testing/sql-database-example.md @@ -25,9 +25,9 @@ Now we can connect to it and use it for data-driven testing. 4.  Here's an example for **Connection String**: -``` +```` Data Source=MACHINENAME\SQLEXPRESS; Initial Catalog=myFirstDB; Integrated Security=true; -``` +```` - Data Source is the name of the SQL Server. - Initial Catalog is the named of the Database. diff --git a/docs/features/integration/bug-tracking/custom-plugin.md b/docs/features/integration/bug-tracking/custom-plugin.md index 687e342f..f2eeefc7 100644 --- a/docs/features/integration/bug-tracking/custom-plugin.md +++ b/docs/features/integration/bug-tracking/custom-plugin.md @@ -25,24 +25,24 @@ Test Studio uses its plugins model to run the Bug Trackers. The type of Bug Trac 3.  Add the following using statement to the class file: -```C# +````C# using ArtOfTest.WebAii.Design.Extensibility.BugTracking; -``` +```` 4.  The *ArtOfTest.WebAii.Design.Extensibility.BugTracking* namespace contains **IBugTracker** that the class needs to implement: -```C# +````C# namespace ClassLibrary1 { public class Class2 : IBugTracker { } } -``` +```` 5.  Right click on IBugTracker and select Implement Interface > Implement Interface. This displays all the methods and notifications exposed by Test Studio. Here are definitions for each IBugTracker member: -```C# +````C# namespace ClassLibrary1 { public class Class2 : IBugTracker @@ -119,7 +119,7 @@ namespace ClassLibrary1 #endregion } } -``` +```` 6.  Any implementation beyond this is specific to the actual Bug Tracking application you're using. @@ -151,7 +151,7 @@ The **IBugTrackerConnectionUI** interface exposes additional methods to further Create another class and implement the **IBugTrackerConnectionUI** interface. Here are the definitions for each **IBugTrackerConnectionUI** member: -```C# +````C# public class Class3 : IBugTrackerConnectionUI { #region IBugTrackerConnectionUI Members @@ -218,4 +218,4 @@ Create another class and implement the **IBugTrackerConnectionUI** interface. He #endregion } -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/features/integration/bug-tracking/jira-custom-fields.md b/docs/features/integration/bug-tracking/jira-custom-fields.md index e999eb14..52aef8be 100644 --- a/docs/features/integration/bug-tracking/jira-custom-fields.md +++ b/docs/features/integration/bug-tracking/jira-custom-fields.md @@ -18,12 +18,12 @@ In order to denote your required fields and what to fill them with, create a fil Open it with a text editor, like Notepad, and insert the following content: -```json +````JSON { "IssueTypeName": "Defect", "Fields" : {"assignee": {"name": "username" }, "labels": ["defect"],  "customfield_10401":{"required custom field": "value"}, "customfield_10402":{"another required custom field": "value"} } } -``` +```` In JIRA, custom fields are referenced by "customfield_" + the id of the custom field. In the above example there are two custom fields referrenced with their names and respective values. diff --git a/docs/features/integration/bug-tracking/tfs-custom-fields.md b/docs/features/integration/bug-tracking/tfs-custom-fields.md index de0a5da6..d6c048cc 100644 --- a/docs/features/integration/bug-tracking/tfs-custom-fields.md +++ b/docs/features/integration/bug-tracking/tfs-custom-fields.md @@ -33,7 +33,7 @@ Where *BugTrackingName* is the name of the required field and *NULL* is its curr 4.  Open it with a text editor, like Notepad, and insert the following content: -```xml +````XML BugNew1 @@ -44,7 +44,7 @@ Where *BugTrackingName* is the name of the required field and *NULL* is its curr -``` +```` 5.  Submit the bug once again through Test Studio. It should succeed: diff --git a/docs/features/test-runners/artoftest-runner.md b/docs/features/test-runners/artoftest-runner.md index 20253e02..102da390 100644 --- a/docs/features/test-runners/artoftest-runner.md +++ b/docs/features/test-runners/artoftest-runner.md @@ -52,20 +52,20 @@ The `test` option accepts full file path to an individual test with the **\*.tst - Run individual test stored in the project root folder: -```cmd +````cmd > "C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" test="D:\Test Studio Projects\July2024\demoTest-AOTRunner.tstest" -``` +```` ![Run individual test stored in the project root folder][5] - Run individual test stored in a sub-folder under the project root one: -```cmd +````cmd >"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" test="D:\Test Studio Projects\July2024\inProjectFolder\nestedDemoTest.tstest" root="D:\Test Studio Projects\July2024" -``` +```` ![Run individual test stored in a sub-folder under the project root one][4] @@ -83,10 +83,10 @@ The `list` option takes the full path to a test list file with the **\*.aiilist* - Run test list: -```cmd +````cmd >"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" list="D:\Test Studio Projects\July2024\TestLists\demoList-ArtOfTest.aiilist" -``` +```` ![Run test list][6] @@ -110,10 +110,10 @@ The `out` option defines an alternative folder to store the results to and takes - Run test list outputting the results in specified folder: -```cmd +````cmd >"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" list="D:\Test Studio Projects\July2024\TestLists\demoList-ArtOfTest.aiilist" out="D:\SharedFolder" -``` +```` ![Run test list outputting the results in specified folder][7] @@ -125,11 +125,11 @@ The `result` sets specific name for the default result file and takes a file nam - Run test list outputting the results in specified folder and setting custom name for the result file: -```cmd +````cmd >"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" list="D:\Test Studio Projects\July2024\TestLists\demoList-ArtOfTest.aiilist" out="D:\SharedFolder" result="customName" -``` +```` ![Run test list outputting the results in specified folder with custom name][8] @@ -145,7 +145,7 @@ Use either the `xml`, or the `html` option to output the result into the corresp - Run test list outputting the results in xml format: -```cmd +````cmd >"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" list="D:\Test Studio Projects\July2024\TestLists\demoList-ArtOfTest.aiilist" xml @@ -155,12 +155,12 @@ xml - Run test list outputting the results in html format in specified folder and setting custom name for the result files: -```cmd +````cmd >"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" list="D:\Test Studio Projects\July2024\TestLists\demoList-ArtOfTest.aiilist" out="D:\SharedFolder" result="customName" html -``` +```` ![Run test list outputting the results in html format in specified folder with custom name][10] @@ -176,23 +176,23 @@ Use the `junit` or `junitstep` options to output the result into a `junit(step). - Run test list outputting the results in junitstep format in specified folder and setting custom name for the result files: -```cmd +````cmd >"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" list="D:\Test Studio Projects\July2024\TestLists\demoList-ArtOfTest.aiilist" out="D:\SharedFolder" result="customName" junitstep -``` +```` ![Run test list outputting the results in junitstep format in specified folder with custom name][11] - Run single test outputting the results in junit format: -```cmd +````cmd >>"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" test="D:\elle\Test Studio Projects\July2024\demoTest-AOTRunner.tstest" junit -``` +```` ![Run single test outputting the results in junit format][12] @@ -214,7 +214,7 @@ The `settings` option takes the full path to a JSON file containing custom setti Below is an example of a complete JSON setting file that contains all of Telerik's test/test list run configuration settings. -```JSON +````JSON { "Settings": { "__type": "ArtOfTest.WebAii.Core.Settings", @@ -307,7 +307,7 @@ Below is an example of a complete JSON setting file that contains all of Telerik "PropertyBag": null } -``` +```` > __Tip__ >
diff --git a/docs/knowledge-base/best-practices-kb/regular-vs-coded-step.md b/docs/knowledge-base/best-practices-kb/regular-vs-coded-step.md index d86394f1..63273c08 100644 --- a/docs/knowledge-base/best-practices-kb/regular-vs-coded-step.md +++ b/docs/knowledge-base/best-practices-kb/regular-vs-coded-step.md @@ -10,9 +10,9 @@ position: 1 Test Studio is designed to keep coding to a minimum. Test Studio will automatically generate for you steps that correspond to lengthy code blocks. Let's look at a simple example. Let's say you need to verify that the *alt* property of the logo on the Wikipedia main page matches the text WikipediA. This is added quickly and easily in Test Studio and a single regular step is generated. If you convert this step to code, however, it will look like this: -```C# +````C# Pages.Wikipedia.WikipediAImage.AssertAttribute().Value("alt", ArtOfTest.Common.StringCompareType.Contains, "WikipediA"); -``` +```` Regular and coded steps visible here: @@ -20,17 +20,17 @@ Regular and coded steps visible here: The single line of code might seem easy to write. However the following element: -```C# +````C# Pages.Wikipedia.WikipediAImage -``` +```` is actually a variable that represents Find Logic generated by Test Studio. So in this case here's the code that would replace the step without using anything generated by Test Studio: -```C# +````C# HtmlImage logo = Find.ByExpression(@"src=//upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Wikipedia_wordmark.svg/174px-Wikipedia_wordmark.svg.png"); logo.AssertAttribute().Value("alt", ArtOfTest.Common.StringCompareType.Contains, "WikipediA"); -``` +```` The first part of this code is Find Logic. This is one of the challenging aspects of of UI automation and a lot of the times you'll be unable to find a good way to identify an element. Particularly when no ID (HTML) or Automation ID (Silverlight) has been implemented. Test Studio will do that for you, saving you a lot of work and improving the reliability of your test. Additionally, Test Studio allows you to control and change the Find Logic as seen here and here. diff --git a/docs/knowledge-base/project-configuration-kb/register-certificate.md b/docs/knowledge-base/project-configuration-kb/register-certificate.md index 4fae85df..e715b3cc 100644 --- a/docs/knowledge-base/project-configuration-kb/register-certificate.md +++ b/docs/knowledge-base/project-configuration-kb/register-certificate.md @@ -46,9 +46,9 @@ Without a full version of Test Studio installed, there is no GUI to register the Open a command prompt and change the working directory to the Test Studio installation folder `C:\Program Files (x86)\Progress\Test Studio\Bin`. Then enter the following command: -``` +```` ArtOfTest.WebAii.HttpProxy.exe InstallCertificate -``` +```` diff --git a/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md b/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md index 46dc0ec8..2fa97bb7 100644 --- a/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md +++ b/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md @@ -26,12 +26,12 @@ An alternative is to use your own trusted certificates. Use the following commands to issue the Custom Authority certificate: 1. Enter the following command in the console: -```openssl genrsa -aes256 -out ts-CA-key.pem -passout pass:"1234" 2048``` +````openssl genrsa -aes256 -out ts-CA-key.pem -passout pass:"1234" 2048``` where you need to replace _1234_ with a suitable password. 2. Enter the following command in the console: -```openssl req -passin pass:"1234" -x509 -sha256 -new -nodes -key ts-CA-key.pem -days 3650 -out ts-CA-cert.pem``` +````openssl req -passin pass:"1234" -x509 -sha256 -new -nodes -key ts-CA-key.pem -days 3650 -out ts-CA-cert.pem``` where you need to add the information for which you get prompted. This includes `Common Name` and for the purpose of this example we use __Test Studio CA__ as Common Name @@ -40,12 +40,12 @@ where you need to add the information for which you get prompted. This includes Follow the steps below: 1. Enter the following command in the console: -```openssl genrsa -aes256 -out ts-server.key -passout pass:"1234" 2048``` +````openssl genrsa -aes256 -out ts-server.key -passout pass:"1234" 2048``` where you need to replace _1234_ with a suitable password. 2. Enter the following command in the console: -```openssl req -passin pass:"1234" -new -key ts-server.key -out ts-server.csr``` +````openssl req -passin pass:"1234" -new -key ts-server.key -out ts-server.csr``` where you need add the information for which you get prompted. This includes `Common Name` and we recommend using the proxy machine domain name. For the purpose of this example we use __ProxyMachineName__ as Common Name. @@ -66,19 +66,19 @@ where you need add the information for which you get prompted. This includes `Co where DNS.0 and DNS.1 hold the machine host name and the full qualified domain name for the machine which hosts the proxy server. IP.0 is the IP address of the proxy server machine in the network from which it will be accessed remotely. 4. Enter the following command in the console: -```openssl x509 -passin pass:"1234" -req -in ts-server.csr -CA ts-CA-cert.pem -CAkey ts-CA-key.pem -CAcreateserial -out ts-server.crt -days 1825 -sha256 -extfile ts-server.ext``` +````openssl x509 -passin pass:"1234" -req -in ts-server.csr -CA ts-CA-cert.pem -CAkey ts-CA-key.pem -CAcreateserial -out ts-server.crt -days 1825 -sha256 -extfile ts-server.ext``` 5. Create a _ts-server.pass_ file which contains the pass phrase for _ts-server.key_. This is _1234_ for this example. ### Create Client Certificate 1. Enter the following command in the console: -```openssl genrsa -aes256 -out ts-client.key -passout pass:"1234" 2048``` +````openssl genrsa -aes256 -out ts-client.key -passout pass:"1234" 2048``` where you need to replace _1234_ with a suitable password. 2. Enter the following command in the console: -```openssl req -passin pass:"1234" -new -key ts-client.key -out ts-client.csr``` +````openssl req -passin pass:"1234" -new -key ts-client.key -out ts-client.csr``` where you need add the information for which you get prompted. This includes `Common Name` and we recommend using the machine domain name. For the purpose of this example we use __ProxyMachineName__ as Common Name. @@ -102,13 +102,13 @@ where you need add the information for which you get prompted. This includes `Co where DNS.0 and DNS.1 hold the machine host name and the full qualified domain name for the machine which hosts the proxy server. IP.0 is the IP address of the proxy server machine in the network from which it will be accessed remotely. 4. Enter the following command in the console: -```openssl x509 -passin pass:"1234" -req -in ts-client.csr -CA ts-CA-cert.pem -CAkey ts-CA-key.pem -CAcreateserial -out ts-client.crt -days 1825 -sha256 -extfile ts-client.ext``` +````openssl x509 -passin pass:"1234" -req -in ts-client.csr -CA ts-CA-cert.pem -CAkey ts-CA-key.pem -CAcreateserial -out ts-client.crt -days 1825 -sha256 -extfile ts-client.ext``` 5. Enter the following command in the console: -```cat ts-client.key ts-client.crt ts-CA-cert.pem > ts-client.pem``` +````cat ts-client.key ts-client.crt ts-CA-cert.pem > ts-client.pem``` 6. Enter the following command in the console: -```openssl pkcs12 -passin pass:"1234" -export -out ts-client.pfx -inkey ts-client.key -in ts-client.pem -certfile ts-CA-cert.pem -passout pass:"1234"``` +````openssl pkcs12 -passin pass:"1234" -export -out ts-client.pfx -inkey ts-client.key -in ts-client.pem -certfile ts-CA-cert.pem -passout pass:"1234"``` where you need to replace _1234_ with a suitable password. diff --git a/docs/knowledge-base/scheduling-kb/locked-machine.md b/docs/knowledge-base/scheduling-kb/locked-machine.md index f3487002..bb18b191 100644 --- a/docs/knowledge-base/scheduling-kb/locked-machine.md +++ b/docs/knowledge-base/scheduling-kb/locked-machine.md @@ -11,17 +11,17 @@ position: 3 When I disconnect from and/or lock the machine that acts as my Execution Server, no scheduled tests are executed. This includes Remote Desktop Sessions that are minimized or closed. The following error may appear for tests with dialog handling steps or type and click steps, which are using `SimulateRealTyping` or `SimulateRealClick` properties enabled: -``` +```` UnsupportedNonInteractiveOperationException(additional information about the exception) -``` +```` or -``` +```` SendInput: Failed. Win32Error: InnerException: System.ComponentModel.Win32Exception (0x80004005): SendInput: Failed. Win32Error: -``` +```` Is it possible for tests to execute normally without requiring my account to always be logged in on that machine? diff --git a/docs/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0.md b/docs/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0.md index 8dfae411..8de23011 100644 --- a/docs/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0.md +++ b/docs/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0.md @@ -22,9 +22,9 @@ What we found working quite well for us is to back up your existing database and Start a Command Prompt as Administrator and change the directory to the bin/ folder in the 3.x MongoDB installation directory. Run the following command: -``` +```` mongodump --db TSStorageData -``` +```` The result is a dump/ folder where the command is run, which contains the dump of the TSStorageData database. @@ -38,9 +38,9 @@ Open the Windows services and manually stop the MongoDB service. Start a Command Prompt as Administrator and type the following command: -``` +```` sc delete MongoDB -``` +```` ![Delete Service][2] @@ -64,9 +64,9 @@ The MongoDB service can now be started. The most convenient way to start it is t Once the installation of MongoDB 4.x is finished and the service is running, you can restore the - database. Copy the *dump* folder, created in point 1., from the MongoDB 3.x *bin* folder to the *bin* in installation folder of the 4.x MongoDB server. Start a Command Prompt as Administrator and change the directory to the *bin* folder under the 4.x MongoDB installation, run the following command: -``` +```` Mongorestore dump/ -``` +```` [1]: /img/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0/fig1.png [2]: /img/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0/fig2.png diff --git a/docs/knowledge-base/test-automation-kb/fail-test-programmatically.md b/docs/knowledge-base/test-automation-kb/fail-test-programmatically.md index 46da4bee..9a9fe4f6 100644 --- a/docs/knowledge-base/test-automation-kb/fail-test-programmatically.md +++ b/docs/knowledge-base/test-automation-kb/fail-test-programmatically.md @@ -20,7 +20,7 @@ You can change the result from specific step or the entire test programmatically 3.  Find a specific condition, which will be used to evaluate the state of the application and whether the step or test should be marked as failed. -```C# +````C# namespace DemoProj { @@ -49,4 +49,4 @@ namespace DemoProj } } } -``` +```` diff --git a/docs/knowledge-base/test-automation-kb/get-set-position-radslider-wpf.md b/docs/knowledge-base/test-automation-kb/get-set-position-radslider-wpf.md index b5e12198..477b48dc 100644 --- a/docs/knowledge-base/test-automation-kb/get-set-position-radslider-wpf.md +++ b/docs/knowledge-base/test-automation-kb/get-set-position-radslider-wpf.md @@ -16,38 +16,38 @@ In the case when there is no explicitly defined slider thumb, you can use the Va Let's say that in the application under test there is a slider defined like this: -```XAML +````XAML -``` +```` Use following Test Studio code to get/set the position of the slider in the application under test. -```C# +````C# // Read value var sliderValue = Applications...MySlider.Find.ByType().Value; // Change value Applications...MySlider.Find.ByType().Value = 20; -``` +```` In the case when there is an explicitly defined slider thumb, you will have to use that thumb's Value property to change the position of the slider. Let's say that in the application under test there is a slider defined like this: -```XAML +````XAML -``` +```` Use following Test Studio code to get/set the possition of the slider in the application under test. -```C# +````C# // Read value var sliderValue = Applications...MySlider.Find.ByType().Value; // Change value Applications...MySlider.Find.ByType().Value = 20; -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/knowledge-base/test-automation-kb/read-wpf-automation-properties.md b/docs/knowledge-base/test-automation-kb/read-wpf-automation-properties.md index dc4122f5..c1d189bf 100644 --- a/docs/knowledge-base/test-automation-kb/read-wpf-automation-properties.md +++ b/docs/knowledge-base/test-automation-kb/read-wpf-automation-properties.md @@ -15,9 +15,9 @@ How to read WPF `AutomationProperties` in Test Studio. Automation properties are defined as a set of an attached properties of a WPF element, so you can read them using `GetAttachedProperty` method. Here's an example of how to read the `ItemStatus` property: -```C# +````C# var itemStatus = .GetAttachedProperty("System.Windows.Automation.AutomationProperties", "ItemStatus"); -``` +```` > __Note__ > The code above will work only when automation property values are set in the XAML of your WPF application. diff --git a/docs/knowledge-base/test-automation-kb/security-certificates.md b/docs/knowledge-base/test-automation-kb/security-certificates.md index c8c1ec4a..13a8cc72 100644 --- a/docs/knowledge-base/test-automation-kb/security-certificates.md +++ b/docs/knowledge-base/test-automation-kb/security-certificates.md @@ -37,19 +37,19 @@ There are a few workarounds to consider: 4. Add a Coded Step. The code will perform different actions (such as mouse clicks and/or key presses) based on which browser is used. This will handle the different Certificate screens you encounter across browsers. Here's an example for Chrome: -```C# +````C# if (ActiveBrowser.BrowserType == BrowserType.Chrome) { Manager.Desktop.KeyBoard.KeyPress(System.Windows.Forms.Keys.Tab); Manager.Desktop.KeyBoard.KeyPress(System.Windows.Forms.Keys.Space); } -``` -```VB +```` +````VB If ActiveBrowser.BrowserType = BrowserType.Chrome Then Manager.Desktop.KeyBoard.KeyPress(System.Windows.Forms.Keys.Tab) Manager.Desktop.KeyBoard.KeyPress(System.Windows.Forms.Keys.Space) End If -``` +```` [1]: /img/knowledge-base/test-automation-kb/security-certificates/fig1.png [2]: /img/knowledge-base/test-automation-kb/security-certificates/fig2.png diff --git a/docs/knowledge-base/test-execution-kb/run-api-test-in-web-test.md b/docs/knowledge-base/test-execution-kb/run-api-test-in-web-test.md index 249e9164..7c15aecb 100644 --- a/docs/knowledge-base/test-execution-kb/run-api-test-in-web-test.md +++ b/docs/knowledge-base/test-execution-kb/run-api-test-in-web-test.md @@ -27,7 +27,7 @@ The code will wait for the end of the API test execution. After the process ends Hint: in a default installation, the path to the executable Telerik.ApiTesting.Runner.exe is: "C:\Program Files (x86)\Progress\Test Studio\Bin\ApiTesting\runnerconsole\Telerik.ApiTesting.Runner.exe" -```C# +````C# // Have to include the references: using System.Diagnostics; @@ -57,8 +57,8 @@ Hint: in a default installation, the path to the executable Telerik.ApiTesting.R Assert.AreEqual(exitCode, 0); } -``` -```VB +```` +````VB Imports System.Diagnostics @@ -81,7 +81,7 @@ Hint: in a default installation, the path to the executable Telerik.ApiTesting.R End Sub -``` +```` ## Advanced: Passing a Variable from an API Test to a Web Test @@ -110,7 +110,7 @@ To achieve that you can: - Add another coded step after that, that will read the .variables file for your test and extract the desired variable: -```C# +````C# // Have to include the references: using System.IO; @@ -139,8 +139,8 @@ To achieve that you can: SetExtractedValue("extractedEmail", email); } -``` -```VB +```` +````VB Imports System.IO Imports Newtonsoft.Json.Linq @@ -163,7 +163,7 @@ To achieve that you can: End Sub -``` +```` Note: .variables files contain text in json format. An easy way to extract a particular value from them is if you parse the file using [Json.NET](http://www.newtonsoft.com/json). Test Studio already uses Json.NET so its .dll file (Newtonsoft.Json.dll) is available in the Bin folder of the Test Studio installation folder. In order to add `using Newtonsoft.Json.Linq;` to your coded step, you need to add an assembly reference to Newtonsoft.Json.dll as described [here](http://docs.telerik.com/teststudio/features/coded-steps/add-assembly-reference) diff --git a/docs/knowledge-base/test-execution-kb/run-mobile-test-in-web-test.md b/docs/knowledge-base/test-execution-kb/run-mobile-test-in-web-test.md index 47848c52..f97a89c5 100644 --- a/docs/knowledge-base/test-execution-kb/run-mobile-test-in-web-test.md +++ b/docs/knowledge-base/test-execution-kb/run-mobile-test-in-web-test.md @@ -23,7 +23,7 @@ The code will wait for the end of the mobile test execution. After the process e Detailed results of the mobile test execution will be present in the mobile project folder (*Results* sub-folder), where the mobile test is located. -```C# +````C# // Need to include the references: using System.IO; using System.Diagnostics; @@ -52,8 +52,8 @@ public void Run_Mobile_Test_CodedStep() // check if this test step pass or fail. If return 0 - process complete normally, else - process fould. Assert.AreEqual(exitCode, 0); } -``` -```VB +```` +````VB Imports System.IO Imports System.Diagnostics @@ -76,4 +76,4 @@ Public Sub Run_Mobile_Test_CodedStep() Assert.AreEqual(exitCode, 0) End Sub -``` +```` diff --git a/docs/knowledge-base/test-execution-kb/run-web-test-in-other-test.md b/docs/knowledge-base/test-execution-kb/run-web-test-in-other-test.md index 3b2b1c39..719a991a 100644 --- a/docs/knowledge-base/test-execution-kb/run-web-test-in-other-test.md +++ b/docs/knowledge-base/test-execution-kb/run-web-test-in-other-test.md @@ -11,7 +11,7 @@ This scenario makes sense for example when there is a web test or test list loca To run an external test it has to be in a coded step. There a separate system process has to be started. The following code will run the ArtOfTest.Runner.exe with argument - a test list containing single or multiple tests to be executed. All possible arguments are listed in this article. -```C# +````C# // references to the project using System.IO; @@ -42,8 +42,8 @@ public void Run_Web_Test_CodedStep() Assert.AreEqual(exitCode, 0); } -``` -```VB +```` +````VB Imports System.IO Imports System.Diagnostics @@ -67,4 +67,4 @@ Imports System.Diagnostics End Sub -``` +```` diff --git a/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md b/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md index 6e0606c4..47c732c9 100644 --- a/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md +++ b/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md @@ -10,7 +10,7 @@ position: 1 In some automation scenarios it is necessary to limit a single test execution to a certain time frame. That is possible if the following approach is used. In an execution extension library is set timer that is re-set each time the new test starts. If the time expired before the timer is re-set - all processes related to test execution are killed. This will ensure if a test takes more than initially defined time interval to stop its execution and continue with the next test. Below is given sample execution extension library with time frame set to 5 minutes. -```C# +````C# public class ExecutionTimeout : IExecutionExtension { @@ -100,9 +100,7 @@ public class ExecutionTimeout : IExecutionExtension } } } -``` - -```VB +````VB Public Class ExecutionTimeout Implements IExecutionExtension @@ -179,4 +177,4 @@ Public Class ExecutionTimeout End Sub End Class -``` +```` diff --git a/docs/knowledge-base/test-execution-kb/troubleshoot-execute-command-failed-error-telerik-test-studio.md b/docs/knowledge-base/test-execution-kb/troubleshoot-execute-command-failed-error-telerik-test-studio.md index f2de9e44..858abfcb 100644 --- a/docs/knowledge-base/test-execution-kb/troubleshoot-execute-command-failed-error-telerik-test-studio.md +++ b/docs/knowledge-base/test-execution-kb/troubleshoot-execute-command-failed-error-telerik-test-studio.md @@ -11,9 +11,9 @@ tags: troubleshooting, executecommand error, client error, protocol error, runti I get the following error when executing an automation script in Telerik Test Studio: -``` +```` 'ExecuteCommand failed! InError set by the client. Client Error: Protocol error (Runtime.evaluate): Promise was collected BrowserCommand' -``` +```` The error occurs on a click step. Although the button is clicked and the action is performed as expected, the step fails. diff --git a/docs/knowledge-base/test-execution-kb/troubleshooting-error-cs0246-telerik-test-studio.md b/docs/knowledge-base/test-execution-kb/troubleshooting-error-cs0246-telerik-test-studio.md index 1a425881..f406294d 100644 --- a/docs/knowledge-base/test-execution-kb/troubleshooting-error-cs0246-telerik-test-studio.md +++ b/docs/knowledge-base/test-execution-kb/troubleshooting-error-cs0246-telerik-test-studio.md @@ -10,13 +10,13 @@ res_type: kb ## Description When trying to compile Test Studio project I get error CS0246. The error prevents me running a test list remotely or locally. The error persists even when I try to run a single test using the Execute button. -``` +```` [ Compiler ] 12:14:49 'ERROR' > C:\Test Studio Projects\TestProject27\getBaseUrl.tstest.cs(39,16) : error CS0246: The type or namespace name 'Pages' could not be found (are you missing a using directive or an assembly reference?) 12:14:49 'ERROR' > C:\Test Studio Projects\TestProject27\getBaseUrl.tstest.cs(32,17) : error CS0246: The type or namespace name 'Pages' could not be found (are you missing a using directive or an assembly reference?) 12:14:49 'INFO' > Build Failed -``` +```` ## Solution To resolve this compilation CS0246 error, follow these steps: diff --git a/docs/knowledge-base/test-execution-kb/troubleshooting-test-failure-downloading-excel-file-test-studio.md b/docs/knowledge-base/test-execution-kb/troubleshooting-test-failure-downloading-excel-file-test-studio.md index a679a19b..218f500f 100644 --- a/docs/knowledge-base/test-execution-kb/troubleshooting-test-failure-downloading-excel-file-test-studio.md +++ b/docs/knowledge-base/test-execution-kb/troubleshooting-test-failure-downloading-excel-file-test-studio.md @@ -12,7 +12,7 @@ res_type: kb Executing a test in Test Studio that includes a step to download a file, the test fails with the following error: -``` +```` Failure detected during execution. Details: ------------------------------------------------------------ System.ArgumentException: Open or Run downloaded file is not supported for ChromeHeadless. @@ -24,7 +24,7 @@ System.ArgumentException: Open or Run downloaded file is not supported for Chrom at ArtOfTest.WebAii.Design.Execution.ExecutionEngine.InternalExecuteTestIteration(Object codeBehindInstance, Boolean isDataDriven) at ArtOfTest.WebAii.Design.Execution.ExecutionEngine.InternalExecuteTest(Test test, TestResult initializationResult) at ArtOfTest.WebAii.Design.Execution.TestExecuteProxy.ExecuteTest(ExecuteTestCommand command) -``` +```` The error occurs when running the test with the regular Chrome browser, not just the headless version. Running the test in Edge and Firefox behaves the same way and fails with the same error. diff --git a/docs/knowledge-base/verification-kb/disabled-attribute-html.md b/docs/knowledge-base/verification-kb/disabled-attribute-html.md index 148f3630..2c6b00a1 100644 --- a/docs/knowledge-base/verification-kb/disabled-attribute-html.md +++ b/docs/knowledge-base/verification-kb/disabled-attribute-html.md @@ -39,21 +39,21 @@ There are two ways to do that: 1.  Write the Find Logic yourself in code. Use this approach if you are using Telerik Testing Framework only. You can insert this logic in the same coded step that does the disabled verification. -```C# +````C# Element e = Find.ByExpression("id=myInput"); -``` +```` 2.  Add the element to your Project Elements, then reference it from that source. Use this approach if you are using Test Studio Standalone version or the Visual Studio plugin. -```C# +````C# HtmlInputText e = Pages.TryitEditorV14.FrameView.LnameText; -``` +```` 3.  Once you have your Element e, here is the verification in code: -```C# +````C# Assert.IsTrue(e.ToString().Contains("disabled")); -``` +```` [1]: /img/knowledge-base/verification-kb/disabled-attribute-html/fig1.png [2]: /img/knowledge-base/verification-kb/disabled-attribute-html/fig2.png diff --git a/docs/knowledge-base/verification-kb/verify-html-tool-tips.md b/docs/knowledge-base/verification-kb/verify-html-tool-tips.md index a7a2ece5..47c290b6 100644 --- a/docs/knowledge-base/verification-kb/verify-html-tool-tips.md +++ b/docs/knowledge-base/verification-kb/verify-html-tool-tips.md @@ -8,9 +8,9 @@ position: 1 There's more than one way to implement Tool-tips in HTML. They are usually implemented using the Title attribute that gets applied to elements. Consider this HTML code snippet: -```HTML +````HTML

Test Studio, made by Telerik, is a quantum leap forward in Web test automation.

-``` +```` When you hover your mouse over the word Telerik, the tooltip will be displayed as shown in this screenshot: @@ -36,9 +36,9 @@ When you hover your mouse over the word Telerik, the tooltip will be displayed a 2.  Write the code as follows: -```C# +````C# Find.ByName("myHtmlSpan").AssertAttribute().Value("title", ArtOfTest.Common.StringCompareType.Same, "Telerik is a leading vendor of development, team productivity, and automated testing tools."); -``` +```` Now when you execute your test it will verify that the Title attribute, i.e. the tool-tip, of your HTML element contains the correct text. diff --git a/docs/testing-framework/automate-browser-actions.md b/docs/testing-framework/automate-browser-actions.md index f1ce9e54..6af45858 100644 --- a/docs/testing-framework/automate-browser-actions.md +++ b/docs/testing-framework/automate-browser-actions.md @@ -17,7 +17,7 @@ Telerik Testing Framework supports three types of automation actions: The code sample below demonstrates browser control and direct DOM actions. -```C# +````C# // *** Browser control below // Some test cases may require that all cookies be cleared ahead of time. @@ -98,8 +98,8 @@ ActiveBrowser.Actions.SelectDropDown(selection, "test", true); // the currently selected text should be the dropdown selection string textSelected = ActiveBrowser.GetSelectedText(); Assert.AreEqual("test", textSelected, "Actual test is \"{0}\"", textSelected); -``` -```VB +```` +````VB ActiveBrowser.NavigateTo("http://www.google.com") @@ -172,7 +172,7 @@ Actions.SelectDropDown(selection, 2) Dim textSelected As String = ActiveBrowser.GetSelectedText() Assert.AreEqual("test", textSelected, "Actual test is ""{0}""", textSelected) -``` +```` Let's look at some pure UI automation to simulate some of the DOM actions above. Before we look at the sample code, there are few things to note regarding pure UI automation using Telerik Testing Framework: @@ -184,7 +184,7 @@ Let's look at some pure UI automation to simulate some of the DOM actions above. The code below shows how to set the text for the 'input1' text box using pure UI automation: -```C# +````C# ActiveBrowser.Actions.ScrollToVisible(input1); //The ScrollToVisible method could set an element to the top or the bottom of the page @@ -194,12 +194,12 @@ input1.ScrollToVisible(ArtOfTest.WebAii.Core.ScrollToVisibleType.ElementTopAtWin Manager.Desktop.Mouse.Click(MouseClickType.LeftClick, input1.GetRectangle()); Manager.Desktop.KeyBoard.TypeText("Hello there", 100); -``` -```VB +```` +````VB ActiveBrowser.Actions.ScrollToVisible(input1) Manager.Desktop.Mouse.Click(MouseClickType.LeftClick, input1.GetRectangle()) Manager.Desktop.KeyBoard.TypeText("Hello there", 100) -``` +```` ## Advanced Scenarios @@ -213,7 +213,7 @@ For example, if you are attempting to click the red (x) on this window to drag i You would write something like this: -```C# +````C# // get the window element we are trying to drag. Element mywindow = ActiveBrowser.Find.ByName("mydraggablewindow"); @@ -224,8 +224,8 @@ Element mydestination = ActiveBrowser.Find.ById("mydestinationlocation"); // from the top center edge) and dragging it to the center of the destination location. Manager.Desktop.Mouse.DragDrop(mywindow.GetRectangle(), new System.Drawing.Point(0, 2), OffsetReference.TopCenter, mydestination.GetRectangle(), new System.Drawing.Point(0, 0), OffsetReference.AbsoluteCenter); -``` -```VB +```` +````VB ' get the window element we are trying to drag. Dim mywindow As Element = ActiveBrowser.Find.ByName("mydraggablewindow") @@ -236,6 +236,6 @@ Dim mydestination As Element = ActiveBrowser.Find.ById("mydestinationlocation") ' from the top center edge) and dragging it to the center of the destination location. Manager.Desktop.Mouse.DragDrop(mywindow.GetRectangle(), New Drawing.Point(0, 2), OffsetReference.TopCenter, _ mydestination.GetRectangle(), New Drawing.Point(0, 0), OffsetReference.AbsoluteCenter) -``` +```` [1]: /img/testing-framework/automate-browser-actions/fig1.jpg \ No newline at end of file diff --git a/docs/testing-framework/frequently-asked-questions.md b/docs/testing-framework/frequently-asked-questions.md index 6e1404ff..eb62aa68 100644 --- a/docs/testing-framework/frequently-asked-questions.md +++ b/docs/testing-framework/frequently-asked-questions.md @@ -68,7 +68,7 @@ System.Configuration.ConfigurationErrorsException: System.Configuration.Configur *There is a significant difference between TextContent and InnerText. TextContent is only the text at the same level as the node. InnerText is the combined text from the current node and everything below it. The text you are seeing in the browser window is probably contained within another element, such as a element. Studying an HTML example will help make this clear:* -```HTML +````HTML
@@ -65,7 +65,7 @@ Element e = Find.ById("input1"); ``` // Find element with name=goButton Element e = Find.ByName("goButton") -``` +```` @@ -73,14 +73,14 @@ Element e = Find.ByName("goButton") **Find.AllByImage()** @@ -90,7 +90,7 @@ HtmlButton btn1 = elementImg1.As(); ``` // Find the 3rd occurrence of table tag Element table = Find.ByTagIndex("table", 2); -``` +```` @@ -106,7 +106,7 @@ Element e = Find.ByAttributes("class=myclass"); Element e = Find.ByAttributes("class=myclass", "src=~foo.gif"); // Find all elements with class=myclass and src has a partial foo.gif IList allbtns = Find.AllByAttributes("class=myclass", "src=~foo.gif"); -``` +```` @@ -139,7 +139,7 @@ IList alle = Find.AllByContent("p:car") // TextContent of div1 : Text1 {non-recursive} // // Default for ByContent is TextContent which is the most common usage. -``` +```` @@ -152,7 +152,7 @@ IList alle = Find.AllByContent("p:car") HtmlFindExpression expr = new HtmlFindExpression("id=?sam","class=~bar","textcontent=!foo"); // Return all elements matching HtmlFindExpression IList allSams = Find.AllByExpression(expr); -``` +```` @@ -165,7 +165,7 @@ IList allSams = Find.AllByExpression(expr); Element img = Find.ByXPath("//body[1]/table[1]/tbody[1]/tr[1]/td[1]/img[1]"); // Find all times with id=div IList allDivs = Find.AllByXPath("/descendant::node()[starts-with(@id,'div')]"); -``` +```` @@ -178,7 +178,7 @@ IList allDivs = Find.AllByXPath("/descendant::node()[starts-with(@id,'d HtmlAnchor activeLink = Find.ByCssSelector("a:active"); // Find all links IList allLinks = Find.AllByCssSelector("a"); -``` +```` @@ -188,7 +188,7 @@ IList allLinks = Find.AllByCssSelector("a"); ``` // Return all img elements IList allimg = Find.AllByTagName("img"); -``` +```` @@ -218,7 +218,7 @@ Given this DOM: // We can find the element by: Element target = Find.ByNodeIndexPath("0/2/0/1"); -``` +```` @@ -228,7 +228,7 @@ Element target = Find.ByNodeIndexPath("0/2/0/1"); ``` FindParamCollection col = FindParamCollection.LoadFromXml(xml); return this.FromCollection(col); -``` +```` @@ -248,7 +248,7 @@ HtmlInputButton btn = Find.ByCustom( } ); Assert.IsNotNull(btn); -``` +````
Same Level Text Foremen diff --git a/docs/testing-framework/getting-started.md b/docs/testing-framework/getting-started.md index 22e50074..86dadcc1 100644 --- a/docs/testing-framework/getting-started.md +++ b/docs/testing-framework/getting-started.md @@ -98,7 +98,7 @@ Once Settings and Configuration topic. ## Starting Automation -```C# +````C# [Test] [Description("My simple demo")] public void SimpleTest() @@ -138,8 +138,8 @@ public void SimpleTest() // verify the title is actually Google. Assert.AreEqual("Google", ActiveBrowser.Find.ByTagIndex("title", 0).InnerText); } -``` -```VB +```` +````VB _ Public Sub SimpleTest() @@ -154,6 +154,6 @@ Public Sub SimpleTest() Assert.AreEqual("Google", ActiveBrowser.Find.ByTagIndex("title", 0).InnerText) End Sub -``` +```` [1]: /img/testing-framework/using-mbunit/fig1.png diff --git a/docs/testing-framework/using-nunit.md b/docs/testing-framework/using-nunit.md index f9e320d9..a8d03a46 100644 --- a/docs/testing-framework/using-nunit.md +++ b/docs/testing-framework/using-nunit.md @@ -18,21 +18,21 @@ Telerik Automation Infrastructure comes with the following features to facilitat * Unifies the log content. Any logging from Telerik automation using its Log object will also be logged to NUnit's output including logging from JavaScript. For example: -```C# +````C# [Test] public void NUnitLog() { Log.WriteLine("Hi from WebAii"); } -``` -```VB +```` +````VB _ Public Sub NUnitLog() Log.WriteLine("Hi from WebAii") End Sub -``` +```` NUnit log: @@ -120,17 +120,17 @@ Telerik NUnit tests inherit from a base test class called **BaseTest** that live * The base class also offers different options that you might want to choose from depending on the scenarios and your testing environment. The Telerik template installed on your machines, by default uses the following initialization: -```C# +````C# Initialize(new TestContextWriteLine(Console.Out.WriteLine)); -``` -```VB +```` +````VB Initialize(New TestContextWriteLine(AddressOf Console.Out.WriteLine)) -``` +```` The above initialization passes in a delegate to the WriteLine method of NUnit so that you can unify the logging across both frameworks. If that initialization does not work for you, you can choose to pass in different parameters or choose to do your own custom setup of the framework. For example, if you want to override some of the settings from the .config file in one or two of your test cases, you can simply do the following: -```C# +````C# // This will get a new Settings object. If a configuration // section exists, then settings from that section will be // loaded @@ -142,8 +142,8 @@ settings.DefaultBrowser = BrowserType.FireFox; // Now call Initialize again with your updated settings object Initialize(settings, new TestContextWriteLine(Console.Out.WriteLine)); -``` -```VB +```` +````VB ' This will get a new Settings object. If a configuration ' section exists, then settings from that section will be ' loaded @@ -155,17 +155,17 @@ mySettings.DefaultBrowser = BrowserType.FireFox ' Now call Initialize again with your updated settings object Initialize(mySettings, New TestContextWriteLine(AddressOf Console.Out.WriteLine)) -``` +```` Also if you don't really want to unify the logging and would prefer the framework to perform its own logging in a custom folder, you can simply use the following overload: -```C# +````C# Initialize(myCustomLocation); -``` -```VB +```` +````VB Initialize(myCustomLocation) -``` +```` For more information on Telerik Testing Framework's settings & configuration please refer to the Settings and Configuration topic. @@ -173,7 +173,7 @@ For more information on Telerik Testing Framework's settings & configuration ple Now that we have an understanding of the template, we can start automating right away. Pick your test method and start writing your automation test code for your unit test. For example: -```C# +````C# [Test] [Description("My simple demo")] public void SimpleTest() @@ -187,8 +187,8 @@ public void SimpleTest() // verify the title is actually Google. Assert.AreEqual("Google", ActiveBrowser.Find.ByTagIndex("title", 0).InnerText); } -``` -```VB +```` +````VB _ Public Sub SimpleTest() @@ -203,7 +203,7 @@ Public Sub SimpleTest() Assert.AreEqual("Google", ActiveBrowser.Find.ByTagIndex("title", 0).InnerText) End Sub -``` +```` [1]: /img/testing-framework/using-nunit/fig1.png [2]: /img/testing-framework/using-nunit/fig2.png diff --git a/docs/testing-framework/using-vs-team-test.md b/docs/testing-framework/using-vs-team-test.md index e3ccdb5a..85d4f2d8 100644 --- a/docs/testing-framework/using-vs-team-test.md +++ b/docs/testing-framework/using-vs-team-test.md @@ -15,7 +15,7 @@ Telerik Automation Infrastructure comes with the following features to facilitat * Unifies both the logging location and the log content. Any logging from Telerik automation using its Log object will also be logged to the Visual Studio log location and to the actual Visual Studio log content of that particular test. This includes logging from JavaScipt. -```C# +````C# [TestMethod] public void DLog() { @@ -25,8 +25,8 @@ public void DLog() Log.WriteLine("Hello from Telerik"); } -``` -```VB +```` +````VB _ Public Sub DLog() @@ -36,7 +36,7 @@ Public Sub DLog() Log.WriteLine("Hello from Telerik") End Sub -``` +```` ## Visual Studio log diff --git a/docs/testing-framework/using-xunit.md b/docs/testing-framework/using-xunit.md index 76cfa7b1..c03a3552 100644 --- a/docs/testing-framework/using-xunit.md +++ b/docs/testing-framework/using-xunit.md @@ -83,16 +83,16 @@ Telerik xUnit.net tests inherit from a base test class called **BaseTest** that * The base class also offers different options that you might want to choose from depending on the scenarios and your testing environment. The Telerik template installed on your machines, by default uses the following initialization: -```C# +````C# Initialize(false); -``` -```VB +```` +````VB Initialize(False) -``` +```` The above initialization initializes the Telerik Testing Framework but does not enable the RecycleBrowser feature. Because xUnit.net does not have the concept of a test fixture setup/teardown the RecycleBrowser feature cannot be used. If that initialization does not work for you, you can choose to pass in different parameters or choose to do your own custom setup of the framework. For example, if you want to override some of the settings from the .config file in one or two of your test cases, you can simply do the following: -```C# +````C# // This will get a new Settings object. If a configuration // section exists, then settings from that section will be // loaded @@ -104,8 +104,8 @@ settings.DefaultBrowser = BrowserType.FireFox; // Now call Initialize with your updated settings object Initialize(settings); -``` -```VB +```` +````VB ' This will get a new Settings object. If a configuration ' section exists, then settings from that section will be ' loaded @@ -117,14 +117,14 @@ mySettings.DefaultBrowser = BrowserType.FireFox ' Now call Initialize with your updated settings object Initialize(mySettings) -``` +```` For more information on Telerik Testing Framework's settings & configuration please refer to the Settings and Configuration topic. ## Starting Automation -```C# +````C# [Test] [Description("My simple demo")] public void SimpleTest() @@ -138,8 +138,8 @@ public void SimpleTest() // verify the title is actually Google. Assert.AreEqual("Google", ActiveBrowser.Find.ByTagIndex("title", 0).InnerText); } -``` -```VB +```` +````VB _ Public Sub SimpleTest() @@ -154,6 +154,6 @@ Public Sub SimpleTest() Assert.AreEqual("Google", ActiveBrowser.Find.ByTagIndex("title", 0).InnerText) End Sub -``` +```` [1]: /img/testing-framework/using-xunit/fig1.png \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/asp-net-host-server.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/asp-net-host-server.md index d7a1c7fb..8f28b3da 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/asp-net-host-server.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/asp-net-host-server.md @@ -22,7 +22,7 @@ Many of our customers have asked for a way to execute tests without the need for With all these in mind, let's look at an example that illustrates how we can enable our tests to run against the Asp.Net inproc host. Here is a simply Asp.Net page that utilizes several Asp.Net controls: -```ASP +````ASP <%@ Page Language="C#" %> @@ -90,30 +90,30 @@ With all these in mind, let's look at an example that illustrates how we can ena -``` +```` You can run this page using the Asp.Net InProc server by first setting the default browser to 'AspNetHost' and setting the physical location of the web application. For example, you can override these settings in your test initialization or set them in your .config file: -```C# +````C# // Set the default browser to be AspNetHost settings.DefaultBrowser = BrowserType.AspNetHost; // Set the location of the Asp.Net App settings.WebAppPhysicalPath = @"C:\MyAspNetApp\"; -``` -```VB +```` +````VB ' Set the default browser to be AspNetHost mysettings.DefaultBrowser = BrowserType.AspNetHost ' Set the location of the Asp.Net App mysettings.WebAppPhysicalPath = System.IO.Path.Combine(Globals.PATH_TO_PAGES, "AspNetApp") -``` +```` Next you can perform your automation in the same manner as you would for any other browser. For example: -```C# +````C# // Will initialize a new AspNetApplication object. Manager.LaunchNewBrowser(); @@ -175,8 +175,8 @@ Assert.IsTrue(label.InnerText.Contains(DateTime.Today.ToShortDateString())); Actions.Click(Find.ById("treeView1t1")); label.Refresh(); Assert.IsTrue(label.InnerText.Contains("Node2")); -``` -```VB +```` +````VB ' Will initialize a new AspNetApplication object. Manager.LaunchNewBrowser() @@ -234,7 +234,7 @@ Assert.IsTrue(label.InnerText.Contains(DateTime.Today.ToShortDateString)) Actions.Click(Find.ById("treeView1t1")) label.Refresh() Assert.IsTrue(label.InnerText.Contains("Node2")) -``` +```` ## Debugging Page Requests diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/attribute-extensions.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/attribute-extensions.md index b96aae4c..9014a34a 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/attribute-extensions.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/attribute-extensions.md @@ -37,7 +37,7 @@ Attribute Extensions are test fixture attributes that can be used to decorate un Let's start by taking few examples for FindParamAttribute. Assume we have an input textbox that we commonly access through out all the test methods in our Foo test class. Well, we can share this methods across all the test methods in 'foo' by setting that FindParam using FindParamAttribute on the test class like this: -```C# +````C# [TestClass] [FindParam("InputTxtbx", FindType.TagIndex, "input:0")] class Foo : BaseTest @@ -62,8 +62,8 @@ class Foo : BaseTest Actions.SetText(Find.Elements["InputTxtbx"], "test2"); } } -``` -```VB +```` +````VB _ Public Class Foo @@ -94,11 +94,11 @@ Public Class Foo End Sub End Class -``` +```` You can use 1-N FindParam attributes on your test class or test method. If you have elements that are shared across more than one test method, set these FindParam's on the test class, else simply set them on the test method. For example: -```C# +````C# [TestClass] [FindParam("InputTxtbx", FindType.TagIndex, "input:0")] class Foo : BaseTest @@ -134,8 +134,8 @@ class Foo : BaseTest // here. Calling Find.Elements["CheckBx"], will throw an exception. } } -``` -```VB +```` +````VB _ Public Class Foo @@ -174,7 +174,7 @@ Public Class Foo End Sub End Class -``` +```` ### FindParamAttributes and TestRegions @@ -182,7 +182,7 @@ FindParamAttributes can also be used with TestRegions when they are defined with FindParamAttributes can also be used with TestRegions when they are defined within an application. In this scenario, the FindParam needs to reflect an element search within a specific TestRegion. To tie a FindParamAttribute with a TestRegion, simply set the TestRegionId property of that FindParam on your test method or test class. Here is an example: -```C# +````C# [TestMethod] [Description("Illustrate how to use FindParamAttributes with TestRegion's")] @@ -209,8 +209,8 @@ public void UsingFindParamAttributeWithTestRegion's() // Note: You can also use the FindParamAttribute(fileName) and scope all // the elements contained in file to a specific testregion. } -``` -```VB +```` +````VB ", "", DialogButton.OK)> _ Public Sub LogonDialogWithAttributes() ActiveBrowser.NavigateTo("") End Sub -``` +```` **Note:** All examples shown above should work with NUnit 2.4 and higher and Visual Studio Team Test. In the samples above we simply used Visual Studio Team Test. diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md index dd1a42f2..309ce032 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md @@ -45,7 +45,7 @@ Telerik Testing Framework allows users to access frames and perform automation a Let's take an example that demonstrates this support. Assuming we have the following simple web page: -```HTML +````HTML THE I HATE FRAMES PAGE @@ -53,11 +53,11 @@ Let's take an example that demonstrates this support. Assuming we have the follo -``` +```` To access the 't1.html' frame elements and perform actions against it, first I need to navigate to the page, then I need to access the frame that contains that page from the 'Frames[]' collection as follows: -```C# +````C# // Launch an instance of the browser Manager.LaunchNewBrowser(BrowserType.InternetExplorer, true); @@ -80,8 +80,8 @@ t1_frame.Actions.Click(toggleOn); // Click the toggleoff button t2_frame.Actions.Click(toggleOff); -``` -```VB +```` +````VB ' Launch an instance of the browser Manager.LaunchNewBrowser(BrowserType.InternetExplorer, True) @@ -104,7 +104,7 @@ t1_frame.Actions.Click(toggleOn) ' Click the toggleoff button t2_frame.Actions.Click(toggleOff) -``` +```` At this point, the 't1_frame' object is just like any other Browser object. You can use the Find.Byxxx/Actions objects to find elements/execute actions in the document or execute any of the browser actions like 'NavigateTo' or 'Refresh()', 'GoBack()', etc. diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/JavaScript-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/JavaScript-dialogs.md index 7ff8142e..8783237b 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/JavaScript-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/JavaScript-dialogs.md @@ -14,7 +14,7 @@ __Telerik Testing Framework__ includes native support for dialog handling (under >
> _using ArtOfTest.WebAii.Win32.Dialogs;_ -```C# +````C# // Define the Alert dialog and how it needs to be handled - choose between Ok and Cancel var alertDlg = new ArtOfTest.WebAii.Win32.Dialogs.AlertDialog(Manager.ActiveBrowser, DialogButton.CANCEL); @@ -50,8 +50,8 @@ Manager.DialogMonitor.Stop(); // especially if the elements to use are related to the action confirmed with the dialog handling //Manager.ActiveBrowser.RefreshDomTree(); -``` -```VB +```` +````VB ' Define the Alert dialog IDialog alertDlg = New ArtOfTest.WebAii.Win32.Dialogs.AlertDialog(Manager.ActiveBrowser, DialogButton.OK) @@ -77,7 +77,7 @@ Actions.InvokeScript("InvokeAlert()") Manager.DialogMonitor.RemoveDialog(alertDlg) Manager.DialogMonitor.Stop() -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/confirm-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/confirm-dialogs.md index f13415b7..887ba6c6 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/confirm-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/confirm-dialogs.md @@ -14,7 +14,7 @@ __Telerik Testing Framework__ includes native support for dialog handling (under >
> _using ArtOfTest.WebAii.Win32.Dialogs;_ -```C# +````C# // Define the Confirm dialog and how it needs to be handled - choose between Ok and Cancel var confirmDlg = new ArtOfTest.WebAii.Win32.Dialogs.ConfirmDialog(Manager.ActiveBrowser, DialogButton.OK); @@ -49,8 +49,8 @@ Manager.DialogMonitor.Stop(); // especially if the elements to use are related to the action confirmed with the dialog handling //Manager.ActiveBrowser.RefreshDomTree(); -``` -```VB +```` +````VB ' Define the Confirm dialog IDialog confirmDlg = New ArtOfTest.WebAii.Win32.Dialogs.ConfirmDialog(Manager.ActiveBrowser, DialogButton.OK) @@ -76,4 +76,4 @@ Actions.InvokeScript("InvokeConfirm()") Manager.DialogMonitor.RemoveDialog(confirmDlg) Manager.DialogMonitor.Stop() -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/custom-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/custom-dialogs.md index bdf8f8a1..f1d3f6b9 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/custom-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/custom-dialogs.md @@ -8,7 +8,7 @@ position: 10 If for whatever reason you decide that you don't like the way the dialog is being handled or want to perform extra tasks before handling the dialog, you can simply craft your own dialog handling code and then ask the dialog to call your code instead of its dialog handling code. Here is an example: -```C# +````C# public void DoCustomDialogHandlingForBuiltInDialogs() { AlertDialog myAlertDialog = new AlertDialog(ActiveBrowser, DialogButton.OK); @@ -46,8 +46,8 @@ public bool MyCustomAlertHandler(IDialog dialog) return false; } } -``` -```VB +```` +````VB _ Public Sub DoCustomDialogHandlingForBuiltInDialogs() @@ -80,7 +80,7 @@ Public Sub MyCustomAlertHandler(ByVal dialog As ArtOfTest.WebAii.Win32.Dialogs.I End Try End Sub -``` +```` > **To compile the above code include the following using:** diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/custom-handlers.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/custom-handlers.md index 7684f48d..9bd86d61 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/custom-handlers.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/custom-handlers.md @@ -12,15 +12,15 @@ So far we've addressed the common dialogs that browsers popup and how the built- Using the GenericDialog class you can create your own custom dialog handler that can handle most any simple standard Win32 dialog. Here's an example of how to implement a handler for Internet Explorers Security Warning dialog: -```C# +````C# GenericDialog SecurityWarningDialog = new GenericDialog(ActiveBrowser, "Security Warning", false, 1); // Click on the Yes button Manager.DialogMonitor.AddDialog(SecurityWarningDialog); -``` -```VB +```` +````VB Dim SecurityWarningDialog As GenericDialog = New GenericDialog(Me.ActiveBrowser, "Security Warning", False, 1) ' Click on the Yes button SecurityWarningDialog GenericDialog = GenericDialog(.ActiveBrowser, , , 1) Manager.DialogMonitor.AddDialog(SecurityWarningDialog) -``` +```` ## Using the BaseDialog Class @@ -28,7 +28,7 @@ By using the BaseDialog class as your base class to derive your custom dialog ha The below example is a complete custom dialog handler that handles the "Security Alert" dialog displayed by Internet Explorer: -```C# +````C# using System; using ArtOfTest.WebAii.Core; using ArtOfTest.Common.Win32; @@ -141,8 +141,8 @@ namespace WebTesting #endregion } } -``` -```VB +```` +````VB Imports ArtOfTest.WebAii.Core Imports ArtOfTest.Common.Win32 Imports ArtOfTest.WebAii.Win32.Dialogs @@ -239,22 +239,22 @@ Namespace WebTesting #End Region End Class End Namespace -``` +```` Once you have implemented your new custom dialog handler it requires just one line of code to add it to the DialogMonitor: -```C# +````C# Manager.DialogMonitor.AddDialog(new SecurityAlertDialog(ActiveBrowser, DialogButton.YES, Manager.Desktop)); -``` -```VB +```` +````VB Manager.DialogMonitor.AddDialog(New SecurityAlertDialog(Me.ActiveBrowser, DialogButton.YES, Me.Manager.Desktop)) -``` +```` ## Implementing a Custom Dialog Handler with IDialog When the GenericDialog and the BaseDialog classes don't provide the functionality you need, you can roll your own complete custom dialog handling by implementing the IDialog interface. An example of when this is necessary is when creating handlers for most FireFox dialogs. See How to handle FireFox dialogs for an example of a FireFox dialog handler implemented using the IDialog interface. A reference to UIAutomationClient.dll has to be added to the project and a using to System.Windows.Automation namespace would be required in the code. The IDialog interface has the following methods and properties that you must implement: -```C# +````C# /// /// Interface to implement for dialogs to be monitored and handled by the DialogMonitor object. /// @@ -318,8 +318,8 @@ public interface IDialog /// bool MatchesUIAutomationElement(AutomationElement element); } -``` -```VB +```` +````VB ''' ''' The dialogs current state. This property is Managed by the dialog ''' monitor. Implementors should simply provide a private field to @@ -428,7 +428,7 @@ End Sub ''' Private Function MatchesUIAutomationElement(element As AutomationElement) As Boolean End Function -``` +```` After implementing this interface and creating an instance of your class in your test code, you can add the instance to the DialogMonitor to begin handling of your special dialog. See Handling FireFox dialogs for an example of implementing the IDialog interface. The interface is pretty straight forward but here is how the DialogMonitor uses it: diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/file-download-dialog.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/file-download-dialog.md index c3c09fdf..c7228368 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/file-download-dialog.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/file-download-dialog.md @@ -9,7 +9,7 @@ position: 7 With FileDownload, you need to pass in the full path to the download location and how the dialog should be handled. -```C# +````C# DownloadDialogsHandler dialog = new DownloadDialogsHandler (Manager.ActiveBrowser, DialogButton.SAVE, @"D:\text.txt", Manager.Desktop); Manager.DialogMonitor.Start(); @@ -19,8 +19,8 @@ Manager.DialogMonitor.Start(); Element.Click(false); dialog.WaitUntilHandled(30000); -``` -```VB +```` +````VB Dim dialog As New DownloadDialogsHandler(Manager.ActiveBrowser, DialogButton.SAVE, "D:\text.txt", Manager.Desktop) Manager.DialogMonitor.Start() @@ -30,7 +30,7 @@ Manager.DialogMonitor.Start() Element.Click(False) dialog.WaitUntilHandled(30000) -``` +```` > **To compile the above code include the following using:** diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/file-upload-dialog.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/file-upload-dialog.md index 0892c468..f0d89030 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/file-upload-dialog.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/file-upload-dialog.md @@ -8,7 +8,7 @@ position: 6 With FileUpload, you need to pass in the full path to the file to upload and how the dialog should be handled. The options for FileUpload are: DialogButton.OPEN, DialogButton.CANCEL or DialogButton.CLOSE. -```C# +````C# // Add a FileUpload dialog to be monitored. Manager.DialogMonitor.AddDialog(new FileUploadDialog(ActiveBrowser, @"C:\EmptyTextFile.txt", DialogButton.OPEN)); @@ -23,8 +23,8 @@ Manager.DialogMonitor.Start(); Pages.YourSite.YourButton.Click(); // Dialog should be automatically handled -``` -```VB +```` +````VB ' Add a FileUpload dialog to be monitored. Manager.DialogMonitor.AddDialog(New FileUploadDialog(ActiveBrowser, Path.Combine(Globals.PATH_TO_PAGES, "..\SupportFiles\EmptyTextFile.txt"), DialogButton.OPEN)) @@ -34,13 +34,13 @@ Manager.DialogMonitor.Start() ' Cause the upload Dialog to pop-up Pages.YourSite.YourButton.Click() -``` +```` ## Multiple Files Upload There are scenarios where multiple files needs to be uploaded. Below you could find a sample code how to obtain that with the Testing Framework. The code will loop through a set of files and will upload each after the previous. The sample is built against a public accessible webpage and to give a try to that example you have to first navigate to that page. -```C# +````C# // place small pictures with names file1.png and file2.png in c:\temp folder to have the sample working without modification string path = @"C:\temp\" ; string[] fileNames = new string[] { "file1.png", "file2.png" } ; @@ -84,7 +84,7 @@ for (int i = 0; i < fileNames.Length; i++ ) ActiveBrowser.Refresh(); } -``` +```` > **Note** To compile the above code include the following using: > diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md index 9413000c..118e11fd 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md @@ -22,7 +22,7 @@ The other thing we discover about this dialog is that the Clear List button and Let's start implementing our dialog handler. First we'll need some local class variables and property accessors: -```C# +````C# using System; using System.Threading; @@ -107,8 +107,8 @@ namespace WebTesting set {this._currentState = value; } } #endregion -``` -```VB +```` +````VB Public Class FFDownloadsDialog Implements ArtOfTest.WebAii.Win32.Dialogs.IDialog @@ -200,12 +200,12 @@ Public Class FFDownloadsDialog End Set End Property # End Region -``` +```` So far everything is very simple and straightforward. Now that the local variables and properties are complete, it's time to implement the constructor. Since all we're going to do to handle the dialog is close it, we don't require the Desktop or DialogButton parameter that standard Win32 dialog handlers require: -```C# +````C# # region Constructor /// /// Create the dialog. @@ -214,8 +214,8 @@ public FFDownloadsDialog() { } # endregion -``` -```VB +```` +````VB # Region "Constructor" ' ' Create the dialog handler instance. @@ -224,11 +224,11 @@ public FFDownloadsDialog() MyBase.New() End Sub # End Region -``` +```` Since there's nothing to the constructor, we could optionally leave it out and let the default constructor take over. So let's start implementing the IDialog methods starting with IsDialogActive. -```C# +````C# # region IDialog Members /// /// Check whether the dialog is present or not. This function is @@ -262,8 +262,8 @@ public bool IsDialogActive(ArtOfTest.WebAii.Win32.WindowCollection dialogs) } return true; } -``` -```VB +```` +````VB ' ' Check whether the dialog is present or not. This function is ' called by the DialogMonitor object. @@ -294,7 +294,7 @@ Public Function IsDialogActive(ByVal dialogs As ArtOfTest.WebAii.Win32.WindowCol End If Return True End Function -``` +```` Because the DialogMonitor object passes in a **WindowCollection** of windows that have a class name of "#**32770**" and the FireFox dialog has the class name "**MozillaUIWindowClass**" we have to ignore the passed in WindowCollection and perform our own FindWindowRecursively. Once a window with the right caption is found we still need to verify it has the right class name. @@ -302,7 +302,7 @@ Detecting when the download manager has finished downloading files is a little b Now we need to implement the Handle function: -```C# +````C# /// /// This is called by the DialogMonitor whenever IsDialogActive returns true. /// @@ -331,8 +331,8 @@ public void Handle() } } } -``` -```VB +```` +````VB ' ' This is called by the DialogMonitor whenever IsDialogActive returns true. ' @@ -356,7 +356,7 @@ Implements ArtOfTest.WebAii.Win32.Dialogs.IDialog.Handle End Try End If End Sub -``` +```` The normal action we want our custom dialog handler to perform is to simply close the window. This is easily accomplished with this.Window.Close. Once the handler sends to the window the close command we wait up to 500 milliseconds for it to actually go away. We also trigger a semaphore so that the main test thread can be notified that the dialog has been handled. @@ -364,7 +364,7 @@ Optionally our handler code will call a custom handler function if the delegate Lastly we need to implement the WaitUntilHandled function: -```C# +````C# /// /// /// May be called by test code. Waits up to the specific time out @@ -389,8 +389,8 @@ Lastly we need to implement the WaitUntilHandled function: } } } -``` -```VB +```` +````VB ' ' ' May be called by test code. Waits up to the specific time out @@ -412,7 +412,7 @@ Lastly we need to implement the WaitUntilHandled function: End Sub End Class -``` +```` The only thing really happening in this code is to wait on the semaphore to be set. If the semaphore is not set within the timeout period it throws a System.TimeoutException exception. Optionally it will also reset the HandleCount property prior to waiting for the semaphore. diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/html-popups.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/html-popups.md index 397b9af4..743b031e 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/html-popups.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/html-popups.md @@ -12,19 +12,19 @@ Given that these pop-ups are just like any other browser instance, the framework Given that HTML pop-up dialogs are launched through some actions on the page and not through an explicit call to Manager.LaunchNewBrowser(), the framework has no idea which new browser instances you want connected and added to the Manager.Browsers[] collection versus the ones you want ignored. Therefore, you need to notify the framework about the browser instances that you want to be tracked by enabling new browser tracking. You enable manager tracking by calling: -```C# +````C# Manager.SetNewBrowserTracking(true); -``` -```VB +```` +````VB Manager.SetNewBrowserTracking(true) -``` +```` When new browser tracking is enabled, any new browser instance launched on the machine is automatically added to the Manager.Browsers[] collection. In addition the Manager.ActiveBrowser instance is automatically set to the last launched browser instance. You then have full access to that pop-up instance with its full DOM and the ability to execute automation actions against it just like any other browser instance. When the pop-up is closed using Browser.Close(), the instance is removed from the Manager.Browsers[] collection and the ActiveBrowser instance is again automatically re-assigned to the last active Browser object in the Manager.Browsers[] collection. The sample below demonstrates this support. Let's start with the following HTML page that invokes a HTML pop-up: -```HTML +````HTML HTMLPopups @@ -41,11 +41,11 @@ The sample below demonstrates this support. Let's start with the following HTML Invoke HTML Popup -``` +```` The automation code that allows us to connect to that new instance looks like this: -```C# +````C# // Set new browser tracking to enabled. // This will make all new browser instances connect to // the Manager. @@ -74,8 +74,8 @@ ActiveBrowser.Close(); // the last launched active instance. Assert.IsTrue(Manager.Browsers.Count == 1); Assert.IsTrue(ActiveBrowser.Url.Contains("PAGE_NAME.com")); -``` -```VB +```` +````VB ' Set new browser tracking to enabled. ' This will make all new browser instances connect to ' the Manager. @@ -104,14 +104,14 @@ ActiveBrowser.Close() ' the last launched active instance. Assert.IsTrue(Manager.Browsers.Count = 1) Assert.IsTrue(ActiveBrowser.Url.Contains("PAGE_NAME.com")) -``` +```` Sometimes you need to close the popup by clicking on a button instead of just closing the window. Telerik Testing Framework supports this functionality with an additional paramter to the HtmlControl.Click function. By passing in a 'true' the framework expects the window to close. The ActiveBrowser is also set to the browser window that was open prior to the popup opening. -```C# +````C# Find.ById("button1").Click(true); // Here we tell the framework that this click causes the browser window to close -``` -```VB +```` +````VB Find.ById(Of HtmlInputButton)("button1").Click(True) ' Here we tell the framework that this click causes the browser window to close -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/modal-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/modal-dialogs.md index 5646cd3b..a336c5d9 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/modal-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/modal-dialogs.md @@ -12,7 +12,7 @@ The main difference between IE modal dialogs and the HTML Pop-ups is that the mo IE modal dialogs require special handling. They don't act like standard HTML pop-up windows, which means the standard approach does not work. Here is an example of how to code for the IE modal dialog special case: -```C# +````C# [TestMethod] [Description("How to access and handle IE's modal dialogs")] public void IEModalDialogsSupport() @@ -47,8 +47,8 @@ public void IEModalDialogsSupport() // The ActiveBrowser is back to the main browser window. ActiveBrowser.NavigateTo("http://www.google.com"); } -``` -```VB +```` +````VB _ Public Sub IEModalDialogsSupport() @@ -87,7 +87,7 @@ Public Sub IEModalDialogsSupport() ActiveBrowser.NavigateTo("http://www.google.com") End Sub -``` +```` [1]: /img/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/modal-dialogs/fig1.png diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/prompt-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/prompt-dialogs.md index d1bcd7e3..cba7a51c 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/prompt-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/prompt-dialogs.md @@ -14,7 +14,7 @@ __Telerik Testing Framework__ includes native support for dialog handling (under >
> _using ArtOfTest.WebAii.Win32.Dialogs;_ -```C# +````C# // Define the Prompt dialog and how it needs to be handled - choose between Ok and Cancel var promptDlg = new ArtOfTest.WebAii.Win32.Dialogs.PromptDialog(Manager.ActiveBrowser, DialogButton.OK, "message to type"); @@ -49,8 +49,8 @@ Manager.DialogMonitor.Stop(); // especially if the elements to use are related to the action confirmed with the dialog handling //Manager.ActiveBrowser.RefreshDomTree(); -``` -```VB +```` +````VB ' Define the Prompt dialog IDialog promptDlg = New ArtOfTest.WebAii.Win32.Dialogs.PromptDialog(Manager.ActiveBrowser, DialogButton.OK, "stringMsg") @@ -77,4 +77,4 @@ promptDlg.Handle() Manager.DialogMonitor.RemoveDialog(promptDlg) Manager.DialogMonitor.Stop() -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/win32-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/win32-dialogs.md index e882f5c8..f4c51a17 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/win32-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/win32-dialogs.md @@ -8,7 +8,7 @@ position: 5 With Logon dialogs, you need to pass in the username/password that you want used and how the dialog should be handled. Your options for the Logon dialog are: DialogButton.OK, DialogButton.CANCEL or DialogButton.CLOSE. -```C# +````C# // Add a logon dialog support with username/password Manager.DialogMonitor.AddDialog(new LogonDialog(ActiveBrowser, "", "", DialogButton.OK)); Manager.DialogMonitor.Start(); @@ -17,8 +17,8 @@ Manager.DialogMonitor.Start(); ActiveBrowser.NavigateTo(""); // Dialog should be automatically handled -``` -```VB +```` +````VB ' Add a logon dialog support with username/password Manager.DialogMonitor.AddDialog(New LogonDialog(ActiveBrowser, "", "", DialogButton.OK)) Manager.DialogMonitor.Start() @@ -27,7 +27,7 @@ Manager.DialogMonitor.Start() ActiveBrowser.NavigateTo("") ' Dialog should be automatically handled -``` +```` > **To compile the above code include the following using:** diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/wpf-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/wpf-dialogs.md index 721825dc..c6e074fa 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/wpf-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/wpf-dialogs.md @@ -12,7 +12,7 @@ The dialogs to store a file locally or open a file in the WPF application also h With OpenFile dialog you need to pass in the full path to the file to open in the WPF application and how the dialog should be handled. The options for OpenFile dialog are: DialogButton.OPEN, DialogButton.CANCEL or DialogButton.CLOSE. -```C# +````C# // Add OpenFile dialog ArtOfTest.WebAii.Win32.Dialogs.OpenFileDialog.CreateOpenFileDialog wpfOpenDialog = ArtOfTest.WebAii.Win32.Dialogs.OpenFileDialog.CreateOpenFileDialog(ActiveApplication, DialogButton.OPEN, @"d:\name"); @@ -32,13 +32,13 @@ wpfOpenDialog.WaitUntilHandled(15000); Manager.DialogMonitor.RemoveDialog(wpfOpenDialog); // Dialog should be automatically handled -``` +```` ## SaveAs Dialog Handler With SaveAs dialog, you need to pass in the full path and name for the file to save and how the dialog should be handled. The options for SaveAs dialog are: DialogButton.SAVE, DialogButton.CANCEL or DialogButton.CLOSE. -```C# +````C# // Add SaveAs dialog ArtOfTest.WebAii.Win32.Dialogs.SaveAsDialog.CreateSaveAsDialog wpfSaveAsDialog = ArtOfTest.WebAii.Win32.Dialogs.SaveAsDialog.CreateSaveAsDialog(ActiveApplication, DialogButton.SAVE, @"d:\name"); @@ -59,7 +59,7 @@ Manager.DialogMonitor.RemoveDialog(wpfSaveAsDialog); // Dialog should be automatically handled -``` +```` > **Note** To compile the above code include the following using: > diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/check-javascript-errors.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/check-javascript-errors.md index 34608c5f..8697814e 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/check-javascript-errors.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/check-javascript-errors.md @@ -10,10 +10,7 @@ Telerik Testing Framework allows you to verify if there are any JavaScript error > The page in the current example does not actually contain JavaScript errors. Therefore these are invoked on purpose to demonstrate the feature. -#### __[C#]__ - - {{region }} - +````C# // Navigate to a page Manager.ActiveBrowser.NavigateTo("https://www.google.com"); @@ -45,7 +42,7 @@ Telerik Testing Framework allows you to verify if there are any JavaScript error // Assert if there are any errors on the current page Assert.AreEqual(0, currentErrorsOnPage.Count()); - {{endregion}} +```` > __Note!__ The JS error check step detects only JavaScript errors. Any errors related to not loaded resources will not be detected. An example for such console error is listed below:

diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/invoking-javascript.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/invoking-javascript.md index 39ea0156..8661e2dd 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/invoking-javascript.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/invoking-javascript.md @@ -23,7 +23,7 @@ Telerik Testing Framework supports directly invoking JavaScript functions from y The Actions.InvokeScript() enables you to simply provide a JavaScript function name to invoke. For example: -```C# +````C# // Assume our page has JavaScript method Test1() & Test2() & Test3() // Call a JavaScript function. @@ -39,8 +39,8 @@ string jsRetValue = Actions.InvokeScript("Test3();"); // Call a JavaScript function that returns a value int val = Actions.InvokeScript(@"Test3(""Bear"", ""Utah"")"); -``` -```VB +```` +````VB ' Assume our page has JavaScript method Test1() & Test2() & Test3() ' Call a JavaScript function. @@ -56,21 +56,21 @@ Dim jsRetValue As String = Actions.InvokeScript("Test3();") ' Call a JavaScript function that returns a value Dim val As Integer = Actions.InvokeScript(Of Integer)("Test3(""Bear"", ""Utah"")") -``` +```` Here is a code which calls an Angular function against input field: -```C# +````C# Actions.InvokeScript("angular.element(" + element.ClientSideLocator + ").val('" + text.Replace("'", "\\'") + "').triggerHandler('input')"); -``` +```` ## JavaScript Unit Testing Using NUnit or Visual Studio Team Test Below is an example of how you can define JavaScript unit tests that is consistent with the rest of your tests and manages their execution and reporting using the same unit testing infrastructure, whether it is NUnit or Visual Studio Team Test. -```C# +````C# [TestMethod] public void JsUnitTest1() { @@ -78,15 +78,15 @@ public void JsUnitTest1() string strBool = Actions.InvokeScript("JsUnitTest1()"); Assert.IsTrue(bool.Parse(strBool)); } -``` -```VB +```` +````VB _ Public Sub JsUnitTest1() ' return 'true' for pass or 'false' for fail. Dim strBool As String = Actions.InvokeScript("JsUnitTest1()") Assert.IsTrue(Boolean.Parse(strBool)) End Sub -``` +```` ### See also diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/javascript-events.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/javascript-events.md index 1f054842..137191fb 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/javascript-events.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/javascript-events.md @@ -10,7 +10,7 @@ position: 2 Telerik Testing Framework allows you to invoke JavaScript events directly with or without event arguments. For example: -```C# +````C# // Invoke the OnFocus event HtmlButton b = Find.ById("b"); b.InvokeEvent(ScriptEventType.OnFocus); @@ -25,8 +25,8 @@ MouseEvent me = new MouseEvent(); me.Type = "mouseover"; me.SetRelatedTarget(body1); area1.InvokeEvent(me); -``` -```VB +```` +````VB ' Invoke the OnFocus event Dim b As HtmlButton = Find.ById(Of HtmlButton)("b") b.InvokeEvent(ScriptEventType.OnFocus) @@ -41,13 +41,13 @@ Dim [me] As New MouseEvent() [me].Type = "mouseover" [me].SetRelatedTarget(body1) area1.InvokeEvent([me]) -``` +```` ## JavaScript Event Handlers The framework gives you the ability to attach a .NET event handler to your JavaScript happening in the browser. Start by defining your event handler like this: -```C# +````C# private volatile bool _clickHandled; private System.Threading.AutoResetEvent _clickARE; @@ -56,8 +56,8 @@ private void OnClick(object sender, JavascriptEventArgs e) _clickHandled = true; _clickARE.Set(); } -``` -```VB +```` +````VB Private _clickHandled As Boolean _clickHandled Private _clickARE As System.Threading.AutoResetEvent @@ -66,11 +66,11 @@ Private Sub OnClick(ByVal sender As Object, ByVal e As JavascriptEventArgs) _clickHandled = True _clickARE.[Set]() End Sub -``` +```` All that's left is to attach the event handler to an element on the DOM like this: -```C# +````C# [TestMethod] public void ClickHandler() { @@ -90,8 +90,8 @@ public void ClickHandler() Assert.IsTrue(_clickHandled); } -``` -```VB +```` +````VB _ Public Sub ClickHandler() _clickARE = New System.Threading.AutoResetEvent(False) @@ -110,4 +110,4 @@ Public Sub ClickHandler() Assert.IsTrue(_clickHandled) End Sub -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/javascript-logging.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/javascript-logging.md index 5a7a382f..901e0ca3 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/javascript-logging.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/javascript-logging.md @@ -10,7 +10,7 @@ Telerik Testing Framework also supports logging directly from JavaScript into th Below is a sample to demonstrate how to perform logging from your JavaScript routines: -```C# +````C# // Settings.Current.EnableScriptLogging must be set to true before // LaunchNewBrowser. This was done in the Initialize section of // this test. @@ -28,8 +28,8 @@ Settings.Current.EnableScriptLogging = false; // NOTE: Once script logging is disabled, any logging calls from // the script will be ignored and won't cause a script error. -``` -```VB +```` +````VB ' Settings.Current.EnableScriptLogging must be set to true before ' LaunchNewBrowser. This was done in the Initialize section of ' this test. @@ -47,13 +47,13 @@ Settings.Current.EnableScriptLogging = False ' NOTE: Once script logging is disabled, any logging calls from ' the script will be ignored and won't cause a script error. -``` +```` The page script function Test5() can perform logging like this: -```JavaScript +````JavaScript function Test5() { WebAiiLog("Trace", "Test5: Log this message!"); } -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/json-objects.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/json-objects.md index 8217ecc9..2eb6a798 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/json-objects.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/javascript-wtc/json-objects.md @@ -10,7 +10,7 @@ Your tests can understand JSON (("value1", o["root"]["key1"]); Assert.AreEqual("value2", o["root"]["key2"]); } -``` -```VB +```` +````VB _ Public Sub KeyValuePairs() Manager.LaunchNewBrowser() @@ -35,11 +35,11 @@ Public Sub KeyValuePairs() Assert.AreEqual(Of String)("value1", o("root")("key1")) Assert.AreEqual(Of String)("value2", o("root")("key2")) End Sub -``` +```` In this example we define our own object in a Data Contract: -```C# +````C# [DataContract] public class MyObject { @@ -57,8 +57,8 @@ public void ReturnObject() Assert.AreEqual(1, o.One); Assert.AreEqual(15, o.Fifteen); } -``` -```VB +```` +````VB _ Public Class MyObject Private _One As Integer @@ -90,11 +90,11 @@ Public Sub ReturnObject() Assert.AreEqual(Of Integer)(1, o.One) Assert.AreEqual(Of Integer)(15, o.Fifteen) End Sub -``` +```` In this example we'll access an array returned by InvokeScript, treat it as JSON, and parse it manually for its values. -```C# +````C# var actions = Manager.Current.ActiveBrowser.Actions; JsonObject result = actions.InvokeScript ("window.my_list=[1,2,3]"); JsonArray arr = (JsonArray)result["root"]; @@ -103,8 +103,8 @@ for (int i = 0; i < 3; i++) double val = arr[i]; Log.WriteLine(val.ToString()); } -``` -```VB +```` +````VB Dim actions = Manager.Current.ActiveBrowser.Actions Dim result As JsonObject = actions.InvokeScript(Of JsonObject)("window.my_list=[1,2,3]") Dim arr As JsonArray = DirectCast(result("root"), JsonArray) @@ -112,4 +112,4 @@ For i As Integer = 0 To 2 Dim val As Double = arr(i) Log.WriteLine(val.ToString()) Next -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/multi-browser-support.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/multi-browser-support.md index 25db0c96..227796b3 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/multi-browser-support.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/multi-browser-support.md @@ -17,7 +17,7 @@ The 'Manager' object is the main object that keeps tracks of all active browser The below sample demonstrates how you can leverage the multi-browser support to automate multiple instances of a browser within one test case. Such testing might be needed when performing concurrency testing in your web app. -```C# +````C# // Launch a new instance of IE Manager.LaunchNewBrowser(BrowserType.InternetExplorer, true); @@ -55,8 +55,8 @@ ie.Window.SetFocus(); // You can also choose to set a timeout as shown below to double check that the // browser has actually closed and its handle is no longer visible. ff.Close(40); -``` -```VB +```` +````VB ' Launch a new instance of IE Manager.LaunchNewBrowser(BrowserType.InternetExplorer, True) @@ -94,4 +94,4 @@ ie.Window.SetFocus() ' You can also choose to set a timeout as shown below to double check that the ' browser has actually closed and its handle is no longer visible. ff.Close(40) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc/Introduction.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc/Introduction.md index e29d5d94..fcf67ec3 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc/Introduction.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc/Introduction.md @@ -28,7 +28,7 @@ Some of the key benefits of TestRegions are: To help demonstrate these benefits, we will be using the following simple markup page as our sample application through out this tutorial. -```HTML +````HTML Basic TestRegion's Usage @@ -65,7 +65,7 @@ To help demonstrate these benefits, we will be using the following simple markup -``` +```` ## Current Automation Practices @@ -96,21 +96,21 @@ With that being said, it is important to note that TestRegions DO NOT completely Let's start by using TestRegions in the above sample to provide a structured approach to accessing this application from test automation. To do so, we need to inject TestRegions within our application markup. The TestRegions supported by Telerik Testing Framework Automation Infrastructure are: -```HTML +````HTML ...region content... -``` +```` Given that these are custom tags and are currently not handled as expected in latest browsers (for example, in Firefox, custom tags - even if they are Xhtml defined with extended dtd - are always included with the closing tag right after the open tag regardless of the tag content), the comment version of these tags is supported: -```HTML +````HTML ...region content... -``` +```` Using these tags as comments is a very unintrusive approach to the overall application and is completely compliant with markup standards like XHTML and XML. Let's start by defining two logical regions within our sample application above that we want to target in our automated testing. The page below shows the sample above with the following two logical regions defined: userinput, restaurantdata. -```HTML +````HTML Basic TestRegion's Usage @@ -151,18 +151,18 @@ Let's start by defining two logical regions within our sample application above -``` +```` With test regions defined, our test code can directly access these regions regardless of their nesting or positioning as follows: -```C# +````C# TestRegion userInput = Manager.ActiveBrowser.Regions["userinput"]; TestRegion restaurantData = Manager.ActiveBrowser.Regions["restaurantdata"]; -``` -```VB +```` +````VB Dim userInput As TestRegion = Manager.ActiveBrowser.Regions("userinput") Dim restaurantData As TestRegion = Manager.ActiveBrowser.Regions("restaurantdata") -``` +```` Each TestRegion above represents the part of the application as defined by the TestRegio's that are part of the application. It is worth noting here that the TestRegions collection accessor is case-insensitive to avoid test failures due to id casing mistakes. @@ -179,22 +179,22 @@ Each TestRegion object has two properties that provide access to the elements co For example, to locate the restaurants table in the above sample, you can write: -```C# +````C# TestRegion restaurantData = Manager.ActiveBrowser.Regions["restaurantdata"]; // Given that the table is the first table within the 'restaurantdata' test region, it has an occurrence index of '0' Element restaurantTable = restaurantData.Find.ByTagIndex("table", 0); -``` -```VB +```` +````VB Dim restaurantData As TestRegion = Manager.ActiveBrowser.Regions("restaurantdata") ' Given that the table is the first table within the 'restaurantdata' test region, it has an occurrence index of '0' Dim restaurantTable As Element = restaurantData.Find.ByTagIndex("table", 0) -``` +```` Once you have access to the Element object, you can now use it to extract information from or execute actions on. For example: -```C# +````C# // access the userinput test region. TestRegion userInput = Manager.ActiveBrowser.Regions["userinput"]; @@ -203,8 +203,8 @@ Element zipCodeTextBox = userInput.Find.ByXPath("//input[2]"); // Perform an action on the element. Manager.ActiveBrowser.Actions.SetText(zipCodeTextBox, "90210"); -``` -```VB +```` +````VB ' access the userinput test region. Dim userInput As TestRegion = Manager.ActiveBrowser.Regions("userinput") @@ -213,7 +213,7 @@ Dim zipCodeTextBox As Element = userInput.Find.ByXPath("/input[2]") ' Perform an action on the element. Manager.ActiveBrowser.Actions.SetText(zipCodeTextBox, "90210") -``` +```` In the first sample above, the test will not be impacted by any changes to the application regardless of how many 'table' tags get added before or after that testregion. You can even extract that testregion and embed it in a different portion of a different application and all tests that target that region will still work as expected. Same with the second sample. diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md index b0ce4596..4f7251d1 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md @@ -53,15 +53,15 @@ In this namespace you will find the following methods classes: You must enable the HTTP proxy before you can start using it. This setting is turned off by default. This can be done either by adding the setting to your .config file or modifying the setting in the Settings object. To add the setting to your .config file add this to your .config file: -```XML +````XML -``` +```` To enable this setting in the Settings object, add code to your initialization section like this: -```C# +````C# // This will get a new Settings object. If a configuration // section exists, then settings from that section will be // loaded @@ -72,8 +72,8 @@ settings.Web.UseHttpProxy = true; // Now call Initialize again with your updated settings object Initialize(settings, new TestContextWriteLine(this.TestContext.WriteLine)); -``` -```VB +```` +````VB ' This will get a new Settings object. If a configuration ' section exists, then settings from that section will be ' loaded @@ -84,12 +84,12 @@ settings.UseHttpProxy = True ' Now call Initialize again with your updated settings object Initialize(settings, New TestContextWriteLine(AddressOf Me.TestContext.WriteLine)) -``` +```` Now that we have the HTTP proxy turned on we can start using it. Here's an example of how we would detect that a response coming back from the web server is an image response. -```C# +````C# [TestMethod] public void ImageDetection() { @@ -121,8 +121,8 @@ private void CheckTypeForImage(object sender, HttpResponseEventArgs e) e.Response.Headers["Content-Type"])); } } -``` -```VB +```` +````VB _ Public Sub ImageDetection() ' Launch a new browser window @@ -147,11 +147,11 @@ Private Sub CheckTypeForImage(ByVal sender As Object, ByVal e As HttpResponseEve Log.WriteLine([String].Format("Not an image; MIME type: {0}", e.Response.Headers("Content-Type"))) End If End Sub -``` +```` Let's go one step further. Suppose we want to verify that all of the images on the web page were smaller than 40Kb. We can accomplish this using code like this: -```C# +````C# [TestMethod] public void CheckImageSize() { @@ -177,8 +177,8 @@ private void Check(object sender, HttpResponseEventArgs e) _imageTooLarge = true; } } -``` -```VB +```` +````VB _ Public Sub CheckImageSize() ' Add our HTTP response event handler @@ -201,6 +201,6 @@ Private Sub Check(ByVal sender As Object, ByVal e As HttpResponseEventArgs) _imageTooLarge = True End If End Sub -``` +```` **Note:** If you are using **localhost** in the URL of the **NavigateTo** method it must contain a trailing '.' character like this: ActiveBrowser.NavigateTo("http://localhost./myTestPage") . This is an IE limitation where all URL's must contain a '.' character in them to be recognized properly when a proxy is in place. diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/Annotator.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/Annotator.md index 5c03e3b5..41fe9aa2 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/Annotator.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/Annotator.md @@ -14,49 +14,49 @@ The annotator displays in the browser window the actions that Telerik Testing Fr There are 2 methods to activating Telerik Testing Framework's automatic annotator. The simplest method is to activate it via the application .config file. By setting "annotateExecution" to true, the framework turns on the annotator and begins annotating all actions in the browser -```XML +````XML -``` +```` ## Activating the Annotator Programmatically The next method is to turn on the annotator programmatically in your application. This is accomplished by placing this simple line of code in your unit test: -```C# +````C# // Enable Annotated Execution. Manager.Settings.AnnotateExecution = true; // Disable Annotated Execution. Manager.Settings.AnnotateExecution = false; -``` -```VB +```` +````VB ' Enable Annotated Execution. Manager.Settings.AnnotateExecution = True ' Disable Annotated Execution. Manager.Settings.AnnotateExecution = False -``` +```` ## Performing Your Own Annotation You can also perform your own annotation programmatically using the Annotator class. First you must create an Annotator object passing into it which browser window to display annotation in. Once you have an Annotator object you can call one of the annotate functions. For example: -```C# +````C# Annotator myAnnotator = new Annotator(ActiveBrowser); myAnnotator.Annotate("This annotation message appears at the top of the browser document window"); myAnnotator.Annotate("This annotation message appears at the top left corner of the browser document window", 350, OffsetReference.TopLeftCorner); myAnnotator.Annotate(new Point(100, 300), "This annotation message appears under the point at 100,300 in the browser document window"); myAnnotator.Annotate(Find.ById("btn1").GetRectangle(), "This annotation highlights the Color On button"); -``` -```VB +```` +````VB Dim myAnnotator As Annotator = New Annotator(ActiveBrowser) myAnnotator.Annotate("This annotation message appears at the top of the browser document window") myAnnotator.Annotate("This annotation message appears at the top left corner of the browser document window", _ 350, OffsetReference.TopLeftCorner) myAnnotator.Annotate(New Point(100, 300), "This annotation message appears under the point at 100,300 in the browser document window") myAnnotator.Annotate(Find.ById("btn1").GetRectangle(), "This annotation highlights the Color On button") -``` +```` [1]: /img/testing-framework/write-tests-in-code/intermediate-topics-wtc/annotator/fig1.png diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/ajax-support.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/ajax-support.md index b18f59d3..baaa48f3 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/ajax-support.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/ajax-support.md @@ -32,17 +32,17 @@ Telerik Testing Framework has been built from the ground up with features like A Let's examine a couple of examples to illustrate how WaitForElement(s) is used. Assume that you are waiting for a table to be inserted in your DOM tree at a certain location and you want to wait until the whole table is built including the sixth row. The following is the DOM segment before the Ajax call is made: -```HTML +````HTML
-``` +```` Here is the DOM after the call has been made: -```HTML +````HTML
@@ -55,11 +55,11 @@ Here is the DOM after the call has been made:
-``` +```` The following code will perform this wait: -```C# +````C# // Get the ajaxupdate region. // Notice how using a testregion simplifies our identification and makes it // more isolated to the current DOM region being targeted and less prone @@ -75,8 +75,8 @@ FindParam sixth_row = new FindParam("tr", 6); // perform the wait for both elements. WaitForElements() takes 1-N FindParam objects to // to wait for. ActiveBrowser.Actions.WaitForElements(500, ajaxupdate, false, table, sixth_row); -``` -```VB +```` +````VB ' Get the ajaxupdate region. ' Notice how using a testregion simplifies our identification and makes it ' more isolated to the current DOM region being targeted and less prone @@ -92,13 +92,13 @@ Dim sixth_row As FindParam = New FindParam("tr", 6) ' perform the wait for both elements. WaitForElements() takes 1-N FindParam objects to ' to wait for. ActiveBrowser.Actions.WaitForElements(500, ajaxupdate, False, table, sixth_row) -``` +```` In the above code sample, we used
TestRegions to make our automation simpler and targeted at the DOM region we are interested in. If you choose to not use TestRegions, you can simply use the WaitForElement(s) overload that takes in only the FindParam and the Timeout. In that case, all identification will be performed with reference to the root element of the DomTree. You can also use "Chained Identification" to wait for an element. For example if we have a DOM segment that looks like the sample below: -```HTML +````HTML
@@ -111,11 +111,11 @@ You can also use "Chained Identification" to wait for an element. For example if
-``` +```` ... and we want to wait until we have six rows available, then we can use chained identification as follows: -```C# +````C# // First find the span by id FindParam myspan = new FindParam("id=myspan"); @@ -124,8 +124,8 @@ FindParam sixth_row = new FindParam("tr", 5); // perform the wait for the row element. ActiveBrowser.Actions.WaitForElement(new FindParam[] { myspan, sixth_row }, 500); -``` -```VB +```` +````VB ' First find the span by id Dim myspan As FindParam = New FindParam("id=myspan") @@ -134,7 +134,7 @@ Dim sixth_row As FindParam = New FindParam("tr", 5) ' perform the wait for the row element. ActiveBrowser.Actions.WaitForElement(New FindParam() {myspan, sixth_row}, 500) -``` +```` The above scenario is one of the most common when testing Ajax apps. Therefore, the WaitForElement provides an easy to use overload for these common scenarios where you need to first identify an element by id/name then validate a certain attribute list. This helps reduce the lines of code each time you need to identify an element. If you need a more complex identification, you can use chained identification as described above. @@ -148,7 +148,7 @@ To help address this issue and potentially other issues, the Telerik infrastruct For example, if you want to retrieve the text set by a user in an input textbox in Firefox, you can simply do the following: -```C# +````C# // Get the element. Element input = ActiveBrowser.Find.ById("myinput"); @@ -160,8 +160,8 @@ string display = input.GetValue("display"); // Get its 'visibility' property from the DOM string visibility = input.GetValue("visibility"); -``` -```VB +```` +````VB ' Get the element. Dim input As Element = ActiveBrowser.Find.ById("myinput") @@ -173,7 +173,7 @@ Dim display As String = input.GetValue(Of String)("display") ' Get its 'visibility' property from the DOM Dim visibility As String = input.GetValue(Of String)("visibility") -``` +```` **Note:** If you are retrieving property values of set attributes available in the serialized DOM string, you should use the GetAttribute() method to retrieve these attributes and their values. @@ -181,9 +181,9 @@ Dim visibility As String = input.GetValue(Of String)("visibility") This method will wait for any active AJAX requests to complete. -```C# +````C# Manager.ActiveBrowser.WaitForAjax(30000); -``` -```VB +```` +````VB Manager.ActiveBrowser.WaitForAjax(30000) -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/configure-browser-In-code.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/configure-browser-In-code.md index c728e8f4..bd35f193 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/configure-browser-In-code.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/configure-browser-In-code.md @@ -8,7 +8,7 @@ position: 1 Apart from manually configuring each of the browsers for test execution this could be also accomplished in code. -```C# +````C# //declare string variable to write possible errors in string error; // to configure FireFox @@ -21,12 +21,12 @@ Manager.ConfigureBrowser(BrowserType.InternetExplorer, out error); Manager.ConfigureBrowser(BrowserType.Safari, out error); // to configure Edge Manager.ConfigureBrowser(BrowserType.MicrosoftEdge, out error); -``` -```VB +```` +````VB Dim error As String Manager.ConfigureBrowser(BrowserType.FireFox, error) Manager.ConfigureBrowser(BrowserType.Chrome, error) Manager.ConfigureBrowser(BrowserType.InternetExplorer, error) Manager.ConfigureBrowser(BrowserType.Safari, error) Manager.ConfigureBrowser(BrowserType.MicrosoftEdge, error) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/cookie-support.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/cookie-support.md index 29c02de0..c6d01c9c 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/cookie-support.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/cookie-support.md @@ -21,66 +21,66 @@ Using the CookieManager class you can: There are two functions that can be used to retrieve cookies from the browser: -```C# +````C# public CookieCollection GetCookies (string url) public CookieCollection GetCookies (Uri uri) -``` -```VB +```` +````VB Public Function GetCookies(ByVal url As String) As System.Net.CookieCollection Public Function GetCookies(ByVal uri As System.Uri) As System.Net.CookieCollection -``` +```` These functions retrieve all the cookies from the browser for the specified website. For example: -```C# +````C# // Query the cookie System.Net.CookieCollection siteCookies = ActiveBrowser.Cookies.GetCookies("http://www.telerik.com"); -``` -```VB +```` +````VB ' Query the cookie Dim siteCookies As System.Net.CookieCollection = ActiveBrowser.Cookies.GetCookies("http://www.telerik.com") -``` +```` ## Creating and Setting Cookies Below is an example of how to create or set a cookie. If the cookie already exists, it will be overwritten. If it does not exist, a new cookie will be created in the browser: -```C# +````C# // Let's create a new cookie for a url. ActiveBrowser.Cookies.SetCookie(new System.Net.Cookie("WebAii", "Rocks", "/", "http://www.telerik.com")); -``` -```VB +```` +````VB ' Let's create a new cookie for a url. ActiveBrowser.Cookies.SetCookie(New System.Net.Cookie("WebAii", "Rocks", "/", "http://www.telerik.com")) -``` +```` ## Deleting Cookies Here is an example of how to delete a cookie: -```C# +````C# // Now delete the cookie. ActiveBrowser.Cookies.DeleteCookie(siteCookies[0]); -``` -```VB +```` +````VB ' Now delete the cookie. ActiveBrowser.Cookies.DeleteCookie(siteCookies(0)) -``` +```` A simple foreach loop can be used to delete all the cookies for a particular website: -```C# +````C# // Purge any cookies associated with this server System.Net.CookieCollection cookies = ActiveBrowser.Cookies.GetCookies(ActiveBrowser.Url); foreach (System.Net.Cookie cookie in cookies) { ActiveBrowser.Cookies.DeleteCookie(cookie); } -``` -```VB +```` +````VB ' Purge any cookies associated with this server Dim cookies As System.Net.CookieCollection = ActiveBrowser.Cookies.GetCookies(ActiveBrowser.Url) For Each cookie As System.Net.Cookie In cookies ActiveBrowser.Cookies.DeleteCookie(cookie) Next cookie -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/dom-navigation.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/dom-navigation.md index 3ff4c6c8..acf167c6 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/dom-navigation.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/dom-navigation.md @@ -20,7 +20,7 @@ Once you have an element, you can navigate to other elements relative to this el Suppose we have some HTML that looks like this: -```HTML +````HTML
DIV1 TEXT
@@ -30,12 +30,12 @@ Suppose we have some HTML that looks like this: SPAN3 TEXT
-``` +```` Here is how we can navigate around the DOM once we have a starting element: -```C# +````C# // Let's start with the span1 element. Element span1 = Find.ById("span1"); Element span2 = span1.GetNextSibling(); @@ -66,8 +66,8 @@ span3 = parentDiv.Children[2]; Assert.IsTrue(span1.IdAttributeValue.Equals("span1"), string.Format("Actual ID: {0}", span1.IdAttributeValue)); Assert.IsTrue(span2.IdAttributeValue.Equals("span2"), string.Format("Actual ID: {0}", span2.IdAttributeValue)); Assert.IsTrue(span3.IdAttributeValue.Equals("span3"), string.Format("Actual ID: {0}", span3.IdAttributeValue)); -``` -```VB +```` +````VB ' Let's start with the span1 element. Dim span1 As Element = Find.ById("span1") Dim span2 As Element = span1.GetNextSibling() @@ -98,4 +98,4 @@ span3 = parentDiv.Children(2) Assert.IsTrue(span1.IdAttributeValue.Equals("span1"), String.Format("Actual ID: {0}", span1.IdAttributeValue)) Assert.IsTrue(span2.IdAttributeValue.Equals("span2"), String.Format("Actual ID: {0}", span2.IdAttributeValue)) Assert.IsTrue(span3.IdAttributeValue.Equals("span3"), String.Format("Actual ID: {0}", span3.IdAttributeValue)) -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-expressions.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-expressions.md index a51e4d34..dbbf509a 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-expressions.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-expressions.md @@ -40,18 +40,18 @@ The key to understanding FindExpression's is to understand its basic component: ### FindClauses Without Operators -``` +```` TagName=div id=bar innermarkup=hellothere -``` +```` ### FindClauses With Operators -``` +```` name=~bar [name attribute partially contains bar] automationid=^hat [the automation id of an element starts with hat] -``` +```` **Note:** The optional operator is ALWAYS the first character after the = in the expression. This special character can be escaped with a preceding ' character if it is meant to be interpreted as a literal character. @@ -112,15 +112,15 @@ automationid=^hat [the automation id of an element starts with hat] The name portion of the clause can be a well known enumeration that a certain technology (i.e. HTML, XAML) recognizes as a certain search pattern. For example, in HTML: -``` +```` xpath=HTML[0]/div[1] -``` +```` is interpreted by the HTML search tree as a specific search that requires XPATH interpretation. -``` +```` automationid=?sam -``` +```` ## Constructing FindExpressions @@ -130,9 +130,9 @@ For example: Find the HTML element with an id that ends with 'sam' and also has a class attribute that contains bar and also has a text content that does not contain foo. -```C# +````C# HtmlFindExpression expr = new HtmlFindExpression("id=bar","|","tagindex=td:0","|","tagname=img","src=~png"); -``` +```` ## Hierarchy Constraint @@ -148,16 +148,16 @@ A hierarchy constraint contains two pieces of data: For example, suppose we have the following HTML code snippet to deal with: -```HTML +````HTML
-``` +```` Now we want to match the div tag that has class='bar' and its parent's parent has an id='foo1': -```C# +````C# // This expression will locate both p tags at [0] & [3] HtmlFindExpression expression = new HtmlFindExpression("class=bar", "tagname=div"); @@ -168,8 +168,8 @@ HtmlFindExpression parentExpr = new HtmlFindExpression("id=foo1"); // matches [1 // -2 signifies two parents up. // Note that HierarchyConstraints are [1] based. Zero signifies the target element or reference point. expression.AddHierarchyConstraint(new HierarchyConstraint(parentExpr, -2)); -``` -```VB +```` +````VB ' This expression will locate both p tags at [0] & [3] Dim expression As New HtmlFindExpression("class=bar", "tagname=div") @@ -180,14 +180,14 @@ Dim parentExpr As New HtmlFindExpression("id=foo1") ' -2 signifies two parents up. ' Note that HierarchyConstraints are [1] based. Zero signifies the target element or reference point. expression.AddHierarchyConstraint(New HierarchyConstraint(parentExpr, -2)) -``` +```` The resulting expression now will match [3] ONLY. Here is a more involved scenario: -```HTML +````HTML

@@ -199,7 +199,7 @@ Here is a more involved scenario:

-``` +```` If we wish the constraint to match the first child of the parent's parent (i.e. [2]) and to be an 'span' instead, that is also doable. diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-param-as-xml-data.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-param-as-xml-data.md index b02c505a..a48f98e5 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-param-as-xml-data.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-param-as-xml-data.md @@ -23,7 +23,7 @@ By doing so we can: We currently don't offer any UI design tools that can help build these data sources directly from your application. Therefore, to build these data source we need to craft our FindParams manually and then using FindParam and FindParamCollection XML serialization methods, store the generated sources to our storage medium of choice (i.e. database, file system ...etc). The sample below shows an example of how to build an XML file that can be later consumed by your test code to identify elements to use in the automation logic. -```C# +````C# // First we build the list of FindParam objects we want serialized // and add them to a FindParamCollection object. @@ -46,14 +46,14 @@ paramCol.Save(@"C:\AppParams.xml"); // in your choice of storage medium. // // string serializedParams = paramCol.ToXml(); -``` +```` ## Consuming the Data Sources The are three different methods you can use to consume the data source generated above. We can deserialize the data back into a FindParamCollection object and then select one of these FindParams to locate a specific element on the page. -```C# +````C# // Given we already have a datasource of FindParam's stored on a different medium, // we can deserialize the data back into a FindParamCollection object and then // select one of these FindParam's to locate a specific element on the page @@ -65,12 +65,12 @@ Element inputText = ActiveBrowser.Find.ByParam(paramCol["InputTextBox"]); // Perform your automation actions on the element. ActiveBrowser.Actions.SetText(inputText, "sometext"); -``` +```` Alternatively we can can create a Dictionary lookup object from the external datasource. -```C# +````C# // FindParams can be completely extracted out of test code and stored in an external xml file. // @@ -96,11 +96,11 @@ Assert.IsTrue(elements["ProgramsTable"].ElementType == ElementType.Table); // Note: // 1. If you have the XML string stored in a DataBase, you can use the Find.FromXml() // to find these elements directly from the string. -``` +```` Finally we can load the external datasource using a FindParamAttribute. -```C# +````C# // The SupportFiles\FindElementsFromFile.xml shows a sample xml file with two FindParams defined; one for // the MainTable and the other for ProgramsTable. @@ -112,7 +112,7 @@ Find.All(true); Assert.IsTrue(Find.Elements.Count == 2); Assert.IsTrue(Find.Elements["MainTable"].ElementType == ElementType.Table); Assert.IsTrue(Find.Elements["ProgramsTable"].ElementType == ElementType.Table); -``` +```` ## Managing and Organizing Data Sources for an Entire Application diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-param-objects.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-param-objects.md index 7c7c43d7..8e51a473 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-param-objects.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/find-param-objects.md @@ -8,17 +8,17 @@ position: 1 All the identification methods exposed by the 'Find' object described above use FindParam objects under the covers to describe the desired element within the DOM tree to Telerik's identification engine. The engine itself can only understand searches using FindParam's. You can directly invoke element searches against the identification engine using the Find.ByParam() or Find.AllByParam() methods. When FindParam's are used directly to define a search, they enable a richer, consistent and more flexible way to describe a certain element than just the Find.Byxx() which were designed to cater for the most common scenarios. For example, if you want to describe the second 'div' on a page with class=myclass. You can't directly do that using the Find.Byxx() methods unless you first find the second 'div' element then inspect its attributes to figure out if the class attribute is set 'myclass'. With FindParam objects, you can simply describe that search by: -```C# +````C# // The find object will only return an element if all conditions // exist. Else NULL. Element e = Find.ByParam(new FindParam("div", 1,"class=myclass")); Assert.IsNotNull(e); -``` +```` Here are some other examples: -```C# +````C# Element e; // Find.ById() is implemented as @@ -36,7 +36,7 @@ FindParam p = new FindParam(FindType.Content, "p:Some Data", "title=~Div", "clas p.ContentType = FindContentType.InnerMarkup; e = Find.ByParam(p); Assert.IsNotNull(e); -``` +```` ## Chained Identification @@ -49,7 +49,7 @@ To help understand chained identification better, let's take a concrete example. Many times developers find themselves struggling with a markup nesting similar to the one below; particularly on rich content websites when heavy styling is applied or when using dynamic web development technologies like ASP.NET. In the sample below, the outer table contains an id attribute but the rest of the nested tables don't. Let's assume a test needs to access the inner most table to verify its content. Instead of looking up the overall 'table' occurrence index over an entire document which can easily become difficult on large complex pages, we would like to first identify the "table1" element by its id and then simply count two table occurrences from it (occurrence index 1) to locate the inner table. -```HTML +````HTML
@@ -75,11 +75,11 @@ Many times developers find themselves struggling with a markup nesting similar t
-``` +```` Below is the chained identification code to accomplish that. -```C# +````C# // Generic chained identification FindParam idtable1 = new FindParam("id=table1"); @@ -90,7 +90,7 @@ FindParam innertable = new FindParam("table", 1); Element innerTable = Find.ByParam(new FindParam[] { idtable1, innertable }); Assert.IsNotNull(innertable); Assert.AreEqual(3, innerTable.Children[0].Children.Count); -``` +```` ## Defining FindParam Objects Outside Test Code (i.e. FindParam Serialization) diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md index e24d4933..5f03596d 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md @@ -55,7 +55,7 @@ The following identification methods are supported: ``` // Find element with id=input1 Element e = Find.ById("input1"); -``` +````
Searches for an element or 'All' elements that look like a predefined image -``` +```` // Specify the predefined image on which the search will be based System.Drawing.Image img1 = System.Drawing.Image.FromFile(@"C:\sampleImg.png"); // Find an element that looks like the predefind image var elementImg1 = Manager.ActiveBrowser.Find.ByImage(img1, 70); // the second argument is the threshold % to use, while searching for the image // Cast the found element to be able to use it. The type of located element needs to be specified. HtmlButton btn1 = elementImg1.As(); -``` +````
@@ -285,7 +285,7 @@ The Byxxx functions that take a content string parameter recognizes the followin To help illustrate the above identification methods, let's use the following sample application. Note that this application uses TestRegions excessively to allow it to demonstrate the different identification methods that can be performed using both **RBI** and **RGBI**: -```HTML +````HTML @@ -329,11 +329,11 @@ To help illustrate the above identification methods, let's use the following sam -``` +```` The code below shows the different methods you can use in your test code to identify elements. Note in the sample below, we are using Visual Studio's Assert class to demonstrate how different objects can be identified differently and to illustrate how to scope the identification with TestRegions using RGBI and across the entire document DomTree using RBI. -```C# +````C# // Set the short-cuts to the main automation objects. Browser brwser = mgr.ActiveBrowser; Find rootFind = brwser.Find; @@ -387,8 +387,8 @@ Assert.IsTrue(rootFind.ByNodeIndexPath("1/0/0").TagName.Equals("div", StringComp //*** Using name Assert.IsNull(r1.Find.ByName("bla")); -``` -```VB +```` +````VB ' Set the short-cuts to the main automation objects. Dim brwser As ArtOfTest.WebAii.Core.Browser = Manager.ActiveBrowser Dim rootFind As Find = brwser.Find @@ -442,4 +442,4 @@ Assert.IsTrue(rootFind.ByNodeIndexPath("1/0/0").TagName.Equals("div", StringComp '*** Using name Assert.IsNull(r1.Find.ByName("bla")) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md index ffd677b3..ba73ac5d 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md @@ -29,7 +29,7 @@ The Find.Byxxx methods now support Language-Integrated Query (LINQ) queries. Som Using LINQ we can create strongly typed advanced queries with intellisense support that we couldn't before. The most basic LINQ example is something like this: -```C# +````C# // Find all images on a page. var images = Find.AllControls(); @@ -37,12 +37,12 @@ foreach (HtmlImage img in images) { // Do what you want with each img. } -``` +```` We can also use lambda expressions like this: -```C# +````C# // Find the first element that contains "Go Google" Element el = Find.ByCustom(e => e.TextContent.Contains("Go Google")); @@ -66,4 +66,4 @@ Assert.IsTrue(rd.Count > 0); // Fetch a list of HTML anchor's that contain 'a' in the ID IList li = (from b in Find.AllElements() where b.IdAttributeValue.Contains("a") select b).ToArray(); Assert.IsTrue(li.Count > 0); -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/custom-html-control.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/custom-html-control.md index ebf42fd3..685a09a1 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/custom-html-control.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/custom-html-control.md @@ -10,7 +10,7 @@ Let's suppose you're testing a web site that uses a third party or custom contro As an example, let's create a custom HtmlControl that wraps the ASP.NET calendar control. We'll give it some methods for reading and controlling the date selection along with a custom ClientSideLocator just for an example. First here's our ASPX web page containing a calendar control that we want to test -``` +```` <% @ Page Language="C#" MasterPageFile="~/AppMaster.master" Title="Untitled Page" %> <% @ Import Namespace="System.Data" %> <% @ Register Assembly="ArtOfTest.WebAii.AspNet" Namespace="ArtOfTest.WebAii.AspNet.WebControls" TagPrefix="test" %> @@ -146,12 +146,12 @@ As an example, let's create a custom HtmlControl that wraps the ASP.NET calendar -``` +```` Let's put together our custom HtmlControl that we can use interact with an ASP.NET calendar control: -```C# +````C# public class AspNetCalendar : HtmlTable { /// @@ -282,8 +282,8 @@ Let's put together our custom HtmlControl that we can use interact with an ASP.N return GetMonth(); } } -``` -```VB +```` +````VB Public Class AspNetCalendar Inherits HtmlTable ''' @@ -402,7 +402,7 @@ Let's put together our custom HtmlControl that we can use interact with an ASP.N Return GetMonth() End Function End Class -``` +```` Notice how we derive from an HtmlTable. That way we can take advantage of all the functionality already built into a standard table. We'll just add all the functions useful for our calendar control which include: diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/drag-and-drop.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/drag-and-drop.md index 37c454e7..682c8e02 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/drag-and-drop.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/drag-and-drop.md @@ -8,7 +8,7 @@ position: 2 The HTML element wrapper classes make mouse drag & drop operations significantly easier. There are 7 different drag methods defined: -```C# +````C# public virtual void DragTo(ArtOfTest.WebAii.Controls.HtmlControls.HtmlControl control) public virtual void DragTo(System.Drawing.Point absolutePoint) @@ -23,11 +23,11 @@ public virtual void DragTo(ArtOfTest.Common.OffsetReference sourceOffsetReferenc public virtual void DragTo(ArtOfTest.Common.OffsetReference sourceOffsetReference, System.Drawing.Point sourceOffset, int destinationOffsetX, int destinationOffsetY) public virtual void DragTo(ArtOfTest.Common.OffsetReference sourceOffsetReference, int sourceOffsetX, int sourceOffsetY, bool sourcePixelDrag, ArtOfTest.WebAii.Controls.HtmlControls.HtmlControl destination, ArtOfTest.Common.OffsetReference destinationOffsetReference, int destinationOffsetX, int destinationOffsetY, bool destinationPixelDrop) -``` +```` Suppose we have a sales by area table that supports drag & drop between cells. We can easily drag & drop the contents of one cell to another cell like this: -```C# +````C# // Find the sales table HtmlTable salesTable = Find.ById("area_1_table"); @@ -40,8 +40,8 @@ salesTable.BodyRows[3].Cells[1].DragTo(ArtOfTest.Common.OffsetReference.Absolute // Verify the new row subtotals are correct Assert.AreEqual(salesTable.Rows[2].Cells[5].TextContent, "$3342.78"); Assert.AreEqual(salesTable.Rows[3].Cells[5].TextContent, "$2175.17"); -``` -```VB +```` +````VB ' Find the sales table Dim salesTable As HtmlTable = Find.ById(Of HtmlTable)("area_1_table") @@ -51,4 +51,4 @@ salesTable.BodyRows(3).Cells(1).DragTo(salesTable.BodyRows(2).Cells(1)) ' Verify the new row subtotals are correct Assert.AreEqual(salesTable.Rows(2).Cells(5).TextContent, "$3342.78") Assert.AreEqual(salesTable.Rows(3).Cells(5).TextContent, "$2175.17") -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/element-styles.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/element-styles.md index 53dd56be..6ac44d7a 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/element-styles.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/element-styles.md @@ -24,7 +24,7 @@ Telerik Testing Framework includes a good set of classes and methods for reading Let's look at some code samples to see how this works: -```C# +````C# // Verify the color of the warning text is Red HtmlSpan warningSpan = Find.ById("Warning"); HtmlStyle warningColorStyle = warningSpan.GetStyle("color"); @@ -60,8 +60,8 @@ HtmlStyle warningMarginStyle = warningSpan.GetStyle("margin"); Assert.IsTrue(warningMarginStyle.IsInt()); int warningMargin = warningMarginStyle.ToInt(); Assert.AreEqual(30, warningMargin); -``` -```VB +```` +````VB ' Verify the color of the warning text is Red Dim warningSpan As HtmlSpan = Find.ById(Of HtmlSpan)("Warning") Dim warningColorStyle As HtmlStyle = warningSpan.GetStyle("color") @@ -95,13 +95,13 @@ Dim warningMarginStyle As HtmlStyle = warningSpan.GetStyle("margin") Assert.IsTrue(warningMarginStyle.IsInt()) Dim warningMargin As Integer = warningMarginStyle.ToInt() Assert.AreEqual(30, warningMargin) -``` +```` The GetComputedStyle is especially powerful. It will follow the CSS chain up through all the parent elements until it finds the first matching style and returns the value picked up from that style. This is quite different from GetStyle which only returns an explicitly set style value on the specific element (i.e. it does not follow the CSS chain). If no explicit value has been set then GetStyle returns an empty string for the value. Here's an example: -```C# +````C# // GetStyle returns the value of an explicit style applied to the element. // If the element does not have an explicit style applied, GetStyle returns an empty value. // Since our warning span does not have the padding style explicitly applied to it, @@ -114,8 +114,8 @@ Assert.IsTrue(string.IsNullOrEmpty(paddingStyle.Value)); // Therefore GetComputedStyle on the warning span will return the value set in the parent form tag. paddingStyle = warningSpan.GetComputedStyle("padding"); Assert.IsFalse(string.IsNullOrEmpty(paddingStyle.Value)); -``` -```VB +```` +````VB ' GetStyle returns the value of an explicit style applied to the element. ' If the element does not have an explicit style applied, GetStyle returns an empty value. ' Since our warning span does not have the padding style explicitly applied to it, @@ -128,4 +128,4 @@ Assert.IsTrue(String.IsNullOrEmpty(paddingStyle.Value)) ' Therefore GetComputedStyle on the warning span will return the value set in the parent form tag. paddingStyle = warningSpan.GetComputedStyle("padding") Assert.IsFalse(String.IsNullOrEmpty(paddingStyle.Value)) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/find-and-navigate-elements.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/find-and-navigate-elements.md index 33b96119..2c2e0e4e 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/find-and-navigate-elements.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/find-and-navigate-elements.md @@ -8,7 +8,7 @@ position: 2 The example above used just two of the available find methods, the Find.ById<**TControl**> and the Find.AllByTagName<**TControl**> and did not take advantage of the powerful navigation features. Let's look at some other find examples: -```C# +````C# // Find the first table on the page. HtmlTable outertable = Find.ByTagIndex("table", 0); @@ -38,8 +38,8 @@ Assert.AreEqual(1, imgCtrls.Count); // Find the
section containing the Eastern US Division sales report HtmlDiv EasternUSDivision = Find.ByContent("Eastern US Division", FindContentType.TextContent); Assert.IsNotNull(EasternUSDivision); -``` -```VB +```` +````VB ' Find the first table on the page. Dim outertable As HtmlTable = Find.ByTagIndex(Of HtmlTable)("table", 0) Assert.AreEqual(3, outertable.Rows.Count) @@ -70,12 +70,12 @@ Assert.AreEqual(1, imgCtrls.Count) ' Find the
section containing the Eastern US Division sales report Dim EasternUSDivision As HtmlDiv = Find.ByContent(Of HtmlDiv)("Eastern US Division", FindContentType.TextContent) Assert.IsNotNull(EasternUSDivision) -``` +```` The above example demonstrates how to use many of the more useful find methods. There are many more. It would take up too much space to try and document them all here. Refer to the API reference to learn about the others. Let's look at some HTML navigation functions: -```C# +````C# // Traverse the control tree upwards too. You can easily // Find the container control of a certain type from its children. @@ -101,8 +101,8 @@ Assert.IsTrue(table2.ID.Equals(outertable.ID)); // Find the form this table is contained in. HtmlForm form1 = table2.Parent(); Assert.IsTrue(form1.ID.Equals("form1")); -``` -```VB +```` +````VB ' Traverse the control tree upwards too. You can easily ' Find the container control of a certain type from its children. @@ -129,4 +129,4 @@ Assert.IsTrue(table2.ID.Equals(outertable.ID)) ' Find the form this table is contained in. Dim form1 As HtmlForm = table2.Parent(Of HtmlForm)() Assert.IsTrue(form1.ID.Equals("form1")) -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/get-set-properties.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/get-set-properties.md index f466e4c4..1ba97838 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/get-set-properties.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/get-set-properties.md @@ -8,7 +8,7 @@ position: 2 We can also get and set the current value of any property of the wrapped element: -```C# +````C# // Get whether a checkbox is enabled or disabled. HtmlInputCheckBox cks = Find.ById("checkbox1"); bool disabled = cks.GetValue("disabled"); @@ -32,8 +32,8 @@ string strColor = mySpan.GetStyleValue("color"); // style. HtmlStyle styleMargin = mySpan.GetComputedStyle("margin"); string strMargin = mySpan.GetComputedStyleValue("margin"); -``` -```VB +```` +````VB ' Get whether a checkbox is enabled or disabled. Dim cks As HtmlInputCheckBox = Find.ById(Of HtmlInputCheckBox)("checkbox1") Dim disabled As Boolean = cks.GetValue(Of Boolean)("disabled") @@ -51,4 +51,4 @@ Dim strColor As String = mySpan.GetStyleValue("color") ' style. Dim styleMargin As HtmlStyle = mySpan.GetComputedStyle("margin") Dim strMargin As String = mySpan.GetComputedStyleValue("margin") -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-actions.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-actions.md index e8a8f539..9bae94a3 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-actions.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-actions.md @@ -22,7 +22,7 @@ What are some of the things we can do after finding the element we want to act u Here are some examples: -```C# +````C# // All controls have a Click/MouseClick. The .Click invokes a click from the DOM, // the MouseClick(), moves the mouse to the control and clicks it. @@ -113,8 +113,8 @@ Assert.IsTrue(link.BaseElement.TextContent.Trim().Equals("Link")); // Invoke any events on the control link.InvokeEvent(ScriptEventType.OnFocus); -``` -```VB +```` +````VB ' All controls have a Click/MouseClick. The .Click invokes a click from the DOM, ' the MouseClick(), moves the mouse to the control and clicks it. @@ -205,4 +205,4 @@ Assert.IsTrue(link.BaseElement.TextContent.Trim().Equals("Link")) ' Invoke any events on the control link.InvokeEvent(ScriptEventType.OnFocus) -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-asserts.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-asserts.md index 8f804c03..37ced75c 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-asserts.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-asserts.md @@ -142,7 +142,7 @@ For example: AssertCheck.IsTrue() will verify the associated checkbox control is Now let's see how this works in action: -```C# +````C# // Attribute checks HtmlSpan span = Find.ById("Warning"); span.AssertAttribute().Exists("style"); @@ -198,8 +198,8 @@ table.AssertTable().RowCount(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts. table.AssertTable().RowRange(ArtOfTest.Common.NumberRangeCompareType.OutsideRange, 1, 2); table.AssertTable().Contains(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts.StringCompareType.Contains, "TD5"); table.AssertTable().Contains(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts.StringCompareType.NotContain, "TD37"); -``` -```VB +```` +````VB ' Attribute checks Dim span As HtmlSpan = Find.ById(Of HtmlSpan)("Warning") span.AssertAttribute().Exists("style") @@ -253,7 +253,7 @@ table.AssertTable().RowCount(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts. table.AssertTable().RowRange(ArtOfTest.Common.NumberRangeCompareType.OutsideRange, 1, 2) table.AssertTable().Contains(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts.StringCompareType.Contains, "TD5") table.AssertTable().Contains(ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts.StringCompareType.NotContain, "TD37") -``` +```` There are many other possible assert verification combinations built into the framework that you can take advantage of. The above examples are just a small subset of what is possible to help you get started implementing them in your code and crafting the kinds of verification you need for your particular website. Consult the API reference manual to learn about the other combinations. diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-wait-class.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-wait-class.md index 76e816eb..066414e8 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-wait-class.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-wait-class.md @@ -17,7 +17,7 @@ The HtmlWait class extends and enhances the Element.Wait class with some powerfu The HtmlWait.ForVisible and HtmlWait.ForVisibleNot use the HtmlControl.IsVisible function to test whether or not the element is currently visible in the browser. Since IsVisible follows the CSS chain, we get a true reading of whether or not the element actually is visible. For example: -```C# +````C# HtmlDiv div = Find.ByTagIndex("div", 0); HtmlWait waitObj = div.Wait; @@ -32,8 +32,8 @@ waitObj.Timeout = 1200000; // Override the default value waitObj.ForVisible(); // Wait 120 seconds for the div to become invisible waitObj.ForVisibleNot(); -``` -```VB +```` +````VB HtmlDiv div = Find.ByTagIndex("div", 0); HtmlWait waitObj = div.Wait; @@ -48,11 +48,11 @@ waitObj.Timeout = 1200000; // Override the default value waitObj.ForVisible(); // Wait 120 seconds for the div to become invisible waitObj.ForVisibleNot(); -``` +```` Using the HtmlWait.ForStyles and HtmlWait.ForStylesNot methods you can wait for a particular style to be set or removed from the element. For example: -```C# +````C# HtmlSpan span = Find.ByTagIndex("span", 0); HtmlWait spanWaitObj = div.Wait; @@ -84,8 +84,8 @@ spanWaitObj.ForStylesNot("backgroundColor=red", "margin=30px"); // Will continue to wait if either style is still set to the specified value. // Uses the default timeout value from Settings.Current.ExecuteCommandTimeout span.Wait.ForStylesNot("backgroundColor=red", "margin=30px"); -``` -```VB +```` +````VB Dim span As HtmlSpan = Find.ByTagIndex(Of HtmlSpan)("span", 0) Dim spanWaitObj As HtmlWait = div.Wait @@ -117,29 +117,29 @@ spanWaitObj.ForStylesNot("backgroundColor=red", "margin=30px") ' Will continue to wait if either style is still set to the specified value. ' Uses the default timeout value from Settings.Current.ExecuteCommandTimeout span.Wait.ForStylesNot("backgroundColor=red", "margin=30px") -``` +```` The HtmlWait.ForCondition is an advanced method that calls a user defined function to determine whether or not the wait condition has been satisfied. You, the test automation programmer, may code up any sort of wait condition you can imagine. The only requirement is that your function must return true to indicate that the condition has been satisfied or return false to indicate the condition has not been satisfied. The overloads of the HtmlWait.ForCondition are split into two virtually identical sets of three overloads. The first set operates on basic Element objects. The second set operates on Control objects, which all of the classes contained in the HTML control suite derive from. Except for this difference, they operate identically. The sample below shows only the Control version: -```C# +````C# HtmlTextArea textArea = Find.ByTagIndex("textarea", 0); HtmlWait textAreaWaitObj = textArea.Wait; // Wait 30 seconds for the HtmlTextArea element to contain the text "Now is the time" textArea.Wait.ForCondition(textAreaContainsStr, false, "Now is the time", 30000); -``` -```VB +```` +````VB Dim textArea As HtmlTextArea = Find.ByTagIndex(Of HtmlTextArea)("textarea", 0) Dim textAreaWaitObj As HtmlWait = textArea.Wait ' Wait 30 seconds for the HtmlTextArea element to contain the text "Now is the time" textArea.Wait.ForCondition(AddressOf textAreaContainsStr, False, "Now is the time", 30000) -``` +```` Now we need the definition of the condition function 'textAreaContainsStr': -```C# +````C# /// /// Tests whether or not the HtmlTextArea element contains the specified string. /// @@ -161,8 +161,8 @@ public bool textAreaContainsStr(ArtOfTest.WebAii.Controls.Control ctl, Object ob HtmlTextArea textArea = (HtmlTextArea)ctl; return textArea.Text.Contains((string)obj); } -``` -```VB +```` +````VB ''' ''' Tests whether or not the HtmlTextArea element contains the specified string. ''' @@ -183,4 +183,4 @@ Public Function textAreaContainsStr(ByVal ctl As ArtOfTest.WebAii.Controls.Contr Return textArea.Text.Contains(CType(obj, String)) End Function -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md index 709906fa..72406f84 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md @@ -430,7 +430,7 @@ Here is a list of the support classes that make it easier to use the rest of the Suppose we're automating a form to submit an auto classified ad. Here's how to write the code and take advantage of the HTML element wrapper suite: -```C# +````C# [TestClass] public class SubmitAdTestClass : BaseTest { @@ -500,8 +500,8 @@ public class SubmitAdTestClass : BaseTest submit.Click(); } } -``` -```VB +```` +````VB _ Public Class SubmitAdTestClass Inherits BaseTest @@ -574,7 +574,7 @@ public class SubmitAdTestClass : BaseTest End Sub End Class -``` +```` By taking advantage of the object oriented nature of the HTML element wrapper classes, our test code that fills in the fields and clicks the submit button is much simpler, more descriptive and more intuitive in nature. Note how simple it was to enter text into all the input fields, as well as make all the drop down selections using intuitive methods included with Telerik's HTML element wrapper classes! diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/transfer-files.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/transfer-files.md index 4afad050..dc696fcb 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/transfer-files.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/transfer-files.md @@ -9,19 +9,19 @@ published: false We can even perform complete file uploads and downloads with Telerik Testing Framework automatically handling all of the popup dialogs that appear as part of the file upload/download: -```C# +````C# // Initiate a file upload Find.ByTagIndex("input", 0).Upload( Path.Combine(Globals.PATH_TO_PAGES, @"..\SupportFiles\EmptyTextFile.txt"), 5000); // Initiate a file download. Download will not return until the download is complete. Find.ByTagIndex("a", 0).Download(false, DownloadOption.Save, saveLocation, 20000); -``` -```VB +```` +````VB ' Initiate a file upload Find.ByTagIndex(Of HtmlInputFile)("input", 0).Upload( _ Path.Combine(Globals.PATH_TO_PAGES, "..\SupportFiles\EmptyTextFile.txt"), 5000) ' Initiate a file download. Download will not return until the download is complete. Find.ByTagIndex(Of HtmlAnchor)("a", 0).Download(False, DownloadOption.Save, saveLocation, 20000) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/app-config-file.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/app-config-file.md index 453c968e..997059d4 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/app-config-file.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/app-config-file.md @@ -11,13 +11,13 @@ Instead of programmatically setting the configuration, the application or test p 1.  First add the following line to the 'configSections' section: -```XML +````XML
-``` +```` 2.  Then add the settings you need under the 'WebAii.Settings' section or WebAii.Settings.Web' section. @@ -26,7 +26,7 @@ Instead of programmatically setting the configuration, the application or test p **Note:** The configuration setting names are case sensitive e.g. **AnnotateExecution** will not be recognized and will cause an exception to be thrown while **annotateExecution** will be recognized and used. -```XML +````XML -``` +```` Here is an example of a complete app.config file that contains all of Telerik's configuration settings: -```XML +````XML @@ -60,12 +60,12 @@ Here is an example of a complete app.config file that contains all of Telerik's ``` In your test code initialization, you read these settings by simply setting the UseConfig flag to true when calling the Manager() constructor. If you use the BaseTest template (which is what the VsUnit, MbUnit, NUnit and xUnit templates do) this call is done for you by BaseTest during the Initialize call: -```C# +````C# Manager mgr = new Manager(true); -``` -```VB +```` +````VB Dim myManager As Manager = New Manager(True) -``` +```` **Note:** If you are using Telerik's BaseTest (which the Telerik VS item templates use), there is no need to for your test code to read from the app.config file as shown above. The base class already does that for you. Read the item template's comments for the initialization routine for more details. diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md index 0894a3fe..adeeeca0 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md @@ -21,7 +21,7 @@ There are a few methods of controlling the settings in the Settings object. Whic If you're not using one of Telerik's test templates (VsUnit, NUnit, MbUnit, xUnit) to create your unit test, you'll need to create your own Settings object and then pass that object as a parameter to the constructor of your Manager object. For example: -```C# +````C# // Create my own Settings object and then modify the defaults Settings mySettings = new Settings(); mySettings.DefaultBrowser = BrowserType.FireFox; @@ -30,7 +30,7 @@ mySettings.ClientReadyTimeout = 60000; // Use my Settings object to construct my Manager object Manager myManager = new Manager(mySettings); ``` -```VB +````VB ' Create my own Settings object and then modify the defaults Dim mySettings As New Settings() mySettings.DefaultBrowser = BrowserType.FireFox @@ -38,13 +38,13 @@ mySettings.ClientReadyTimeout = 60000 ' Use my Settings object to construct my Manager object Dim myManager As New Manager(mySettings) -``` +```` ## Initializing the Settings Object When Using a Test Template If you're using one of Telerik's test templates (VsUnit, NUnit, MbUnit, xUnit) to create your unit test, you'll need to create your own Settings object in the TestInitialize section (or Setup section if you're using NUnit) and then pass that object as a parameter to the Initialize method of the base class. For example: -```C# +````C# // This will get a new Settings object. If a configuration // section exists, then settings from that section will be // loaded @@ -55,8 +55,8 @@ settings.UseHttpProxy = true; // Now call Initialize again with your updated settings object Initialize(settings, new TestContextWriteLine(this.TestContext.WriteLine)); -``` -```VB +```` +````VB ' This will get a new Settings object. If a configuration ' section exists, then settings from that section will be ' loaded @@ -67,7 +67,7 @@ settings.UseHttpProxy = True ' Now call Initialize again with your updated settings object Initialize(settings, New TestContextWriteLine(AddressOf Me.TestContext.WriteLine)) -``` +```` **Note:** Be sure to call Initialize only once. Calling Initialize a second time will simply be ignored and you'll be left wondering why your settings did not take effect. @@ -75,14 +75,14 @@ Initialize(settings, New TestContextWriteLine(AddressOf Me.TestContext.WriteLine Lastly you can modify most of the settings after your test is already initialized and under-way. Here's how you to do that: -```C# +````C# Manager.Settings.AnnotateExecution = true; Manager.Settings.DefaultBrowser = BrowserType.FireFox; -``` -```VB +```` +````VB Manager.Settings.AnnotateExecution = True Manager.Settings.DefaultBrowser = BrowserType.FireFox -``` +```` **Note:** The following settings can only be set during initialization: AspNetDevServerPort, CreateLogFile, EnableUILessRequestViewing, LocalWebServer, LogLocation, VerboseHttpProxy and WebAppPhysicalPath. @@ -100,12 +100,12 @@ There are a just a couple of things you need to be aware of to properly use the If it ever becomes necessary you can restore all the settings (except for those that can only be set during initialization) back to their default values. Just use the Reset() method of the Settings object. For example: -```C# +````C# Manager.Settings.Reset(); -``` -```VB +```` +````VB Manager.Settings.Reset() -``` +```` This table lists all of the WebAii framework settings that are available for you to use: diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/visual-capturing.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/visual-capturing.md index 5ccb091a..c1c98df4 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/visual-capturing.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/visual-capturing.md @@ -12,28 +12,28 @@ position: 1 Each Telerik Testing Framework Window object provides functionality to capture the visual bitmaps of the actual window it represents. You can capture the entire window or a targeted portion of that window using the Window.GetBitmap() method. You can use this method for any Win32 window represented by the Window object. Lets take a quick example: -```C# +````C# // Get the current browser window bitmap. System.Drawing.Bitmap browserImage = ActiveBrowser.Window.GetBitmap(); -``` -```VB +```` +````VB Dim browserImage As System.Drawing.Bitmap = ActiveBrowser.Window.GetBitmap() -``` +```` The Log uses the above method to capture the browser window when calling the Log.CaptureBrowser() method. The log also saves the captured bitmap to the 'LogLocation' as provided by your settings and a line is added to the log file that points to that bitmap file. The bitmaps are also added to the Log.CapturedBitmaps[] array. For example: -```C# +````C# // Capture the bitmap of my current ActiveBrowser and save it to the LogLocation // [LogLocation is set using the Settings object that is passed in to the Manager's constructor] Manager.Log.CaptureBrowser(Manager.ActiveBrowser); // Note: If you are automating multiple browser instances, you can simply // call the CaptureBrowser() passing in any instance from the Manager.Browser[] collection. -``` -```VB +```` +````VB Manager.Log.CaptureBrowser(Manager.ActiveBrowser) -``` +```` ## Visual Capturing of Elements @@ -41,7 +41,7 @@ In addition to capturing the entire window, you can also capture targeted portio Let's take a simple example to demonstrate this functionality. Assume we have the following simple page: -```HTML +````HTML Visual Capturing sample @@ -61,7 +61,7 @@ Let's take a simple example to demonstrate this functionality. Assume we have th
-``` +```` The above page renders as follows: @@ -69,20 +69,20 @@ The above page renders as follows: The below code shows how we can get the visual capture of the second 'div' element: -```C# +````C# // Get the element Element myDiv = ActiveBrowser.Find.ById("mydiv"); // Capture it visually as a bitmap System.Drawing.Bitmap divimage = ActiveBrowser.Window.GetBitmap(myDiv.GetRectangle()); -``` -```VB +```` +````VB ' Get the element Dim myDiv As Element = ActiveBrowser.Find.ById("mydiv") ' Capture it visually as a bitmap Dim divimage As System.Drawing.Bitmap = ActiveBrowser.Window.GetBitmap(myDiv.GetRectangle()) -``` +```` The divimage bitmap captured object is: diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/win32-windows.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/win32-windows.md index 51b74e6d..4559dd39 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/win32-windows.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/win32-windows.md @@ -17,7 +17,7 @@ In addition to the functionality described above, the WindowManager exposes a st Let's take an example to illustrate how these two classes can help provide automation functionality for native Win32 windows: -```C# +````C# Window vsWindow = null; // Get all desktop Windows @@ -39,8 +39,8 @@ foreach (Window win in winManager.Items) // Find the vsWindow recursively. Passing IntPtr.Zero will start from the desktop. Window vsWindowRecur = WindowManager.FindWindowRecursively( IntPtr.Zero, "Microsoft Visual Studio", true, 0); -``` -```VB +```` +````VB Dim vsWindow As Window = Nothing ' Get all desktop Windows @@ -61,5 +61,5 @@ Next ' Find the vsWindow recursively. Passing IntPtr.Zero will start from the desktop. Dim vsWindowRecur As Window = WindowManager.FindWindowRecursively( _ IntPtr.Zero, "Microsoft Visual Studio", True, 0) -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/element-validation.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/element-validation.md index a9e27fd6..bfaba9ea 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/element-validation.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/element-validation.md @@ -6,19 +6,19 @@ position: 3 --- # Validating Properties of Silverlight Elements -```C# +````C# Assert.IsTrue(guidanceOverlays.Count == 15); Assert.IsTrue(CompareUtils.NumberCompareRange(foundPatients.Count, 93, 105, NumberRangeCompareType.InRange); Assert.IsTrue(patientSearchItem.Find.ByName("Address").Visibility == Visibility.Collapsed); Assert.IsTrue(searchScroll.VerticalOffset == 2000); Assert.AreEqual(new System.Drawing.Rectangle(1700, 259, 813, 465), admin1.GetScreenRectangle()); -``` -```VB +```` +````VB app.Find.Strategy = FindStrategy.WhenNotVisibleReturnElementProxy Assert.IsTrue(CompareUtils.NumberCompareRange(foundPatients.Count, 93, 105, NumberRangeCompareType.InRange)) Assert.IsTrue(patientSearchItem.Find.ByName("Address").Visibility = Visibility.Collapsed) Assert.AreEqual(2000, searchScroll.VerticalOffset) Assert.AreEqual(Of System.Drawing.Rectangle)(New System.Drawing.Rectangle(1700, 259, 813, 465), admin1.GetScreenRectangle()) -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md index 5918d63a..1acea6ea 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md @@ -25,7 +25,7 @@ Once you have found an element you can then interact with it. Many different typ To invoke a UI action, use the User object that is attached to every UI element. For example, to click on an element such as a button, enter code like this: -```C# +````C# //In this example app can be a Silverlight application or the MainWindow element of a WPF application // Click the ShowGuide button. app.Find.ByName("guideButton").User.Click(); @@ -33,8 +33,8 @@ app.Find.ByName("guideButton").User.Click(); // Right click the ShowGuide button 5 pixels away from the center of the control app.Find.ByName("guideButton").User.Click(MouseClickType.RightClick, new System.Drawing.Point(5, 5), OffsetReference.AbsoluteCenter); -``` -```VB +```` +````VB 'In this example app can be a Silverlight application or the MainWindow of a WPF application ' Click the ShowGuide button. app.Find.ByName("guideButton").User.Click() @@ -43,47 +43,47 @@ app.Find.ByName("guideButton").User.Click() app.Find.ByName("guideButton").User.Click(MouseClickType.RightClick, _ New System.Drawing.Point(5, 5), _ OffsetReference.AbsoluteCenter) -``` +```` ## Sending Text to a Control To send text to the control use one of the following lines of code: -```C# +````C# searchText.User.TypeText("Abe Lincoln", 100); searchText.User.KeyPress(System.Windows.Forms.Keys.L, 100); searchText.User.KeyDown(System.Windows.Forms.Keys.L); searchText.User.KeyUp(System.Windows.Forms.Keys.L); -``` -```VB +```` +````VB searchText.User.TypeText("Abe Lincoln", 100) searchText.User.KeyPress(Windows.Forms.Keys.L, 100) searchText.User.KeyDown(Windows.Forms.Keys.L) searchText.User.KeyUp(Windows.Forms.Keys.L) -``` +```` ## Mouse Actions To perform one of the various possible mouse actions use one of the following lines of code: -```C# +````C# admin2.Find.ByType("Thumb").User.DragTo(admin3.Find.ByType("Thumb")); admin1.User.HoverOver(); admin1.User.MouseEnter(OffsetReference.LeftCenter); admin1.User.MouseLeave(OffsetReference.RightCenter); admin1.User.TurnMouseWheel(5, MouseWheelTurnDirection.Backward, false); -``` -```VB +```` +````VB admin2.Find.ByType("Thumb").User.DragTo(admin3.Find.ByType("Thumb")) admin1.User.HoverOver() admin1.User.MouseEnter(OffsetReference.LeftCenter) admin1.User.MouseLeave(OffsetReference.RightCenter) admin1.User.TurnMouseWheel(5, MouseWheelTurnDirection.Backward, False) -``` +```` ## Framework Element Properties and Actions @@ -186,7 +186,7 @@ The FrameworkElement class implements a number of methods just for purpose of te If the property of an element you want to get or set isn't available as a property in the UI element wrapper object, you can use the GetProperty and SetProperty from the FrameworkElement object to get/set it. This is especially useful if you start designing your own custom Silverlight UI controls or use a third party custom control. Let's suppose I have a UI element that represents an airline ticket. One of the many obvious properties such a control would need to have is flight number. To fetch this property from the control I can use code like this: -```C# +````C# // Fetch the flight number from the ticket FrameworkElement ticket = app.FindName("airlineTicket"); AutomationProperty flightNoProperty = new AutomationProperty("flightNo", typeof(string)); @@ -194,8 +194,8 @@ string flightNo = (string)ticket.GetProperty(flightNoProperty); // Update the flight number on the ticket ticket.SetProperty(flightNoProperty, "HX-1572"); -``` -```VB +```` +````VB ' Fetch the flight number from the ticket Dim ticket As FrameworkElement = app.FindName("airlineTicket") Dim flightNoProperty As New AutomationProperty("flightNo", GetType(String)) @@ -203,22 +203,22 @@ Dim flightNo As String = DirectCast(ticket.GetProperty(flightNoProperty), String ' Update the flight number on the ticket ticket.SetProperty(flightNoProperty, "HX-1572") -``` +```` ## Invoking Element Methods Another advanced feature of the framework is the ability to invoke any method attached to an element. Here's how to invoke the ScrollToVerticalOffset method of a ScrollViewer element. -```C# +````C# ScrollViewer searchScroll = app.FindName("patientSearchScroller").Find.ByType(); searchScroll = app.FindName().Find.ByType<>(); AutomationMethod scrollVert = new AutomationMethod("ScrollToVerticalOffset", null); searchScroll.InvokeMethod(scrollVert, 2000); -``` -```VB +```` +````VB Dim searchScroll As ScrollViewer = app.FindName("patientSearchScroller").Find.ByType(Of ScrollViewer)() Dim scrollVert As New AutomationMethod("ScrollToVerticalOffset", Nothing) searchScroll.InvokeMethod(scrollVert, 2000) -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md index cde2f1eb..1408f6a1 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md @@ -19,14 +19,14 @@ Before you can automate interaction with elements contained in a Silverlight/WPF The simplest method of searching is to use the **Find.ByName(String name)** method or the **Find.ByName\(String name)** method. Both methods take a string parameter that specifies the name of the element to locate in the application. The first method returns a FrameworkElement object while the second method returns an object of type T having the specified name. If an element having the specified name does not exist or is not currently visible, or if the found element cannot be cast into type T, the functions will return null ('Nothing' in VB.NET). For example: -```C# +````C# FrameworkElement zoomBox = app.FindName("zoomBox"); TextBox searchText = app.FindName("searchText"); -``` -```VB +```` +````VB Dim zoomBox As FrameworkElement = app.FindName("zoomBox") Dim searchText As TextBox = app.FindName(Of TextBox)("searchText") -``` +```` You might be asking "How do I know what name to use to find the element I want?" There really are only a few ways to find out: @@ -87,14 +87,14 @@ The Find object has a 'Strategy' property that controls how the method behaves w Sometimes you may need to fetch a list of the elements contained in the application. Suppose we want a list of all the DataGrids contained in the application. Either of the following lines of code will return this list: -```C# +````C# IList dataGrids1 = app.Find.AllByType("DataGrid"); IList dataGrids2 = app.Find.AllByType(); -``` -```VB +```` +````VB Dim dataGrids1 As IList(Of FrameworkElement) = app.Find.AllByType("DataGrid") Dim dataGrids2 As IList(Of DataGrid) = app.Find.AllByType(Of DataGrid)() -``` +```` All of the Find.AllByxxx functions are: @@ -121,14 +121,14 @@ All of the Find.AllByxxx functions are: A more advanced feature is scoped searches. Suppose you need to find the ScrollBar attached to some other element. You would use code like this: -```C# +````C# ScrollViewer searchScroll = app.FindName("patientSearchScroller").Find.ByType(); searchScroll = app.FindName().Find.ByType<>(); -``` -```VB +```` +````VB Dim searchScroll As ScrollViewer = app.FindName("patientSearchScroller").Find.ByType(Of ScrollViewer)() searchScroll ScrollViewer = app.FindName().Find.ByType( ScrollViewer)() -``` +```` The above code first locates the element named "patientSearchScroller" and then within that control finds the element of type "ScrollViewer". The search for "ScrollViewer" is considered a scoped search (aka chained search) because the search is limited to only those elements found underneath the "patientSearchScroller" element of the Visual Tree. The FrameworkElement base class has a Find property which allows scoped searches for all elements of an application. @@ -136,9 +136,9 @@ The above code first locates the element named "patientSearchScroller" and then Another advanced feature is to find the element using a XamlFindExpression. FindExpressions are the replacement/evolution of FindParams. Telerik Testing Framework uses FindExpressions as the basis for all element searches in the DOM, HWnd, or control trees (including Translator Locators). For example, the above scoped search to retrieve a ScrollViewer can be written using Find.ByExpression as follows: -```C# +````C# ScrollViewer searchScroll = app.Find.ByExpression(new XamlFindExpression("Name=patientSearchScroller", "|", "XamlTag=ScrollViewer")).As(); -``` -```VB +```` +````VB Dim searchScroll2 As ScrollViewer = app.Find.ByExpression(New XamlFindExpression("Name=patientSearchScroller", "|", "XamlTag=ScrollViewer")).[As](Of ScrollViewer)() -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/silverlight-ui-automation.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/silverlight-ui-automation.md index 03db9fd0..b88c9dda 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/silverlight-ui-automation.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/silverlight-ui-automation.md @@ -15,7 +15,7 @@ To get started, let's use a simple application and demo some basic automation sc To automate the application above to set the text, click the button and then verify the hello text in Telerik Testing Framework, we can simply write the following code using the Silverlight Extension (which resides under ArtOfTest.WebAii.Silverlight). -```C# +````C# [TestMethod] public void SLDemo() { @@ -40,8 +40,8 @@ public void SLDemo() // Verify the text Assert.IsTrue(app.Find.ByTextContent("p:Hello").TextContent.Equals("Hello Telerik")); } -``` -```VB +```` +````VB _ Public Sub SampleWebAiiTest() 'Enable Silverlight @@ -65,7 +65,7 @@ Public Sub SampleWebAiiTest() ' Verify the text Assert.IsTrue(app.Find.ByTextContent("p:Hello").TextContent.Equals("Hello Telerik")) End Sub -``` +```` Let's take a closer look at the code above line by line: diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/synchronization.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/synchronization.md index 20e4de7e..5c5f0280 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/synchronization.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/synchronization.md @@ -40,44 +40,44 @@ The framework has many features implemented to aid you in synchronizing with you Before you can use the VisualWait.ForExists method to wait for an element to exist you need to create what is called an "Element Proxy". An element proxy is a lightweight FrameworkElement that doesn't actually represent a real element but contains information on how to find the desired element in the Visual Tree. To create an element proxy implement code like this: -```C# +````C# app.Find.Strategy = FindStrategy.WhenNotVisibleReturnElementProxy; FrameworkElement myElementProxy = app.Find.ByName("MyElement"); -``` -```VB +```` +````VB app.Find.Strategy = FindStrategy.WhenNotVisibleReturnElementProxy Dim myElementProxy As FrameworkElement = app.Find.ByName("MyElement") -``` +```` Now that you have an element proxy you use it to wait for the element to exist using this line of code: -```C# +````C# // Wait 15 seconds for the element to exist proxy.Wait.ForExists(15000); -``` -```VB +```` +````VB ' Wait 15 seconds for the element to exist proxy.Wait.ForExists(15000) -``` +```` ## Using ForExistsNot, ForVisible, ForVisibleNot, ForNoMotion Using any of these functions is pretty straightforward. Just call the method with appropriate parameters, for example: -```C# +````C# FrameworkElement ticket = app.FindName("airlineTicket"); ticket.Wait.ForExistsNot(); // Wait for the element to no longer exist ticket.Wait.ForVisible(3000); // Wait up to 3 seconds for the element to become visible ticket.Wait.ForVisibleNot(2500); // Wait up to 2.5 seconds for the element to no longer be visible ticket.Wait.ForNoMotion(250, 4500); // Wait up to 4.5 seconds for the element to stop moving. Check every 1/4 second. -``` -```VB +```` +````VB Dim ticket As FrameworkElement = app.FindName("airlineTicket") ticket.Wait.ForExistsNot() ' Wait for the element to no longer exist ticket.Wait.ForVisible(3000) ' Wait up to 3 seconds for the element to become visible ticket.Wait.ForVisibleNot(2500) ' Wait up to 2.5 seconds for the element to no longer be visible ticket.Wait.ForNoMotion(250, 4500) ' Wait up to 4.5 seconds for the element to stop moving. Check every 1/4 second. -``` +```` ## Creating Your Own Wait Condition @@ -85,7 +85,7 @@ If none of the built-in framework wait for methods meet your needs, the framewor You can implement your conditional predicate in a function or a lambda expression. Here is a sample of how to implement and use your own conditional predicate in a function: -```C# +````C# FrameworkElement guideButton = app.FindName("guideButton"); guideButton.Wait.For(myComparator); @@ -93,25 +93,25 @@ public bool myComparator(FrameworkElement elem) { return elem.Visibility == ArtOfTest.WebAii.Silverlight.UI.Visibility.Visible; } -``` -```VB +```` +````VB Dim guideButton As FrameworkElement = app.FindName("guideButton") guideButton.Wait.[For](AddressOf myComparator) Public Function myComparator(ByVal elem As FrameworkElement) As Boolean Return elem.Visibility = ArtOfTest.WebAii.Silverlight.UI.Visibility.Visible End Function -``` +```` To do the same thing in a lambda expression would look like this: -```C# +````C# FrameworkElement guideButton = app.FindName("guideButton"); guideButton.Wait.For(new System.Predicate((fe) => fe.Visibility == ArtOfTest.WebAii.Silverlight.UI.Visibility.Visible)); -``` -```VB +```` +````VB Dim guideButton As FrameworkElement = app.FindName("guideButton") guideButton.Wait.[For](New System.Predicate(Of FrameworkElement)(Function(fe) fe.Visibility = ArtOfTest.WebAii.Silverlight.UI.Visibility.Visible)) -``` +```` diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/wpf-ui-automation.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/wpf-ui-automation.md index fcbb3867..b6f10921 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/wpf-ui-automation.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/wpf-ui-automation.md @@ -13,7 +13,7 @@ To get started, let's use a simple application and demo some basic automation sc To automate the application above to set the text, click the button and then verify the hello text in **Telerik Testing Framework**, we can simply write the following code using the **WPF Extension** (which resides under **ArtOfTest.WebAii.Wpf**). The template for this method is based on a VsUnit test. However, the code itself can be reused in other type of Unit tests - it's just the template that will be different. -```C# +````C# [TestMethod] public void wpfDemo() { @@ -36,8 +36,8 @@ public void wpfDemo() Assert.IsTrue(tb.Text.Equals("Hello World!")); } -``` -```VB +```` +````VB _ Public Sub wpfDemo() ' Launch the application instance from its location in file system @@ -59,7 +59,7 @@ public void wpfDemo() Assert.IsTrue(tb.Text.Equals("Hello World!")) End Sub -``` +```` Let's take a closer look at the code above line by line: diff --git a/docs/troubleshooting-guide/browser-inconsistencies-tg/rendering-differences.md b/docs/troubleshooting-guide/browser-inconsistencies-tg/rendering-differences.md index 88945016..4db5e361 100644 --- a/docs/troubleshooting-guide/browser-inconsistencies-tg/rendering-differences.md +++ b/docs/troubleshooting-guide/browser-inconsistencies-tg/rendering-differences.md @@ -26,7 +26,7 @@ The default is **AllBrowsers**. Copy your step and set one to **InternetExplorer If you need to do a similar action in code, you can use code like this: -```C# +````C# if (ActiveBrowser.BrowserType == BrowserType.InternetExplorer) { // Do IE specific action @@ -39,8 +39,8 @@ else { throw new ApplicationException("Unknown browser type"); } -``` -```VB +```` +````VB ' Do IE specific action If ActiveBrowser.BrowserType = BrowserType.InternetExplorer Then ' Do Firefox specific action @@ -48,7 +48,7 @@ ElseIf ActiveBrowser.BrowserType = BrowserType.FireFox Then Else Throw New ApplicationException("Unknown browser type") End If -``` +```` [1]: /img/troubleshooting-guide/verification-problems-tg/work-ie-not-ff/fig1.png \ No newline at end of file diff --git a/docs/troubleshooting-guide/recording-problems-tg/refresh-dom.md b/docs/troubleshooting-guide/recording-problems-tg/refresh-dom.md index aa9e36d3..1f2be225 100644 --- a/docs/troubleshooting-guide/recording-problems-tg/refresh-dom.md +++ b/docs/troubleshooting-guide/recording-problems-tg/refresh-dom.md @@ -17,9 +17,9 @@ Some elements in an application are loaded in the DOM dynamically during executi Very often in such situation refreshing the DOM after that particular action will allow the execution to go smoothly. There is no UI step for that though it could be easily obtained in a coded step. The only row of code you need to add is the following: -```C# +````C# Manager.ActiveBrowser.RefreshDomTree(); -``` -```VB +```` +````VB Manager.ActiveBrowser.RefreshDomTree() -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/troubleshooting-guide/recording-problems-tg/ts-fails-to-start-msedge.md b/docs/troubleshooting-guide/recording-problems-tg/ts-fails-to-start-msedge.md index eb979801..ee8f0c53 100644 --- a/docs/troubleshooting-guide/recording-problems-tg/ts-fails-to-start-msedge.md +++ b/docs/troubleshooting-guide/recording-problems-tg/ts-fails-to-start-msedge.md @@ -11,9 +11,9 @@ publish: true *Telerik Test Studio cannot start Edge browser without browser extension. While Test Studio tests work fine with Chrome.* -``` +```` System.TimeoutException: This request operation sent to net.pipe://localhost/Telerik/TestingFramework.Hosts.Manager did not receive a reply within the configured timeout (00:01:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client. -``` +```` ## SOLUTION diff --git a/docs/troubleshooting-guide/scheduling-issues-tg/test-from-tfs-dont-run.md b/docs/troubleshooting-guide/scheduling-issues-tg/test-from-tfs-dont-run.md index d027a95b..7cd46f33 100644 --- a/docs/troubleshooting-guide/scheduling-issues-tg/test-from-tfs-dont-run.md +++ b/docs/troubleshooting-guide/scheduling-issues-tg/test-from-tfs-dont-run.md @@ -16,7 +16,7 @@ A scheduled test list with Get Latest from TFS enabled does not run. The first time a project is opened from TFS it is mapped to a local directory. A relative common scenario is to change the remote project location in TFS which will not be reflected in the local copy of the project. Thus when trying to execute a test list using 'Get Latest' option the project could not be found in the previous remote location. As a result no tests execution starts and the following exception is logged in the application log: -``` +```` [date time,Telerik.TestStudio.ExecutionManagerService.exe(6336:125),Execution] FileReaderWriterSync.ReadFileAsync() : EXCEPTION! (see below) Outer Exception Type: System.IO.DirectoryNotFoundException Message: Could not find a part of the path 'C:\Users\[User Name]\AppData\Local\Temp\Projects\[GUID]\TestLists\My Test List.aiilist'. @@ -26,11 +26,11 @@ The first time a project is opened from TFS it is mapped to a local directory. A at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at Telerik.TestStudio.Shared.Storage.Local.FileReaderWriterSync.d__1.MoveNext() -``` +```` The remote path in TFS for each source control enabled project is stored in the Settings.aiis file and could be changed only manually. The value of "RemotePath" setting in Test Studio project settings file (Settings.aiis) must be updated with the actual TFS project location. For your reference below is listed part of a sample Settings.aiis file showing the "RemotePath" setting: -``` +```` ... "SourceControlRepository": { "__type": "ArtOfTest.Common.TFSClient.TFSRepositoryInfo", @@ -46,7 +46,7 @@ The remote path in TFS for each source control enabled project is stored in the } }, ... -``` +```` ## SOLUTION 2 diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/artoftestconnector-error.md b/docs/troubleshooting-guide/test-execution-problems-tg/artoftestconnector-error.md index 19ad182e..150bef7f 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/artoftestconnector-error.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/artoftestconnector-error.md @@ -10,10 +10,10 @@ position: 1 I need to automate a 64-bit WPF application. When I try to configure a WPF test in Test Studio or run an existing one, I get a message that a dll is missing. If I check the listed directory I can see the file listed in it, but no test starts for the automated WPF application. -``` +```` There was a problem starting C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Connector_64.dll. The specified module could not be found. -``` +```` ## Solution diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/invoke-blind-keyboard-typing.md b/docs/troubleshooting-guide/test-execution-problems-tg/invoke-blind-keyboard-typing.md index 737845af..4e090e95 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/invoke-blind-keyboard-typing.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/invoke-blind-keyboard-typing.md @@ -18,21 +18,21 @@ The "blind" typing actions itself could be implemented in a API test as step, which has a code behind file, you might encounter similar error after updating Test Studio: -``` +```` Could not load file or assembly 'Telerik.ApiTesting.Framework, Version=xxxx.x.xxx.xxxx, Culture=neutral, PublicKeyToken=xxx' or one of its dependencies. The system cannot find the file specified. -``` +```` This means that the API embeded project was built with the previous version of APITesting Framework and the *dll* files were generated with that version. diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/pages-not-defined.md b/docs/troubleshooting-guide/test-execution-problems-tg/pages-not-defined.md index 9da5d9fe..6a44b18e 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/pages-not-defined.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/pages-not-defined.md @@ -19,7 +19,7 @@ The coded files need to use the namespace as the one set on project level in the The code-behind file for a test in project with name TestProj2 looks like this: -```C# +````C# // Starting with a list of using statements which may vary // and therefore are not listed here @@ -59,7 +59,7 @@ namespace TestProj2 // This is the namespace set in the project settings } } -``` +```` ## Solution diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/tests-not-executed-in-chrome-or-firefox.md b/docs/troubleshooting-guide/test-execution-problems-tg/tests-not-executed-in-chrome-or-firefox.md index 78ef069d..5f00e148 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/tests-not-executed-in-chrome-or-firefox.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/tests-not-executed-in-chrome-or-firefox.md @@ -10,14 +10,14 @@ position: 1 Test Studio Chrome or Firefox browser latest extensions have been installed and browsers properly calibrated. But it's still not possible to execute/record a test using those browsers and the following exception appears in the execution log. -``` +```` [Date, Time] - Error attempting to exit runner. Error: System.IO.IOException: Pipe is broken. at System.IO.Pipes.PipeStream.WinIOError(Int32 errorCode) at System.IO.Pipes.PipeStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count) at System.IO.Pipes.PipeStream.Write(Byte[] buffer, Int32 offset, Int32 count) at ArtOfTest.WebAii.Messaging.Process.PipeCommunication.WriteCommandToPipe(PipeCommand command, PipeStream pipe, Boolean waitForDrain) at ArtOfTest.WebAii.Design.Execution.RunnerController.Exit() -``` +```` ## Solution diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-locate-element.md b/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-locate-element.md index b70ffca2..1af9a033 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-locate-element.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-locate-element.md @@ -88,7 +88,7 @@ Start by using the same steps to determine if the test is on the right page. Loo Let's take the second failure list above as an example. The find logic is saying find an element that has the id "*rpbNavigator_i3_rtvROOFER*" then find the third \
  • element (because it's zero based) underneath it. Here's what the DOM looked like when the test failed: -``` +````
    @@ -99,7 +99,7 @@ Let's take the second failure list above as an example. The find logic is saying
    -``` +```` Notice that there are no \
  • elements contained in the unordered list (the \
      element). Here's a case where the dropdown combobox doesn't get populated until you actually open the combobox. Opening the combobox initiates an AJAX postback which returns the list of items to populate in the combobox. The solution was to add a test step to open the combobox before our failing step. @@ -113,7 +113,7 @@ If you use XPath or TagIndex to locate the element and the structure of the page Make sure the name/IDF didn't change after recording the test. You can compare the find expression for the particular element and the DOM tree of the application: -``` +```` @@ -123,7 +123,7 @@ Make sure the name/IDF didn't change after recording the test. You can compare t
  • -``` +```` *DOM tree of our application which shows us the ID of the DIV.* diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-show-data.md b/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-show-data.md index 8b7c9a19..2b19a794 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-show-data.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-show-data.md @@ -11,9 +11,9 @@ publish: false If running a data driven test on remote machine you get your test failed and the following exception could be found in the log: -``` +```` The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine -``` +```` > This could happen on machines with no Microsoft Office or Data Connectivity Component installed or if the Microsoft Office package is 64-bit version. diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/wait-for-condition-timed-out.md b/docs/troubleshooting-guide/test-execution-problems-tg/wait-for-condition-timed-out.md index 0d78aa18..38a17081 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/wait-for-condition-timed-out.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/wait-for-condition-timed-out.md @@ -13,12 +13,12 @@ You may encounter the *Wait for condition* has timed out error after your test p __Failure Information:__ -``` +```` Wait for condition has timed out InnerException: System.TimeoutException: Wait for condition has timed out at ArtOfTest.WebAii.Core.Browser.WaitUntilReady() -``` +```` This indicates the test timed out waiting for the browser to return to a "ready" state after the click command was sent to it. diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/why-find-by-content.md b/docs/troubleshooting-guide/test-execution-problems-tg/why-find-by-content.md index def4bb3f..e30022e8 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/why-find-by-content.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/why-find-by-content.md @@ -24,27 +24,27 @@ If we run the test against this html source: The following find expression will return NullReferenceException: -```C# +````C# HtmlAnchor elementName = ActiveBrowser.Find.ByContent("Test"); -``` -```VB +```` +````VB Dim elementName As HtmlAnchor = ActiveBrowser.Find.ByContent(Of HtmlAnchor)("Test") -``` +```` The solution is to use either the correct element type: -```C# +````C# HtmlDiv elementName = ActiveBrowser.Find.ByContent("Test"); -``` -```VB +```` +````VB Dim elementName As HtmlDiv = ActiveBrowser.Find.ByContent(Of HtmlDiv)("Test") -``` +```` or call the method without specifying element type: -```C# +````C# Element a = ActiveBrowser.Find.ByContent("Test"); -``` -```VB +```` +````VB Dim a As Element = ActiveBrowser.Find.ByContent("Test") -``` \ No newline at end of file +```` \ No newline at end of file diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/windows-security-dialog.md b/docs/troubleshooting-guide/test-execution-problems-tg/windows-security-dialog.md index bd419e34..9e771a24 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/windows-security-dialog.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/windows-security-dialog.md @@ -25,7 +25,7 @@ If the tested application uses similar dialog and fails to be automated the Wind For example the username and password might be stored and only the Ok button needs to be hit. If it is the active one and pressing Enter will confirm the dialog then only this part of the code is required after the URL is entered. -```C# +````C# [CodedStep(@"New Coded Step")] public void WindowsSecurityDialog_CodedStep() { @@ -42,8 +42,8 @@ For example the username and password might be stored and only the Ok button nee Manager.Desktop.KeyBoard.KeyPress(Keys.Tab); //switch the focus to the OK button Manager.Desktop.KeyBoard.KeyPress(Keys.Enter); //confirm the OK button } -``` -```VB +```` +````VB _ Public Sub WindowsSecurityDialog_CodedStep() Manager.Desktop.KeyBoard.KeyPress(Keys.F6) 'pressing F6 makes the address bar of each browser active @@ -65,7 +65,7 @@ For example the username and password might be stored and only the Ok button nee Manager.Desktop.KeyBoard.KeyPress(Keys.Enter) 'confirm the OK button End Sub -``` +```` >To be able to use the code above the assembly **System.Windows.Forms.dll** needs to be referenced in the Project settings.
    diff --git a/docs/troubleshooting-guide/visual-studio-tg/coded-steps-disappear-vs.md b/docs/troubleshooting-guide/visual-studio-tg/coded-steps-disappear-vs.md index 93a99b72..ed2834d9 100644 --- a/docs/troubleshooting-guide/visual-studio-tg/coded-steps-disappear-vs.md +++ b/docs/troubleshooting-guide/visual-studio-tg/coded-steps-disappear-vs.md @@ -21,7 +21,7 @@ In order to fix this problem so you are able to see your coded steps again, you 2. Generate in the project an independant class that defines the inheritance of your custom base class from Test Studio 'BaseWebAiiTest', i.e.: -```C# +````C# using ArtOfTest.WebAii.Design; using System; using System.Collections.Generic; @@ -34,5 +34,5 @@ public class CustomWebAiiTest : BaseWebAiiTest { } } -``` +```` From c90388b13c96bb691b3e6e1bc38951af43ed9858 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Wed, 26 Feb 2025 16:35:55 +0200 Subject: [PATCH 12/65] Updated html tables in markdown --- .../general/write-into-data-source.md | 18 ++-- .../html/jquery-events-do-not-fire.md | 19 +++-- .../built-in-help-tools/guided-tutorials.md | 16 ++-- .../built-in-help-tools/in-product-guides.md | 25 +++--- .../customize-project/custom-layout.md | 16 ++-- .../data-drive-test/ddt-results.md | 40 +++++---- docs/automated-tests/elements/find-element.md | 2 +- docs/automated-tests/elements/overview.md | 34 +++++--- .../execute-apitest/add-api-test-as-step.md | 16 ++-- .../dynamic-targets-custom.md | 24 ++++-- .../designing-load-tests/dynamic-targets.md | 48 +++++++---- .../load-testing-results/analyzing-results.md | 2 +- .../load/running-load-test/running-tests.md | 2 +- docs/automated-tests/recording/overview.md | 12 +-- .../recording/recording-dialogs.md | 49 +++++------ .../responsive/responsive-test.md | 16 ++-- .../scheduling/remote-scheduled-run.md | 1 - .../scheduling/stop-cancel-scheduled-job.md | 14 ++-- .../test-lists/test-lists-standalone.md | 16 ++-- docs/docs-builder.yml | 4 + docs/features/custom-steps/overview.md | 16 ++-- .../bind-test-data-source.md | 38 ++++++--- .../data-driven-testing/manage-local-data.md | 14 ++-- .../elements-explorer/element-mapping.md | 30 ++++--- .../integration/bug-tracking/configuration.md | 32 ++++--- .../bug-tracking/launch-bug-dialog.md | 14 ++-- docs/features/logical-steps/if-else.md | 14 ++-- docs/features/logical-steps/loop.md | 14 ++-- docs/features/logical-steps/while-loop.md | 14 ++-- docs/features/project-settings/overview.md | 14 ++-- docs/features/project-settings/theme.md | 84 ++++++++++++------- .../recorder/compact-recording-toolbar.md | 14 ++-- docs/features/recorder/test-recorder.md | 32 ++++--- .../test-step-context-menu.md | 14 ++-- .../test-maintenance/test-step-properties.md | 36 ++++---- .../features/test-runners/artoftest-runner.md | 2 +- docs/getting-started/analyze-the-results.md | 4 +- docs/getting-started/first-project.md | 16 ++-- docs/getting-started/first-test.md | 16 ++-- .../variable-query-strings.md | 14 ++-- .../test-automation-kb/dynamic-ids.md | 14 ++-- .../configure-your-browser/chrome.md | 16 ---- .../installation/install-procedure.md | 10 +-- .../advanced-topics-wtc/frames-support.md | 2 +- .../firefox-dialogs.md | 16 ++-- .../test-regions-wtc/Introduction.md | 2 +- .../using-the-http-proxy.md | 2 +- .../finding-page-elements.md | 2 +- .../linq-queries.md | 2 +- .../html-control-suite-wtc/html-asserts.md | 2 +- .../html-control-suite-wtc/introduction.md | 6 +- .../settings-class.md | 2 +- .../framework-element-object.md | 4 +- .../invoking-actions.md | 6 +- .../locating-elements.md | 6 +- .../synchronization.md | 2 +- .../window-partial-match.md | 14 ++-- docs/welcome.md | 4 +- 58 files changed, 551 insertions(+), 367 deletions(-) diff --git a/docs/advanced-topics/coded-samples/general/write-into-data-source.md b/docs/advanced-topics/coded-samples/general/write-into-data-source.md index 9b865d7a..547d3a06 100644 --- a/docs/advanced-topics/coded-samples/general/write-into-data-source.md +++ b/docs/advanced-topics/coded-samples/general/write-into-data-source.md @@ -14,12 +14,20 @@ This is possible with a coded solution. Here's an example: Let's automate checkdomain.com to check whether the domains listed in an Excel file are still available. We'll write Registered or Available into the first column of the Excel file for each domain name. -
    - - - +
    ![Before Test Run][1]

    **Before Test Run**
    ![After Test Run][2]

    **After Test Run**
    + + + -
    + +![Before Test Run][1] +Before Test Run + + +![After Test Run][2] +After Test Run +
    +
    Here's a sample test that automates this case: diff --git a/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md b/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md index 9644925e..95ce4da6 100644 --- a/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md +++ b/docs/advanced-topics/coded-samples/html/jquery-events-do-not-fire.md @@ -13,13 +13,20 @@ In some cases, Test Studio does not automatically call local jQuery events. You Inputting text into this simple HTML text box triggers a jQuery event that changes the background color of the text box. - +
    - - - - -
    ![Before Selection][1]

    **Before Selection**
    ![Available Selections][2]

    **Available Selections**
    ![After Selection][3]

    **After Selection**
    + + + + + +
    + +![Before Selection][1]

    **Before Selection**
    + +![Available Selections][2]

    **Available Selections**
    + +![After Selection][3]

    **After Selection**
    This is the HTML for the text input element: diff --git a/docs/automated-tests/customize-project/built-in-help-tools/guided-tutorials.md b/docs/automated-tests/customize-project/built-in-help-tools/guided-tutorials.md index d1e5c2a7..3b41c808 100644 --- a/docs/automated-tests/customize-project/built-in-help-tools/guided-tutorials.md +++ b/docs/automated-tests/customize-project/built-in-help-tools/guided-tutorials.md @@ -13,12 +13,16 @@ Have a smooth getting started experience with the guided interactive tutorials b You can start a tutorial from the Test Studio [**Welcome Screen**](/automated-tests/customize-project/welcome-screen#get-started) or from within the product. - - - - - -
    ![Welcome Screen][1]
    **Start from Welcome Screen**
    ![In-product][2]
    **Start In-Product**
    +
    + + + + +
    + +![Welcome Screen][1]
    **Start from Welcome Screen**
    + +![In-product][2]
    **Start In-Product**
    ## Scenarios to Guide You Through diff --git a/docs/automated-tests/customize-project/built-in-help-tools/in-product-guides.md b/docs/automated-tests/customize-project/built-in-help-tools/in-product-guides.md index 25b12486..a588fbda 100644 --- a/docs/automated-tests/customize-project/built-in-help-tools/in-product-guides.md +++ b/docs/automated-tests/customize-project/built-in-help-tools/in-product-guides.md @@ -16,20 +16,17 @@ The areas for which a guide is available have the __Rocket__ icon in the ribbon. Guides are available for __Elements__ and __Tests__ panes. The __Rocket__ icon appears in the upper ribbon, which is active for an opened test or when you modify an element's find expression or image. - - ![Tests Ribbon Web test][2] - Tests Ribbon Guide -
    - -
    - ![Element Ribbon][2a] - Elements Ribbon Guide -
    - -
    - ![Tests Ribbon Load Test][2b] - Tests Ribbon Guide for Load Test -
    +
    + + +![Tests Ribbon Web test][2]
    Tests Ribbon Guide + + +![Element Ribbon][2a]
    Elements Ribbon Guide + + +![Tests Ribbon Load Test][2b]
    Tests Ribbon Guide for Load Test +
    The Rocket icon is also available in the __[Project Explorer](/features/project-explorer/overview)__ and __[Element Explorer](/features/elements-explorer/overview)__. diff --git a/docs/automated-tests/customize-project/custom-layout.md b/docs/automated-tests/customize-project/custom-layout.md index 479ccc64..ab99625f 100644 --- a/docs/automated-tests/customize-project/custom-layout.md +++ b/docs/automated-tests/customize-project/custom-layout.md @@ -77,12 +77,16 @@ If you want to place the panel separately, you can use the arrows on the right, If you select the center of the target panel, the undocked panel will appear as a tab next to the target panel. - - - - - -
    ![choose center][5]![tabs][6]
    +
    + + + + +
    + +![choose center][5] + +![tabs][6]
    ### Hide or Show a Panel diff --git a/docs/automated-tests/data-drive-test/ddt-results.md b/docs/automated-tests/data-drive-test/ddt-results.md index 5c0ca052..90d17e94 100644 --- a/docs/automated-tests/data-drive-test/ddt-results.md +++ b/docs/automated-tests/data-drive-test/ddt-results.md @@ -35,16 +35,20 @@ Click the **Execute** button in the **Test** ribbon. The test steps are executed - The summary shows the result for the selected iteration. - - - - +
    ![Test Studio product iteration](/img/automated-tests/data-drive-test/ddt-results/ts-product-iteration.png)![Random string product iteration](/img/automated-tests/data-drive-test/ddt-results/random-product-iteration.png)
    + + + - - - + + + -
    + +![Test Studio product iteration](/img/automated-tests/data-drive-test/ddt-results/ts-product-iteration.png) + +![Random string product iteration](/img/automated-tests/data-drive-test/ddt-results/random-product-iteration.png)
    _Test Studio product iteration__Random string product iteration_
    Test Studio product iterationRandom string product iteration
    +
    - The drop-down menu contains a list with all iterations and shows the used value from the data table. - Expand the drop-down menu to view the list and select an iteration to see the results for it. @@ -54,16 +58,20 @@ Click the **Execute** button in the **Test** ribbon. The test steps are executed - *Test Studio* and *Kendo* were both part of the text in the first listed search result, thus the verification that the search is valid was successful. - The random string did not appear in the first listed search result, so the last iteration failed. - - - - +
    ![Kendo product iteration](/img/automated-tests/data-drive-test/ddt-results/kendo-product-iteration.png)![Random string product iteration](/img/automated-tests/data-drive-test/ddt-results/random-product-iteration.png)
    + + + - - - + + + -
    + +![Kendo product iteration](/img/automated-tests/data-drive-test/ddt-results/kendo-product-iteration.png) + +![Random string product iteration](/img/automated-tests/data-drive-test/ddt-results/random-product-iteration.png)
    _Kendo product iteration__Random string product iteration_
    Kendo product iterationRandom string product iteration
    +
    ### Execution Log Results diff --git a/docs/automated-tests/elements/find-element.md b/docs/automated-tests/elements/find-element.md index e7370958..6f105286 100644 --- a/docs/automated-tests/elements/find-element.md +++ b/docs/automated-tests/elements/find-element.md @@ -13,7 +13,7 @@ In certain scenarios the automatically generated Element's Explorer context menu or double click on the same element. - +
    diff --git a/docs/automated-tests/elements/overview.md b/docs/automated-tests/elements/overview.md index b395e912..b269b879 100644 --- a/docs/automated-tests/elements/overview.md +++ b/docs/automated-tests/elements/overview.md @@ -11,12 +11,16 @@ The Elements Explorer in a Test Studio project is the visual representation of a The Elements Explorer pane provides a one-stop shop to view all elements used in the project and edit the way they are found during execution. You can find the Elements Explorer under/next to the Project's Explorer on the left bottom pane. -
    Edit Element Edit Element Double Click
    - - - - -
    ![Standalone Version][1]

    **Standalone version**
    ![VS Plugin][2]

    **VS plugin**
    +
    + + + + +
    + +![Standalone Version][1]

    **Standalone version**
    + +![VS Plugin][2]

    **VS plugin**
    > __Tip__ >
    @@ -27,13 +31,19 @@ The Elements Explorer pane provides a one-stop shop to view all elements used in The elements are organized under Page nodes (and also Frame nodes if there are frames used in the web page) for web applications and Application and Window Caption nodes for WPF applications. - - - - - +
    ![HTML Tree View][4]
    **HTML Tree View**
    ![Silverlight Tree View][5]
    **Silverlight Tree View**
    ![WPF Tree View][6]
    **WPF Tree View**
    + + + + -
    + +![HTML Tree View][4]
    **HTML Tree View**
    + +![Silverlight Tree View][5]
    **Silverlight Tree View**
    + +![WPF Tree View][6]
    **WPF Tree View**
    +
    - The HTML tree view is organized by **Page > Frame > Test Regions > Element**. - The Silverlight tree view is organized by **Page > Frame > SilverlightApp > Element**. diff --git a/docs/automated-tests/execute-apitest/add-api-test-as-step.md b/docs/automated-tests/execute-apitest/add-api-test-as-step.md index 0b764c22..27dc3f8f 100644 --- a/docs/automated-tests/execute-apitest/add-api-test-as-step.md +++ b/docs/automated-tests/execute-apitest/add-api-test-as-step.md @@ -20,12 +20,16 @@ Double click it to trigger the ___'Select API test'___ dialog. The available options are either to create a new test or import an existing one. - - - - - -
    ![Create an API Test][3]![Add existing API test][4]
    +
    + + + + +
    + +![Create an API Test][3] + +![Add existing API test][4]
    ## Create Test diff --git a/docs/automated-tests/load/designing-load-tests/dynamic-targets-custom.md b/docs/automated-tests/load/designing-load-tests/dynamic-targets-custom.md index 7dd9d7c0..cd2534f2 100644 --- a/docs/automated-tests/load/designing-load-tests/dynamic-targets-custom.md +++ b/docs/automated-tests/load/designing-load-tests/dynamic-targets-custom.md @@ -27,15 +27,21 @@ Once any custom targets are added to the user profile these will be displayed un - **Search Result**: Click to show the reuslt based on the search query. - **Current Value**: Display the current reuslt based on the search query. - - - - - - - - -
    __Source Body__
    ![Source Section Properties][7]
    __Source Headers__
    ![Source Section Properties][8]
    __Source Cookie__
    ![Source Section Properties][9]
    +
    + + + + + + + +
    + +![Source Section Properties][7]
    **Source Body**
    + +![Source Section Properties][8]
    **Source Headers**
    + +![Source Section Properties][9]
    **Source Cookie**
    ### Search Options diff --git a/docs/automated-tests/load/designing-load-tests/dynamic-targets.md b/docs/automated-tests/load/designing-load-tests/dynamic-targets.md index bf55bddc..6787963d 100644 --- a/docs/automated-tests/load/designing-load-tests/dynamic-targets.md +++ b/docs/automated-tests/load/designing-load-tests/dynamic-targets.md @@ -75,15 +75,21 @@ __See Also:__ A sample scenario to cover with the help of custom dynamic targets - **Search Result**: Click to show the result based on the search query. - **Current Value**: Display the current result based on the search query. - - - - +
    __Source Body__
    ![Source Section Properties][7]
    __Source Headers__
    ![Source Section Properties][8]
    + + + - - - -
    + +__Source Body__
    ![Source Section Properties][7]
    + +__Source Headers__
    ![Source Section Properties][8]
    __Source Cookie__
    ![Source Section Properties][9]
    + + + +
    + +__Source Cookie__
    ![Source Section Properties][9]
    ### Search Options @@ -168,16 +174,24 @@ URL * __Ex.:__ http://google.com/{value} - if the extracted value is _test_, the URL will be appended as _http://google.com/test_. * __Ex.:__ http://google.com/{value}/id=1379 - if the extracted value is _test_, the URL will be appended as _http://google.com/test/id=1379_. - - - - +
    __Append Query Parameter__
    ![Append Query Parameter][11]
    __Append Header__
    ![Append Header][12]
    + + + - - - - -
    + +__Append Query Parameter__
    ![Append Query Parameter][11]
    + +__Append Header__
    ![Append Header][12]
    __Append Cookie__
    ![Append Cookie][13]
    __Append URL__
    ![Append URL][14]
    + + + + +
    + +__Append Cookie__
    ![Append Cookie][13]
    + +__Append URL__
    ![Append URL][14]
    > __Note!__ The above examples only represent how to append some predefined text before or after the dynamic value for the different types of destination fields. These are no real example of working HTTP calls. diff --git a/docs/automated-tests/load/load-testing-results/analyzing-results.md b/docs/automated-tests/load/load-testing-results/analyzing-results.md index 70972b1c..385357d5 100644 --- a/docs/automated-tests/load/load-testing-results/analyzing-results.md +++ b/docs/automated-tests/load/load-testing-results/analyzing-results.md @@ -163,7 +163,7 @@ padding: 8px; Responses Received per SecondThe number of HTTP responses received per second across all virtual users. - +
    [1a]: /img/features/testing-types/load-testing/analyzing-results/fig1a.png [1]: /img/features/testing-types/load-testing/analyzing-results/fig1.png diff --git a/docs/automated-tests/load/running-load-test/running-tests.md b/docs/automated-tests/load/running-load-test/running-tests.md index d09494d8..c6b39075 100644 --- a/docs/automated-tests/load/running-load-test/running-tests.md +++ b/docs/automated-tests/load/running-load-test/running-tests.md @@ -87,7 +87,7 @@ padding: 8px; > 60 hours10 minutes - +
    ## Test Run Goals diff --git a/docs/automated-tests/recording/overview.md b/docs/automated-tests/recording/overview.md index ad3d04b7..fd58a657 100644 --- a/docs/automated-tests/recording/overview.md +++ b/docs/automated-tests/recording/overview.md @@ -127,11 +127,13 @@ To stop the current recording session __close the automated browser or WPF/deskt The specifics of the recording process allow to __attach a recorder and trigger a recording session to an already running WPF application__. To start such recording session you need to use the dropdown under the __Record__ button - in the list you can see all compatible processes, to which Test Studio recorder can be attached. Select one and wait for the __Compact Recorder__ to attach to the application. - - - - -
    ![Attach to running WPF instance][7]

    **WPF Test - connect to running WPF application instance**
    +
    + + + +
    + +![Attach to running WPF instance][7]

    **WPF Test - connect to running WPF application instance**
    > **Note** >
    diff --git a/docs/automated-tests/recording/recording-dialogs.md b/docs/automated-tests/recording/recording-dialogs.md index b83ca9de..009b83fa 100644 --- a/docs/automated-tests/recording/recording-dialogs.md +++ b/docs/automated-tests/recording/recording-dialogs.md @@ -54,23 +54,23 @@ JavaScript generates three type of popup messages and these are as follows: To try out these types of dialogs you can use the _'Try It Yourself'_ buttons on each example for the W3School JavaScript Popup Boxes page. Here are the steps recorded in a test for each of the dialog boxes. - - - +
    ![Alert dialog](/img/automated-tests/recording/dialogs/alert-dialog-step.png)
    __Handle Alert Dialog__
    + + -
    Alert dialo
    Handle Alert Dialog
    +
    - - - +
    ![Confirm dialog](/img/automated-tests/recording/dialogs/confirm-dialog-step.png)
    __Handle Confirm Dialog__
    + + -
    Confirm dialog
    Handle Confirm Dialog
    +
    - - - +
    ![Prompt dialog](/img/automated-tests/recording/dialogs/prompt-dialog-step.png)
    __Handle Prompt Dialog__
    + + -
    Prompt dialog
    Handle Prompt Dialog
    +
    > __Tip__ >
    @@ -88,11 +88,11 @@ Due to the specifics of this dialog and the Test Studio recording process flow, 3. One option is to enter the valid credentials to login to the page and then manually insert the step to handle the Logon dialog. 4. The other option is to __first cancel the logon dialog__ - there is no step added in the test because the recorder is not yet active. Once the page returns the message that access is denied, the Test Studio recorder gets attached to the browser. On __manually refreshing the page__ from the browser, the __logon dialog prompts again__ and this time, while you enter your credentials to access the page, Test Studio __records your actions and adds the step__ in the test. - - - +
    ![Logon dialog](/img/automated-tests/recording/dialogs/logon-dialog-step.png)
    __Handle Logon Dialog__
    + + -
    Logon dialog
    Handle Prompt Dialog
    +
    ## Download and Upload File Dialogs in Web Test @@ -111,11 +111,11 @@ The Upload File opens a __Open__ dialog in Windows File Explorer in which the us Test Studio fetches the selected folder and file and automatically populates the complete file path into the __Handle Upload dialog__ step. - - - +
    ![Upload dialog](/img/automated-tests/recording/dialogs/upload-dialog-step.png)
    __Handle Upload Dialog__
    + + -
    Upload dialog
    Handle Prompt Dialog
    +
    > __Tip!__ >
    @@ -133,11 +133,12 @@ The Download File dialog opens a __SaveAs__ dialog in Windows File Explorer in w Handling of a download dialog typically requires handling a sequence of dialogs - the browser prompts to download a file and the File Explorer lets you choose the destination path; optionally, handling a prompt message that a file with the same name already exists in the selected folder - the existing file is overwritten in such case. Test Studio fetches all actions taken and automatically records the __Handle Download dialog__ step and populates the complete file path and name. - - - +
    ![Download dialog](/img/automated-tests/recording/dialogs/download-dialog-step.png)
    __Handle Download Dialog__
    + + -
    Download dialog
    Handle Prompt Dialog
    +
    + > __Tip!__ >
    diff --git a/docs/automated-tests/responsive/responsive-test.md b/docs/automated-tests/responsive/responsive-test.md index f1a9a970..4b2934b9 100644 --- a/docs/automated-tests/responsive/responsive-test.md +++ b/docs/automated-tests/responsive/responsive-test.md @@ -16,12 +16,16 @@ The __Responsive Web test__ in Test Studio is a separate type of test, which req To add a __Responsive Web test__ to your project, use the respective type of test to create. You can use the option both from the Project Ribbon or from the Project Explorer context menu. - - - - - -
    ![Project Ribbon][1]

    **Project Ribbon**
    ![Project Explorer][2]

    **Project Explorer**
    +
    + + + + +
    + +![Project Ribbon][1]

    **Project Ribbon**
    + +![Project Explorer][2]

    **Project Explorer**
    ## Configure a Device to Simulate diff --git a/docs/automated-tests/scheduling/remote-scheduled-run.md b/docs/automated-tests/scheduling/remote-scheduled-run.md index 2f030884..59d3562f 100644 --- a/docs/automated-tests/scheduling/remote-scheduled-run.md +++ b/docs/automated-tests/scheduling/remote-scheduled-run.md @@ -258,7 +258,6 @@ A confirmation message appears when the connection is successful. Confirm the co [33]: /img/features/scheduling-test-runs/remote-run-all-in-one/configure-execution-server-button.png [4]: /img/features/scheduling-test-runs/remote-run-all-in-one/fig4.png [5]: /img/features/scheduling-test-runs/remote-run-all-in-one/fig5.png -[6]: /img/features/scheduling-test-runs/remote-run-all-in-one/fig6.png [10]: /img/features/scheduling-test-runs/create-scheduling-server/communication-tab.png [101]: /img/features/scheduling-test-runs/create-scheduling-server/communication-tab-default-key.png [102]: /img/features/scheduling-test-runs/create-scheduling-server/communication-tab-custom-key.png diff --git a/docs/automated-tests/scheduling/stop-cancel-scheduled-job.md b/docs/automated-tests/scheduling/stop-cancel-scheduled-job.md index 7229cd44..0b5a21b6 100644 --- a/docs/automated-tests/scheduling/stop-cancel-scheduled-job.md +++ b/docs/automated-tests/scheduling/stop-cancel-scheduled-job.md @@ -14,12 +14,16 @@ If a test list is scheduled to be executed any time in the future or is set for In the Results tab when you hover over a scheduled job, a small X button appears. After clicking that Test Studio will prompt you for deleting the scheduled job. - - - - +
    ![X button][1]![Delete Series][2]
    + + + -
    + +![X button][1] + +![Delete Series][2]
    +
    ## Delete the Physical File That Represents the Scheduled Job diff --git a/docs/automated-tests/test-lists/test-lists-standalone.md b/docs/automated-tests/test-lists/test-lists-standalone.md index b8e585df..aab2018d 100644 --- a/docs/automated-tests/test-lists/test-lists-standalone.md +++ b/docs/automated-tests/test-lists/test-lists-standalone.md @@ -42,12 +42,16 @@ The **Performance** test list type allows you to execute **performance runs for The **Manual** type of list allows you to add only **manual** tests and execute them together (the rest of the tests are greyed out). Run the manual tests sequentially or toggle back and forth between them using the **Previous** and **Next** buttons at the bottom. - - - - - -
    ![Previous][2]![Next][3]
    +
    + + + + +
    + +![Previous][2] + +![Next][3]
    ## Dynamic Test Lists diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index 7d02c90a..e4e7f255 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -645,6 +645,10 @@ redirects: from: "/features/testing-types/wpf-testing/wpf-test" to: "/features/testing-types/wpf-test" +- + from: "/features/testing-types" + to: "/features/testing-types/manual-testing/overview" + - from: "/user-guide/verifications/image-verification.aspx" to: "/features/recorder/verifications/image-verification" diff --git a/docs/features/custom-steps/overview.md b/docs/features/custom-steps/overview.md index dfacad90..3f2ad806 100644 --- a/docs/features/custom-steps/overview.md +++ b/docs/features/custom-steps/overview.md @@ -40,12 +40,16 @@ The __General__ section in the __Step Builder__ is divided in three sub-sections - The __Common__ section consists of different steps suggestions based on the type of test - web, desktop or WPF. - - - - - -
    ![Common web test steps][5]

    **Web Test**
    ![Common WPF test steps][7]

    **WPF Test**
    +
    + + + + +
    + +![Common web test steps][5]

    **Web Test**
    + +![Common WPF test steps][7]

    **WPF Test**
    1. [Test as Step](/features/custom-steps/test-as-step) - run an existing test as a single step. 1. [API Test as Step](/features/execute-apitest/add-api-test-as-step) - run an existing API test as a single step. diff --git a/docs/features/data-driven-testing/bind-test-data-source.md b/docs/features/data-driven-testing/bind-test-data-source.md index ab9215e7..452104b3 100644 --- a/docs/features/data-driven-testing/bind-test-data-source.md +++ b/docs/features/data-driven-testing/bind-test-data-source.md @@ -20,16 +20,24 @@ Choose a test from the _Project Explorer_ and click the __Bind Test__ button fro The **Bind test to data source** dialog opens with the option to choose a data source. Click the **Select Data Source** drop-down and select the one you have defined. If your source is an Excel spreadsheet, choose which sheet from the spreadsheet to use. Once you select a sheet, the data from that sheet will be read and displayed in the dialog. Check out that the __first row of the spreadsheet is used to define the column names__. - - - - +
    !![Bind test to data source window][3]![Select Data Source][4]
    + + + - - - + + + -
    + +![Bind test to data source window][3] + +![Select Data Source][4]
    Choose Data Source to BindExcel Sheet Selected
    + +**Choose Data Source to Bind** + +**Excel Sheet Selected**
    +
    > __Note__ >
    @@ -47,12 +55,16 @@ If you need to use only part of the rows in an Excel sheet, you can enable the * - If left unchecked, all data rows will be used during the test run. - To limit which rows to use, check that box and select which rows you want to use by clicking the numeric up/down counters, and then **Update** to apply changes. - - - - +
    ![filter data][5]![filter data][6]
    + + + -
    + +![filter data][5] + +![filter data][6]
    +
    ### Use Specific Data from SQL Data Source diff --git a/docs/features/data-driven-testing/manage-local-data.md b/docs/features/data-driven-testing/manage-local-data.md index 010366b0..e466dee5 100644 --- a/docs/features/data-driven-testing/manage-local-data.md +++ b/docs/features/data-driven-testing/manage-local-data.md @@ -38,12 +38,16 @@ Test Studio provides few options to easily modify a data table. - __Add a row/Delete the last row__ or __Add a column/Delete the last column__ - - - - +
    ![Add/Delete Row][22]
    Add/Delete Row
    ![Add/Delete Column][23]
    Add/Delete Column
    + + + -
    + +![Add/Delete Row][22]
    Add/Delete Row
    + +![Add/Delete Column][23]
    Add/Delete Column
    +
    [2]: /img/features/data-driven-testing/local-data-driven-test/fig2.png [4]: /img/features/data-driven-testing/local-data-driven-test/fig4.png diff --git a/docs/features/elements-explorer/element-mapping.md b/docs/features/elements-explorer/element-mapping.md index 656c72dc..432b493e 100644 --- a/docs/features/elements-explorer/element-mapping.md +++ b/docs/features/elements-explorer/element-mapping.md @@ -8,24 +8,32 @@ position: 6 Once your application is ready for testing you can map your predefined elements to the actual elements. In order to proceed select the predefined element you would like to map and select Element Mapping button: - - - - - -
    ![Element Mapping TS][6]

    **Standalone version**
    ![Element Mapping TS][15]

    **VS plugin**
    +
    + + + + +
    + +![Element Mapping TS][6]

    **Standalone version**
    + +![Element Mapping TS][15]

    **VS plugin**
    The mapping dialog window appears allowing you to select between a Web or WPF test. * For Web: type New URL or choose from Recent URLs and click **Start Mapping** button. * For WPF: select new WPF app using the browse button or choose from Recent Apps and click **Start Mapping** button. - - - - +
    ![Web][7]

    **Web**
    ![WPF][8]

    **WPF**
    + + + -
    + +![Web][7]

    **Web**
    + +![WPF][8]

    **WPF**
    +
    > The example shown here is for a Web test, but for a WPF test the actions are exactly the same. diff --git a/docs/features/integration/bug-tracking/configuration.md b/docs/features/integration/bug-tracking/configuration.md index 7455d36b..ca27ee11 100644 --- a/docs/features/integration/bug-tracking/configuration.md +++ b/docs/features/integration/bug-tracking/configuration.md @@ -29,12 +29,16 @@ Connect with bug tracking applications to track bugs you encounter while testing 4.  Enter the Server URL and click the **Connect** button. - - - - - -
    ![TFS service Online][5]

    Azure DevOps (Online TFS Service)
    ![TFS server on premise][6]

    TFS Server on-premise
    +
    + + + + +
    + +![TFS service Online][5]

    Azure DevOps (Online TFS Service)
    + +![TFS server on premise][6]

    TFS Server on-premise
    Enter valid credentials when prompted. The below example requires username and password for the Azure DevOps service. @@ -42,12 +46,16 @@ Enter valid credentials when prompted. The below example requires username and p 5.  Once the connection to the server is successfully established, select the **Team Project** for Azure DevOps, and the **Team Project Collection** and **Team Project** for on-premise server, then click **Save**. - - - - - -
    ![TFS service Online][8]

    Azure DevOps (Online TFS Service)
    ![TFS server on premise][9]

    TFS Server on-premise
    +
    + + + + +
    + +![TFS service Online][8]

    Azure DevOps (Online TFS Service)
    + +![TFS server on premise][9]

    TFS Server on-premise
    ## Jira Server diff --git a/docs/features/integration/bug-tracking/launch-bug-dialog.md b/docs/features/integration/bug-tracking/launch-bug-dialog.md index 6f4a375e..f2e87cb8 100644 --- a/docs/features/integration/bug-tracking/launch-bug-dialog.md +++ b/docs/features/integration/bug-tracking/launch-bug-dialog.md @@ -40,12 +40,16 @@ Execute a test list and drill down into the failed result. - Click **Submit Bug** in the **Export** ribbon. - Click **Submit Bug** in the **Test Results** pane. - - - - +
    ![Export][4]![Test Results][5]
    + + + -
    + +![Export][4] + +![Test Results][5]
    +
    [1]: /img/features/integration/bug-tracking/launch-bug-dialog/fig1.png [2]: /img/features/integration/bug-tracking/launch-bug-dialog/step-righ-click-menu-bug.png diff --git a/docs/features/logical-steps/if-else.md b/docs/features/logical-steps/if-else.md index 5ebc2d87..baf934e9 100644 --- a/docs/features/logical-steps/if-else.md +++ b/docs/features/logical-steps/if-else.md @@ -44,12 +44,16 @@ In this article you can find the following topics: 8.  Choose **Conditions** in the **Step Builder** and add **if...else** step. - - - - +
    ![Standalone][4]
    **Standalone version**
    ![VS Plugin][5]
    **VS Plugin**
    + + + -
    + +![Standalone][4]
    **Standalone version**
    + +![VS Plugin][5]
    **VS Plugin**
    +
    9.  From the drop down in the IF step select the previously recorded verification. diff --git a/docs/features/logical-steps/loop.md b/docs/features/logical-steps/loop.md index fc6a980b..65fb3b10 100644 --- a/docs/features/logical-steps/loop.md +++ b/docs/features/logical-steps/loop.md @@ -23,12 +23,16 @@ Walk--through of creating a loop process. 6.  Choose **Conditions** in the **Step Builder** and add **loop** step. - - - - +
    ![Standalone][2]
    **Standalone version**
    ![VS Plugin][3]
    **VS Plugin**
    + + + -
    + +![Standalone][2]
    **Standalone version**
    + +![VS Plugin][3]
    **VS Plugin**
    +
    7.  Set the *Count* of the Loop step to 5. diff --git a/docs/features/logical-steps/while-loop.md b/docs/features/logical-steps/while-loop.md index 1d5b81b9..1457c8bd 100644 --- a/docs/features/logical-steps/while-loop.md +++ b/docs/features/logical-steps/while-loop.md @@ -39,12 +39,16 @@ Walk--through of **Step Builder** and add **while...loop** step. - - - - +
    ![Standalone][4]
    **Standalone version**
    ![VS Plugin][5]
    **VS Plugin**
    + + + -
    + +![Standalone][4]
    **Standalone version**
    + +![VS Plugin][5]
    **VS Plugin**
    +
    10.  Choose the verification we've already added from the dropdown of the While step. diff --git a/docs/features/project-settings/overview.md b/docs/features/project-settings/overview.md index 021d343c..d85ce9e2 100644 --- a/docs/features/project-settings/overview.md +++ b/docs/features/project-settings/overview.md @@ -14,12 +14,16 @@ Use the **Project Settings** to configure how tests are recorded, fine tune how On the **Project** ribbon in Test Studio Standalone version find the **Settings** button which opens the Project Settings window. In the Visual Studio plugin, the gear icon in the toolbar loads the same Project Settings window. - - - - +
    ![Standalone][1]
    **Standalone version**
    ![VS Plugin][2]
    **VS Plugin**
    + + + -
    + +![Standalone][1]
    **Standalone version**
    + +![VS Plugin][2]
    **VS Plugin**
    +
    The available settings are divided in few areas: diff --git a/docs/features/project-settings/theme.md b/docs/features/project-settings/theme.md index fa460a57..d0f2cf98 100644 --- a/docs/features/project-settings/theme.md +++ b/docs/features/project-settings/theme.md @@ -13,52 +13,76 @@ The default theme of Test Studio is **Light**. You can change it to **Dark** and The screenshots below show different views from Test Studio in both themes. Project theme settings - - - - +
    ![Light Settings][1]![Dark Settings][2]
    + + + -
    + +![Light Settings][1] + +![Dark Settings][2]
    +
    Test Studio Welcome screen - - - - +
    ![Light Welcome][3]![Dark Welcome][4]
    + + + -
    + +![Light Welcome][3] + +![Dark Welcome][4]
    +
    Test Studio test development - - - - +
    ![Light Test Studio][5]![Dark Test Studio][6]
    + + + -
    + +![Light Test Studio][5] + +![Dark Test Studio][6]
    +
    Test Studio Test Runner - - - - +
    ![Light Test Runner][7]![Dark Test Runner][8]
    + + + -
    + +![Light Test Runner][7] + +![Dark Test Runner][8]
    +
    Schedule a test list for remote execution - - - - +
    ![Light TestList][9]![Dark TestList][10]
    + + + -
    + +![Light TestList][9] + +![Dark TestList][10]
    +
    Visual Studio integration with matching theme colors - - - - +
    ![Light Visual Studio][11]![Dark Visual Studio][12]
    + + + -
    + +![Light Visual Studio][11] + +![Dark Visual Studio][12]
    +
    [1]: /img/features/project-settings/theme/fig1.png [2]: /img/features/project-settings/theme/fig2.png diff --git a/docs/features/recorder/compact-recording-toolbar.md b/docs/features/recorder/compact-recording-toolbar.md index 7dd9319e..b626b3c7 100644 --- a/docs/features/recorder/compact-recording-toolbar.md +++ b/docs/features/recorder/compact-recording-toolbar.md @@ -62,12 +62,16 @@ From the **Compact Recording Toolbar** you can also access the + + + +![Horizontal Toolbar][12] + + +![Vertical Toolbar][13] - +
    [1]: /img/features/recorder/compact-recording-toolbar/anim1.gif [1a]: /img/features/recorder/compact-recording-toolbar/fig1.png diff --git a/docs/features/recorder/test-recorder.md b/docs/features/recorder/test-recorder.md index 494fb281..bd6ae72f 100644 --- a/docs/features/recorder/test-recorder.md +++ b/docs/features/recorder/test-recorder.md @@ -28,12 +28,16 @@ There are two ways to initiate recording. You can either launch a new browser or 1.  Open the test by double clicking on it. Click the **Record** button in the **Tests** tab or press **CTRL+R**. - - - - - -
    ![Test Studio][1]

    **Standalone version**
    ![VS][2]

    **VS plugin**
    +
    + + + + +
    + +![Test Studio][1]

    **Standalone version**
    + +![VS][2]

    **VS plugin**
    2.  Type the URL you want to navigate to or select it from recent URLs. Choose the recording browser (for web tests) and press Enter or the *Record* button in that window. @@ -55,12 +59,16 @@ If you enable **Save my choice for the future** or set a preferred browser from Click the drop-down arrow on the **Record** button to see a list of available IE browser instances or WPF applications. Select one to attach the recorder to that instance. - - - - - -
    ![Attach to running browser][6]

    **Web Test - Internet Explorer only**
    ![Attach to running WPF instance][7]

    **WPF Test - connect to running WPF application instance**
    +
    + + + + +
    + +![Attach to running browser][6]

    **Web Test - Internet Explorer only**
    + +![Attach to running WPF instance][7]

    **WPF Test - connect to running WPF application instance**
    ## See also diff --git a/docs/features/test-maintenance/test-step-context-menu.md b/docs/features/test-maintenance/test-step-context-menu.md index c775cb5a..235b13f8 100644 --- a/docs/features/test-maintenance/test-step-context-menu.md +++ b/docs/features/test-maintenance/test-step-context-menu.md @@ -8,12 +8,16 @@ position: 1 Each test step provides further actions that can be taken in the right mouse button context menu. Note that some of the items will show up or will be enabled only for certain test step types. - - - - +
    ![1][1]![2][2]
    + + + -
    + +![1][1] + +![2][2]
    +
    --- diff --git a/docs/features/test-maintenance/test-step-properties.md b/docs/features/test-maintenance/test-step-properties.md index 1ddf6fb2..57e8c641 100644 --- a/docs/features/test-maintenance/test-step-properties.md +++ b/docs/features/test-maintenance/test-step-properties.md @@ -157,7 +157,7 @@ padding: 8px; **WaitTime**Time to wait in milliseconds.With an Execution Delay step. - +
    ## Comment @@ -168,7 +168,7 @@ padding: 8px; **Comment**The text comment to display as a single test step in the test log.To insert a comment into the test log next to the step. - +
    ## Data Driven @@ -179,7 +179,7 @@ padding: 8px; **(Bindings)**Bind data driven properties against a data source. Click the drop-down to see properties that support data binding.To data bind the step to a specific column from the data source. - +
    ## Dialog Indentification @@ -196,7 +196,7 @@ padding: 8px; **MatchPartialTitle**Whether to use partial text matching to match the dialog title.To match an exact or partial dialog title. - +
    ## Download @@ -207,7 +207,7 @@ padding: 8px; **DownloadPath**The download location to set for the download dialog.To change where a file is saved by the Download dialog handler step. - +
    ## Drag Settings @@ -218,7 +218,7 @@ padding: 8px; **Offset**ClickUnitType - the unit of point to use: percentage or pixel.
    OffSetReference - the reference point of screen to use for the click.
    X - the x-axis offset from reference point.
    Y - the y-axis offset from reference point.To start the drag from an offset of the source element, as opposed to absolute center. - +
    ## Drop Settings @@ -235,7 +235,7 @@ padding: 8px; **DropTargetType**The type of drop target to use for the drag drop.To drop the source element to a window or element target. Element targets tend to be more reliable. - +
    ## Elements @@ -261,7 +261,7 @@ padding: 8px; **Virtualizing Container Offset**The offset to scroll the virtualizing container to before searching for the target element of this step.(Silverlight only) - +
    ## Execution @@ -293,7 +293,7 @@ padding: 8px; **WaitOnElementsTimeout**Number of milliseconds to wait for element to exist if WaitOnElements is true.To specifically increase one step's element locating timeout. - +
    ## Extraction @@ -304,7 +304,7 @@ padding: 8px; **DataBindVariableName**The name with which this extraction is published.To change the Extraction variable used for later data binding. - +
    ## jQuery @@ -315,7 +315,7 @@ padding: 8px; **TriggerjQueryEvent**During step execution, attempt to trigger proper jQuery event.Step is expected to trigger a jQuery event on the page. - +
    ## Handle Button @@ -332,7 +332,7 @@ padding: 8px; **HandleButtonMethod**Identification method of the handle method. NoneCloseDialog simply attempts to knock down the dialog using the Close button.To change the handle method for a Generic dialog. - +
    ## Logon @@ -346,7 +346,7 @@ padding: 8px; **UserName**The user name to use to log on.To edit the user name in a Logon dialog handler step. - +
    ## Manual Properties @@ -360,7 +360,7 @@ padding: 8px; **ManualDescription**Description displayed in Execute Manual Step dialog.To edit the message displayed in the Manual step dialog. - +
    ## Misc @@ -413,7 +413,7 @@ padding: 8px; **WaitTimeout**The timeout to use for waiting.With a Wait For Url step. - +
    ## Upload @@ -424,7 +424,7 @@ padding: 8px; **FileUploadPath**The file upload path on disk.To change the upload path. - +
    ## Verification @@ -456,7 +456,7 @@ padding: 8px; **Value**Represents the expected value of the property.To change the value to verify. - +
    ## Wait @@ -476,7 +476,7 @@ padding: 8px; **Timeout**The wait time when acting as a wait.To increase or decrease the wait time. - +
    [1]: /img/features/test-maintenance/test-step-properties/step-properties.png diff --git a/docs/features/test-runners/artoftest-runner.md b/docs/features/test-runners/artoftest-runner.md index 102da390..c08ff56e 100644 --- a/docs/features/test-runners/artoftest-runner.md +++ b/docs/features/test-runners/artoftest-runner.md @@ -390,7 +390,7 @@ padding: 8px; **13**NOT_RUN_TESTLIST_NOT_FOUNDRun is not processed due to invalid test list path argument. - +
    [1]: /img/features/test-runners/artoftest-runner/fig1.png diff --git a/docs/getting-started/analyze-the-results.md b/docs/getting-started/analyze-the-results.md index 5b4b2a17..64fa436d 100644 --- a/docs/getting-started/analyze-the-results.md +++ b/docs/getting-started/analyze-the-results.md @@ -30,7 +30,7 @@ The
    quick execution run will be displayed in the test pane - the successfully executed steps are marked with a green circle and the failed steps are marked with a red circle in front of it. - +
    @@ -45,7 +45,7 @@ The results generated from a __Step Failed__ -
    +
    Each failed step provides additional details for the failure, if you hover over the red circle in front of it. By clicking on that red crossed circle, you open the **Step Failure Details** dialog. You can see detailed message for the failure, screenshots for the expected image and image at the time of failure, the DOM tree at the time of failure and suggestion how to solve the error. diff --git a/docs/getting-started/first-project.md b/docs/getting-started/first-project.md index 5515c037..02cdec73 100644 --- a/docs/getting-started/first-project.md +++ b/docs/getting-started/first-project.md @@ -94,12 +94,16 @@ One Test Studio project allows you to include different types of tests: - __Manual Test__ - a test in which you can add steps to manually execute against any application. This can be converted to a web test if automating a web page. - __Performance Test__ - a Performance test is always related to a valid web test and is being executed on top of this. - - - - -
    ![Add new Test from Ribbon](/img/getting-started/first-project/add-new-test1.png) - ![Add new Test from Project root](/img/getting-started/first-project/add-new-test2.png)
    +
    + + + +
    + +![Add new Test from Ribbon](/img/getting-started/first-project/add-new-test1.png) + + +![Add new Test from Project root](/img/getting-started/first-project/add-new-test2.png)
    ## Types of Files in Test Studio Project diff --git a/docs/getting-started/first-test.md b/docs/getting-started/first-test.md index 39fb844b..5391e59a 100644 --- a/docs/getting-started/first-test.md +++ b/docs/getting-started/first-test.md @@ -94,12 +94,16 @@ The click-and-record functionality in Test Studio is designed to record the user 6. The configured application - WPF or Desktop - starts and once it is loaded entirely the __Test Studio Compact Recording Toolbar__ gets attached to it. - - - - - -
    ![Attached recorder WPF app][9]

    Recording WPF Application
    ![Attached recorder desktop app][10]

    Recording Desktop Application
    +
    + + + + +
    + +![Attached recorder WPF app][9]

    Recording WPF Application
    + +![Attached recorder desktop app][10]

    Recording Desktop Application
    7. To __stop the recording session__, close the application instance (browser, desktop or WPF) with the attached Recording Toolbar. diff --git a/docs/knowledge-base/dialogs-and-popups-kb/variable-query-strings.md b/docs/knowledge-base/dialogs-and-popups-kb/variable-query-strings.md index bf163337..96a18537 100644 --- a/docs/knowledge-base/dialogs-and-popups-kb/variable-query-strings.md +++ b/docs/knowledge-base/dialogs-and-popups-kb/variable-query-strings.md @@ -34,12 +34,16 @@ In order to avoid this duplication in the feature recording of your tests change 1. Open Project Settings. - +
    + + + - - - -
    + + ![Standalone][5]
    **Standalone version**
    + + ![VS Plugin][6]
    **VS Plugin**
    ![Standalone][5]
    **Standalone version**
    ![VS Plugin][6]
    **VS Plugin**
    +
    2. Click **Recording Options**. diff --git a/docs/knowledge-base/test-automation-kb/dynamic-ids.md b/docs/knowledge-base/test-automation-kb/dynamic-ids.md index 8c5a7e65..78cec491 100644 --- a/docs/knowledge-base/test-automation-kb/dynamic-ids.md +++ b/docs/knowledge-base/test-automation-kb/dynamic-ids.md @@ -15,12 +15,16 @@ We recommend that you consider changing your application in order to make it use 1. Open the Project Settings menu: - +
    + + + - - - -
    + + ![Standalone][1]
    **Standalone version**
    + + ![VS Plugin][2]
    **VS Plugin**
    ![Standalone][1]
    **Standalone version**
    ![VS Plugin][2]
    **VS Plugin**
    +
    2. Go to **Find Logic** from the navigation bar on the left: diff --git a/docs/prerequisites/configure-your-browser/chrome.md b/docs/prerequisites/configure-your-browser/chrome.md index b1f1cde6..8622c197 100644 --- a/docs/prerequisites/configure-your-browser/chrome.md +++ b/docs/prerequisites/configure-your-browser/chrome.md @@ -24,19 +24,3 @@ By default Test Studio projects are __configured to automate the Chrome browser > __Important__ >
    > The __Progress Telerik Test Studio Extension__ is missing in the Chrome Web Store and is completely deprecated. - - - diff --git a/docs/prerequisites/installation/install-procedure.md b/docs/prerequisites/installation/install-procedure.md index b3c3a64d..de9ea386 100644 --- a/docs/prerequisites/installation/install-procedure.md +++ b/docs/prerequisites/installation/install-procedure.md @@ -32,11 +32,11 @@ Click the __'Read License Agreement'__ button to get familiar with it and confir By clicking the __'I Agree and Continue'__ button you confirm you agree to the terms and conditions listed in the Test Studio EULA. -![Setup Wizzard](../../img/general-information/installation/install-procedure/fig1.png) +![Setup Wizzard](/img/general-information/installation/install-procedure/fig1.png) On the next screen, click the __'Install'__ button to perform a default installation and skip to Finish Installation. -![Install](../../img/general-information/installation/install-procedure/fig2.png) +![Install](/img/general-information/installation/install-procedure/fig2.png) If you need to check what components are selected for installation and change these, click the __'Customize'__ button. @@ -50,7 +50,7 @@ In the __Customize__ screen you can see each separate component, which the insta - Telerik Controls Translators and - Test Studio Services. -![Components to be installed](./img/general-information/installation/install-procedure/fig3-listOfComponents.png) +![Components to be installed](/img/general-information/installation/install-procedure/fig3-listOfComponents.png) Any of these can be removed or added in the __Customize__ screen. You are also allowed to change the default installation path. After making your selections, click the __'OK'__ button to continue. @@ -61,9 +61,9 @@ There are a few important notes to consider if you select some of the below comp - To add the __Storage, Scheduling and Executive Dashboard features__ at a later stage, you must change the existing installation and select the respective components in the __Customize__ screen. - Storage service uses MongoDB as storage database and this gets automatically installed, if not available on the machine. __MongoDB requires at least 4Gb free hard drive space__ to operate normally. -![Install services](./img/general-information/installation/install-procedure/fig3.png) +![Install services](/img/general-information/installation/install-procedure/fig3.png) -![Install services](./img/general-information/installation/install-procedure/fig4.png) +![Install services](/img/general-information/installation/install-procedure/fig4.png) ![Install services](/img/general-information/installation/install-procedure/fig5.png) diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md index 309ce032..9745191a 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md @@ -39,7 +39,7 @@ Frames are treated just like another browser instance. In order to work with the Takes a string that specifies the source of the frame. Prefix with a tilde (~) to indicate a partial match. This method searches for a frame that matches the specified string and then returns a Browser object representing that frame that you can use to interact with the frame. Returns null if no matching frame can be found. - +
    Telerik Testing Framework allows users to access frames and perform automation against these frames just like any other page. A frame is simply a mini browser window inside your web page that can host its own HTML document. That is why frames are represented as Browser objects and are accessible using the **Frames[]** collection of the browser object that contains the 'iframe' or 'frameset' elements. diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md index 118e11fd..dd5028d5 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md @@ -9,12 +9,16 @@ published: false Firefox dialogs require special attention because some of them are not standard Win32 dialogs, for example Firefox's download manager dialog. As a result the usual method for handing dialogs does not work with Firefox dialogs. Here is what the download manager dialog looks like: - - - - - -
    ![Firefox download manager dialog window][1]

    **Firefox download manager dialog window**
    ![Firefox download manager dialog window after download completes][2]

    **Firefox download manager dialog window after download completes**
    +
    + + + + +
    + +![Firefox download manager dialog window][1]

    **Firefox download manager dialog window**
    + +![Firefox download manager dialog window after download completes][2]

    **Firefox download manager dialog window after download completes**
    Using Microsoft's Spy++ tool the first thing we discover about this dialog is that the class name is **MozillaUIWindowClass** instead of the standard dialog class name of #**32770**. As a result this dialog will not be included in the WindowCollection list that is passed in to the IsDialogActive function. This is because DialogMonitor filters the desktop windows on the class name #**32770**. This fact alone necessitates rolling our own custom dialog handler using the IDialog interface to overcome this problem. diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc/Introduction.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc/Introduction.md index fcf67ec3..cb2301dd 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc/Introduction.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/test-regions-wtc/Introduction.md @@ -40,7 +40,7 @@ To help demonstrate these benefits, we will be using the following simple markup - +
    Name Address diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md index 4f7251d1..b6c20ac3 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md @@ -48,7 +48,7 @@ In this namespace you will find the following methods classes: **ResponseListenerInfo** Wraps a listener for BeforeResponse events from the proxy. - +
    You must enable the HTTP proxy before you can start using it. This setting is turned off by default. This can be done either by adding the setting to your .config file or modifying the setting in the Settings object. To add the setting to your .config file add this to your .config file: diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md index 5f03596d..0c089550 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md @@ -251,7 +251,7 @@ Assert.IsNotNull(btn); ```` - +
    ## Identification Methods Usage diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md index ba73ac5d..561b95c4 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md @@ -25,7 +25,7 @@ The Find.Byxxx methods now support Language-Integrated Query (LINQ) queries. Som Gets an IEnumerable for TControl to be used for LINQ queries. This will return only elements that are convertible to TControl. var images = Find.AllControls(); - +
    Using LINQ we can create strongly typed advanced queries with intellisense support that we couldn't before. The most basic LINQ example is something like this: diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-asserts.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-asserts.md index 37ced75c..045c6198 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-asserts.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/html-asserts.md @@ -138,7 +138,7 @@ For example: AssertCheck.IsTrue() will verify the associated checkbox control is RowRange Asserts if the number of rows is not inside or not outside of the specified range. - +
    Now let's see how this works in action: diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md index 72406f84..748cda1e 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md @@ -301,7 +301,7 @@ In addition there are many other features that make the abstraction even more po HtmlContainerControl - +
    *Table 1. List of HTML element control wrappers contained in Telerik Testing Framework's HTML control suite.* Here is a list of the base classes along with the properties and methods they expose: @@ -380,7 +380,7 @@ Here is a list of the base classes along with the properties and methods they ex Refresh HtmlContainerControl - +
    *Table 2. List of base classes used by Telerik Testing Framework's HTML control suite.* Here is a list of the support classes that make it easier to use the rest of the HTML control suite: @@ -423,7 +423,7 @@ Here is a list of the support classes that make it easier to use the rest of the ForVisibleNot Wait - +
    *Table 3. List of HtmlControl support classes contained in Telerik Testing Framework's HTML control suite.* ## Example of How to Fill Out a Web Form Using the HTML Element Wrapper Control Suite diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md index adeeeca0..0341b41f 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md @@ -279,4 +279,4 @@ This table lists all of the WebAii framework settings that are available for you The full physical path to the web application root. string.Empty - \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/framework-element-object.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/framework-element-object.md index d6d38797..860cc8ab 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/framework-element-object.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/framework-element-object.md @@ -137,7 +137,7 @@ The **FrameworkElement** and all objects that inherit from it get the following **XamlTag**Get the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal. - +
    ## The FrameworkElement Methods @@ -247,6 +247,6 @@ These are all of the FrameworkElement methods available for use by your automati **ToXml**Gets an XML formatted string that represents this element and all its children This XML represents the VisualTree. - +
    [1]: /img/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/wpf-ui-automation/fig1.png \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md index 1acea6ea..590234a9 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md @@ -114,7 +114,7 @@ All of the Telerik Testing Framework UI controls derive from the FrameworkElemen **Width**Gets or sets the suggested width of a FrameworkElement. - +
    ## UI Element Actions @@ -155,7 +155,7 @@ We have implemented a few special properties in our FrameworkElement object to a **XamlTag**Gets the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal. - +
    ## Telerik Testing Framework Specific Methods @@ -180,7 +180,7 @@ The FrameworkElement class implements a number of methods just for purpose of te **ScrollToVisible()**Scrolls the browser so that the Framework Element is visible. - +
    ## Getting and Setting Properties on Elements diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md index 1408f6a1..9af22782 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md @@ -58,7 +58,7 @@ All of the common methods for finding an element to operate on are: **Find.ByType**Returns the first element found of the specified type (e.g. Canvas, DataGrid, Calendar). - +
    ## The Find Strategy @@ -80,7 +80,7 @@ The Find object has a 'Strategy' property that controls how the method behaves w **WhenNotVisibleThrowException**In this mode a generic exception is thrown if the element cannot be found right away. - +
    ## Finding All Elements @@ -114,7 +114,7 @@ All of the Find.AllByxxx functions are: **Find.AllByAutomationID()/Find.AllByAutomationID\**Find all elements that have a specific automation ID. Allows filtering on a specific control type. - +
    ## Scoped Searches diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/synchronization.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/synchronization.md index 5c5f0280..2fcb1141 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/synchronization.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/synchronization.md @@ -34,7 +34,7 @@ The framework has many features implemented to aid you in synchronizing with you **For(Predicate)**This method takes a custom predicate and waits for that predicate to return true. It accepts an optional error message and an optional timeout parameter. - +
    ## Waiting for an Element to Exist diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match.md b/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match.md index 5d3d37d8..cc4def1e 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match.md @@ -15,12 +15,16 @@ I have a dynamic window title in my application. Elements in the window cannot b Edit the **Caption** property for the Window node in the Elements Explorer. Use a leading tilde (~) character to indicate a partial match and remove the dynamic portion. - - - - +
    ![fig1][1]
    ![fig2][2]
    **Original Window Caption**
    ![fig3][3]
    ![fig4][4]
    **Edited for Partial Match**
    + + + -
    + +![fig1][1]
    ![fig2][2]
    **Original Window Caption**
    + +![fig3][3]
    ![fig4][4]
    **Edited for Partial Match**
    +
    [1]: /img/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match/fig1.png [2]: /img/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match/fig2.png diff --git a/docs/welcome.md b/docs/welcome.md index 80f819df..8d5df199 100644 --- a/docs/welcome.md +++ b/docs/welcome.md @@ -51,7 +51,7 @@ Test Studio also supports load and performance testing by allowing you to conver * __Validating PDFs__ – add PDF validation steps during test recording or whenever you need to during automation. - +
    -
    @@ -110,4 +110,4 @@ Test Studio also supports load and performance testing by allowing you to conver
    +
    From c5f49e4e52265eb4d89f1da9d28f00e8cddc9ae7 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Tue, 7 Jan 2025 15:29:58 +0200 Subject: [PATCH 13/65] Add docs-builder configuration file Add the docs builder configuration file and setup the navigation tree --- docs/docs-builder.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index e4e7f255..ba577723 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -3,8 +3,13 @@ path-prefix: /teststudio product-id: 846 product-name: Progress Test Studio product-url: https://www.telerik.com/teststudio +<<<<<<< HEAD search-engine-id: 001595215763381649090:ymztq4og6vc cta-overview: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" +======= +search-engine-id: 8ac1ab64606d234f1 +cta-overview: "@ProductLinkis a UI test automation platform that helps QA and Engineering teams build stable and easily maintainable automated tests. Sign up for a free 30-day trial!" +>>>>>>> 1d96aff (Add docs-builder configuration file) cta-intro: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" default-title-prefix: Telerik Test Studio avatar-path: ./images/avatar-ninja.svg @@ -55,9 +60,19 @@ meta: faq: title: "FAQ" position: 15 +<<<<<<< HEAD license-server: title: "License Server" position: 16 +======= + archived-docs: + title: "Archived Docs" + position: 16 + hidden: true + license-server: + title: "License Server" + position: 17 +>>>>>>> 1d96aff (Add docs-builder configuration file) hidden: true api: title: "API Reference" @@ -464,6 +479,7 @@ redirects: from: "^/?$" to: "/welcome" type: Permanent +<<<<<<< HEAD - from: "^/archived-docs/(.*)$" @@ -2569,3 +2585,8 @@ redirects: from: "/prerequisites/configure-your-browser/safari" to: "/prerequisites/configure-your-browser/browser-configuration" +======= +- + from: "^/?$" + to: "/welcome" +>>>>>>> 1d96aff (Add docs-builder configuration file) From 223a1e85bb04b07617a307cb40b787bfe7e7ea49 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Tue, 7 Jan 2025 15:34:18 +0200 Subject: [PATCH 14/65] Fix headers, CTA banners and other Fix headers, CTA banners and other small things that were not working properly. Add icons --- docs/prerequisites/installation/install-procedure.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/prerequisites/installation/install-procedure.md b/docs/prerequisites/installation/install-procedure.md index de9ea386..b3c3a64d 100644 --- a/docs/prerequisites/installation/install-procedure.md +++ b/docs/prerequisites/installation/install-procedure.md @@ -32,11 +32,11 @@ Click the __'Read License Agreement'__ button to get familiar with it and confir By clicking the __'I Agree and Continue'__ button you confirm you agree to the terms and conditions listed in the Test Studio EULA. -![Setup Wizzard](/img/general-information/installation/install-procedure/fig1.png) +![Setup Wizzard](../../img/general-information/installation/install-procedure/fig1.png) On the next screen, click the __'Install'__ button to perform a default installation and skip to Finish Installation. -![Install](/img/general-information/installation/install-procedure/fig2.png) +![Install](../../img/general-information/installation/install-procedure/fig2.png) If you need to check what components are selected for installation and change these, click the __'Customize'__ button. @@ -50,7 +50,7 @@ In the __Customize__ screen you can see each separate component, which the insta - Telerik Controls Translators and - Test Studio Services. -![Components to be installed](/img/general-information/installation/install-procedure/fig3-listOfComponents.png) +![Components to be installed](./img/general-information/installation/install-procedure/fig3-listOfComponents.png) Any of these can be removed or added in the __Customize__ screen. You are also allowed to change the default installation path. After making your selections, click the __'OK'__ button to continue. @@ -61,9 +61,9 @@ There are a few important notes to consider if you select some of the below comp - To add the __Storage, Scheduling and Executive Dashboard features__ at a later stage, you must change the existing installation and select the respective components in the __Customize__ screen. - Storage service uses MongoDB as storage database and this gets automatically installed, if not available on the machine. __MongoDB requires at least 4Gb free hard drive space__ to operate normally. -![Install services](/img/general-information/installation/install-procedure/fig3.png) +![Install services](./img/general-information/installation/install-procedure/fig3.png) -![Install services](/img/general-information/installation/install-procedure/fig4.png) +![Install services](./img/general-information/installation/install-procedure/fig4.png) ![Install services](/img/general-information/installation/install-procedure/fig5.png) From 75047ed1a0370e005a1f9dc08b2242d0aa6c9a0e Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Wed, 8 Jan 2025 09:33:47 +0200 Subject: [PATCH 15/65] fix header markdown there was no empty space after the # symbol and the headers were not rendered properly. I added an empty space and also trimmed any # at the end of the headers. --- docs/docs-builder.yml | 17 +--------- .../firefox-dialogs.md | 34 ++++++++++--------- 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index ba577723..97fcd5b0 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -3,13 +3,8 @@ path-prefix: /teststudio product-id: 846 product-name: Progress Test Studio product-url: https://www.telerik.com/teststudio -<<<<<<< HEAD search-engine-id: 001595215763381649090:ymztq4og6vc -cta-overview: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" -======= -search-engine-id: 8ac1ab64606d234f1 -cta-overview: "@ProductLinkis a UI test automation platform that helps QA and Engineering teams build stable and easily maintainable automated tests. Sign up for a free 30-day trial!" ->>>>>>> 1d96aff (Add docs-builder configuration file) +cta-overview: "@ProductLink is a UI test automation platform that helps QA and Engineering teams build stable and easily maintainable automated tests. Sign up for a free 30-day trial!" cta-intro: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" default-title-prefix: Telerik Test Studio avatar-path: ./images/avatar-ninja.svg @@ -60,19 +55,9 @@ meta: faq: title: "FAQ" position: 15 -<<<<<<< HEAD license-server: title: "License Server" position: 16 -======= - archived-docs: - title: "Archived Docs" - position: 16 - hidden: true - license-server: - title: "License Server" - position: 17 ->>>>>>> 1d96aff (Add docs-builder configuration file) hidden: true api: title: "API Reference" diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md index dd5028d5..3d10757b 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md @@ -4,8 +4,10 @@ page_title: Firefox Dialogs description: "Test Studio Testing Framework FF dialogs - obsolete" position: 1 published: false +published: false --- # How to Handle Firefox Dialogs +# How to Handle Firefox Dialogs Firefox dialogs require special attention because some of them are not standard Win32 dialogs, for example Firefox's download manager dialog. As a result the usual method for handing dialogs does not work with Firefox dialogs. Here is what the download manager dialog looks like: @@ -143,16 +145,16 @@ Public Class FFDownloadsDialog ' Semaphore used by the WaitUntilHandled function. ' Private _autoEvent As AutoResetEvent = New AutoResetEvent(False) -# End Region +#End Region -# Region "Private Constants" +#Region "Private Constants" ' ' The title of the dialog we want handled. ' Private Const DIALOG_TITLE As String = "Downloads" -# End Region +#End Region -# Region "Properties" +#Region "Properties" ' ' Gets the Window object of the dialog being handled. ' @@ -203,37 +205,37 @@ Public Class FFDownloadsDialog Me._currentState = value End Set End Property -# End Region -```` +#End Region +``` So far everything is very simple and straightforward. Now that the local variables and properties are complete, it's time to implement the constructor. Since all we're going to do to handle the dialog is close it, we don't require the Desktop or DialogButton parameter that standard Win32 dialog handlers require: -````C# -# region Constructor +```C# +#region Constructor /// /// Create the dialog. /// public FFDownloadsDialog() { } -# endregion -```` -````VB -# Region "Constructor" +#endregion +``` +```VB +#Region "Constructor" ' ' Create the dialog handler instance. ' Public Sub New() MyBase.New() End Sub -# End Region -```` +#End Region +``` Since there's nothing to the constructor, we could optionally leave it out and let the default constructor take over. So let's start implementing the IDialog methods starting with IsDialogActive. -````C# -# region IDialog Members +```C# +#region IDialog Members /// /// Check whether the dialog is present or not. This function is /// called by the DialogMonitor object. From 3f6b0adc80e7e557d989a6fdac78e17c314c6407 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Thu, 9 Jan 2025 15:17:04 +0200 Subject: [PATCH 16/65] Added all redirects and redirects for deleted sections Moved all redirects from urlrewriter.config and added the redirects for the deleted sections - Archived docs, troubleshooting-tools-tg, silverlight-kb and test-studio-mobile. --- docs/docs-builder.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index 97fcd5b0..c76fe1f3 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -464,8 +464,6 @@ redirects: from: "^/?$" to: "/welcome" type: Permanent -<<<<<<< HEAD - - from: "^/archived-docs/(.*)$" to: "/welcome" @@ -2569,9 +2567,6 @@ redirects: - from: "/prerequisites/configure-your-browser/safari" to: "/prerequisites/configure-your-browser/browser-configuration" - -======= - - from: "^/?$" - to: "/welcome" ->>>>>>> 1d96aff (Add docs-builder configuration file) + from: "^/archived-docs/(.*)$" + to: "/welcome" \ No newline at end of file From ad67b9ab083f627a88b8f51dabe8ba6875aabb7d Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Mon, 13 Jan 2025 17:44:38 +0200 Subject: [PATCH 17/65] Unify code blocks and fix some mistakes Unify code blocks and fix some mistakes --- docs/docs-builder.yml | 2 +- .../firefox-dialogs.md | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index c76fe1f3..228c7f43 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -4,7 +4,7 @@ product-id: 846 product-name: Progress Test Studio product-url: https://www.telerik.com/teststudio search-engine-id: 001595215763381649090:ymztq4og6vc -cta-overview: "@ProductLink is a UI test automation platform that helps QA and Engineering teams build stable and easily maintainable automated tests. Sign up for a free 30-day trial!" +cta-overview: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" cta-intro: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" default-title-prefix: Telerik Test Studio avatar-path: ./images/avatar-ninja.svg diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md index 3d10757b..8571a1c8 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/html-popups-and-dialogs-wtc/firefox-dialogs.md @@ -205,30 +205,48 @@ Public Class FFDownloadsDialog Me._currentState = value End Set End Property +<<<<<<< HEAD #End Region ``` +======= +# End Region +```` +>>>>>>> 540128e (Unify code blocks and fix some mistakes) So far everything is very simple and straightforward. Now that the local variables and properties are complete, it's time to implement the constructor. Since all we're going to do to handle the dialog is close it, we don't require the Desktop or DialogButton parameter that standard Win32 dialog handlers require: +<<<<<<< HEAD ```C# #region Constructor +======= +````C# +# region Constructor +>>>>>>> 540128e (Unify code blocks and fix some mistakes) /// /// Create the dialog. /// public FFDownloadsDialog() { } +<<<<<<< HEAD #endregion ``` ```VB #Region "Constructor" +======= +# endregion +```` +````VB +# Region "Constructor" +>>>>>>> 540128e (Unify code blocks and fix some mistakes) ' ' Create the dialog handler instance. ' Public Sub New() MyBase.New() End Sub +<<<<<<< HEAD #End Region ``` @@ -236,6 +254,15 @@ Since there's nothing to the constructor, we could optionally leave it out and l ```C# #region IDialog Members +======= +# End Region +```` + +Since there's nothing to the constructor, we could optionally leave it out and let the default constructor take over. So let's start implementing the IDialog methods starting with IsDialogActive. + +````C# +# region IDialog Members +>>>>>>> 540128e (Unify code blocks and fix some mistakes) /// /// Check whether the dialog is present or not. This function is /// called by the DialogMonitor object. From 14e5f765ddf272ee0357fb33deb170f173ad3ac9 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Wed, 26 Feb 2025 16:35:55 +0200 Subject: [PATCH 18/65] Updated html tables in markdown --- docs/automated-tests/recording/recording-dialogs.md | 3 ++- docs/prerequisites/installation/install-procedure.md | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/automated-tests/recording/recording-dialogs.md b/docs/automated-tests/recording/recording-dialogs.md index 009b83fa..905268d7 100644 --- a/docs/automated-tests/recording/recording-dialogs.md +++ b/docs/automated-tests/recording/recording-dialogs.md @@ -183,7 +183,8 @@ The Download File dialog opens a __SaveAs__ dialog in Windows File Explorer in w ![SaveFile dialog](/img/automated-tests/recording/dialogs/saveFile-dialog-step.png)
    __Handle SaveFile Dialog__ - +
    + > __Tip!__ >
    diff --git a/docs/prerequisites/installation/install-procedure.md b/docs/prerequisites/installation/install-procedure.md index b3c3a64d..de9ea386 100644 --- a/docs/prerequisites/installation/install-procedure.md +++ b/docs/prerequisites/installation/install-procedure.md @@ -32,11 +32,11 @@ Click the __'Read License Agreement'__ button to get familiar with it and confir By clicking the __'I Agree and Continue'__ button you confirm you agree to the terms and conditions listed in the Test Studio EULA. -![Setup Wizzard](../../img/general-information/installation/install-procedure/fig1.png) +![Setup Wizzard](/img/general-information/installation/install-procedure/fig1.png) On the next screen, click the __'Install'__ button to perform a default installation and skip to Finish Installation. -![Install](../../img/general-information/installation/install-procedure/fig2.png) +![Install](/img/general-information/installation/install-procedure/fig2.png) If you need to check what components are selected for installation and change these, click the __'Customize'__ button. @@ -50,7 +50,7 @@ In the __Customize__ screen you can see each separate component, which the insta - Telerik Controls Translators and - Test Studio Services. -![Components to be installed](./img/general-information/installation/install-procedure/fig3-listOfComponents.png) +![Components to be installed](/img/general-information/installation/install-procedure/fig3-listOfComponents.png) Any of these can be removed or added in the __Customize__ screen. You are also allowed to change the default installation path. After making your selections, click the __'OK'__ button to continue. @@ -61,9 +61,9 @@ There are a few important notes to consider if you select some of the below comp - To add the __Storage, Scheduling and Executive Dashboard features__ at a later stage, you must change the existing installation and select the respective components in the __Customize__ screen. - Storage service uses MongoDB as storage database and this gets automatically installed, if not available on the machine. __MongoDB requires at least 4Gb free hard drive space__ to operate normally. -![Install services](./img/general-information/installation/install-procedure/fig3.png) +![Install services](/img/general-information/installation/install-procedure/fig3.png) -![Install services](./img/general-information/installation/install-procedure/fig4.png) +![Install services](/img/general-information/installation/install-procedure/fig4.png) ![Install services](/img/general-information/installation/install-procedure/fig5.png) From 9859a55b0222e0ac894b82c89372a51a55c50308 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Tue, 1 Apr 2025 15:41:04 +0300 Subject: [PATCH 19/65] Fix KB headings, missing image references and code blocks Fix build errors - KB headings, missing image references and code blocks --- .../build-server/jenkins-ci-plugin.md | 2 +- .../build-server/ts-test-runner-app.md | 5 -- .../coded-samples/html/dynamic-grid.md | 1 - .../coded-tests/add-assembly-reference.md | 2 - .../coded-tests/compile-project.md | 3 +- .../coded-tests/output-panel.md | 2 - .../customize-project/custom-layout.md | 2 +- .../customize-project/welcome-screen.md | 8 +- docs/automated-tests/elements/find-element.md | 47 ++++++------ .../execute-apitest/add-api-test-as-step.md | 4 +- .../advanced-topics/manage-windows-auth.md | 2 +- .../dynamic-targets-custom.md | 8 +- .../designing-load-tests/modifying-tests.md | 3 - .../designing-load-tests/test-settings.md | 4 +- .../load/running-load-test/running-tests.md | 4 - .../recording/hover-over-highlighting.md | 14 +--- docs/automated-tests/recording/overview.md | 6 +- .../recording/pdf-validation.md | 3 +- .../scheduling-results/scheduling-results.md | 1 - .../create-execution-server.md | 8 +- .../create-scheduling-server.md | 2 +- .../install-runtime.md | 9 --- .../scheduling/schedule-execution.md | 1 - .../scheduling/stop-cancel-scheduled-job.md | 3 - .../git/supported-git-commands.md | 2 +- .../analyze-test-list-results.md | 2 +- .../test-list-results/calendar.md | 4 +- .../test-list-results/export-test-results.md | 8 +- .../test-lists/rerun-failed-tests.md | 5 +- .../test-lists/test-list-video-recording.md | 2 +- .../test-lists/test-lists-standalone.md | 7 +- .../test-results/step-failure-details.md | 1 - .../troubleshooting/visual-debugger.md | 3 - .../vs-plugin/test-explorer-settings.md | 6 -- .../vs-plugin/test-results-vs.md | 6 +- docs/automated-tests/vs-plugin/web-test.md | 13 ++-- docs/automated-tests/vs-plugin/wpf-test.md | 7 +- docs/docs-builder.yml | 73 ------------------- .../data-driven-testing/add-data-source.md | 5 -- .../bind-test-data-source.md | 4 +- .../manage-external-data-source.md | 1 - .../integration/bug-tracking/configuration.md | 1 - .../integration/quality-center/integration.md | 1 - docs/features/project-settings/general.md | 1 - .../recorder/compact-recording-toolbar.md | 8 +- .../quick-steps/extraction.md | 1 - docs/features/recorder/translators.md | 3 - docs/features/test-lists/create-test-lists.md | 6 +- .../add-path-environment-variables.md | 2 +- .../features/test-runners/artoftest-runner.md | 2 +- docs/getting-started/next-steps.md | 2 +- .../best-practices-kb/add-existing-test.md | 1 - .../generate-application-log.md | 7 +- .../best-practices-kb/id-automation-id.md | 2 +- .../regular-vs-coded-step.md | 1 - .../submit-support-ticket.md | 1 - .../best-practices-kb/test-modularization.md | 1 - .../calibration-error-preferences-file.md | 2 +- .../browsers-kb/chrome-clean-reinstall.md | 2 +- .../browsers-kb/custom-chrome-path.md | 2 +- .../browsers-kb/custom-chrome-profile.md | 2 +- .../custom-edge-chromium-profile.md | 2 +- .../dynamic-data-binding.md | 2 +- .../multiple-users-with-login.md | 2 +- .../numeric-values-trimmed.md | 2 +- .../data-driven-testing-kb/pass-a-variable.md | 3 +- .../data-driven-testing-kb/sql-random-row.md | 2 +- .../closesbrowser-property.md | 2 +- .../unexpected-dialog-action.md | 2 +- .../variable-query-strings.md | 2 +- .../getting-out-of-memory-exception-errors.md | 1 - .../load-testing-kb/analyze-results.md | 2 +- .../load-testing-kb/exported-results.md | 2 +- .../load-testing-kb/load-strategies.md | 2 +- .../load-testing-kb/profiling-your-app.md | 3 +- .../load-testing-kb/selecting-traffic.md | 2 +- .../load-testing-kb/think-times.md | 2 +- .../load-testing-kb/virtual-users.md | 2 +- .../disconnect-from-fource-control.md | 2 +- .../multiple-projects.md | 2 +- .../register-certificate.md | 2 +- .../scheduling-kb/configure-reverse-proxy.md | 2 +- .../scheduling-kb/drop-storage-database.md | 2 +- .../extract-results-from-mongodb.md | 2 +- .../generate-communication-key.md | 10 +-- .../scheduling-kb/gmail-results.md | 2 +- .../scheduling-kb/locked-machine.md | 2 +- .../scheduling-kb/upgrade-to-mongo-4-0.md | 2 +- .../test-automation-kb/ample-timetouts.md | 2 +- .../test-automation-kb/dynamic-ids.md | 2 +- .../fail-test-programmatically.md | 2 +- .../test-automation-kb/invoke-mouse-hover.md | 2 +- .../security-certificates.md | 2 +- .../test-execution-kb/base-url.md | 2 +- .../test-execution-kb/excel-event.md | 2 +- .../execute-selenium-test.md | 2 +- .../test-execution-kb/keep-active-session.md | 2 +- .../test-execution-kb/minimized-rdc.md | 2 +- .../test-execution-kb/multi-browsers.md | 2 +- .../run-api-test-in-web-test.md | 2 +- .../run-mobile-test-in-web-test.md | 2 +- .../run-web-test-in-other-test.md | 2 +- .../set-test-execution-time-limit.md | 2 +- .../test-execution-kb/slow-execution-rdc.md | 2 +- .../element-image-known-scenarios.md | 6 +- .../test-recording-kb/fix-ocr-64bit-wpf.md | 2 +- .../kendoui-duplicate-elements.md | 2 +- .../disabled-attribute-html.md | 2 +- .../verification-kb/verify-deleted-data.md | 2 +- .../verification-kb/verify-html-tool-tips.md | 2 +- .../resharper-compatibility.md | 2 +- .../browser-configuration.md | 4 - .../license-activation/manage-license.md | 5 +- .../finding-page-elements.md | 62 ++++++---------- .../app-config-file.md | 35 ++++----- .../chrome-tg/cannot-execute-test.md | 3 - 116 files changed, 191 insertions(+), 372 deletions(-) diff --git a/docs/advanced-topics/build-server/jenkins-ci-plugin.md b/docs/advanced-topics/build-server/jenkins-ci-plugin.md index 799ec0b0..0f42b813 100644 --- a/docs/advanced-topics/build-server/jenkins-ci-plugin.md +++ b/docs/advanced-topics/build-server/jenkins-ci-plugin.md @@ -36,7 +36,7 @@ The *project root folder* and *settings file* fields accept relative path to the Your test execution step is now ready to save and run. -[1]: /img/advanced-topics/build-server/jenkins-ci-plugin/fig1.png + [2]: /img/advanced-topics/build-server/jenkins-ci-plugin/fig2.png [3]: /img/advanced-topics/build-server/jenkins-ci-plugin/fig3.png [4]: /img/advanced-topics/build-server/jenkins-ci-plugin/fig4.png diff --git a/docs/advanced-topics/build-server/ts-test-runner-app.md b/docs/advanced-topics/build-server/ts-test-runner-app.md index 55a061b7..9ae5de6d 100644 --- a/docs/advanced-topics/build-server/ts-test-runner-app.md +++ b/docs/advanced-topics/build-server/ts-test-runner-app.md @@ -157,11 +157,6 @@ This section appears only if there is an .*?)$
    > __Note!__ As of now there is no visual representation for any custom dynamic targets within the __Edit User Profile__ view. To verify if the HTTP requests are built as you expect you could use
    Fiddler to capture the traffic of a sample load test execution and inspect these. -[1]: /img/features/testing-types/load-testing/dynamic-targets/fig1.png -[2]: /img/features/testing-types/load-testing/dynamic-targets/fig2.png -[3]: /img/features/testing-types/load-testing/dynamic-targets/fig3.png -[4]: /img/features/testing-types/load-testing/dynamic-targets/fig4.png + + + + [5]: /img/features/testing-types/load-testing/dynamic-targets/fig5.png [6]: /img/features/testing-types/load-testing/dynamic-targets/fig6.png [7]: /img/features/testing-types/load-testing/dynamic-targets/fig7.png diff --git a/docs/automated-tests/load/designing-load-tests/modifying-tests.md b/docs/automated-tests/load/designing-load-tests/modifying-tests.md index e3821d17..2ff78282 100644 --- a/docs/automated-tests/load/designing-load-tests/modifying-tests.md +++ b/docs/automated-tests/load/designing-load-tests/modifying-tests.md @@ -95,6 +95,3 @@ Click the _'magnifier'_ icon in the __Edit User Profile__ window to expand the _ [9]: /img/features/testing-types/load-testing/modifying-tests/fig9.png [10]: /img/features/testing-types/load-testing/modifying-tests/fig10.png [11]: /img/features/testing-types/load-testing/modifying-tests/fig11.png -[12]: /img/features/testing-types/load-testing/modifying-tests/fig12.png -[13]: /img/features/testing-types/load-testing/modifying-tests/fig13.png -[14]: /img/features/testing-types/load-testing/modifying-tests/fig14.png \ No newline at end of file diff --git a/docs/automated-tests/load/designing-load-tests/test-settings.md b/docs/automated-tests/load/designing-load-tests/test-settings.md index ddf713eb..e0b070a7 100644 --- a/docs/automated-tests/load/designing-load-tests/test-settings.md +++ b/docs/automated-tests/load/designing-load-tests/test-settings.md @@ -46,8 +46,8 @@ Any changes in the Test Settings will appear in the _Users Over Time_ graph. ![Time Graph][6] -[1]: /img/features/testing-types/load-testing/test-settings/fig1.png -[2]: /img/features/testing-types/load-testing/test-settings/fig2.png + + [3]: /img/features/testing-types/load-testing/test-settings/fig3.png [4]: /img/features/testing-types/load-testing/test-settings/fig4.png [4a]: /img/features/testing-types/load-testing/test-settings/fig4a.png diff --git a/docs/automated-tests/load/running-load-test/running-tests.md b/docs/automated-tests/load/running-load-test/running-tests.md index c6b39075..14fd18ca 100644 --- a/docs/automated-tests/load/running-load-test/running-tests.md +++ b/docs/automated-tests/load/running-load-test/running-tests.md @@ -119,7 +119,3 @@ The “Run Locally” button will be disabled if any of the following prerequisi [5]: /img/features/testing-types/load-testing/running-tests/fig5.png [6]: /img/features/testing-types/load-testing/running-tests/fig6.png [7]: /img/features/testing-types/load-testing/running-tests/fig7.png -[8]: /img/features/testing-types/load-testing/running-tests/fig8.png - - - diff --git a/docs/automated-tests/recording/hover-over-highlighting.md b/docs/automated-tests/recording/hover-over-highlighting.md index 55695c3e..290f14e5 100644 --- a/docs/automated-tests/recording/hover-over-highlighting.md +++ b/docs/automated-tests/recording/hover-over-highlighting.md @@ -95,16 +95,10 @@ In certain occasions you may need to scroll the page and change the visible part There are additional actions and verifications you can add against the selected element. For example, you can add mouse actions and advanced verification steps for attribute, image or text from image. -[1]: /img/features/recorder/compact-recording-toolbar/anim1.gif -[2]: /img/features/recorder/compact-recording-toolbar/fig2.png -[3]: /img/features/recorder/compact-recording-toolbar/fig3.png -[4]: /img/features/recorder/compact-recording-toolbar/fig4.png + + + + [5]: /img/features/recorder/compact-recording-toolbar/fig5.png [6]: /img/features/recorder/compact-recording-toolbar/fig6.png [7]: /img/features/recorder/compact-recording-toolbar/fig7.png -[8]: /img/features/recorder/compact-recording-toolbar/fig8.png -[9]: /img/features/recorder/compact-recording-toolbar/fig9.png -[10]: /img/features/recorder/compact-recording-toolbar/fig10.png -[11]: /img/features/recorder/compact-recording-toolbar/fig11.png -[12]: /img/features/recorder/compact-recording-toolbar/fig12.png -[13]: /img/features/recorder/compact-recording-toolbar/fig13.png diff --git a/docs/automated-tests/recording/overview.md b/docs/automated-tests/recording/overview.md index fd58a657..592e9d1d 100644 --- a/docs/automated-tests/recording/overview.md +++ b/docs/automated-tests/recording/overview.md @@ -163,14 +163,14 @@ Below you can find a short description of each button in the toolbar (in the ord * WPF Test Recorder Video Tutorial. [1]: /img/automated-tests/recording/overview/fig1.png -[2]: /img/automated-tests/recording/overview/fig2.png + [3]: /img/automated-tests/recording/overview/fig3.png -[4]: /img/automated-tests/recording/overview/fig4.png + [5]: /img/automated-tests/recording/overview/fig5.png [5a]: /img/automated-tests/recording/overview/fig5a.png [6]: /img/automated-tests/recording/overview/fig6.png [10]: /img/automated-tests/recording/overview/fig10.png [11]: /img/automated-tests/recording/overview/fig11.png [12]: /img/automated-tests/recording/overview/fig12.png -[8]: /img/features/recorder/test-recorder/fig6.png + [7]: /img/features/recorder/test-recorder/fig7.png diff --git a/docs/automated-tests/recording/pdf-validation.md b/docs/automated-tests/recording/pdf-validation.md index b99ca191..9b7b7de0 100644 --- a/docs/automated-tests/recording/pdf-validation.md +++ b/docs/automated-tests/recording/pdf-validation.md @@ -102,5 +102,4 @@ Comparing the content of two PDF files is not a straight-forward scenario, but c [2a]: /img/automated-tests/recording/validate-pdf/fig2a.png [2b]: /img/automated-tests/recording/validate-pdf/fig2b.png [3]: /img/automated-tests/recording/validate-pdf/fig3.png -[4]: /img/automated-tests/recording/validate-pdf/fig4.png -[5]: /img/automated-tests/recording/validate-pdf/fig5.png \ No newline at end of file +[4]: /img/automated-tests/recording/validate-pdf/fig4.png \ No newline at end of file diff --git a/docs/automated-tests/scheduling-results/scheduling-results.md b/docs/automated-tests/scheduling-results/scheduling-results.md index 073902c1..bad72b4f 100644 --- a/docs/automated-tests/scheduling-results/scheduling-results.md +++ b/docs/automated-tests/scheduling-results/scheduling-results.md @@ -48,4 +48,3 @@ The Test Studio Step-by-Step: Running Tests Remotely - -[1]: /img/features/scheduling-test-runs/install-runtime/fig1.png -[2]: /img/features/scheduling-test-runs/install-runtime/fig2.png -[3]: /img/features/scheduling-test-runs/install-runtime/fig3.png -[4]: /img/features/scheduling-test-runs/install-runtime/fig4.png -[5]: /img/features/scheduling-test-runs/install-runtime/fig5.png -[6]: /img/features/scheduling-test-runs/install-runtime/fig6.png -[7]: /img/features/scheduling-test-runs/install-runtime/fig7.png -[8]: /img/features/scheduling-test-runs/install-runtime/fig8.png \ No newline at end of file diff --git a/docs/automated-tests/scheduling/schedule-execution.md b/docs/automated-tests/scheduling/schedule-execution.md index e64581a2..db5ae435 100644 --- a/docs/automated-tests/scheduling/schedule-execution.md +++ b/docs/automated-tests/scheduling/schedule-execution.md @@ -121,4 +121,3 @@ To further customize the email notification, click the **Edit** button and input [10]: /img/features/scheduling-test-runs/schedule-execution/fig10.png [11]: /img/features/scheduling-test-runs/schedule-execution/fig11.png [12]: /img/features/scheduling-test-runs/schedule-execution/fig12.png -[13]: /img/features/scheduling-test-runs/schedule-execution/fig13.png \ No newline at end of file diff --git a/docs/automated-tests/scheduling/stop-cancel-scheduled-job.md b/docs/automated-tests/scheduling/stop-cancel-scheduled-job.md index 0b5a21b6..786b5a51 100644 --- a/docs/automated-tests/scheduling/stop-cancel-scheduled-job.md +++ b/docs/automated-tests/scheduling/stop-cancel-scheduled-job.md @@ -41,6 +41,3 @@ __C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\Telerik\TestStudio\Sch [1]: /img/features/scheduling-test-runs/stop-cancel-scheduled-job/fig1.png [2]: /img/features/scheduling-test-runs/stop-cancel-scheduled-job/fig2.png -[3]: /img/features/scheduling-test-runs/stop-cancel-scheduled-job/fig3.png -[4]: /img/features/scheduling-test-runs/stop-cancel-scheduled-job/fig4.png -[5]: /img/features/scheduling-test-runs/stop-cancel-scheduled-job/fig5.png diff --git a/docs/automated-tests/source-control/git/supported-git-commands.md b/docs/automated-tests/source-control/git/supported-git-commands.md index fea81ee2..ddcc9c26 100644 --- a/docs/automated-tests/source-control/git/supported-git-commands.md +++ b/docs/automated-tests/source-control/git/supported-git-commands.md @@ -40,7 +40,7 @@ Or alternatively from the Source Control ribbon [1]: /img/features/source-control/git/supported-git-commands/fig1.png [2]: /img/features/source-control/git/supported-git-commands/fig2.png -[5]: /img/features/source-control/git/open-git-project/fig5.png + [6]: /img/features/source-control/open-tfs-project/fig6.png [7]: /img/features/source-control/open-tfs-project/fig7.png [8]: /img/features/source-control/open-tfs-project/fig8.png diff --git a/docs/automated-tests/test-list-results/analyze-test-list-results.md b/docs/automated-tests/test-list-results/analyze-test-list-results.md index 26183c77..bf884790 100644 --- a/docs/automated-tests/test-list-results/analyze-test-list-results.md +++ b/docs/automated-tests/test-list-results/analyze-test-list-results.md @@ -114,7 +114,7 @@ Click the _'Screen Recording Info'_ icon for any of the tests which triggered vi [1a]: /img/automated-tests/test-list-results/analyze-test-results/fig1a.png [2]: /img/automated-tests/test-list-results/analyze-test-results/fig2.png [2a]: /img/automated-tests/test-list-results/analyze-test-results/fig2a.png -[3]: /img/automated-tests/test-list-results/analyze-test-results/fig3.png + [4]: /img/automated-tests/test-list-results/analyze-test-results/fig4.png [5]: /img/automated-tests/test-list-results/analyze-test-results/fig5.png [6]: /img/automated-tests/test-list-results/analyze-test-results/fig6.png diff --git a/docs/automated-tests/test-list-results/calendar.md b/docs/automated-tests/test-list-results/calendar.md index 138312dd..5e399eaa 100644 --- a/docs/automated-tests/test-list-results/calendar.md +++ b/docs/automated-tests/test-list-results/calendar.md @@ -40,8 +40,8 @@ Double click a test list result entry to view its details displayed on the right ![drill down test list result][6] -[1]: /img/automated-tests/test-list-results/calendar/fig1.png -[2]: /img/automated-tests/test-list-results/calendar/fig2.png + + [3]: /img/automated-tests/test-list-results/calendar/fig3.png [4]: /img/automated-tests/test-list-results/calendar/fig4.png [5]: /img/automated-tests/test-list-results/calendar/fig5.png diff --git a/docs/automated-tests/test-list-results/export-test-results.md b/docs/automated-tests/test-list-results/export-test-results.md index 63715f2c..1519d001 100644 --- a/docs/automated-tests/test-list-results/export-test-results.md +++ b/docs/automated-tests/test-list-results/export-test-results.md @@ -136,11 +136,11 @@ All of the supported export file types can be directly __sent via email__. Selec * **Submit Bug**: Load the Submit Bug dialog and log a bug about the failed result in your previously configured bug tracking application. -[1]: /img/automated-tests/test-list-results/export-test-results/fig1.png -[2]: /img/automated-tests/test-list-results/export-test-results/fig2.png + + [3]: /img/automated-tests/test-list-results/export-test-results/fig3.png -[4]: /img/automated-tests/test-list-results/export-test-results/fig4.png -[5]: /img/automated-tests/test-list-results/export-test-results/fig5.png + + [6]: /img/automated-tests/test-list-results/export-test-results/fig6.png [7]: /img/automated-tests/test-list-results/export-test-results/fig7.png [8]: /img/automated-tests/test-list-results/export-test-results/fig8.png diff --git a/docs/automated-tests/test-lists/rerun-failed-tests.md b/docs/automated-tests/test-lists/rerun-failed-tests.md index 2f262daa..eaf3a9a3 100644 --- a/docs/automated-tests/test-lists/rerun-failed-tests.md +++ b/docs/automated-tests/test-lists/rerun-failed-tests.md @@ -23,7 +23,6 @@ The Uncheck _"Display encoder status"_ [1]: /img/automated-tests/test-lists/test-list-runs-specifics/fig1.png [2]: /img/automated-tests/test-lists/test-list-runs-specifics/fig2.png -[3]: /img/automated-tests/test-lists/test-list-runs-specifics/fig3.png + [4]: /img/automated-tests/test-lists/test-list-runs-specifics/fig4.png diff --git a/docs/automated-tests/test-lists/test-lists-standalone.md b/docs/automated-tests/test-lists/test-lists-standalone.md index aab2018d..fb1f1f5c 100644 --- a/docs/automated-tests/test-lists/test-lists-standalone.md +++ b/docs/automated-tests/test-lists/test-lists-standalone.md @@ -81,10 +81,7 @@ These criteria can be used when __ If you want to use the Visual Studio Test Explorer to execute the Test Studio tests, check this topic. -[1]: /img/general-information/create-test-vsplugin/web-test/fig1.png -[2]: /img/general-information/create-test-vsplugin/web-test/fig2.png -[3]: /img/general-information/create-test-vsplugin/web-test/fig3.png -[4]: /img/general-information/create-test-vsplugin/web-test/fig4.png -[5]: /img/general-information/create-test-vsplugin/web-test/fig5.png + + + + + [6]: /img/general-information/create-test-vsplugin/web-test/fig6.png -[7]: /img/general-information/create-test-vsplugin/web-test/fig7.png -[11]: /img/general-information/create-test-vsplugin/wpf-test/fig11.png -[12]: /img/general-information/create-test-vsplugin/wpf-test/fig12.png \ No newline at end of file diff --git a/docs/automated-tests/vs-plugin/wpf-test.md b/docs/automated-tests/vs-plugin/wpf-test.md index 6144291b..a3951c62 100644 --- a/docs/automated-tests/vs-plugin/wpf-test.md +++ b/docs/automated-tests/vs-plugin/wpf-test.md @@ -52,12 +52,9 @@ The __ If you want to use the Visual Studio Test Explorer to execute the Test Studio tests, check this topic. -[1]: /img/general-information/create-test-vsplugin/wpf-test/fig1.png -[2]: /img/general-information/create-test-vsplugin/wpf-test/fig2.png + + [3]: /img/general-information/create-test-vsplugin/wpf-test/fig3.png [4]: /img/general-information/create-test-vsplugin/wpf-test/fig4.png [5]: /img/general-information/create-test-vsplugin/wpf-test/fig5.png [6]: /img/general-information/create-test-vsplugin/wpf-test/fig6.png -[7]: /img/general-information/create-test-vsplugin/wpf-test/fig7.png -[11]: /img/general-information/create-test-vsplugin/wpf-test/fig11.png -[12]: /img/general-information/create-test-vsplugin/wpf-test/fig12.png \ No newline at end of file diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index 228c7f43..90598d3f 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -529,9 +529,6 @@ redirects: - from: "/features/data-driven-testing/multi-level-tests" to: "/automated-tests/data-drive-test/multi-level-tests" -- - from: "/features/data-driven-testing/local-data-driven-test" - to: "/automated-tests/data-drive-test/local-data-driven-test" - from: "/features/data-driven-testing/test-list-results" to: "/automated-tests/data-drive-test/ddt-results#test-list-results" @@ -816,10 +813,6 @@ redirects: from: "/features/scheduling-test-runs/using-service-api" to: "/features/scheduling-test-runs/advanced-topics/using-service-api" -- - from: "/features/scheduling-test-runs/migrate-database" - to: "/features/scheduling-test-runs/advanced-topics/migrate-database" - - from: "/user-guide/knowledge-base/project-configuration/register-certificate-for-https-connection" to: "/knowledge-base/project-configuration-kb/register-certificate" @@ -945,15 +938,6 @@ redirects: from: "/user-guide/scheduling-test-runs/scheduling-results" to: "/features/scheduling-test-runs/scheduling-results" - -- - from: "/user-guide/scheduling-test-runs/schedule-test-execution.aspx" - to: "/features/scheduling-test-runs/schedule-execution" -- - from: "/user-guide/scheduling-test-runs/schedule-test-execution" - to: "/features/scheduling-test-runs/schedule-execution" - - - from: "/user-guide/scheduling-test-runs/run-list-remotely.aspx" to: "/features/scheduling-test-runs/run-list-remotely" @@ -1108,7 +1092,6 @@ redirects: from: "/features/testing-types/load-testing/running-tests" to: "/features/testing-types/load-testing/running-load-test/running-tests" - - from: "/features/testing-types/load-testing/analyzing-results" to: "/features/testing-types/load-testing/load-testing-results/analyzing-results" @@ -1116,17 +1099,10 @@ redirects: from: "/user-guide/load-testing/load-analyzing-results.aspx" to: "/features/testing-types/load-testing/load-testing-results/analyzing-results" - -- - from: "/features/testing-types/load-testing/export-results" - to: "/features/testing-types/load-testing/load-testing-results/export-results" - - - from: "/features/testing-types/load-testing/troubleshooting-results-errors" to: "/features/testing-types/load-testing/load-testing-results/troubleshooting-results-errors" - - from: "/features/testing-types/load-testing/export-results" to: "/features/testing-types/load-testing/load-testing-results/export-results" @@ -1614,10 +1590,6 @@ redirects: from: "/features/elements-menu/overview" to: "/automated-tests/recording/hover-over-highlighting" -- - from: "/general-information/test-execution/quick-execution" - to: "/automated-tests/test-execution/quick-execution" - - from: "/general-information/test-execution/quick-execution#execute-a-test" to: "/automated-tests/test-execution/quick-execution" @@ -1626,26 +1598,6 @@ redirects: from: "/general-information/test-execution/quick-execution#execution-results" to: "/automated-tests/test-execution/quick-execution#quick-run-results" -- - from: "/general-information/test-execution/quick-execution#visual-debugger" - to: "/automated-tests/test-execution/quick-run-visual-debugger" - -- - from: "/general-information/test-execution/quick-execution#debugger-options" - to: "/automated-tests/test-execution/quick-run-visual-debugger" - -- - from: "/general-information/test-execution/quick-execution#execute-with-annotations" - to: "/automated-tests/test-execution/quick-run-annotations" - -- - from: "/general-information/test-execution/quick-execution#execution-timeouts" - to: "/automated-tests/test-execution/quick-run-timeouts" - -- - from: "/general-information/test-execution/quick-execution#baseurl" - to: "/automated-tests/test-execution/quick-run-baseurl" - - from: "/general-information/test-execution/quick-execution#compare-mode" to: "/automated-tests/test-execution/quick-run-baseurl" @@ -1659,18 +1611,11 @@ redirects: - from: "/getting-started/test-results/quick-execution-test-step" to: "/automated-tests/test-results/quick-execute-test-step" -- - from: "/general-information/test-results/quick-execute-test-step" - to: "/automated-tests/test-results/quick-execute-test-step" - from: "/general-information/test-results/analyze-quick-run-results" to: "/automated-tests/test-results/analyze-quick-run-results" -- - from: "/general-information/test-results/step-failure-details" - to: "/automated-tests/test-results/step-failure-details" - - from: "/archived-docs/recorder/overview" to: "/archived-docs/recorder/recorder-overview-archive" @@ -1683,10 +1628,6 @@ redirects: from: "/archived-docs/recorder/step-suggestions" to: "/archived-docs/recorder/step-suggestions-archive" -- - from: "/general-information/test-recording/overview" - to: "/automated-tests/recording/overview" - - from: "/features/recorder/test-recorder" to: "/automated-tests/recording/overview" @@ -1770,10 +1711,6 @@ redirects: from: "/general-information/test-execution/quick-execution#baseurl" to: "/automated-tests/test-execution/quick-run-baseurl" -- - from: "/general-information/test-execution/quick-execution#compare-mode" - to: "/automated-tests/test-execution/quick-run-baseurl#adjust-the-compare-mode-for-urls" - - from: "/general-information/create-test-standalone/add-test" to: "/getting-started/first-test#add-a-test-to-the-project" @@ -1854,10 +1791,6 @@ redirects: from: "/general-information/test-execution/visual-studio-2012-and-later-test-list" to: "/archived-docs/results/visual-studio-2012-and-later-test-list" -- - from: "/general-information/test-results/analyze-quick-run-results" - to: "/automated-tests/test-results/analyze-quick-run-results" - - from: "/general-information/test-results/analyze-test-list-results" to: "/automated-tests/test-list-results/analyze-test-list-results" @@ -2504,12 +2437,6 @@ redirects: - from: "/troubleshooting-guide/browser-inconsistencies-tg/change-text-input-value" to: "https://docs.telerik.com/teststudio/automated-tests/recording/overview#how-to-add-steps-in-the-test" -- - from: "/troubleshooting-guide/browser-inconsistencies-tg/extensions-disabled-in-chrome" - to: "/troubleshooting-guide/browser-inconsistencies-tg/extensions-disabled-in-chrome" -- - from: "/troubleshooting-guide/browser-inconsistencies-tg/extensions-disabled-in-ff" - to: "/prerequisites/configure-your-browser/firefox" - from: "/troubleshooting-guide/browser-inconsistencies-tg/html-button" to: "/features/recorder/highlighting-menu/quick-steps/quick-verification" diff --git a/docs/features/data-driven-testing/add-data-source.md b/docs/features/data-driven-testing/add-data-source.md index 6c38e47b..2b91882c 100644 --- a/docs/features/data-driven-testing/add-data-source.md +++ b/docs/features/data-driven-testing/add-data-source.md @@ -113,12 +113,7 @@ Adding a database source requires additional details compared to adding an Excel > Find examples for **[How to connect to a SQL Database](/features/data-driven-testing/sql-database-example)** and **[How to connect to an Oracle Database](/features/data-driven-testing/oracle-db-example)**. [1]: /img/features/data-driven-testing/add-data-source/fig1.png -[2]: /img/features/data-driven-testing/add-data-source/fig2.png -[3]: /img/features/data-driven-testing/add-data-source/fig3.png [4]: /img/features/data-driven-testing/add-data-source/fig4.png -[5]: /img/features/data-driven-testing/add-data-source/fig5.png -[6]: /img/features/data-driven-testing/add-data-source/fig6.png -[7]: /img/features/data-driven-testing/add-data-source/fig7.png [8]: /img/features/data-driven-testing/add-data-source/fig8.png [9]: /img/features/data-driven-testing/add-data-source/fig9.png [9a]: /img/features/data-driven-testing/add-data-source/fig9a.png diff --git a/docs/features/data-driven-testing/bind-test-data-source.md b/docs/features/data-driven-testing/bind-test-data-source.md index 452104b3..d8170014 100644 --- a/docs/features/data-driven-testing/bind-test-data-source.md +++ b/docs/features/data-driven-testing/bind-test-data-source.md @@ -89,8 +89,8 @@ To remove the external data source associated with a test, right click that test ![Remove Data Binding][8] -[1]: /img/features/data-driven-testing/bind-test-data-source/fig1.png -[2]: /img/features/data-driven-testing/bind-test-data-source/fig2.png + + [3]: /img/features/data-driven-testing/bind-test-data-source/fig3.png [4]: /img/features/data-driven-testing/bind-test-data-source/fig4.png [5]: /img/features/data-driven-testing/bind-test-data-source/fig5.png diff --git a/docs/features/data-driven-testing/manage-external-data-source.md b/docs/features/data-driven-testing/manage-external-data-source.md index ec592857..89fa9025 100644 --- a/docs/features/data-driven-testing/manage-external-data-source.md +++ b/docs/features/data-driven-testing/manage-external-data-source.md @@ -44,4 +44,3 @@ Then, you can open the _Manage Data Source_ dialog, choose the data file to dele [1]: /img/features/data-driven-testing/manage-external-data-source/fig1.png [2]: /img/features/data-driven-testing/manage-external-data-source/fig2.png [3]: /img/features/data-driven-testing/manage-external-data-source/fig3.png -[4]: /img/features/data-driven-testing/manage-external-data-source/fig4.png diff --git a/docs/features/integration/bug-tracking/configuration.md b/docs/features/integration/bug-tracking/configuration.md index ca27ee11..06df034b 100644 --- a/docs/features/integration/bug-tracking/configuration.md +++ b/docs/features/integration/bug-tracking/configuration.md @@ -136,4 +136,3 @@ Click **Advanced Settings** ![Advanced settings button][20] to set whether to at [30]: /img/features/integration/bug-tracking/configuration/bug-report-icon-navigate-JIRA.png [20]: /img/features/integration/bug-tracking/configuration/advanced-settings.png [21]: /img/features/integration/bug-tracking/configuration/choose-advanced-settings.png -[22]: /img/features/integration/bug-tracking/configuration/import-from-exploratory.png diff --git a/docs/features/integration/quality-center/integration.md b/docs/features/integration/quality-center/integration.md index 84b658ae..8beab15b 100644 --- a/docs/features/integration/quality-center/integration.md +++ b/docs/features/integration/quality-center/integration.md @@ -72,4 +72,3 @@ Open a File Explorer and navigate to the Test Studio installation _Bin_ sub-fold [4]: /img/features/integration/quality-center/integration/fig4.png [5]: /img/features/integration/quality-center/integration/fig5.png [6]: /img/features/integration/quality-center/integration/fig6.png -[7]: /img/features/integration/quality-center/integration/fig7.png \ No newline at end of file diff --git a/docs/features/project-settings/general.md b/docs/features/project-settings/general.md index a33f7e04..2c7fff5f 100644 --- a/docs/features/project-settings/general.md +++ b/docs/features/project-settings/general.md @@ -49,4 +49,3 @@ This property allows you to bring up the project in the same state when it was l The amount of time in milliseconds to wait for Test Studio to connect to a Silverlight application. [1]: /img/features/project-settings/general/fig1.png -[2]: /img/features/project-settings/general/fig2.png diff --git a/docs/features/recorder/compact-recording-toolbar.md b/docs/features/recorder/compact-recording-toolbar.md index b626b3c7..73f7ece2 100644 --- a/docs/features/recorder/compact-recording-toolbar.md +++ b/docs/features/recorder/compact-recording-toolbar.md @@ -77,10 +77,10 @@ Choose between vertical and horizontal **Compact Recording Toolbar** and move it [1a]: /img/features/recorder/compact-recording-toolbar/fig1.png [2]: /img/features/recorder/compact-recording-toolbar/fig2.png [3]: /img/features/recorder/compact-recording-toolbar/fig3.png -[4]: /img/features/recorder/compact-recording-toolbar/fig4.png -[5]: /img/features/recorder/compact-recording-toolbar/fig5.png -[6]: /img/features/recorder/compact-recording-toolbar/fig6.png -[7]: /img/features/recorder/compact-recording-toolbar/fig7.png + + + + [8]: /img/features/recorder/compact-recording-toolbar/fig8.png [9]: /img/features/recorder/compact-recording-toolbar/fig9.png [10]: /img/features/recorder/compact-recording-toolbar/fig10.png diff --git a/docs/features/recorder/highlighting-menu/quick-steps/extraction.md b/docs/features/recorder/highlighting-menu/quick-steps/extraction.md index 3d7ff939..dd5b7a18 100644 --- a/docs/features/recorder/highlighting-menu/quick-steps/extraction.md +++ b/docs/features/recorder/highlighting-menu/quick-steps/extraction.md @@ -114,4 +114,3 @@ The implementation of verification steps allows you to convert any text based ch [6]: /img/features/recorder/advanced-recording-tools/element-steps/verifications/extraction/fig6.png [7]: /img/features/recorder/advanced-recording-tools/element-steps/verifications/extraction/fig7.png [8]: /img/features/recorder/advanced-recording-tools/element-steps/verifications/extraction/fig8.png -[9]: /img/features/recorder/advanced-recording-tools/element-steps/verifications/extraction/fig9.png diff --git a/docs/features/recorder/translators.md b/docs/features/recorder/translators.md index 86d6dada..dfc009a8 100644 --- a/docs/features/recorder/translators.md +++ b/docs/features/recorder/translators.md @@ -57,6 +57,3 @@ The 2022 releases of the Telerik and Kendo UI components introduced significant ## See Also * Automated Testing for Kendo UI Made Easy. - -[1]: /img/features/recorder/translators/fig1.png -[2]: /img/features/recorder/translators/fig2.png diff --git a/docs/features/test-lists/create-test-lists.md b/docs/features/test-lists/create-test-lists.md index 8d2676f7..49699289 100644 --- a/docs/features/test-lists/create-test-lists.md +++ b/docs/features/test-lists/create-test-lists.md @@ -109,9 +109,9 @@ Once you have created a test list, you can Regedit< Find (or create) the __TraceLogEnabled__ key in this folder. Double click it and change the Value data to 1. The __TraceLogPath__ value is where the log gets stored. Ensure to isnert the file full path with name and file extension like this **C:\Temp\TraceLog\log.txt**. -[1]: /img/knowledge-base/best-practices-kb/generate-application-log/fig1.png + [2]: /img/knowledge-base/best-practices-kb/generate-application-log/fig2.png [2a]: /img/knowledge-base/best-practices-kb/generate-application-log/fig2a.png [3]: /img/knowledge-base/best-practices-kb/generate-application-log/fig3.png [4]: /img/knowledge-base/best-practices-kb/generate-application-log/fig4.png -[5]: /img/knowledge-base/best-practices-kb/generate-application-log/fig5.png + [6]: /img/knowledge-base/best-practices-kb/generate-application-log/fig6.png [7]: /img/knowledge-base/best-practices-kb/generate-application-log/fig7.png [7a]: /img/knowledge-base/best-practices-kb/generate-application-log/fig7a.png [8]: /img/knowledge-base/best-practices-kb/generate-application-log/fig8.png [8a]: /img/knowledge-base/best-practices-kb/generate-application-log/fig8a.png -[9]: /img/knowledge-base/best-practices-kb/generate-application-log/fig9.png diff --git a/docs/knowledge-base/best-practices-kb/id-automation-id.md b/docs/knowledge-base/best-practices-kb/id-automation-id.md index 684437e9..b809b9c4 100644 --- a/docs/knowledge-base/best-practices-kb/id-automation-id.md +++ b/docs/knowledge-base/best-practices-kb/id-automation-id.md @@ -4,7 +4,7 @@ page_title: ID & Automation ID description: Static and unique id attribute for the elements in a dynamic application. It is recommended to assign such during the application development process to ease the automation process. position: 1 --- -# Element Identification with ID and Automation ID +## Element Identification with ID and Automation ID As a QA professional, it's **important** to get **involved** with the **development team** early on in the process. This article will discuss just one of the many benefits in doing so – coding standards and the use of IDs for enhanced team productivity. Require this up front and you can significantly cut back test case maintenance. diff --git a/docs/knowledge-base/best-practices-kb/regular-vs-coded-step.md b/docs/knowledge-base/best-practices-kb/regular-vs-coded-step.md index 63273c08..3fa2752d 100644 --- a/docs/knowledge-base/best-practices-kb/regular-vs-coded-step.md +++ b/docs/knowledge-base/best-practices-kb/regular-vs-coded-step.md @@ -4,7 +4,6 @@ page_title: Regular vs. Coded Step description: The benefits of recorded steps against coded and vice versa. position: 1 --- -# Regular vs. Coded Step *We've noticed that a considerable number our customers' projects rely heavily on code in order to implement their test cases.* diff --git a/docs/knowledge-base/best-practices-kb/submit-support-ticket.md b/docs/knowledge-base/best-practices-kb/submit-support-ticket.md index 2a3215af..46670556 100644 --- a/docs/knowledge-base/best-practices-kb/submit-support-ticket.md +++ b/docs/knowledge-base/best-practices-kb/submit-support-ticket.md @@ -4,7 +4,6 @@ page_title: Submit Support Ticket description: How to submit a support ticket to contact the Test Studio Support Team. What details to provide to get help for a Test Studio query as soon as possible. position: 1 --- -# Submit Support Ticket You can submit your support query in your your Telerik account here. diff --git a/docs/knowledge-base/best-practices-kb/test-modularization.md b/docs/knowledge-base/best-practices-kb/test-modularization.md index 6af87360..e22297f1 100644 --- a/docs/knowledge-base/best-practices-kb/test-modularization.md +++ b/docs/knowledge-base/best-practices-kb/test-modularization.md @@ -4,7 +4,6 @@ page_title: Test Modularization description: Best practices how to organize a Test Studio project to ease its maintenance in the future. Reusing tests across the project, using coded steps and custom code, data driven testing, data binding verification and input steps, dynamic data binding using extracted values in runtime. logical steps - if else, loop. position: 1 --- -# Test Modularization *How can I create common global functions for all my tests? Does Test Studio support global project variables or a built-in data store that can be used for all tests? Is there an ability to collaborate between tests, pass arguments to them, and run a set of tests without using test lists?* diff --git a/docs/knowledge-base/browsers-kb/calibration-error-preferences-file.md b/docs/knowledge-base/browsers-kb/calibration-error-preferences-file.md index b961a21d..faa3527d 100644 --- a/docs/knowledge-base/browsers-kb/calibration-error-preferences-file.md +++ b/docs/knowledge-base/browsers-kb/calibration-error-preferences-file.md @@ -4,7 +4,7 @@ page_title: Edge Calibration Error description: "Edge Calibration Error in Test Studio - Could not read Edge Preferences file Error during serialization or deserialization. The length of the string exceeds the value set on the maxJsonLength value." position: 1 --- -# Error on Trying to Calibrate Edge Browser +## Error on Trying to Calibrate Edge Browser Test Studio browsers calibration is a mandatory step to set the supported browsers in compatible state for recording and execution of automated tests. diff --git a/docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md b/docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md index 07d3735f..b72402eb 100644 --- a/docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md +++ b/docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md @@ -4,7 +4,7 @@ page_title: Chrome Clean Reinstall description: A clean reinstall of Chrome browser may help to fix Test Studio Chrome Extension not loading or steps not executing issues. A clean reinstall of Chrome ensures the browser's user data is removed. position: 3 --- -# How to Perform Clean Reinstall of Chrome Browser +## How to Perform Clean Reinstall of Chrome Browser ## Problem diff --git a/docs/knowledge-base/browsers-kb/custom-chrome-path.md b/docs/knowledge-base/browsers-kb/custom-chrome-path.md index 680c6497..e95127c4 100644 --- a/docs/knowledge-base/browsers-kb/custom-chrome-path.md +++ b/docs/knowledge-base/browsers-kb/custom-chrome-path.md @@ -4,7 +4,7 @@ page_title: Custom Chrome Path description: How to set Custom Chrome path if the Chrome installation is a custom one. position: 1 --- -# How to Set a Custom Chrome Path +## How to Set a Custom Chrome Path Test Studio looks by default at *C:\Program Files (x86)\Google\Chrome\Application\* for the chrome.exe and *C:\Users\\[UserName]\AppData\Local\Google\Chrome\User Data\Default\* for preferences file. diff --git a/docs/knowledge-base/browsers-kb/custom-chrome-profile.md b/docs/knowledge-base/browsers-kb/custom-chrome-profile.md index c77fad6b..5f1483c9 100644 --- a/docs/knowledge-base/browsers-kb/custom-chrome-profile.md +++ b/docs/knowledge-base/browsers-kb/custom-chrome-profile.md @@ -4,7 +4,7 @@ page_title: Custom Chrome Profile description: Calibrate the default Chrome Profile position: 2 --- -# How to Set a Custom Chrome Profile +## How to Set a Custom Chrome Profile Test Studio allows you to create a custom profile in Chrome browser, which remains in use only when running tests from Test Studio. diff --git a/docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md b/docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md index ee7488db..8eb42cc9 100644 --- a/docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md +++ b/docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md @@ -4,7 +4,7 @@ page_title: Custom Edge Chromium Profile description: Use Custom Edge Chromium Profile for testing in Test Studio. position: 2 --- -# How to Set a Custom Edge Chromium Profile +## How to Set a Custom Edge Chromium Profile Test Studio allows you to create a custom profile in Edge Chromium browser, which remains in use only when running tests from Test Studio. diff --git a/docs/knowledge-base/data-driven-testing-kb/dynamic-data-binding.md b/docs/knowledge-base/data-driven-testing-kb/dynamic-data-binding.md index 7bfd2cb6..324ba3cf 100644 --- a/docs/knowledge-base/data-driven-testing-kb/dynamic-data-binding.md +++ b/docs/knowledge-base/data-driven-testing-kb/dynamic-data-binding.md @@ -5,7 +5,7 @@ description: I want my test to dynamically bind to a different data set at run-t previous_url: /user-guide/knowledge-base/data-driven-testing/dynamic-data-binding.aspx, user-guide/knowledge-base/data-driven-testing/dynamic-data-binding position: 1 --- -# Dynamic Data Binding +## Dynamic Data Binding *I want my test to dynamically bind to a different data set at run-time. The data I want the test to use will depend on certain conditions of my application, but the test steps will always be the same.* diff --git a/docs/knowledge-base/data-driven-testing-kb/multiple-users-with-login.md b/docs/knowledge-base/data-driven-testing-kb/multiple-users-with-login.md index 5144967d..d6da37a7 100644 --- a/docs/knowledge-base/data-driven-testing-kb/multiple-users-with-login.md +++ b/docs/knowledge-base/data-driven-testing-kb/multiple-users-with-login.md @@ -4,7 +4,7 @@ page_title: Multiple Users with Login description: How to configure a test to use the same data source row multiple times. position: 1 --- -# Repeating Actions for Multiple Users with Login +## Repeating Actions for Multiple Users with Login After loading the input data using data binding (an Excel file), I want to get the specific row item in the data multiple times. Here is the business scenario: diff --git a/docs/knowledge-base/data-driven-testing-kb/numeric-values-trimmed.md b/docs/knowledge-base/data-driven-testing-kb/numeric-values-trimmed.md index c02b76e6..81ee632c 100644 --- a/docs/knowledge-base/data-driven-testing-kb/numeric-values-trimmed.md +++ b/docs/knowledge-base/data-driven-testing-kb/numeric-values-trimmed.md @@ -4,7 +4,7 @@ page_title: Fix Trimmed Numeric Values description: External data source from CSV file is trimmed after the numeric separator. Data is not the same when you bind it to a test. IP values are not full in data driven test. position: 6 --- -# Numeric Values from External Data Source are Trimmed +## Numeric Values from External Data Source are Trimmed ## Problem diff --git a/docs/knowledge-base/data-driven-testing-kb/pass-a-variable.md b/docs/knowledge-base/data-driven-testing-kb/pass-a-variable.md index d0b4d3bb..b450ede5 100644 --- a/docs/knowledge-base/data-driven-testing-kb/pass-a-variable.md +++ b/docs/knowledge-base/data-driven-testing-kb/pass-a-variable.md @@ -4,7 +4,7 @@ page_title: Pass a Variable description: An example how to reuse a dynamically extracted variable (during runtime) in different tests. position: 1 --- -# Pass a Variable Between Tests +## Pass a Variable Between Tests I would like to capture data in one test and pass it to another. Is it possible to set a variable in one test and have it accessible by another test in the project? @@ -51,4 +51,3 @@ This is possible using the Analysis Screen displays graphical results. If you export your load test results in HTML or .XLSX format, the results appear as a table. This document contains tips on interpreting this data. diff --git a/docs/knowledge-base/load-testing-kb/load-strategies.md b/docs/knowledge-base/load-testing-kb/load-strategies.md index 414def0e..c7beb075 100644 --- a/docs/knowledge-base/load-testing-kb/load-strategies.md +++ b/docs/knowledge-base/load-testing-kb/load-strategies.md @@ -4,7 +4,7 @@ page_title: Load Strategies description: Choose which load strategy will suit the current requirements and adjust the Test Strudio load test accordingly. Stress Testing. Baseline Tests and High Load Tests. Soak Testing. Scalability Testing. Geographic Diversity Testing. position: 1 --- -# Types of Load Tests +## Types of Load Tests There are many types of load tests, each designed to answer specific questions. Here are four common types of load test, and how to start building them in Test Studio. diff --git a/docs/knowledge-base/load-testing-kb/profiling-your-app.md b/docs/knowledge-base/load-testing-kb/profiling-your-app.md index 7215282b..4ec15b38 100644 --- a/docs/knowledge-base/load-testing-kb/profiling-your-app.md +++ b/docs/knowledge-base/load-testing-kb/profiling-your-app.md @@ -4,7 +4,6 @@ page_title: Profiling Your App description: Profiling Your App in Test Studio load test. Identifying performance metrics to gather and analyze. Role-specific Metrics - Application Server (performance counters to measure the resource usage of different components of the application server). Database Server (performance counters to measure the behavior and resource usage of your SQL database server). Execution Server (performance counters to determine if the machine executing the load test is a bottleneck). position: 1 --- -# Profiling Your App When you load test your application with Test Studio, the Load Testing tool automatically calculates metrics about the HTTP traffic it receives from your application server. But some of the most important data about your application's performance comes from directly observing performance counters on the application and database servers. Test Studio's Execution Server and Standalone versions provide a Profiler for the machine where they are installed. By adding a machine to a Test Studio Load Test under Monitor Performance, you can gather robust information about the performance of any machine in your application topology. @@ -20,7 +19,7 @@ Project stakeholders may provide you with requirements that directly correspond You can also derive specific metrics from your application requirements. For example, the application may have a requirement that users begin to see responses to their actions within one second on average. From this requirement, you can derive a goal: "Average Time to First Byte is Less Than 1000 ms." -# Role-specific Metrics +## Role-specific Metrics Depending on the specific role of a machine in your application topology, you can select a different set of performance counters to monitor during your load test. Because every application has its own distinct architecture, each load test may have its own set of appropriate performance counters. Talk to your developers about which performance counters are most relevant for your application. Consider these as a starting point. diff --git a/docs/knowledge-base/load-testing-kb/selecting-traffic.md b/docs/knowledge-base/load-testing-kb/selecting-traffic.md index e8723172..8fa35296 100644 --- a/docs/knowledge-base/load-testing-kb/selecting-traffic.md +++ b/docs/knowledge-base/load-testing-kb/selecting-traffic.md @@ -4,7 +4,7 @@ page_title: Selecting Traffic description: Select the traffic in a load user profile for useful and robust load test results. position: 1 --- -# Selecting Load Traffic +## Selecting Load Traffic There are many types of load tests, each with its own goals. But for most load tests, following a few general principles should provide more useful and robust load test results. diff --git a/docs/knowledge-base/load-testing-kb/think-times.md b/docs/knowledge-base/load-testing-kb/think-times.md index e8ddd348..9f2dc161 100644 --- a/docs/knowledge-base/load-testing-kb/think-times.md +++ b/docs/knowledge-base/load-testing-kb/think-times.md @@ -4,7 +4,7 @@ page_title: Think Times description: Think times in Test Studioo Load test represents the time it takes a user to process the information received from the application and decide what to do next. It also represents other delays, like the amount of time spent filling in a form before submitting the content. Advantages if choosing the right Think Times in Test Studio load test. position: 1 --- -# Think Times +## Think Times In Test Studio Load Tests, Think Time represents the time it takes a user to process the information received from the application and decide what to do next. It also represents other delays, like the amount of time spent filling in a form before submitting the content. diff --git a/docs/knowledge-base/load-testing-kb/virtual-users.md b/docs/knowledge-base/load-testing-kb/virtual-users.md index 3eac9305..4d89f93e 100644 --- a/docs/knowledge-base/load-testing-kb/virtual-users.md +++ b/docs/knowledge-base/load-testing-kb/virtual-users.md @@ -4,7 +4,7 @@ page_title: Virtual Users description: clarify some of the concepts behind Virtual Users in Test Studio Load Tests. Workload in Test Studio load test. How to adjust the workload of user profiles to cover the load test requirements. position: 1 --- -# Virtual Users +## Virtual Users This document attempts to clarify some of the concepts behind Virtual Users in Test Studio Load Tests. diff --git a/docs/knowledge-base/project-configuration-kb/disconnect-from-fource-control.md b/docs/knowledge-base/project-configuration-kb/disconnect-from-fource-control.md index c777a8cd..c9ef3605 100644 --- a/docs/knowledge-base/project-configuration-kb/disconnect-from-fource-control.md +++ b/docs/knowledge-base/project-configuration-kb/disconnect-from-fource-control.md @@ -4,7 +4,7 @@ page_title: Disconnect From Source Control description: How to disconnect a local project from TFS, so it is no longer source controlled. position: 1 --- -# Disconnect From Source Control +## Disconnect From Source Control I'd like to disconnect a local project from TFS, so it is no longer source controlled. diff --git a/docs/knowledge-base/project-configuration-kb/multiple-projects.md b/docs/knowledge-base/project-configuration-kb/multiple-projects.md index 19c408a6..e659ff48 100644 --- a/docs/knowledge-base/project-configuration-kb/multiple-projects.md +++ b/docs/knowledge-base/project-configuration-kb/multiple-projects.md @@ -4,7 +4,7 @@ page_title: Multiple Projects description: Reusing tests and Helper methods across multiple projects. When multiple projects use the same or similar resources, you may wish to share or integrate these project resources. Here we address four scenarios - Sharing helper methods (standalone code file) between projects, sharing data sources between projects, and importing tests from other projects. position: 1 --- -# Multiple Projects +## Multiple Projects When multiple projects use the same or similar resources, you may wish to share or integrate these project resources. Here we address four scenarios: Sharing helper methods between projects, sharing data sources between projects, and importing tests from other projects. diff --git a/docs/knowledge-base/project-configuration-kb/register-certificate.md b/docs/knowledge-base/project-configuration-kb/register-certificate.md index e715b3cc..737b1e59 100644 --- a/docs/knowledge-base/project-configuration-kb/register-certificate.md +++ b/docs/knowledge-base/project-configuration-kb/register-certificate.md @@ -4,7 +4,7 @@ page_title: Register Certificate description: "Register Certificate for HTTPS Connection. I encounter certificate-related warnings when the Test Studio recorder or runner is attached to the browser. Load Test cannot navigate to the desired page due to security warning certificate error" position: 1 --- -# Register Certificate for HTTPS Connection +## Register Certificate for HTTPS Connection When running performance and load tests, you might encounter warnings for the website's security certificate against https pages. diff --git a/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md b/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md index 2fa97bb7..fbb45a19 100644 --- a/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md +++ b/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md @@ -4,7 +4,7 @@ page_title: Example Configuration for Reverse Proxy Server description: Example Configuration for Reverse Proxy Server to use for connecting to the Test Studio Scheduling setup. position: 2 --- -# Reverse Proxy Server +## Reverse Proxy Server Test Studio Standalone application allows connection to Scheduling setup configured behind a pre-configured reverse proxy using client and server certificates. The reverse proxy have to use TLS and to have client certificate authentication enabled. diff --git a/docs/knowledge-base/scheduling-kb/drop-storage-database.md b/docs/knowledge-base/scheduling-kb/drop-storage-database.md index bb35b5b6..12a71ee2 100644 --- a/docs/knowledge-base/scheduling-kb/drop-storage-database.md +++ b/docs/knowledge-base/scheduling-kb/drop-storage-database.md @@ -4,7 +4,7 @@ page_title: Drop The Storage Database description: Drop The Storage Database. The Telerik Storage Database cannot be accessed. Telerik Storage database gets corrupted. This can lead to execution of outdated test lists or even inability to execute a test list. Unable to find test file. position: 9 --- -# Drop The Storage Database +## Drop The Storage Database In certain situations the storage database can get corrupted and cannot be updated with the latest changes of your test lists. This can lead to execution of outdated test lists or even inability to execute a test list due to missing test files. diff --git a/docs/knowledge-base/scheduling-kb/extract-results-from-mongodb.md b/docs/knowledge-base/scheduling-kb/extract-results-from-mongodb.md index c8c10b3d..ebd126a6 100644 --- a/docs/knowledge-base/scheduling-kb/extract-results-from-mongodb.md +++ b/docs/knowledge-base/scheduling-kb/extract-results-from-mongodb.md @@ -4,7 +4,7 @@ page_title: Extract run results from MongoDB description: Extract run results from Storage database MongoDB position: 9 --- -# Extract run results from MongoDB +## Extract run results from MongoDB ## Data Overview diff --git a/docs/knowledge-base/scheduling-kb/generate-communication-key.md b/docs/knowledge-base/scheduling-kb/generate-communication-key.md index cda1959d..2ff7f3d2 100644 --- a/docs/knowledge-base/scheduling-kb/generate-communication-key.md +++ b/docs/knowledge-base/scheduling-kb/generate-communication-key.md @@ -4,7 +4,7 @@ page_title: Generate and Update Communication Key description: Generate Communication Key for the Test Studio Scheduling configuration. Import the new key for all Test Studio components across all involved machines. position: 1 --- -# Generate New Communication Key +## Generate New Communication Key The **Communication Key** is required by all Test Studio Scheduling components - services and clients, to establish the connection and communicate between each other. You can get the current key or generate a new one in the Scheduling Config wizard. @@ -16,18 +16,18 @@ Find useful details on the available options to manage the Communication key val The **Communication** tab in the Scheduling Config wizard lets you manage the current key in use or generate and import a new one. -![Communication key tab](/img/features//scheduling-test-runs/create-scheduling-server/communication-tab.png) +![Communication key tab](/img/features/scheduling-test-runs/create-scheduling-server/communication-tab.png) The **Current Key** section indicates which is the key in use. The Scheduling setup is configured to use a default communication key for each Test Studio installation. Thus, after initial install you see the current key is the __Default Key Loaded__. In this configuration you can't copy or see the key. -![Default Communication key](/img/features//scheduling-test-runs/create-scheduling-server/communication-tab-default-key.png) +![Default Communication key](/img/features/scheduling-test-runs/create-scheduling-server/communication-tab-default-key.png) ### Generate New Key The **Replace Key** section lets you **Generate** a new key. Once generated, the new value is populated in the text field and is ready to be imported. Hit the **Import** button to replace the current key with the new one. -![Replace Communication key](/img/features//scheduling-test-runs/create-scheduling-server/communication-tab-replace-key.png) +![Replace Communication key](/img/features/scheduling-test-runs/create-scheduling-server/communication-tab-replace-key.png) > **Note** >
    @@ -43,7 +43,7 @@ The **Replace Key** section lets you **Generate** a new key. Once generated, the Once a custom key is generated and imported, the **Current Key** section allows you to copy the value of the key using the __Copy to Clipboard__ button, or see it using the __Show__ button (for the cases when copying is not an option). The key value can be reset to the default value using the __Reset to Default__ button. -![Custom Communication key](/img/features//scheduling-test-runs/create-scheduling-server/communication-tab-custom-key.png) +![Custom Communication key](/img/features/scheduling-test-runs/create-scheduling-server/communication-tab-custom-key.png) The copied key must be imported on all machines included in the Test Studio Scheduling setup. diff --git a/docs/knowledge-base/scheduling-kb/gmail-results.md b/docs/knowledge-base/scheduling-kb/gmail-results.md index 15c538dd..4b0b3229 100644 --- a/docs/knowledge-base/scheduling-kb/gmail-results.md +++ b/docs/knowledge-base/scheduling-kb/gmail-results.md @@ -4,7 +4,7 @@ page_title: Results Through Gmail description: Use Gmail SMTP Server to Send Result Email for Scheduled Test List Execution position: 9 --- -# Use Gmail SMTP Server to Send Result Email for Scheduled Test List Execution +## Use Gmail SMTP Server to Send Result Email for Scheduled Test List Execution Test Studio's Scheduling service allows sending an email with the results from scheduled test list runs. To enable the feature you need an available SMTP server and the necessary settings to access it from within Test Studio. diff --git a/docs/knowledge-base/scheduling-kb/locked-machine.md b/docs/knowledge-base/scheduling-kb/locked-machine.md index bb18b191..28af28e9 100644 --- a/docs/knowledge-base/scheduling-kb/locked-machine.md +++ b/docs/knowledge-base/scheduling-kb/locked-machine.md @@ -5,7 +5,7 @@ description: "Test Script Execution on Locked Machine. Test Studio test run with previous_url: /user-guide/knowledge-base/test-execution/no-tests-execute-on-locked-machine.aspx, /user-guide/knowledge-base/test-execution/no-tests-execute-on-locked-machine position: 3 --- -# No Tests Execute on Locked Machine +## No Tests Execute on Locked Machine ## Problem diff --git a/docs/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0.md b/docs/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0.md index 8de23011..7613d63b 100644 --- a/docs/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0.md +++ b/docs/knowledge-base/scheduling-kb/upgrade-to-mongo-4-0.md @@ -4,7 +4,7 @@ page_title: Upgrade Existing MongoDB to Version 4.0 description: Upgrade an existing MongoDB version lower than 3.6 to MongoDB version 4.0 or higher. Problems with starting MongoDB service. Not able to use Test Studio Scheduling feature. MongoDB service unable to start. position: 10 --- -# Upgrade Existing MongoDB to Version 4.0 +## Upgrade Existing MongoDB to Version 4.0 MongoDB is a third party database used by Test Studio to store the project data required for scheduling tests on remote machines. We strive to keep this working out of the box, though there are upgrades of the Mongo, which affect the database used by Test Studio. diff --git a/docs/knowledge-base/test-automation-kb/ample-timetouts.md b/docs/knowledge-base/test-automation-kb/ample-timetouts.md index 3ecb336d..0952a16e 100644 --- a/docs/knowledge-base/test-automation-kb/ample-timetouts.md +++ b/docs/knowledge-base/test-automation-kb/ample-timetouts.md @@ -4,7 +4,7 @@ page_title: Ample Timetouts description: Randomly failing tests. I have recorded few tests and each time I run these, they fail at different step. position: 1 --- -# Setting Ample Timeouts in Test +## Setting Ample Timeouts in Test Random failures in test or test list runs are often caused by the lack of synchronization between the speed of executing the action steps and the application responsiveness during the execution. diff --git a/docs/knowledge-base/test-automation-kb/dynamic-ids.md b/docs/knowledge-base/test-automation-kb/dynamic-ids.md index 78cec491..c7e18d26 100644 --- a/docs/knowledge-base/test-automation-kb/dynamic-ids.md +++ b/docs/knowledge-base/test-automation-kb/dynamic-ids.md @@ -5,7 +5,7 @@ description: Web site or application generates ID attributes for its elements dy previous_url: /user-guide/knowledge-base/test-automation/dynamically-generated-id-attributes.aspx position: 1 --- -# Working Around Dynamically Generated ID Attributes +## Working Around Dynamically Generated ID Attributes *Your web site or application generates ID attributes for its elements dynamically. This causes your tests to fail because once the ID attribute for a given element changes, it can no longer be identified.* diff --git a/docs/knowledge-base/test-automation-kb/fail-test-programmatically.md b/docs/knowledge-base/test-automation-kb/fail-test-programmatically.md index 9a9fe4f6..3e9b5ef2 100644 --- a/docs/knowledge-base/test-automation-kb/fail-test-programmatically.md +++ b/docs/knowledge-base/test-automation-kb/fail-test-programmatically.md @@ -4,7 +4,7 @@ page_title: Fail test step or mark the entire test result as failed description: Even if all test steps are successful, you might need to fail one step or the entire test at the end of the execution. You can do that programmatically in OnAfterTestCompleted method. position: 1 --- -# Fail Step or Test Programatically +## Fail Step or Test Programatically ## PROBLEM diff --git a/docs/knowledge-base/test-automation-kb/invoke-mouse-hover.md b/docs/knowledge-base/test-automation-kb/invoke-mouse-hover.md index 5e8b470e..25b55d30 100644 --- a/docs/knowledge-base/test-automation-kb/invoke-mouse-hover.md +++ b/docs/knowledge-base/test-automation-kb/invoke-mouse-hover.md @@ -4,7 +4,7 @@ page_title: Invoke Mouse Hover description: Insert Mouse Hoverover step. I recorded a click in a fly-out sub-menu, however it does not execute properly because the menu never properly expands to expose the element. Invoke mouse action. position: 1 --- -# Invoke a Mouse Hover event +## Invoke a Mouse Hover event ## PROBLEM diff --git a/docs/knowledge-base/test-automation-kb/security-certificates.md b/docs/knowledge-base/test-automation-kb/security-certificates.md index 13a8cc72..d3556be0 100644 --- a/docs/knowledge-base/test-automation-kb/security-certificates.md +++ b/docs/knowledge-base/test-automation-kb/security-certificates.md @@ -4,7 +4,7 @@ page_title: Security Certificates description: Security (SSL) Certificates. Browser prompt certificate warning. position: 1 --- -# Security Certificates +## Security Certificates Security (SSL) Certificates are tricky to automate because each browser prompts its warning differently. Because Test Studio only records in Internet Explorer, the "Continue to this website" link pictured below is recorded and expected to pass when executed in IE. That specific link does not exist in the other browsers, so we expect the test to fail at that step in Firefox, Safari, and Chrome. diff --git a/docs/knowledge-base/test-execution-kb/base-url.md b/docs/knowledge-base/test-execution-kb/base-url.md index 3f873482..0a072ee0 100644 --- a/docs/knowledge-base/test-execution-kb/base-url.md +++ b/docs/knowledge-base/test-execution-kb/base-url.md @@ -4,7 +4,7 @@ page_title: Running a Test against Multiple Environments Using BaseURL description: Using BaseURL in a Test Studio project. Multiple test environments in which to execute test scripts. The server URL is different for each environment. How can I avoid rewriting all of my tests from scratch to make them work with a different server URL? Run the same tests against the different staging environments. position: 1 --- -# Running a Test Against Multiple Environments (Using BaseURL) +## Running a Test Against Multiple Environments (Using BaseURL) I have multiple test environments against which to execute my test scripts. The server URL is different for each environment. How can I avoid rewriting all of my tests from scratch to make them work with a different server URL? diff --git a/docs/knowledge-base/test-execution-kb/excel-event.md b/docs/knowledge-base/test-execution-kb/excel-event.md index ecf72ea1..acd6b76c 100644 --- a/docs/knowledge-base/test-execution-kb/excel-event.md +++ b/docs/knowledge-base/test-execution-kb/excel-event.md @@ -4,7 +4,7 @@ page_title: Executing a Test from an Excel Event description: Executing a Test from an Excel Event. Execute Test Studio tests or test lists by triggering events in an Excel spreadsheet position: 1 --- -# Executing a Test from an Excel Event +## Executing a Test from an Excel Event Some users may want to execute Test Studio tests or test lists by triggering events in an Excel spreadsheet. For example, your goal may be to create an Excel spreadsheet with a button whose click event is attached to a macro that runs your Test Studio tests. diff --git a/docs/knowledge-base/test-execution-kb/execute-selenium-test.md b/docs/knowledge-base/test-execution-kb/execute-selenium-test.md index f33bef7c..f105d585 100644 --- a/docs/knowledge-base/test-execution-kb/execute-selenium-test.md +++ b/docs/knowledge-base/test-execution-kb/execute-selenium-test.md @@ -4,7 +4,7 @@ page_title: Execute Selenium Test with Test Studio description: Execute Selenium Test with Test Studio. Execute Selenium Test as part of Test Studio web test. position: 1 --- -# Execute Selenium Test with Test Studio +## Execute Selenium Test with Test Studio If you have written your selenium tests using C# then you can easily execute them using Test Studio. Steps to proceed: diff --git a/docs/knowledge-base/test-execution-kb/keep-active-session.md b/docs/knowledge-base/test-execution-kb/keep-active-session.md index 8fb3c03d..15a78726 100644 --- a/docs/knowledge-base/test-execution-kb/keep-active-session.md +++ b/docs/knowledge-base/test-execution-kb/keep-active-session.md @@ -4,7 +4,7 @@ page_title: Keep an Active Session description: No Functional tests can be executed on locked machine or inactive desktop session. This is a possible solution how to configure few machines to keep an active session on one of the machines. position: 1 --- -# Keep an Active Session Running on the Execution Server +## Keep an Active Session Running on the Execution Server Scheduling involves running Test Studio tests on an Execution Server. However, any test that requires moving the mouse or sending keystrokes requires an unlocked desktop. Test Studio tests are not the only ones affected by this Windows limitation. This is a general problem with any tool that performs UI testing. diff --git a/docs/knowledge-base/test-execution-kb/minimized-rdc.md b/docs/knowledge-base/test-execution-kb/minimized-rdc.md index 2ffc50ad..a8168dbf 100644 --- a/docs/knowledge-base/test-execution-kb/minimized-rdc.md +++ b/docs/knowledge-base/test-execution-kb/minimized-rdc.md @@ -4,7 +4,7 @@ page_title: Minimized RDC description: Scheduled tests cannot be run on minimized RDC. To run tests on a remote machine while the RDC window is minimized, add registry keys on the computer from which you connect to the remote machine position: 1 --- -# Minimized Remote Desktop Connection +## Minimized Remote Desktop Connection *I am executing tests on a remote machine using Remote Desktop Connection/Protocol. It works correctly as long as the RDC window is active and/or maximized. However the tests fail when the RDC window is minimized.* diff --git a/docs/knowledge-base/test-execution-kb/multi-browsers.md b/docs/knowledge-base/test-execution-kb/multi-browsers.md index 7ba04051..6da2da44 100644 --- a/docs/knowledge-base/test-execution-kb/multi-browsers.md +++ b/docs/knowledge-base/test-execution-kb/multi-browsers.md @@ -4,7 +4,7 @@ page_title: How to Run Tests in Parallel / in Multi Browsers description: How can I run my tests in parallel? How do I run my tests in multiple browsers? Run scheduled Test Studio tests against different browsers. position: 1 --- -# How to Run Tests in Parallel / in Multi Browsers +## How to Run Tests in Parallel / in Multi Browsers Customers often wonder "How can I run my tests in parallel" and/or "How do I run my tests in multiple browsers, including multiple versions of the same browser". There are many ways to accomplish this. This article will focus on how to achieve this using the Scheduling Server and Execution Server that comes with both full Test Studio and our Runtime edition. diff --git a/docs/knowledge-base/test-execution-kb/run-api-test-in-web-test.md b/docs/knowledge-base/test-execution-kb/run-api-test-in-web-test.md index 7c15aecb..19723052 100644 --- a/docs/knowledge-base/test-execution-kb/run-api-test-in-web-test.md +++ b/docs/knowledge-base/test-execution-kb/run-api-test-in-web-test.md @@ -4,7 +4,7 @@ page_title: Run an API Test within a Web Test description: Run an API Test within a Web Test with Test Studio. Execute API test as step in a web test in Test Studio. Run API tests as part of a Test Studio web project. Integrate API testing with Test Studio web tests. position: 1 --- -# How to Run an API Test within a Web Test +## How to Run an API Test within a Web Test In some cases you may need to combine a Test Studio web test with an API test. For example, if your application under test interacts with a service (e.g. creates a user in a web interface that gets stored in a database) and you want to verify directly against that interface that your new user is correctly created. diff --git a/docs/knowledge-base/test-execution-kb/run-mobile-test-in-web-test.md b/docs/knowledge-base/test-execution-kb/run-mobile-test-in-web-test.md index f97a89c5..65c12b65 100644 --- a/docs/knowledge-base/test-execution-kb/run-mobile-test-in-web-test.md +++ b/docs/knowledge-base/test-execution-kb/run-mobile-test-in-web-test.md @@ -5,7 +5,7 @@ description: Run mobile Test within a Web Test with Test Studio. Execute mobile position: 1 published: false --- -# How to Run a Mobile Test within a Web Test +## How to Run a Mobile Test within a Web Test A common testing scenario is to have a web based application that could interact both with web and mobile users. There is a way to develop and execute a web test that at certain step runs a mobile test. To complete that the following initial conditions are needed: diff --git a/docs/knowledge-base/test-execution-kb/run-web-test-in-other-test.md b/docs/knowledge-base/test-execution-kb/run-web-test-in-other-test.md index 719a991a..0a1bf355 100644 --- a/docs/knowledge-base/test-execution-kb/run-web-test-in-other-test.md +++ b/docs/knowledge-base/test-execution-kb/run-web-test-in-other-test.md @@ -4,7 +4,7 @@ page_title: Run a Web Test within Other Test description: Execute a Test Studio web test as part of any other test in code. position: 1 --- -# How to Run a Web Test within Other Test +## How to Run a Web Test within Other Test This scenario makes sense for example when there is a web test or test list located in another project that has to be executed in the current project. Such approach has to be implemented with caution though. The external test would be launched as separate to the main process and in case of its failure there could be not enough information on the reasons that happen. If the test is located in the same project then it could be executed as a step or in a coded step using the expression: this.ExecuteTest("SampleTest.tstest"). diff --git a/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md b/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md index 47c732c9..f3b2f41d 100644 --- a/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md +++ b/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md @@ -5,7 +5,7 @@ description: In some automation scenarios it is necessary to limit a single test position: 1 --- -# Set Test Execution Time Limit +## Set Test Execution Time Limit In some automation scenarios it is necessary to limit a single test execution to a certain time frame. That is possible if the following approach is used. In an execution extension library is set timer that is re-set each time the new test starts. If the time expired before the timer is re-set - all processes related to test execution are killed. This will ensure if a test takes more than initially defined time interval to stop its execution and continue with the next test. Below is given sample execution extension library with time frame set to 5 minutes. diff --git a/docs/knowledge-base/test-execution-kb/slow-execution-rdc.md b/docs/knowledge-base/test-execution-kb/slow-execution-rdc.md index 307f8c48..cd86ca90 100644 --- a/docs/knowledge-base/test-execution-kb/slow-execution-rdc.md +++ b/docs/knowledge-base/test-execution-kb/slow-execution-rdc.md @@ -4,7 +4,7 @@ page_title: Slow Execution via RDC description: Test Studio tests execution is too slow via RDC. Test Studio Tests fail via RDC position: 1 --- -# Slow Execution via Remote Desktop Connection +## Slow Execution via Remote Desktop Connection *I am using Test Studio via a Remote Desktop Connection. Execution is slow and tests often fail.* diff --git a/docs/knowledge-base/test-recording-kb/element-image-known-scenarios.md b/docs/knowledge-base/test-recording-kb/element-image-known-scenarios.md index dfa8b378..22b130dd 100644 --- a/docs/knowledge-base/test-recording-kb/element-image-known-scenarios.md +++ b/docs/knowledge-base/test-recording-kb/element-image-known-scenarios.md @@ -4,7 +4,7 @@ page_title: Element Images Known Scenarios description: "Element Images Known Scenarios Requiring Manual Adjustment. Combobox element image is incorrect. textBox element image is incorrect. Element Image Capturing on Scaled Monitors. Recording WaitForExist Step element image is missing. Recording Different Images in different browsers for the Same Element. Using different images for a single element depending on the step where the same element is used. " position: 1 --- -# Scenarios in Which Element Images Require Additional Adjustment +## Scenarios in Which Element Images Require Additional Adjustment There are certain scenarios in which Test Studio will not record the correct image for an element, or not record an image at all. The known workflows are described in details below. @@ -35,7 +35,3 @@ Test Studio allows you to capture manually a new image for an element and then a 3. Once the desired image is correctly recorded, in the [Image Usage Details section](/features/elements-explorer/find-element-by-image#image-usage-details) choose the step to apply it to from the **"Used By"** dropdown and then click on the **Apply** button. 4. Save the changes. Switching the steps, which uses the element, from the same **"Used By"** dropdown, will display the different images accordingly. - -[1]: /img/knowledge-base/test-recording-kb/kendoui-duplicate-elements/fig1.png -[2]: /img/knowledge-base/test-recording-kb/kendoui-duplicate-elements/fig2.png -[3]: /img/knowledge-base/test-recording-kb/kendoui-duplicate-elements/fig3.png diff --git a/docs/knowledge-base/test-recording-kb/fix-ocr-64bit-wpf.md b/docs/knowledge-base/test-recording-kb/fix-ocr-64bit-wpf.md index 862fcfcf..e62e81ec 100644 --- a/docs/knowledge-base/test-recording-kb/fix-ocr-64bit-wpf.md +++ b/docs/knowledge-base/test-recording-kb/fix-ocr-64bit-wpf.md @@ -4,7 +4,7 @@ page_title: Fix OCR for 64bit WPF Applications description: Fix OCR recording and execution for 64bit WPF applications. Optical Character Recognition OCR for WPF applications 64 bit. Test Studio release 2020 R2 fix for OCR for WPF application. position: 3 --- -# Fix Optical Character Recognition (OCR) Recording and Execution for 64bit WPF Applications +## Fix Optical Character Recognition (OCR) Recording and Execution for 64bit WPF Applications The OCR feature for WPF tests was introduced with Test Studio 2020 R2 SP1 (v.2020.2.910). You can extract the text from image and use it in verification, wait of extract steps. diff --git a/docs/knowledge-base/test-recording-kb/kendoui-duplicate-elements.md b/docs/knowledge-base/test-recording-kb/kendoui-duplicate-elements.md index b186d42a..2bb4ddcd 100644 --- a/docs/knowledge-base/test-recording-kb/kendoui-duplicate-elements.md +++ b/docs/knowledge-base/test-recording-kb/kendoui-duplicate-elements.md @@ -4,7 +4,7 @@ page_title: KendoUI duplicate elements description: KendoUI duplicate elements due to new find logic position: 1 --- -# KendoUI duplicate elements due to new find logic +## KendoUI duplicate elements due to new find logic We have changed the element's find logic generated by the recorder (IE only, translators dependent) when recording over KendoUI widgets. This is to ensure reliable find logic for solid playback experience. diff --git a/docs/knowledge-base/verification-kb/disabled-attribute-html.md b/docs/knowledge-base/verification-kb/disabled-attribute-html.md index 2c6b00a1..d93e539c 100644 --- a/docs/knowledge-base/verification-kb/disabled-attribute-html.md +++ b/docs/knowledge-base/verification-kb/disabled-attribute-html.md @@ -4,7 +4,7 @@ page_title: Disabled Attribute (HTML) description: How to verify an HTML element attribute is disabled. Many website developers will setup buttons or other elements within the site to be "disabled" until a certain action occurs. When using Test Studio to test this, it is sometimes necessary to create a special verification that confirms that the button (in this example) is visible but disabled (not clickable/usable) position: 1 --- -# How to Verify the Disabled Attribute (HTML) +## How to Verify the Disabled Attribute (HTML) Many website developers will setup buttons or other elements within the site to be "disabled" until a certain action occurs. When using Test Studio to test this, it is sometimes necessary to create a special verification that confirms that the button (in this example) is visible but disabled (not clickable/usable). You can similarly verify that the disabled attribute no longer exists, indicating the button is clickable/usable. diff --git a/docs/knowledge-base/verification-kb/verify-deleted-data.md b/docs/knowledge-base/verification-kb/verify-deleted-data.md index 4fe8eb1a..02b35628 100644 --- a/docs/knowledge-base/verification-kb/verify-deleted-data.md +++ b/docs/knowledge-base/verification-kb/verify-deleted-data.md @@ -4,7 +4,7 @@ page_title: Verify Deleted Data description: verify that an element does not exist within a Test Studio test position: 1 --- -# Verify Deleted Data +## Verify Deleted Data I would like to verify that an element does not exist, like after deleting a row from a data grid. diff --git a/docs/knowledge-base/verification-kb/verify-html-tool-tips.md b/docs/knowledge-base/verification-kb/verify-html-tool-tips.md index 47c290b6..a376f5f2 100644 --- a/docs/knowledge-base/verification-kb/verify-html-tool-tips.md +++ b/docs/knowledge-base/verification-kb/verify-html-tool-tips.md @@ -4,7 +4,7 @@ page_title: Verify HTML Tooltips description: Verify HTML Tooltips in Test Studio web test. Check the tooltip text in a Test Studio test. position: 1 --- -# Verify HTML Tool-Tips +## Verify HTML Tool-Tips There's more than one way to implement Tool-tips in HTML. They are usually implemented using the Title attribute that gets applied to elements. Consider this HTML code snippet: diff --git a/docs/knowledge-base/visual-studio-kb/resharper-compatibility.md b/docs/knowledge-base/visual-studio-kb/resharper-compatibility.md index 244776c2..5c34f4b8 100644 --- a/docs/knowledge-base/visual-studio-kb/resharper-compatibility.md +++ b/docs/knowledge-base/visual-studio-kb/resharper-compatibility.md @@ -4,7 +4,7 @@ page_title: ReSharper Compatibility description: ReSharper Compatibility in Test Studio. Cannot resolve symbol error messages in Test Studio. position: 1 --- -# ReSharper Compatibility +## ReSharper Compatibility *With ReSharper installed, you receive Cannot resolve symbol error messages in Test Studio code-behind files.* diff --git a/docs/prerequisites/configure-your-browser/browser-configuration.md b/docs/prerequisites/configure-your-browser/browser-configuration.md index 96185552..6e0f674a 100644 --- a/docs/prerequisites/configure-your-browser/browser-configuration.md +++ b/docs/prerequisites/configure-your-browser/browser-configuration.md @@ -26,7 +26,3 @@ To ease you in applying these settings, Test Studio provides a built-in mechanis > **Note** >
    > Test Studio deprecates Internet Explorer support in Q1 2025. - -[1]: /img/prerequisites/browser-config/edge-notification.jpg -[2]: /img/prerequisites/browser-config/accept-popup.jpg -[3]: /img/prerequisites/browser-config/accept-permissions.jpg diff --git a/docs/prerequisites/license-activation/manage-license.md b/docs/prerequisites/license-activation/manage-license.md index 8e33099c..8d77b78c 100644 --- a/docs/prerequisites/license-activation/manage-license.md +++ b/docs/prerequisites/license-activation/manage-license.md @@ -40,10 +40,9 @@ Another option to deactivate the license is in the __Change License...__ screen ![Deactivate License from Manage window][14] [1]: /img/knowledge-base/activation-kb/change-trial-purchase/fig1.png -[2]: /img/knowledge-base/activation-kb/change-trial-purchase/fig2.png -[3]: /img/knowledge-base/activation-kb/change-trial-purchase/fig3.png + [11]: /img/knowledge-base/activation-kb/change-trial-purchase/manage-license-info.png [12]: /img/knowledge-base/activation-kb/change-trial-purchase/change-purchased-license.png -[13]: /img/knowledge-base/activation-kb/change-trial-purchase/welcome-screen-deactivate-license.png + [14]: /img/knowledge-base/activation-kb/change-trial-purchase/change-license-deactivate.png diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md index 0c089550..750352b3 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md @@ -6,32 +6,6 @@ previous_url: /user-guide/write-tests-in-code/intermediate-topics/element-identi position: 1 --- - - # Finding Page Elements Telerik Testing Framework provides one of the richest markup identification infrastructures currently available on the market. It builds on top of commonly known element identification methods like 'getElementById', 'getElementByName' or 'XPath' and extends them to provide identification routines that cater more to application automation scenarios. In addition to maintaining a simple and easy to use set of APIs, Telerik Testing Framework introduces a consistent and extensible way to build identification and persist it using 'FindParam' objects. @@ -52,7 +26,8 @@ The following identification methods are supported: **Find.ById()** Searches for an element contained in a markup document using its set 'id' attribute. When the desired 'id' matches an element's id, the element is returned - identical to getElementById -``` + +```` // Find element with id=input1 Element e = Find.ById("input1"); ```` @@ -62,7 +37,8 @@ Element e = Find.ById("input1"); **Find.ByName()** Searches for an element contained in a markup document using its set 'name' attribute. When the desired 'name' matches an element's name, the element is returned -``` + +```` // Find element with name=goButton Element e = Find.ByName("goButton") ```` @@ -73,6 +49,7 @@ Element e = Find.ByName("goButton") **Find.AllByImage()** Searches for an element or 'All' elements that look like a predefined image + ```` // Specify the predefined image on which the search will be based System.Drawing.Image img1 = System.Drawing.Image.FromFile(@"C:\sampleImg.png"); @@ -87,7 +64,8 @@ HtmlButton btn1 = elementImg1.As(); **Find.ByTagIndex()** Searches for an element using its tag name occurrence index. Finds the element at the specified occurrence index and returns it. This method uses zero based indexing. -``` + +```` // Find the 3rd occurrence of table tag Element table = Find.ByTagIndex("table", 2); ```` @@ -98,7 +76,8 @@ Element table = Find.ByTagIndex("table", 2); **Find.AllByAttributes()** Searches for an element or 'All' elements using an 'exact' or 'partial' list of attribute values (You can specify 1-N attribute/value pairs). When all attribute values match, the element or collection of elements is returned. -``` + +```` // Find the first element with attribute class=myclass Element e = Find.ByAttributes("class=myclass"); // Find the first element with attribute class=myclass @@ -114,7 +93,8 @@ IList allbtns = Find.AllByAttributes("class=myclass", "src=~foo.gif"); **Find.AllByContent()** Searches for an element or 'All' elements using 'exact', 'partial' or 'regex' of the element content. The element content can be: InnerText, InnerMarkup, OuterMarkup, TextContent (default), StartTagContent. -``` + +```` // Find element with TextContent has literal value: Education // l: signifies literal Element e = Find.ByContent("l:Education"); @@ -147,7 +127,8 @@ IList alle = Find.AllByContent("p:car") **Find.AllByExpression()** Searches for an element or 'All' elements matching an HtmlFindExpression. The HtmlFindExpression cannot use any type of hierarchical expressions including tag index path expressions, HTML path expressions, and XPath expressions. -``` + +```` // Create an HtmlFindExpression element HtmlFindExpression expr = new HtmlFindExpression("id=?sam","class=~bar","textcontent=!foo"); // Return all elements matching HtmlFindExpression @@ -160,7 +141,8 @@ IList allSams = Find.AllByExpression(expr); **Find.AllByXPath()** Searches for an element or 'All' elements using an XPath expression. WebAii supports the .NET Framework XPath implementation. -``` + +```` // Find the banner img element Element img = Find.ByXPath("//body[1]/table[1]/tbody[1]/tr[1]/td[1]/img[1]"); // Find all times with id=div @@ -173,7 +155,8 @@ IList allDivs = Find.AllByXPath("/descendant::node()[starts-with(@id,'d **Find.AllByCssSelector()** Searches for an element or 'All' elements using a css selector query. -``` + +```` // Find the active link HtmlAnchor activeLink = Find.ByCssSelector("a:active"); // Find all links @@ -185,7 +168,8 @@ IList allLinks = Find.AllByCssSelector("a"); **Find.AllByTagName()** Searches for 'All' elements with the specified tag name and returns it as a list of elements. -``` + +```` // Return all img elements IList allimg = Find.AllByTagName("img"); ```` @@ -196,7 +180,7 @@ IList allimg = Find.AllByTagName("img"); Searches for an element using dom tree node index paths. This identification is done using an xpath like approach that simply describes the hierarchy path to a specific element using the node index within the hierarchy without having to specify the tag name at each level. This identification method can be chosen in cases where a segment of the DomTree hierarchy at a specific location is consistent but element type changes. For example, if an element you are trying to target is the direct child of another element that fluctuates between a span and div, you can choose this identification method to provide a consistent way to identify that element. -``` +```` Given this DOM: @@ -225,7 +209,8 @@ Element target = Find.ByNodeIndexPath("0/2/0/1"); **Find.FromCollection()** Finds all elements with the FindParams in the passed in collection. -``` + +```` FindParamCollection col = FindParamCollection.LoadFromXml(xml); return this.FromCollection(col); ```` @@ -236,7 +221,8 @@ return this.FromCollection(col); **Find.AllByCustom()** Searches for an element or 'All' elements using a custom predicate. -``` + +```` // Find the first input button having an ID of 'input1' HtmlInputButton btn = Find.ByCustom( delegate(HtmlInputButton e) diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/app-config-file.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/app-config-file.md index 997059d4..3774c0e4 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/app-config-file.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/app-config-file.md @@ -21,26 +21,26 @@ Instead of programmatically setting the configuration, the application or test p 2.  Then add the settings you need under the 'WebAii.Settings' section or WebAii.Settings.Web' section. - **Note:** It is not necessary to include all of Telerik's settings in your .config file. You only need to add settings for those you wish to override. The Telerik Testing Framework uses default values for any setting not explicitly set in the .config file. +**Note:** It is not necessary to include all of Telerik's settings in your .config file. You only need to add settings for those you wish to override. The Telerik Testing Framework uses default values for any setting not explicitly set in the .config file. - **Note:** The configuration setting names are case sensitive e.g. **AnnotateExecution** will not be recognized and will cause an exception to be thrown while **annotateExecution** will be recognized and used. +**Note:** The configuration setting names are case sensitive e.g. **AnnotateExecution** will not be recognized and will cause an exception to be thrown while **annotateExecution** will be recognized and used. ````XML - - - - + + + + ```` Here is an example of a complete app.config file that contains all of Telerik's configuration settings: @@ -57,7 +57,8 @@ Here is an example of a complete app.config file that contains all of Telerik's -``` +```` + In your test code initialization, you read these settings by simply setting the UseConfig flag to true when calling the Manager() constructor. If you use the BaseTest template (which is what the VsUnit, MbUnit, NUnit and xUnit templates do) this call is done for you by BaseTest during the Initialize call: ````C# diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execute-test.md b/docs/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execute-test.md index e21bca74..977b9e31 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execute-test.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execute-test.md @@ -15,6 +15,3 @@ When executing a test in Chrome, the browser opens and navigates to http://local ## SOLUTION Please refer to this article for more information. - -[1]: /img/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execite-test/fig1.png -[2]: /img/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execite-test/fig2.png From 31ddcd16689a0ed3524d34534da18616b5de6f7e Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Tue, 1 Apr 2025 16:42:16 +0300 Subject: [PATCH 20/65] Update MD annotations in tables that did not work The MD in HTML tables does not work. There are instances where the text is bold, but it shows ** instead. Removed the ** on both ends --- .../advanced-topics/ci/jenkins-ci-plugin.md | 2 +- .../general/data-driven-find-expressions.md | 2 +- .../coded-samples/html/dynamic-grid.md | 3 - .../find-param-as-xml-data.md | 3 +- .../finding-page-elements.md | 102 +++++++------- .../element-identification/linq-queries.md | 8 +- .../code-in-test/features-in-code.md | 2 +- .../app-config-file.md | 7 +- .../framework-element-object.md | 116 ++++++++-------- .../invoking-actions.md | 42 +++--- .../locating-elements.md | 24 ++-- docs-teststudiodev/features/cli-runner.md | 3 - .../data-driven-testing/add-data-source.md | 2 +- .../features/logical-steps/if-else.md | 7 +- .../features/logical-steps/loop.md | 2 +- .../features/logical-steps/while-loop.md | 4 +- .../dialog-handler-updater.md | 2 +- .../verifications/image-verification.md | 1 - .../features/test-maintenance/steps-pane.md | 6 +- .../test-maintenance/test-step-properties.md | 2 +- .../framework-element-object.md | 124 +++++++++--------- .../invoking-actions.md | 42 +++--- .../locating-elements.md | 24 ++-- 23 files changed, 252 insertions(+), 278 deletions(-) diff --git a/docs-teststudiodev/advanced-topics/ci/jenkins-ci-plugin.md b/docs-teststudiodev/advanced-topics/ci/jenkins-ci-plugin.md index 4b8a789c..7a90068d 100644 --- a/docs-teststudiodev/advanced-topics/ci/jenkins-ci-plugin.md +++ b/docs-teststudiodev/advanced-topics/ci/jenkins-ci-plugin.md @@ -36,7 +36,7 @@ The *project root folder* and *settings file* fields accept relative path to the Your test execution step is now ready to save and run. -[1]: images/ciplugin/fig1.png + [2]: images/ciplugin/fig2.png [3]: images/ciplugin/fig3.png [4]: images/ciplugin/fig4.png diff --git a/docs-teststudiodev/code-in-test/coded-samples/general/data-driven-find-expressions.md b/docs-teststudiodev/code-in-test/coded-samples/general/data-driven-find-expressions.md index 3303a7a3..27c1b244 100644 --- a/docs-teststudiodev/code-in-test/coded-samples/general/data-driven-find-expressions.md +++ b/docs-teststudiodev/code-in-test/coded-samples/general/data-driven-find-expressions.md @@ -42,5 +42,5 @@ The example below is against this -table.docs { -font-family: verdana,arial,sans-serif; -font-size:11px; -color:#333333; -border: 1px solid #dbdbdb; -border-collapse: collapse; -table-layout: fixed; -width: 900px; - -} -table.docs th { -color:#fff; -background-color:#ed8200; -border: 1px solid #dbdbdb; -padding: 8px; -} -table.docs tr { -background-color:#ffffff; -} -table.docs td { -border: 1px solid #dbdbdb; -padding: 8px; -} - - # Finding Page Elements Telerik Testing Framework provides one of the richest markup identification infrastructures currently available on the market. It builds on top of commonly known element identification methods like 'getElementById', 'getElementByName' or 'XPath' and extends them to provide identification routines that cater more to application automation scenarios. In addition to maintaining a simple and easy to use set of APIs, Telerik Testing Framework introduces a consistent and extensible way to build identification and persist it using 'FindParam' objects. @@ -48,30 +22,33 @@ The following identification methods are supported: MethodsDescriptionExample - **Find.ById()** + Find.ById() Searches for an element contained in a markup document using its set 'id' attribute. When the desired 'id' matches an element's id, the element is returned - identical to getElementById -``` + +```` // Find element with id=input1 Element e = Find.ById("input1"); ```` - **Find.ByName()** + Find.ByName() Searches for an element contained in a markup document using its set 'name' attribute. When the desired 'name' matches an element's name, the element is returned -``` + +```` // Find element with name=goButton Element e = Find.ByName("goButton") ```` - **Find.ByImage()**
    - **Find.AllByImage()** + Find.ByImage()
    + Find.AllByImage() Searches for an element or 'All' elements that look like a predefined image + ```` // Specify the predefined image on which the search will be based System.Drawing.Image img1 = System.Drawing.Image.FromFile(@"C:\sampleImg.png"); @@ -83,21 +60,23 @@ HtmlButton btn1 = elementImg1.As(); - **Find.ByTagIndex()** + Find.ByTagIndex() Searches for an element using its tag name occurrence index. Finds the element at the specified occurrence index and returns it. This method uses zero based indexing. -``` + +```` // Find the 3rd occurrence of table tag Element table = Find.ByTagIndex("table", 2); ```` - **Find.ByAttributes()**
    - **Find.AllByAttributes()** + Find.ByAttributes()
    + Find.AllByAttributes() Searches for an element or 'All' elements using an 'exact' or 'partial' list of attribute values (You can specify 1-N attribute/value pairs). When all attribute values match, the element or collection of elements is returned. -``` + +```` // Find the first element with attribute class=myclass Element e = Find.ByAttributes("class=myclass"); // Find the first element with attribute class=myclass @@ -109,11 +88,12 @@ IList allbtns = Find.AllByAttributes("class=myclass", "src=~foo.gif"); - **Find.ByContent()**
    - **Find.AllByContent()** + Find.ByContent()
    + Find.AllByContent() Searches for an element or 'All' elements using 'exact', 'partial' or 'regex' of the element content. The element content can be: InnerText, InnerMarkup, OuterMarkup, TextContent (default), StartTagContent. -``` + +```` // Find element with TextContent has literal value: Education // l: signifies literal Element e = Find.ByContent("l:Education"); @@ -142,11 +122,12 @@ IList alle = Find.AllByContent("p:car") - **Find.ByExpression()**
    - **Find.AllByExpression()** + Find.ByExpression()
    + Find.AllByExpression() Searches for an element or 'All' elements matching an HtmlFindExpression. The HtmlFindExpression cannot use any type of hierarchical expressions including tag index path expressions, HTML path expressions, and XPath expressions. -``` + +```` // Create an HtmlFindExpression element HtmlFindExpression expr = new HtmlFindExpression("id=?sam","class=~bar","textcontent=!foo"); // Return all elements matching HtmlFindExpression @@ -155,11 +136,12 @@ IList allSams = Find.AllByExpression(expr); - **Find.ByXPath()**
    - **Find.AllByXPath()** + Find.ByXPath()
    + Find.AllByXPath() Searches for an element or 'All' elements using an XPath expression. WebAii supports the .NET Framework XPath implementation. -``` + +```` // Find the banner img element Element img = Find.ByXPath("//body[1]/table[1]/tbody[1]/tr[1]/td[1]/img[1]"); // Find all times with id=div @@ -168,11 +150,12 @@ IList allDivs = Find.AllByXPath("/descendant::node()[starts-with(@id,'d - **Find.ByCssSelector()**
    - **Find.AllByCssSelector()** + Find.ByCssSelector()
    + Find.AllByCssSelector() Searches for an element or 'All' elements using a css selector query. -``` + +```` // Find the active link HtmlAnchor activeLink = Find.ByCssSelector("a:active"); // Find all links @@ -181,21 +164,22 @@ IList allLinks = Find.AllByCssSelector("a"); - **Find.AllByTagName()** + Find.AllByTagName() Searches for 'All' elements with the specified tag name and returns it as a list of elements. -``` + +```` // Return all img elements IList allimg = Find.AllByTagName("img"); ```` - **Find.ByNodeIndexPath()** + Find.ByNodeIndexPath() Searches for an element using dom tree node index paths. This identification is done using an xpath like approach that simply describes the hierarchy path to a specific element using the node index within the hierarchy without having to specify the tag name at each level. This identification method can be chosen in cases where a segment of the DomTree hierarchy at a specific location is consistent but element type changes. For example, if an element you are trying to target is the direct child of another element that fluctuates between a span and div, you can choose this identification method to provide a consistent way to identify that element. -``` +```` Given this DOM: @@ -221,21 +205,23 @@ Element target = Find.ByNodeIndexPath("0/2/0/1"); - **Find.FromCollection()** + Find.FromCollection() Finds all elements with the FindParams in the passed in collection. -``` + +```` FindParamCollection col = FindParamCollection.LoadFromXml(xml); return this.FromCollection(col); ```` - **Find.ByCustom()**
    - **Find.AllByCustom()** + Find.ByCustom()
    + Find.AllByCustom() Searches for an element or 'All' elements using a custom predicate. -``` + +```` // Find the first input button having an ID of 'input1' HtmlInputButton btn = Find.ByCustom( delegate(HtmlInputButton e) diff --git a/docs-teststudiodev/code-in-test/element-identification/linq-queries.md b/docs-teststudiodev/code-in-test/element-identification/linq-queries.md index 82eb5143..99967cc5 100644 --- a/docs-teststudiodev/code-in-test/element-identification/linq-queries.md +++ b/docs-teststudiodev/code-in-test/element-identification/linq-queries.md @@ -27,9 +27,7 @@ The Find.Byxxx methods now support Language-Integrated Query (LINQ) queries. Som Using LINQ we can create strongly typed advanced queries with intellisense support that we couldn't before. The most basic LINQ example is something like this: -### __[VB]__ - - +````C# // Find all images on a page. var images = Find.AllControls(); @@ -41,9 +39,7 @@ Using LINQ we can create strongly typed advanced queries with intellisense suppo We can also use lambda expressions like this: -### __[VB]__ - - +````C# // Find the first element that contains "Go Google" Element el = Find.ByCustom(e => e.TextContent.Contains("Go Google")); diff --git a/docs-teststudiodev/code-in-test/features-in-code.md b/docs-teststudiodev/code-in-test/features-in-code.md index 7b16cc59..ceebf23c 100644 --- a/docs-teststudiodev/code-in-test/features-in-code.md +++ b/docs-teststudiodev/code-in-test/features-in-code.md @@ -57,7 +57,7 @@ A code behind file can be generated for each test where you need to implement co You can implement any custom logic organized in standalone code files located in your project. This includes but is not limited to classes and functions which perform common or often re-used functionality and can be called by your coded steps or code behind methods. The only requirement is to define classes in the project namespace else they will not be accessible. [1]: images/fig1.png -[2]: images/fig2.png + [3]: images/fig3.png [4]: images/fig4.png [5]: images/fig5.png \ No newline at end of file diff --git a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/app-config-file.md b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/app-config-file.md index a57b6f47..eede0dae 100644 --- a/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/app-config-file.md +++ b/docs-teststudiodev/code-in-test/settings-and-configuration-wtc/app-config-file.md @@ -21,10 +21,9 @@ Instead of programmatically setting the configuration, the application or test p 2.  Then add the settings you need under the 'WebAii.Settings' section or WebAii.Settings.Web' section. - **Note:** It is not necessary to include all of Telerik's settings in your .config file. You only need to add settings for those you wish to override. The Telerik Testing Framework uses default values for any setting not explicitly set in the .config file. - - **Note:** The configuration setting names are case sensitive e.g. **AnnotateExecution** will not be recognized and will cause an exception to be thrown while **annotateExecution** will be recognized and used. +**Note:** It is not necessary to include all of Telerik's settings in your .config file. You only need to add settings for those you wish to override. The Telerik Testing Framework uses default values for any setting not explicitly set in the .config file. +**Note:** The configuration setting names are case sensitive e.g. **AnnotateExecution** will not be recognized and will cause an exception to be thrown while **annotateExecution** will be recognized and used. ````XML -``` +```` In your test code initialization, you read these settings by simply setting the UseConfig flag to true when calling the Manager() constructor. If you use the BaseTest template (which is what the VsUnit, MbUnit, NUnit and xUnit templates do) this call is done for you by BaseTest during the Initialize call: ````C# diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/framework-element-object.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/framework-element-object.md index 6f0766ba..a4ce6e61 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/framework-element-object.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/framework-element-object.md @@ -15,127 +15,127 @@ The **FrameworkElement** and all objects that inherit from it get the following PropertyDescription - **AbsoluteSiblingTagIndex**Get the sibling tag index of this FrameworkElement. + AbsoluteSiblingTagIndexGet the sibling tag index of this FrameworkElement. - **AbsoluteTagIndex**Get the absolute index of this XAML tag in the Visual Tree. + AbsoluteTagIndexGet the absolute index of this XAML tag in the Visual Tree. - **ActualHeight**Gets the rendered height of a FrameworkElement. + ActualHeightGets the rendered height of a FrameworkElement. - **ActualWidth**Gets the rendered width of a FrameworkElement. + ActualWidthGets the rendered width of a FrameworkElement. - **Application**Get the Application object that owns this element. + ApplicationGet the Application object that owns this element. - **AutomationId**Gets the AutomationId set on this element if any. + AutomationIdGets the AutomationId set on this element if any. - **Children**Gets the visual children of this element. + ChildrenGets the visual children of this element. - **Clip**Gets or sets the Geometry used to define the outline of the contents of a UIElement. + ClipGets or sets the Geometry used to define the outline of the contents of a UIElement. - **Depth**Get the depth of this element in the Visual Tree. + DepthGet the depth of this element in the Visual Tree. - **EnableValidateMouseLocation**Enables or disables the validation of mouse click locations before performing mouse actions. + EnableValidateMouseLocationEnables or disables the validation of mouse click locations before performing mouse actions. - **Find**Get the Find object used to search the visual children of this element. + FindGet the Find object used to search the visual children of this element. - **Height**Gets or sets the suggested height of a FrameworkElement. + HeightGets or sets the suggested height of a FrameworkElement. - **HorizontalAlignment**Gets or sets the horizontal alignment characteristics applied to a FrameworkElement when it is composed within a layout parent, such as a panel or items control. + HorizontalAlignmentGets or sets the horizontal alignment characteristics applied to a FrameworkElement when it is composed within a layout parent, such as a panel or items control. - **Host**Returns the SilverlightApp object owning this FrameworkElement. + HostReturns the SilverlightApp object owning this FrameworkElement. - **IsHitTestVisible**Gets or sets whether the contained area of this UIElement can return true values for hit testing. + IsHitTestVisibleGets or sets whether the contained area of this UIElement can return true values for hit testing. - **IsTestRegion**Returns whether or not this FrameworkElement is contained inside a TestRegion (not supported in WebAii 2.0 Beta 2). + IsTestRegionReturns whether or not this FrameworkElement is contained inside a TestRegion (not supported in WebAii 2.0 Beta 2). - **Language**Gets or sets localization/globalization language information that applies to a FrameworkElement. + LanguageGets or sets localization/globalization language information that applies to a FrameworkElement. - **Margin**Gets or sets the outer margin of a FrameworkElement. + MarginGets or sets the outer margin of a FrameworkElement. - **MaxHeight**Gets or sets the maximum height constraint of a FrameworkElement. + MaxHeightGets or sets the maximum height constraint of a FrameworkElement. - **MaxWidth**Gets or sets the maximum width constraint of a FrameworkElement. + MaxWidthGets or sets the maximum width constraint of a FrameworkElement. - **MinHeight**Gets or sets the minimum height constraint of a FrameworkElement. + MinHeightGets or sets the minimum height constraint of a FrameworkElement. - **MinWidth**Gets or sets the minimum width constraint of a FrameworkElement. + MinWidthGets or sets the minimum width constraint of a FrameworkElement. - **Name**Gets (or sets, but see Remarks) the identifying name of the object. The name provides a reference that is initially markup-compiled. After a XAML processor creates the object tree from markup, run-time code can refer to a markup element by this name. + NameGets (or sets, but see Remarks) the identifying name of the object. The name provides a reference that is initially markup-compiled. After a XAML processor creates the object tree from markup, run-time code can refer to a markup element by this name. - **Opacity**Gets or sets the degree of the object's opacity. + OpacityGets or sets the degree of the object's opacity. - **OpacityMask**Gets or sets the brush used to alter the opacity of regions of this object. + OpacityMaskGets or sets the brush used to alter the opacity of regions of this object. - **Projection**Gets or sets the perspective projection (3-D effect) to apply when rendering this UIElement. + ProjectionGets or sets the perspective projection (3-D effect) to apply when rendering this UIElement. - **RenderSize**Gets the final render size of a UIElement. + RenderSizeGets the final render size of a UIElement. - **RenderTransform**Gets or sets transform information that affects the rendering position of a UIElement. + RenderTransformGets or sets transform information that affects the rendering position of a UIElement. - **RenderTransformOrigin**Gets or sets the origin point of any possible render transform declared by RenderTransform, relative to the bounds of the UIElement. + RenderTransformOriginGets or sets the origin point of any possible render transform declared by RenderTransform, relative to the bounds of the UIElement. - **Resources**Gets the locally defined resource dictionary. In XAML, you can establish resource items as child object elements of the property element, through XAML implicit collection syntax. + ResourcesGets the locally defined resource dictionary. In XAML, you can establish resource items as child object elements of the property element, through XAML implicit collection syntax. - **Style**Gets or sets an instance Style that is applied for this object during rendering. + StyleGets or sets an instance Style that is applied for this object during rendering. - **TagNameIndex**Gets the tag name index of the xaml tag name in the visual tree. + TagNameIndexGets the tag name index of the xaml tag name in the visual tree. - **TechnologyType**Get the technology type of this element. Always returns TechnologyType.Silverlight for FrameworkElement objects. + TechnologyTypeGet the technology type of this element. Always returns TechnologyType.Silverlight for FrameworkElement objects. - **TextContent**Gets the text content of this framework element if any. + TextContentGets the text content of this framework element if any. - **UseLayoutRounding**Gets or sets a value that determines whether rendering for the object and its subtree should use rounding behavior that aligns rendering to whole pixels. + UseLayoutRoundingGets or sets a value that determines whether rendering for the object and its subtree should use rounding behavior that aligns rendering to whole pixels. - **User**Gets the UI interaction object that allows you to interact with this framework element directly using real mouse and keyboard interactions. + UserGets the UI interaction object that allows you to interact with this framework element directly using real mouse and keyboard interactions. - **VerticalAlignment**Gets or sets the vertical alignment characteristics applied to a FrameworkElement when it is composed within a parent object such as a panel or items control. + VerticalAlignmentGets or sets the vertical alignment characteristics applied to a FrameworkElement when it is composed within a parent object such as a panel or items control. - **Visibility**Gets or sets the visibility of a UIElement. A UIElement that is not visible does not render and does not communicate its desired size to layout. + VisibilityGets or sets the visibility of a UIElement. A UIElement that is not visible does not render and does not communicate its desired size to layout. - **Wait**Gets a VisualWait object to be used on waiting for Visual elements in the VisualTree. + WaitGets a VisualWait object to be used on waiting for Visual elements in the VisualTree. - **Width**Gets or sets the width of a FrameworkElement. + WidthGets or sets the width of a FrameworkElement. - **XamlTag**Get the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal. + XamlTagGet the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal. @@ -189,55 +189,55 @@ These are all of the FrameworkElement methods available for use by your automati - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
    MethodDescription
    **AnySibling(T)**Return any sibling of this control of type T. The framework first searches for a previous sibling having the specified type. If it finds one that sibling is returned. If it doesn't find one then it searches for the next sibling. If it find one that sibling is returned, otherwise null (Nothing in VB.NET) is returned.AnySibling(T)Return any sibling of this control of type T. The framework first searches for a previous sibling having the specified type. If it finds one that sibling is returned. If it doesn't find one then it searches for the next sibling. If it find one that sibling is returned, otherwise null (Nothing in VB.NET) is returned.
    **As(T)**Return this framework element as a strongly-typed control of type T.As(T)Return this framework element as a strongly-typed control of type T.
    **CastAs(T)**Returns this framework element as a strongly-typed control of type T without enforcing tag name to match the type it is being cast to. This functions gives you free casting abilities between types.CastAs(T)Returns this framework element as a strongly-typed control of type T without enforcing tag name to match the type it is being cast to. This functions gives you free casting abilities between types.
    **Equals**Determines whether this FrameworkElement is equal to another, by comparing their AutomationReferences.EqualsDetermines whether this FrameworkElement is equal to another, by comparing their AutomationReferences.
    **GetChildren**Get the children of this framework element.GetChildrenGet the children of this framework element.
    **GetNextSibling**Get the next sibling of this FrameworkElement.GetNextSiblingGet the next sibling of this FrameworkElement.
    **GetParent**Get the Parent of this element.GetParentGet the Parent of this element.
    **GetPrevSibling**Get the previous sibling.GetPrevSiblingGet the previous sibling.
    **GetRectangle**Get the bounding rectangle of this FrameworkElement within the owning Silverlight application.GetRectangleGet the bounding rectangle of this FrameworkElement within the owning Silverlight application.
    **GetScreenRectangle**Return the actual coordinates of this element in absolute screen coordinates taking into account the location of the overall plug-in on the page.GetScreenRectangleReturn the actual coordinates of this element in absolute screen coordinates taking into account the location of the overall plug-in on the page.
    **Highlight**Highlight this element in the Silverlight application.HighlightHighlight this element in the Silverlight application.
    **NextSibling**Get the next sibling control of a specific type.NextSiblingGet the next sibling control of a specific type.
    **Parent**Get the parent FrameworkElement of this element.ParentGet the parent FrameworkElement of this element.
    **PreviousSibling**Get the previous sibling control of a specific type.PreviousSiblingGet the previous sibling control of a specific type.
    **Refresh**Refresh this FrameworkElement within the VisualTree.RefreshRefresh this FrameworkElement within the VisualTree.
    **ScrollToVisible**Scrolls the web page so that this element is visible in the browser window.ScrollToVisibleScrolls the web page so that this element is visible in the browser window.
    **ToXml**Gets an XML formatted string that represents this element and all its children This XML represents the VisualTree.ToXmlGets an XML formatted string that represents this element and all its children This XML represents the VisualTree.
    diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/invoking-actions.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/invoking-actions.md index 3c7ce209..b8be9a27 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/invoking-actions.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/invoking-actions.md @@ -100,25 +100,25 @@ All of the Telerik Testing Framework UI controls derive from the FrameworkElemen - + - Retrieves a list of elements that are children of this element in the visual tree. + Retrieves a list of elements that are children of this element in the visual tree. - + - + - + - + - +
    PropertyDescription
    **AutomationId**Retrieves the Automation ID assigned to this element.AutomationIdRetrieves the Automation ID assigned to this element.
    **Children**Children
    **Clip**Gets or sets the Geometry used to define the outline of the contents of a UI Element.ClipGets or sets the Geometry used to define the outline of the contents of a UI Element.
    **Height**Gets or sets the suggested height of a FrameworkElement.HeightGets or sets the suggested height of a FrameworkElement.
    **Opacity**Gets or sets the degree of the object's opacity.OpacityGets or sets the degree of the object's opacity.
    **OpacityMask**Gets or sets the brush used to alter the opacity of regions of this object.OpacityMaskGets or sets the brush used to alter the opacity of regions of this object.
    **Width**Gets or sets the suggested width of a FrameworkElement.WidthGets or sets the suggested width of a FrameworkElement.
    @@ -135,31 +135,31 @@ We have implemented a few special properties in our FrameworkElement object to a - + - + - + - + - + - + - + - + - +
    PropertyDescription
    **AbsoluteSiblingTagIndex**Returns the sibling tag index of this FrameworkElement relative to its other siblings within the Visual Tree.AbsoluteSiblingTagIndexReturns the sibling tag index of this FrameworkElement relative to its other siblings within the Visual Tree.
    **AbsoluteTagIndex**Returns the absolute index of this XAML tag within the entire Visual Tree.AbsoluteTagIndexReturns the absolute index of this XAML tag within the entire Visual Tree.
    **Application**Gets the Application object that owns this element.ApplicationGets the Application object that owns this element.
    **EnableValidateMouseLocation**Enables or disables the validation of mouse click locations before performing mouse actions.EnableValidateMouseLocationEnables or disables the validation of mouse click locations before performing mouse actions.
    **Find**Gets the Find object that can be used to search the visual children of this element.FindGets the Find object that can be used to search the visual children of this element.
    **TagNameIndex**Gets the tag name index of the XAML tag name in the visual tree.TagNameIndexGets the tag name index of the XAML tag name in the visual tree.
    **User**Gets the UI interaction object which allows you to interact with this framework element directly using real mouse and keyboard interactions.UserGets the UI interaction object which allows you to interact with this framework element directly using real mouse and keyboard interactions.
    **Wait**Gets a VisualWait object you can use to wait for Visual elements in the Visual Tree.WaitGets a VisualWait object you can use to wait for Visual elements in the Visual Tree.
    **XamlTag**Gets the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal.XamlTagGets the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal.
    @@ -172,19 +172,19 @@ The FrameworkElement class implements a number of methods just for purpose of te - + - Returns the child elements of the FrameworkElement. + Returns the child elements of the FrameworkElement. - + - + - +
    PropertyDescription
    **CastAs\()**Returns a FrameworkElement as a strongly-typed control. Does not enforce a tagname to match the type.CastAs\()Returns a FrameworkElement as a strongly-typed control. Does not enforce a tagname to match the type.
    **GetChildren()**GetChildren()
    **GetNextSibling()**Returns the next sibling of the FrameworkElement.GetNextSibling()Returns the next sibling of the FrameworkElement.
    **Parent()**Returns the parent element of the current Framework ElementParent()Returns the parent element of the current Framework Element
    **ScrollToVisible()**Scrolls the browser so that the Framework Element is visible.ScrollToVisible()Scrolls the browser so that the Framework Element is visible.
    diff --git a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/locating-elements.md b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/locating-elements.md index 7d80e00a..fcdf1296 100644 --- a/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/locating-elements.md +++ b/docs-teststudiodev/code-in-test/silverlight-wpf-automation-wtc/locating-elements.md @@ -49,16 +49,16 @@ All of the common methods for finding an element to operate on are: - + - + - + - +
    MethodDescription
    **Find.ByName()/Find.ByName\**Returns the first element having the specified name.Find.ByName()/Find.ByName\Returns the first element having the specified name.
    **Find.ByText**Returns the first TextBlock that matches the text provided.Find.ByTextReturns the first TextBlock that matches the text provided.
    **Find.ByAutomationId**Returns an element having the automation ID you specify.Find.ByAutomationIdReturns an element having the automation ID you specify.
    **Find.ByType**Returns the first element found of the specified type (e.g. Canvas, DataGrid, Calendar).Find.ByTypeReturns the first element found of the specified type (e.g. Canvas, DataGrid, Calendar).
    @@ -71,16 +71,16 @@ The Find object has a 'Strategy' property that controls how the method behaves w - + - + - + - +
    StrategyDescription
    **AlwaysWaitForElementsVisible**In this mode the Find object always waits for the element to exist and for its Visibility property to equal "Visible". The default amount of time it will wait is 5 seconds. This timeout can be changed by modifying the Find.Timeout property before using the Find object. This strategy is the default setting.AlwaysWaitForElementsVisibleIn this mode the Find object always waits for the element to exist and for its Visibility property to equal "Visible". The default amount of time it will wait is 5 seconds. This timeout can be changed by modifying the Find.Timeout property before using the Find object. This strategy is the default setting.
    **WhenNotVisibleReturnElementProxy**In this mode an 'Element Proxy' is returned if the element cannot be found right away. An 'Element Proxy' is a lightweight FrameworkElement object that only contains information on how to locate the desired element in the Visual Tree. This is useful when you want to use the SilverlightApp.Wait.ForExists method.WhenNotVisibleReturnElementProxyIn this mode an 'Element Proxy' is returned if the element cannot be found right away. An 'Element Proxy' is a lightweight FrameworkElement object that only contains information on how to locate the desired element in the Visual Tree. This is useful when you want to use the SilverlightApp.Wait.ForExists method.
    **WhenNotVisibleReturnNull**In this mode null (Nothing in VB.NET) is returned if the element cannot be found right away.WhenNotVisibleReturnNullIn this mode null (Nothing in VB.NET) is returned if the element cannot be found right away.
    **WhenNotVisibleThrowException**In this mode a generic exception is thrown if the element cannot be found right away.WhenNotVisibleThrowExceptionIn this mode a generic exception is thrown if the element cannot be found right away.
    @@ -107,16 +107,16 @@ All of the Find.AllByxxx functions are: - + - + - + - +
    MethodDescription
    **Find.AllByName()/Find.AllByName\**Find all elements that have a specific name. Allows filtering on a specific control type.Find.AllByName()/Find.AllByName\Find all elements that have a specific name. Allows filtering on a specific control type.
    **Find.AllByText()**Find all TextBlocks that contain a specific text. Use p:text to search for partial text.Find.AllByText()Find all TextBlocks that contain a specific text. Use p:text to search for partial text.
    **Find.AllByType()/Find.AllByType\**Find all elements of certain type. i.e Button, Grid..etc. Filtering on type is inherit here.Find.AllByType()/Find.AllByType\Find all elements of certain type. i.e Button, Grid..etc. Filtering on type is inherit here.
    **Find.AllByAutomationID()/Find.AllByAutomationID\**Find all elements that have a specific automation ID. Allows filtering on a specific control type.Find.AllByAutomationID()/Find.AllByAutomationID\Find all elements that have a specific automation ID. Allows filtering on a specific control type.
    diff --git a/docs-teststudiodev/features/cli-runner.md b/docs-teststudiodev/features/cli-runner.md index a9fbbc67..5c71249d 100644 --- a/docs-teststudiodev/features/cli-runner.md +++ b/docs-teststudiodev/features/cli-runner.md @@ -195,6 +195,3 @@ padding: 8px; [3]: images/artoftest-runner/fig3.png [4]: images/artoftest-runner/fig4.png [5]: images/artoftest-runner/fig5.png -[6]: images/artoftest-runner/fig6.png -[7]: images/artoftest-runner/fig7.png -[8]: images/artoftest-runner/fig8.png \ No newline at end of file diff --git a/docs-teststudiodev/features/data-driven-testing/add-data-source.md b/docs-teststudiodev/features/data-driven-testing/add-data-source.md index 766fe053..b8af0a76 100644 --- a/docs-teststudiodev/features/data-driven-testing/add-data-source.md +++ b/docs-teststudiodev/features/data-driven-testing/add-data-source.md @@ -89,7 +89,7 @@ __See Also:__ [1]: images/add-data-source/fig1.png [3]: images/add-data-source/fig3.png [4]: images/add-data-source/fig4.png -[5]: images/add-data-source/fig5.png + [6]: images/add-data-source/fig6.png [7]: images/add-data-source/fig7.png [8]: images/add-data-source/fig8.png diff --git a/docs-teststudiodev/features/logical-steps/if-else.md b/docs-teststudiodev/features/logical-steps/if-else.md index df0a94ce..9529cb93 100644 --- a/docs-teststudiodev/features/logical-steps/if-else.md +++ b/docs-teststudiodev/features/logical-steps/if-else.md @@ -82,16 +82,15 @@ If step 4 is executed the *SecondLink* element would be added to the DOM and **i [1]: images/if-else/fig1.png [2]: images/if-else/fig2.png [3]: images/if-else/fig3.png -[4]: images/if-else/fig4.png -[5]: images/if-else/fig5.png + + [6]: images/if-else/fig6.png [7]: images/if-else/fig7.png [8]: images/if-else/fig8.png [9]: images/if-else/fig9.png [10]: images/if-else/fig10.png [11]: images/if-else/fig11.png -[12]: images/if-else/fig12.png + [13]: images/if-else/fig13.png [14]: images/if-else/fig14.png [15]: images/if-else/fig15.png - diff --git a/docs-teststudiodev/features/logical-steps/loop.md b/docs-teststudiodev/features/logical-steps/loop.md index 9ea18d79..aa922e13 100644 --- a/docs-teststudiodev/features/logical-steps/loop.md +++ b/docs-teststudiodev/features/logical-steps/loop.md @@ -39,5 +39,5 @@ Walk--through of creating a loop process. [1]: images/loop/fig1.png [4]: images/loop/fig4.png [5]: images/loop/fig5.png -[6]: images/loop/fig6.png + [7]: images/loop/fig7.png \ No newline at end of file diff --git a/docs-teststudiodev/features/logical-steps/while-loop.md b/docs-teststudiodev/features/logical-steps/while-loop.md index 4f10cea3..61a88690 100644 --- a/docs-teststudiodev/features/logical-steps/while-loop.md +++ b/docs-teststudiodev/features/logical-steps/while-loop.md @@ -77,12 +77,12 @@ An execution status example when the while condition is false and the steps in t [1]: images/while-loop/fig1.png [2]: images/while-loop/fig2.png [3]: images/while-loop/fig3.png -[4]: images/while-loop/fig4.png + [7]: images/while-loop/fig7.png [8]: images/while-loop/fig8.png [9]: images/while-loop/fig9.png [10]: images/while-loop/fig10.png -[11]: images/while-loop/fig11.png + [12]: images/while-loop/fig12.png [13]: images/while-loop/fig13.jpg [14]: images/while-loop/fig14.jpg diff --git a/docs-teststudiodev/features/recorder/specific-recording-scenario/dialog-handler-updater.md b/docs-teststudiodev/features/recorder/specific-recording-scenario/dialog-handler-updater.md index fabaf453..fb02113d 100644 --- a/docs-teststudiodev/features/recorder/specific-recording-scenario/dialog-handler-updater.md +++ b/docs-teststudiodev/features/recorder/specific-recording-scenario/dialog-handler-updater.md @@ -2,7 +2,7 @@ title: Dialog Handler Updater page_title: Dialog Handler Updater - Test Studio Dev Documentation description: How to update the Dialog Handlers. -slug: features/dialogs +slug: features/dialog-handler-updater position: 0 --- # Dialog Handler Updater diff --git a/docs-teststudiodev/features/recorder/verifications/image-verification.md b/docs-teststudiodev/features/recorder/verifications/image-verification.md index 0b6dfefd..b8503b91 100644 --- a/docs-teststudiodev/features/recorder/verifications/image-verification.md +++ b/docs-teststudiodev/features/recorder/verifications/image-verification.md @@ -69,4 +69,3 @@ You can configure the threshold and scrolling options that will be used during t [6]: /features/recorder/verifications/images/image-verification/fig6.png [7]: /features/recorder/verifications/images/image-verification/fig7.png [8]: /features/recorder/verifications/images/image-verification/fig8.png -[9]: /features/recorder/verifications/images/image-verification/gif9.gif diff --git a/docs-teststudiodev/features/test-maintenance/steps-pane.md b/docs-teststudiodev/features/test-maintenance/steps-pane.md index 7e815657..2418497e 100644 --- a/docs-teststudiodev/features/test-maintenance/steps-pane.md +++ b/docs-teststudiodev/features/test-maintenance/steps-pane.md @@ -52,12 +52,12 @@ The available options related to test execution in the Step pane are listed belo | ![Test Properties](images/steps-pane/fig32.png) | __Test Properties__ - Displays the test properties | [1]: images/steps-pane/fig1.png -[2]: images/steps-pane/fig2.png + [3]: images/steps-pane/fig3.png [4]: images/steps-pane/fig4.png [5]: images/steps-pane/fig5.png [6]: images/steps-pane/fig6.png -[7]: images/steps-pane/fig7.png + [8]: images/steps-pane/fig8.png [9]: images/steps-pane/fig9.png [10]: images/steps-pane/fig10.png @@ -67,6 +67,6 @@ The available options related to test execution in the Step pane are listed belo [14]: images/steps-pane/fig14.png [15]: images/steps-pane/fig15.png [16]: images/steps-pane/fig16.png -[17]: images/steps-pane/fig17.png + [18]: images/steps-pane/fig18.png [19]: images/steps-pane/fig19.png \ No newline at end of file diff --git a/docs-teststudiodev/features/test-maintenance/test-step-properties.md b/docs-teststudiodev/features/test-maintenance/test-step-properties.md index d743a770..28b82d88 100644 --- a/docs-teststudiodev/features/test-maintenance/test-step-properties.md +++ b/docs-teststudiodev/features/test-maintenance/test-step-properties.md @@ -474,5 +474,5 @@ padding: 8px;
    -[1]: images/test-step-properties/fig1.png + [2]: images/test-step-properties/fig2.png diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/framework-element-object.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/framework-element-object.md index 860cc8ab..3b6e6301 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/framework-element-object.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/framework-element-object.md @@ -15,127 +15,127 @@ The **FrameworkElement** and all objects that inherit from it get the following - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
    PropertyDescription
    **AbsoluteSiblingTagIndex**Get the sibling tag index of this FrameworkElement.AbsoluteSiblingTagIndexGet the sibling tag index of this FrameworkElement.
    **AbsoluteTagIndex**Get the absolute index of this XAML tag in the Visual Tree.AbsoluteTagIndexGet the absolute index of this XAML tag in the Visual Tree.
    **ActualHeight**Gets the rendered height of a FrameworkElement.ActualHeightGets the rendered height of a FrameworkElement.
    **ActualWidth**Gets the rendered width of a FrameworkElement.ActualWidthGets the rendered width of a FrameworkElement.
    **Application**Get the Application object that owns this element.ApplicationGet the Application object that owns this element.
    **AutomationId**Gets the AutomationId set on this element if any.AutomationIdGets the AutomationId set on this element if any.
    **Children**Gets the visual children of this element.ChildrenGets the visual children of this element.
    **Clip**Gets or sets the Geometry used to define the outline of the contents of a UIElement.ClipGets or sets the Geometry used to define the outline of the contents of a UIElement.
    **Depth**Get the depth of this element in the Visual Tree.DepthGet the depth of this element in the Visual Tree.
    **EnableValidateMouseLocation**Enables or disables the validation of mouse click locations before performing mouse actions.EnableValidateMouseLocationEnables or disables the validation of mouse click locations before performing mouse actions.
    **Find**Get the Find object used to search the visual children of this element.FindGet the Find object used to search the visual children of this element.
    **Height**Gets or sets the suggested height of a FrameworkElement.HeightGets or sets the suggested height of a FrameworkElement.
    **HorizontalAlignment**Gets or sets the horizontal alignment characteristics applied to a FrameworkElement when it is composed within a layout parent, such as a panel or items control.HorizontalAlignmentGets or sets the horizontal alignment characteristics applied to a FrameworkElement when it is composed within a layout parent, such as a panel or items control.
    **Host**Returns the SilverlightApp object owning this FrameworkElement.HostReturns the SilverlightApp object owning this FrameworkElement.
    **IsHitTestVisible**Gets or sets whether the contained area of this UIElement can return true values for hit testing.IsHitTestVisibleGets or sets whether the contained area of this UIElement can return true values for hit testing.
    **IsTestRegion**Returns whether or not this FrameworkElement is contained inside a TestRegion (not supported in WebAii 2.0 Beta 2).IsTestRegionReturns whether or not this FrameworkElement is contained inside a TestRegion (not supported in WebAii 2.0 Beta 2).
    **Language**Gets or sets localization/globalization language information that applies to a FrameworkElement.LanguageGets or sets localization/globalization language information that applies to a FrameworkElement.
    **Margin**Gets or sets the outer margin of a FrameworkElement.MarginGets or sets the outer margin of a FrameworkElement.
    **MaxHeight**Gets or sets the maximum height constraint of a FrameworkElement.MaxHeightGets or sets the maximum height constraint of a FrameworkElement.
    **MaxWidth**Gets or sets the maximum width constraint of a FrameworkElement.MaxWidthGets or sets the maximum width constraint of a FrameworkElement.
    **MinHeight**Gets or sets the minimum height constraint of a FrameworkElement.MinHeightGets or sets the minimum height constraint of a FrameworkElement.
    **MinWidth**Gets or sets the minimum width constraint of a FrameworkElement.MinWidthGets or sets the minimum width constraint of a FrameworkElement.
    **Name**Gets (or sets, but see Remarks) the identifying name of the object. The name provides a reference that is initially markup-compiled. After a XAML processor creates the object tree from markup, run-time code can refer to a markup element by this name.NameGets (or sets, but see Remarks) the identifying name of the object. The name provides a reference that is initially markup-compiled. After a XAML processor creates the object tree from markup, run-time code can refer to a markup element by this name.
    **Opacity**Gets or sets the degree of the object's opacity.OpacityGets or sets the degree of the object's opacity.
    **OpacityMask**Gets or sets the brush used to alter the opacity of regions of this object.OpacityMaskGets or sets the brush used to alter the opacity of regions of this object.
    **Projection**Gets or sets the perspective projection (3-D effect) to apply when rendering this UIElement.ProjectionGets or sets the perspective projection (3-D effect) to apply when rendering this UIElement.
    **RenderSize**Gets the final render size of a UIElement.RenderSizeGets the final render size of a UIElement.
    **RenderTransform**Gets or sets transform information that affects the rendering position of a UIElement.RenderTransformGets or sets transform information that affects the rendering position of a UIElement.
    **RenderTransformOrigin**Gets or sets the origin point of any possible render transform declared by RenderTransform, relative to the bounds of the UIElement.RenderTransformOriginGets or sets the origin point of any possible render transform declared by RenderTransform, relative to the bounds of the UIElement.
    **Resources**Gets the locally defined resource dictionary. In XAML, you can establish resource items as child object elements of the property element, through XAML implicit collection syntax.ResourcesGets the locally defined resource dictionary. In XAML, you can establish resource items as child object elements of the property element, through XAML implicit collection syntax.
    **Style**Gets or sets an instance Style that is applied for this object during rendering.StyleGets or sets an instance Style that is applied for this object during rendering.
    **TagNameIndex**Gets the tag name index of the xaml tag name in the visual tree.TagNameIndexGets the tag name index of the xaml tag name in the visual tree.
    **TechnologyType**Get the technology type of this element. Always returns TechnologyType.Silverlight for FrameworkElement objects.TechnologyTypeGet the technology type of this element. Always returns TechnologyType.Silverlight for FrameworkElement objects.
    **TextContent**Gets the text content of this framework element if any.TextContentGets the text content of this framework element if any.
    **UseLayoutRounding**Gets or sets a value that determines whether rendering for the object and its subtree should use rounding behavior that aligns rendering to whole pixels.UseLayoutRoundingGets or sets a value that determines whether rendering for the object and its subtree should use rounding behavior that aligns rendering to whole pixels.
    **User**Gets the UI interaction object that allows you to interact with this framework element directly using real mouse and keyboard interactions.UserGets the UI interaction object that allows you to interact with this framework element directly using real mouse and keyboard interactions.
    **VerticalAlignment**Gets or sets the vertical alignment characteristics applied to a FrameworkElement when it is composed within a parent object such as a panel or items control.VerticalAlignmentGets or sets the vertical alignment characteristics applied to a FrameworkElement when it is composed within a parent object such as a panel or items control.
    **Visibility**Gets or sets the visibility of a UIElement. A UIElement that is not visible does not render and does not communicate its desired size to layout.VisibilityGets or sets the visibility of a UIElement. A UIElement that is not visible does not render and does not communicate its desired size to layout.
    **Wait**Gets a VisualWait object to be used on waiting for Visual elements in the VisualTree.WaitGets a VisualWait object to be used on waiting for Visual elements in the VisualTree.
    **Width**Gets or sets the width of a FrameworkElement.WidthGets or sets the width of a FrameworkElement.
    **XamlTag**Get the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal.XamlTagGet the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal.
    @@ -146,25 +146,25 @@ Before describing all of the methods of the FrameworkElement object I'd like to 1. VisualTree navigation: All FrameworkElements enable you to navigate the visual tree up or down. The object exposes methods and properties like **Parent**, **Children**, **NextSibling**, **PreviousSibling**, **AnySibling**. The navigation also supports control sensitive navigation. For example, if you would like to find the parent 'Grid' that a certain text is contained in you do the following: - ```C# + ````C# WpfApplication app = Manager.ActiveApplication; Assert.IsNotNull(app); Grid containerGrid = app.Find.ByText("SomeText").Parent("Grid").As(); - ``` + ```` __OR__ If you are working with a custom control that doesn't have a strongly-typed object under **ArtOfTest.WebAii.Silverlight.UI**, the navigation methods all offer a non-generic version that can be used to search for a certain type. For example, let's say you are trying to find the custom control "Bar" that contains some text, then you can do the following: - ```C# + ````C# WpfApplication app = Manager.ActiveApplication; Assert.IsNotNull(app); FrameworkElement barElement = app.Find.ByText("SomeText").Parent("Bar"); - ``` + ```` **Parent**, **NextSibling**, **PreviousSibling & AnySibling** all offer a non-generic versions in addition to the generic one. @@ -197,55 +197,55 @@ These are all of the FrameworkElement methods available for use by your automati MethodDescription - **AnySibling(T)**Return any sibling of this control of type T. The framework first searches for a previous sibling having the specified type. If it finds one that sibling is returned. If it doesn't find one then it searches for the next sibling. If it find one that sibling is returned, otherwise null (Nothing in VB.NET) is returned. + AnySibling(T)Return any sibling of this control of type T. The framework first searches for a previous sibling having the specified type. If it finds one that sibling is returned. If it doesn't find one then it searches for the next sibling. If it find one that sibling is returned, otherwise null (Nothing in VB.NET) is returned. - **As(T)**Return this framework element as a strongly-typed control of type T. + As(T)Return this framework element as a strongly-typed control of type T. - **CastAs(T)**Returns this framework element as a strongly-typed control of type T without enforcing tag name to match the type it is being cast to. This functions gives you free casting abilities between types. + CastAs(T)Returns this framework element as a strongly-typed control of type T without enforcing tag name to match the type it is being cast to. This functions gives you free casting abilities between types. - **Equals**Determines whether this FrameworkElement is equal to another, by comparing their AutomationReferences. + EqualsDetermines whether this FrameworkElement is equal to another, by comparing their AutomationReferences. - **GetChildren**Get the children of this framework element. + GetChildrenGet the children of this framework element. - **GetNextSibling**Get the next sibling of this FrameworkElement. + GetNextSiblingGet the next sibling of this FrameworkElement. - **GetParent**Get the Parent of this element. + GetParentGet the Parent of this element. - **GetPrevSibling**Get the previous sibling. + GetPrevSiblingGet the previous sibling. - **GetRectangle**Get the bounding rectangle of this FrameworkElement within the owning Silverlight application. + GetRectangleGet the bounding rectangle of this FrameworkElement within the owning Silverlight application. - **GetScreenRectangle**Return the actual coordinates of this element in absolute screen coordinates taking into account the location of the overall plug-in on the page. + GetScreenRectangleReturn the actual coordinates of this element in absolute screen coordinates taking into account the location of the overall plug-in on the page. - **Highlight**Highlight this element in the Silverlight application. + HighlightHighlight this element in the Silverlight application. - **NextSibling**Get the next sibling control of a specific type. + NextSiblingGet the next sibling control of a specific type. - **Parent**Get the parent FrameworkElement of this element. + ParentGet the parent FrameworkElement of this element. - **PreviousSibling**Get the previous sibling control of a specific type. + PreviousSiblingGet the previous sibling control of a specific type. - **Refresh**Refresh this FrameworkElement within the VisualTree. + RefreshRefresh this FrameworkElement within the VisualTree. - **ScrollToVisible**Scrolls the web page so that this element is visible in the browser window. + ScrollToVisibleScrolls the web page so that this element is visible in the browser window. - **ToXml**Gets an XML formatted string that represents this element and all its children This XML represents the VisualTree. + ToXmlGets an XML formatted string that represents this element and all its children This XML represents the VisualTree. diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md index 590234a9..7a02aa63 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/invoking-actions.md @@ -94,25 +94,25 @@ All of the Telerik Testing Framework UI controls derive from the FrameworkElemen PropertyDescription - **AutomationId**Retrieves the Automation ID assigned to this element. + AutomationIdRetrieves the Automation ID assigned to this element. - **Children**Retrieves a list of elements that are children of this element in the visual tree. + ChildrenRetrieves a list of elements that are children of this element in the visual tree. - **Clip**Gets or sets the Geometry used to define the outline of the contents of a UI Element. + ClipGets or sets the Geometry used to define the outline of the contents of a UI Element. - **Height**Gets or sets the suggested height of a FrameworkElement. + HeightGets or sets the suggested height of a FrameworkElement. - **Opacity**Gets or sets the degree of the object's opacity. + OpacityGets or sets the degree of the object's opacity. - **OpacityMask**Gets or sets the brush used to alter the opacity of regions of this object. + OpacityMaskGets or sets the brush used to alter the opacity of regions of this object. - **Width**Gets or sets the suggested width of a FrameworkElement. + WidthGets or sets the suggested width of a FrameworkElement. @@ -129,31 +129,31 @@ We have implemented a few special properties in our FrameworkElement object to a PropertyDescription - **AbsoluteSiblingTagIndex**Returns the sibling tag index of this FrameworkElement relative to its other siblings within the Visual Tree. + AbsoluteSiblingTagIndexReturns the sibling tag index of this FrameworkElement relative to its other siblings within the Visual Tree. - **AbsoluteTagIndex**Returns the absolute index of this XAML tag within the entire Visual Tree. + AbsoluteTagIndexReturns the absolute index of this XAML tag within the entire Visual Tree. - **Application**Gets the Application object that owns this element. + ApplicationGets the Application object that owns this element. - **EnableValidateMouseLocation**Enables or disables the validation of mouse click locations before performing mouse actions. + EnableValidateMouseLocationEnables or disables the validation of mouse click locations before performing mouse actions. - **Find**Gets the Find object that can be used to search the visual children of this element. + FindGets the Find object that can be used to search the visual children of this element. - **TagNameIndex**Gets the tag name index of the XAML tag name in the visual tree. + TagNameIndexGets the tag name index of the XAML tag name in the visual tree. - **User**Gets the UI interaction object which allows you to interact with this framework element directly using real mouse and keyboard interactions. + UserGets the UI interaction object which allows you to interact with this framework element directly using real mouse and keyboard interactions. - **Wait**Gets a VisualWait object you can use to wait for Visual elements in the Visual Tree. + WaitGets a VisualWait object you can use to wait for Visual elements in the Visual Tree. - **XamlTag**Gets the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal. + XamlTagGets the XAML tag name of this FrameworkElement. This is used for hierarchy matching and traversal. @@ -166,19 +166,19 @@ The FrameworkElement class implements a number of methods just for purpose of te PropertyDescription - **CastAs\()**Returns a FrameworkElement as a strongly-typed control. Does not enforce a tagname to match the type. + CastAs\()Returns a FrameworkElement as a strongly-typed control. Does not enforce a tagname to match the type. - **GetChildren()**Returns the child elements of the FrameworkElement. + GetChildren()Returns the child elements of the FrameworkElement. - **GetNextSibling()**Returns the next sibling of the FrameworkElement. + GetNextSibling()Returns the next sibling of the FrameworkElement. - **Parent()**Returns the parent element of the current Framework Element + Parent()Returns the parent element of the current Framework Element - **ScrollToVisible()**Scrolls the browser so that the Framework Element is visible. + ScrollToVisible()Scrolls the browser so that the Framework Element is visible. diff --git a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md index 9af22782..88e21118 100644 --- a/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md +++ b/docs/testing-framework/write-tests-in-code/silverlight-wpf-automation-wtc/locating-elements.md @@ -47,16 +47,16 @@ All of the common methods for finding an element to operate on are: MethodDescription - **Find.ByName()/Find.ByName\**Returns the first element having the specified name. + Find.ByName()/Find.ByName\Returns the first element having the specified name. - **Find.ByText**Returns the first TextBlock that matches the text provided. + Find.ByTextReturns the first TextBlock that matches the text provided. - **Find.ByAutomationId**Returns an element having the automation ID you specify. + Find.ByAutomationIdReturns an element having the automation ID you specify. - **Find.ByType**Returns the first element found of the specified type (e.g. Canvas, DataGrid, Calendar). + Find.ByTypeReturns the first element found of the specified type (e.g. Canvas, DataGrid, Calendar). @@ -69,16 +69,16 @@ The Find object has a 'Strategy' property that controls how the method behaves w StrategyDescription - **AlwaysWaitForElementsVisible**In this mode the Find object always waits for the element to exist and for its Visibility property to equal "Visible". The default amount of time it will wait is 5 seconds. This timeout can be changed by modifying the Find.Timeout property before using the Find object. This strategy is the default setting. + AlwaysWaitForElementsVisibleIn this mode the Find object always waits for the element to exist and for its Visibility property to equal "Visible". The default amount of time it will wait is 5 seconds. This timeout can be changed by modifying the Find.Timeout property before using the Find object. This strategy is the default setting. - **WhenNotVisibleReturnElementProxy**In this mode an 'Element Proxy' is returned if the element cannot be found right away. An 'Element Proxy' is a lightweight FrameworkElement object that only contains information on how to locate the desired element in the Visual Tree. This is useful when you want to use the SilverlightApp.Wait.ForExists method. + WhenNotVisibleReturnElementProxyIn this mode an 'Element Proxy' is returned if the element cannot be found right away. An 'Element Proxy' is a lightweight FrameworkElement object that only contains information on how to locate the desired element in the Visual Tree. This is useful when you want to use the SilverlightApp.Wait.ForExists method. - **WhenNotVisibleReturnNull**In this mode null (Nothing in VB.NET) is returned if the element cannot be found right away. + WhenNotVisibleReturnNullIn this mode null (Nothing in VB.NET) is returned if the element cannot be found right away. - **WhenNotVisibleThrowException**In this mode a generic exception is thrown if the element cannot be found right away. + WhenNotVisibleThrowExceptionIn this mode a generic exception is thrown if the element cannot be found right away. @@ -103,16 +103,16 @@ All of the Find.AllByxxx functions are: MethodDescription - **Find.AllByName()/Find.AllByName\**Find all elements that have a specific name. Allows filtering on a specific control type. + Find.AllByName()/Find.AllByName\Find all elements that have a specific name. Allows filtering on a specific control type. - **Find.AllByText()**Find all TextBlocks that contain a specific text. Use p:text to search for partial text. + Find.AllByText()Find all TextBlocks that contain a specific text. Use p:text to search for partial text. - **Find.AllByType()/Find.AllByType\**Find all elements of certain type. i.e Button, Grid..etc. Filtering on type is inherit here. + Find.AllByType()/Find.AllByType\Find all elements of certain type. i.e Button, Grid..etc. Filtering on type is inherit here. - **Find.AllByAutomationID()/Find.AllByAutomationID\**Find all elements that have a specific automation ID. Allows filtering on a specific control type. + Find.AllByAutomationID()/Find.AllByAutomationID\Find all elements that have a specific automation ID. Allows filtering on a specific control type. From 185e2f8dd2bb27bdf8e81ec50bcf6e6c4130521a Mon Sep 17 00:00:00 2001 From: Atanas Atanasov Date: Thu, 3 Apr 2025 10:54:31 +0300 Subject: [PATCH 21/65] fix path-prefix --- docs/docs-builder.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index 90598d3f..b3140e78 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -1,5 +1,5 @@ top-navigation-product: test-studio -path-prefix: /teststudio +path-prefix: /teststudio/documentation product-id: 846 product-name: Progress Test Studio product-url: https://www.telerik.com/teststudio From 2d1c20364fa8082eef9cc256a8043ddcc919e6fc Mon Sep 17 00:00:00 2001 From: Atanas Atanasov Date: Thu, 3 Apr 2025 11:53:04 +0300 Subject: [PATCH 22/65] changed primary color --- docs/docs-builder.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index b3140e78..a0d08cda 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -9,7 +9,9 @@ cta-intro: "@ProductLink is a test automation platform for web, WPF, and respons default-title-prefix: Telerik Test Studio avatar-path: ./images/avatar-ninja.svg no-results-image-path: ./images/ninja-no-results.svg -primary-color: "#27A306" +primary-color: + light: "#1D8800" + dark: "#68BF51" product-code: TESTSTUDIO product-trial-url: https://www.telerik.com/try/test-studio-ultimate From 8568de510ae87d75798ffb5ac61770018662c856 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Thu, 3 Apr 2025 12:39:46 +0300 Subject: [PATCH 23/65] Removed HTML and use markdown instead The toggle script was removed. The page is configured to use mainly Markdown only. This is similar to other products' FAQ page. --- docs/faq.md | 617 +++++++++++++++++++--------------------------------- 1 file changed, 220 insertions(+), 397 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 9eeef11c..ce312876 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -6,451 +6,274 @@ position: 101 previous_url: /user-guide/faq.aspx, /user-guide/faq --- - - # Test Studio Users Frequently Asked Questions ## Contacting Technical Support Officer -

    Overview of the ticketing system

    -
    -
    -

    Once you submit a support ticket, the system automatically notifies the Telerik support officers and creates a thread in your support history. Our engineers will then review your ticket and respond within the guaranteed response time. The reply will be appended to your support thread and, for your extra convenience, you will also receive an e-mail with all the information.

    - -You do not need to follow up with us, if the provided answer solves your issue. However, we recommend that you do so, as this will help the support officers close the issue faster.

    - -In case you need to continue the thread and provide some additional information, you should log into Your Account, go to the respective thread and post your reply via the web interface.

    - -Note that titles of unread support tickets will show up in bold text, while those of already reviewed replies will not.

    - -In order for us to make the ticketing system more effective, we need your cooperation. We kindly ask that you create a new thread for each incident/inquiry of a different nature and for each different product line. In case you open a ticket for one product, but your questions are for another one, we will move the thread under the relevant category, but you may not receive a timely response.

    -
    -
    - -

    Using the available support resources

    -
    -
    -

    Your Account offers several exclusive resources to evaluators and customers of Telerik products: -

      -
    • Online demos
    • -
    • Support and Learning
    • -
    • Forums
    • -
    • Support ticket system
    • -
    • Bug reporting tool
    • -
    • Feature request tool
    • -
    • Feedback form

    • -As with any other system, there are some guidelines to follow in order for you to get a quality support experience:

      -
    • Review the publicly available resources prior to submitting a support ticket. We have various resources (online demos, documentation, knowledge base, code library, videos, forums, etc.) with thousands of examples/threads and there is a good chance that the answer to your inquiry/issue is already there.
    • -
    • Start a support thread for each different issue that you face. This will make things simpler and also, it will be easier for you to track the progress of all your incidents.
    • -
    • Do not enter support incidents in "Feature requests".
    • -
    • Before submitting a "Bug report" entry, please make sure that you have provided us with enough information, so that we can reproduce the problem. The more details you send, the easier it will be for us to isolate the problem and resolve it.
    • -
    • Please do not use “General feedback” to post your technical problems. The purpose of this section is to allow you to send us feedback on our site, our products, and our services.


    • - Note: After we reproduce a bug or add a feature request to our ToDo list, we will add Telerik points to your account and send out a notification. -
    -

    -
    -
    - -

    Creating a new bug report - guidelines

    -
    -
    -

    Sometimes it is difficult to make a distinction between a support incident and a bug report. However, if you feel that there is a generic problem with any of our products that can be reproduced, you should definitely consider opening a "Bug report".

    - - While submitting a "Bug report" entry, please make sure you give us as many details as possible. As a start, please provide the steps required to reproduce the error, as well as some information about your environment (OS, .NET framework, browser, and so on).

    - - Additionally, if you feel that screenshots or some other visual material will help us understand the issue better, please do not hesitate to attach those to the thread. A runnable project that exhibits the problem would be appreciated as well.

    -
    -
    - -

    Starting a new support ticket - guidelines

    -
    -
    -

    Telerik strives to constantly improve its services. In order to help us provide you with a quick and accurate response, please follow the guidelines below when submitting a support ticket: -

      -
    • Describe your question in detail. Although we are familiar with most of the problems people are having, there is always a chance that you are the first one to report an issue. Sending us as much information as possible will help us identify the source and provide you with a fix or workaround.
    • -
    • Provide step by step instructions on how to reproduce the error.
    • -
    • Send us the stack trace of the exception you are receiving (if applicable)
    • -
    • Attach the source code that generates the exception you are receiving.
    • -
    • Attach a screenshot of the observed behavior and a screenshot of the expected behavior (if applicable).
    • -
    • Attach a simple runnable project (zipped, no 3rd party controls), which isolates and demonstrates your problem.
    • -
      - The zipped project should contain:

      -
    • The /bin folder with the respective version of the Telerik assembly (or specify that version exactly without sending the dll itself).
    • -
    • The ascx/aspx page, together with the codebehind, which reproduces the error.
    • -
    • A backup of your database (if needed).
    • -
    • Other necessary resources (classes, css files, etc., if applicable) or specific instructions for your particular case.
    • -
    • Please, exclude/remove all 3rd party controls.
    • -
    • The project should run in a test environment without major modifications.
    • -

    -
    -
    +### Overview of the ticketing system + +Once you submit a support ticket, the system automatically notifies the Telerik support officers and creates a thread in your support history. Our engineers will then review your ticket and respond within the guaranteed response time. The reply will be appended to your support thread and, for your extra convenience, you will also receive an e-mail with all the information. + +You do not need to follow up with us, if the provided answer solves your issue. However, we recommend that you do so, as this will help the support officers close the issue faster. + +In case you need to continue the thread and provide some additional information, you should log into Your Account, go to the respective thread and post your reply via the web interface. + +Note that titles of unread support tickets will show up in bold text, while those of already reviewed replies will not. + +In order for us to make the ticketing system more effective, we need your cooperation. We kindly ask that you create a new thread for each incident/inquiry of a different nature and for each different product line. In case you open a ticket for one product, but your questions are for another one, we will move the thread under the relevant category, but you may not receive a timely response. + + +### Using the available support resources + +Your Account offers several exclusive resources to evaluators and customers of Telerik products: + +- Online demos +- Support and Learning +- Forums +- Support ticket system +- Bug reporting tool +- Feature request tool +- Feedback form + +As with any other system, there are some guidelines to follow in order for you to get a quality support experience: + +- Review the publicly available resources prior to submitting a support ticket. We have various resources (online demos, documentation, knowledge base, code library, videos, forums, etc.) with thousands of examples/threads and there is a good chance that the answer to your inquiry/issue is already there. +- Start a support thread for each different issue that you face. This will make things simpler and also, it will be easier for you to track the progress of all your incidents. +- Do not enter support incidents in "Feature requests". +- Before submitting a "Bug report" entry, please make sure that you have provided us with enough information, so that we can reproduce the problem. The more details you send, the easier it will be for us to isolate the problem and resolve it. +- Please do not use “General feedback” to post your technical problems. The purpose of this section is to allow you to send us feedback on our site, our products, and our services. + +> **Note** +> +> After we reproduce a bug or add a feature request to our ToDo list, we will add Telerik points to your account and send out a notification. + + +### Creating a new bug report - guidelines + +Sometimes it is difficult to make a distinction between a support incident and a bug report. However, if you feel that there is a generic problem with any of our products that can be reproduced, you should definitely consider opening a "Bug report". + +While submitting a "Bug report" entry, please make sure you give us as many details as possible. As a start, please provide the steps required to reproduce the error, as well as some information about your environment (OS, .NET framework, browser, and so on). + +Additionally, if you feel that screenshots or some other visual material will help us understand the issue better, please do not hesitate to attach those to the thread. A runnable project that exhibits the problem would be appreciated as well. + +### Starting a new support ticket - guidelines +Telerik strives to constantly improve its services. In order to help us provide you with a quick and accurate response, please follow the guidelines below when submitting a support ticket: + +- Describe your question in detail. Although we are familiar with most of the problems people are having, there is always a chance that you are the first one to report an issue. Sending us as much information as possible will help us identify the source and provide you with a fix or workaround. +- Provide step by step instructions on how to reproduce the error. +- Send us the stack trace of the exception you are receiving (if applicable) +- Attach the source code that generates the exception you are receiving. +- Attach a screenshot of the observed behavior and a screenshot of the expected behavior (if applicable). +- Attach a simple runnable project (zipped, no 3rd party controls), which isolates and demonstrates your problem. + +The zipped project should contain: +- The /bin folder with the respective version of the Telerik assembly (or specify that version exactly without sending the dll itself). +- The ascx/aspx page, together with the codebehind, which reproduces the error. +- A backup of your database (if needed). +- Other necessary resources (classes, css files, etc., if applicable) or specific instructions for your particular case. +- Please, exclude/remove all 3rd party controls. +- The project should run in a test environment without major modifications. + + + ## Test Studio Licensing -

    What license do I get with Test Studio?

    -
    -
    -

    Test Studio is offered with a User License with Subscription and Priority Support which gives a specific machine rights to build, modify and execute tests. Test Studio can be installed on multiple machines as long as it’s only activated on one machine at a time (assuming a single license is purchased). If you need to move the license to another machine, a simple, one-click deactivation will free-up the license so it may be activated on another machine. There is no limit to the number of times this process can be performed and no need to get in touch with us, it just works.

    - The User License with Subscription and Priority Support offers free updates and priority support for 1 year.

    -
    -
    - -

    Do I need a license key to install Test Studio and/or Test Studio Run-Time?

    -
    -
    -

    While technically a license key is indeed required, we take care of this for you. When activating your license of Test Studio with our ‘Automatic Activation’ option – you simply enter your Telerik.com credentials and we will auto-create the license key for you.

    - - Please follow the installation instructions provided in your purchase notification e-mail to successfully activate your license.

    -
    -
    - -

    Can I move my license from one machine to another?

    -
    -
    -

    Yes, you can. Test Studio utilizes a per-machine licensing model. This means your license can be activated multiple times on different machines, but not simultaneously. To swap a license between multiple machines - Install Test Studio on each machine, activate one of those instances with your license and use it. When you want to migrate the license to a different machine, deactivate the current instance. Then activate Test Studio on the other machine. Read more.

    -
    -
    - -

    How many users can work with one Test Studio product license?

    -
    -
    -

    There are no restrictions on the number of users who can work with the same Test Studio or Test Studio Run-Time license as long as the software is used on the licensed machine only and only one user is using the software at any given time. Please note, however, that only 1 user per license will be allowed to access our support system.

    -
    -
    - -

    Am I entitled to free version updates as part of my Test Studio and/or Test Studio Run-Time license?

    -
    -
    -

    Yes, our Test Studio and Test Studio Run-Time licenses come with subscription which entitles you to version updates for 1 year from the purchase date.

    -
    -
    - -

    Can I use the Test Studio and/or Test Studio Run-Time software after my subscription expires?

    -
    -
    -

    Yes. Test Studio and Test Studio Run-Time software does not expire so you can use the version you own indefinitely. If you decide not to renew your subscription you will stop receiving version updates and support.

    -
    -
    - -

    I just need to run tests, which license should I purchase?

    -
    -
    -

    If you just need to run tests, not create or edit them, then you can opt for a Test Studio Run-Time license. This is a low-cost license that was designed to run tests built with Test Studio on machines that do not have a full license of Test Studio installed.

    - - Test Studio Run-Time license can be used on Build Servers (including continuous integration setups) and Test Lab machines where test execution is all that is needed.

    -
    -
    - -

    Is support included with the Test Studio product licenses?

    -
    -
    -

    Test Studio includes a Priority Support Package which guarantees that your support inquiries will be answered within 24h (Mon-Fri).

    - - Our Test Studio Run-Time license complements the Test Studio license and does not include a support package. To access our support engineers, please use the account where your Test Studio license is registered.

    -
    -
    - -

    How is Test Studio Run-Time licensed?

    -
    -
    -

    Test Studio Run-Time license gives a specific machine rights to execute tests created with a full Test Studio license. The Run-Time license does not allow the creation or modification of tests.

    -
    -
    - -

    How long will my support package for Test Studio be valid?

    -
    -
    -

    The support package for Test Studio expires 1 year from the date of your purchase. To receive another year of priority support, you need to renew your subscription. Note that the subscription renewal will also entitle you to another 12 months of product updates. If you decide not to renew your subscription, you will still be able to use the community forum and KB articles, but you will not be able to take advantage of the priority support resources.

    -
    -
    - -

    Do I get source code with the Test Studio product licenses?

    -
    -
    -

    No, source code is not included with Test Studio and Test Studio Run-Time licenses.

    -
    -
    - -

    How does your licensing handle redistribution rights?

    -
    -
    -

    Redistribution rights are not included with Test Studio and Test Studio Run-Time licenses.

    -
    -
    +### What license do I get with Test Studio? + +Test Studio is offered with a User License with Subscription and Priority Support which gives a specific machine rights to build, modify and execute tests. Test Studio can be installed on multiple machines as long as it’s only activated on one machine at a time (assuming a single license is purchased). If you need to move the license to another machine, a simple, one-click deactivation will free-up the license so it may be activated on another machine. There is no limit to the number of times this process can be performed and no need to get in touch with us, it just works. +The User License with Subscription and Priority Support offers free updates and priority support for 1 year. + +### Do I need a license key to install Test Studio and/or Test Studio Run-Time? + +While technically a license key is indeed required, we take care of this for you. When activating your license of Test Studio with our ‘Automatic Activation’ option – you simply enter your Telerik.com credentials and we will auto-create the license key for you. + +Please follow the installation instructions provided in your purchase notification e-mail to successfully activate your license. + +### Can I move my license from one machine to another? + +Yes, you can. Test Studio utilizes a per-machine licensing model. This means your license can be activated multiple times on different machines, but not simultaneously. To swap a license between multiple machines - Install Test Studio on each machine, activate one of those instances with your license and use it. When you want to migrate the license to a different machine, deactivate the current instance. Then activate Test Studio on the other machine. Read more. + +### How many users can work with one Test Studio product license? + +There are no restrictions on the number of users who can work with the same Test Studio or Test Studio Run-Time license as long as the software is used on the licensed machine only and only one user is using the software at any given time. Please note, however, that only 1 user per license will be allowed to access our support system. + +### Am I entitled to free version updates as part of my Test Studio and/or Test Studio Run-Time license? + +Yes, our Test Studio and Test Studio Run-Time licenses come with subscription which entitles you to version updates for 1 year from the purchase date. + +### Can I use the Test Studio and/or Test Studio Run-Time software after my subscription expires? + +Yes. Test Studio and Test Studio Run-Time software does not expire so you can use the version you own indefinitely. If you decide not to renew your subscription you will stop receiving version updates and support. + +### I just need to run tests, which license should I purchase? + +If you just need to run tests, not create or edit them, then you can opt for a Test Studio Run-Time license. This is a low-cost license that was designed to run tests built with Test Studio on machines that do not have a full license of Test Studio installed. + +Test Studio Run-Time license can be used on Build Servers (including continuous integration setups) and Test Lab machines where test execution is all that is needed. + +### Is support included with the Test Studio product licenses? + +Test Studio includes a Priority Support Package which guarantees that your support inquiries will be answered within 24h (Mon-Fri). + +Our Test Studio Run-Time license complements the Test Studio license and does not include a support package. To access our support engineers, please use the account where your Test Studio license is registered. + +### How is Test Studio Run-Time licensed? + +Test Studio Run-Time license gives a specific machine rights to execute tests created with a full Test Studio license. The Run-Time license does not allow the creation or modification of tests. + +### How long will my support package for Test Studio be valid? + +The support package for Test Studio expires 1 year from the date of your purchase. To receive another year of priority support, you need to renew your subscription. Note that the subscription renewal will also entitle you to another 12 months of product updates. If you decide not to renew your subscription, you will still be able to use the community forum and KB articles, but you will not be able to take advantage of the priority support resources. + +### Do I get source code with the Test Studio product licenses? + +No, source code is not included with Test Studio and Test Studio Run-Time licenses. + +### How does your licensing handle redistribution rights? + +Redistribution rights are not included with Test Studio and Test Studio Run-Time licenses. ## Support Plans -

    What does my support package include?

    -
    -
    -

    Your Test Studio license comes with 1 year of subscription and priority support which guarantees you 24 hour response time to your support inquiries (Monday – Friday). Test Studio subscriptions also include access to all product updates released within your subscription period.

    -
    -
    +### What does my support package include? + +Your Test Studio license comes with 1 year of subscription and priority support which guarantees you 24 hour response time to your support inquiries (Monday – Friday). Test Studio subscriptions also include access to all product updates released within your subscription period. + +### Can I submit support inquiries while I’m using the trial version? -

    Can I submit support inquiries while I’m using the trial version?

    -
    -
    -

    During your Test Studio 30-day trial period not only can you take advantage of all available resources and forum posts but you can also submit a ticket to our support team. Please note that trial support inquiries have a 72 hour response time (Monday – Friday), however often times they are answered much quicker. To obtain support, please visit our online ticketing system.

    -
    -
    +During your Test Studio 30-day trial period not only can you take advantage of all available resources and forum posts but you can also submit a ticket to our support team. Please note that trial support inquiries have a 72 hour response time (Monday – Friday), however often times they are answered much quicker. To obtain support, please visit our online ticketing system. ## License Keys +### Do I need a license key to run RadControls? -

    Do I need a license key to install Test Studio / Test Studio Run-Time Edition?

    -
    -
    -

    Yes, our Test Studio licenses work with license keys. Upon purchase your license key will be generated. To activate it you will need to provide your login credentials upon starting the product on your machine. For version 2010.1 or earlier the license keys are available in Your Account -> Download and Manage your products -> Manage Activation Keys (for the respective Test Studio license). To successfully activate your license, please follow the instructions provided in your purchase notification letter. You can also watch our video tutorial for activating your Test Studio license.

    -
    -
    +No, you don’t. None of the RadControls suites (ASP.NET AJAX, Telerik Extensions for ASP.NET MVC, WinForms, Silverlight, WPF, Windows Phone), as well as Telerik Reporting, Telerik OpenAccess ORM, Telerik JustCode and Telerik JustMock utilize license keys. This applies to both, trial and purchased licenses. +### Do I need a license key to install Test Studio / Test Studio Run-Time Edition? +Yes, our Test Studio licenses work with license keys. Upon purchase your license key will be generated. To activate it you will need to provide your login credentials upon starting the product on your machine. For version 2010.1 or earlier the license keys are available in Your Account -> Download and Manage your products -> Manage Activation Keys (for the respective Test Studio license). To successfully activate your license, please follow the instructions provided in your purchase notification letter. You can also watch our video tutorial for activating your Test Studio license. ## Administrative Level Access -

    Does Test Studio Require Administrative Level Access?

    -
    -
    -

    Test Studio features do not require administrative rights to function properly.

    -

    Only certain configuration tasks require to be initiated from Windows Administrator account. Here is a list of these:

    - -
    -
    +### Does Test Studio Require Administrative Level Access? +Test Studio features do not require administrative rights to function properly. +Only certain configuration tasks require to be initiated from Windows Administrator account. Here is a list of these: +- 1. Test Studio installation – initial install, modification of existing installation, uninstall. +- 2. Configuration of the Test Studio Services – Test Studio starts Windows services and registers certain ports to be available for non-admin users. ## Installation -

    I want to just copy the Test Studio DLL's to a new machine instead of running the installer.

    -
    -
    -

    Setting up Test Studio or the Testing Framework so that it is fully functional requires much more than just copying a few DLL's into the right folder. Browser extensions must be installed, registry settings must be made, some DLL's must be added to the Global Assembly Cache. The only way to get it setup properly is to run the installer. Otherwise something won't work right: test project compiles may fail, the recorder may fail to attach, tests may fail to run in a specific browser, if you're trying to use Microsoft Test Manager you may get strange error messages.

    -
    -
    - -

    Can I do an automatic silent install?

    -
    -
    -

    In theory it should be possible. Our installer is a .msi file. You should be able to use Microsoft's MSIEXEC command line tool, with correct command line parameters to do a silent install. DISCLAIMER: we do not officially support this. If you can get it to work then great. If not we're unable to guide you on how to make it work.

    -
    -
    - -

    Can I run my test scripts on a remote machine which does not have Test Studio installed?

    -
    -
    -

    No, Test Studio must be installed on the remote machine in order to be able to run tests on it. You must run the installer for the product you intend to use on the remote machine: -

      -
    • Test Studio Functional
    • -
    • Test Studio Load.
    • -
    • Send us the stack trace of the exception you are receiving (if applicable)
    • -
    • Test Studio Run-Time - this is the most commonly product used on remote machines. It comes with our Scheduler, Storage Service and Execution Server. Everything you need to run Test Studio tests remotely. It is only missing the Test Studio IDE used for opening, creating and editing tests.
    • -
    • Testing Framework
    • -

    -
    -
    +### I want to just copy the Test Studio DLL's to a new machine instead of running the installer. + +Setting up Test Studio or the Testing Framework so that it is fully functional requires much more than just copying a few DLL's into the right folder. Browser extensions must be installed, registry settings must be made, some DLL's must be added to the Global Assembly Cache. The only way to get it setup properly is to run the installer. Otherwise something won't work right: test project compiles may fail, the recorder may fail to attach, tests may fail to run in a specific browser, if you're trying to use Microsoft Test Manager you may get strange error messages. + +### Can I do an automatic silent install? + +In theory it should be possible. Our installer is a .msi file. You should be able to use Microsoft's MSIEXEC command line tool, with correct command line parameters to do a silent install. DISCLAIMER: we do not officially support this. If you can get it to work then great. If not we're unable to guide you on how to make it work. + +### Can I run my test scripts on a remote machine which does not have Test Studio installed? + +No, Test Studio must be installed on the remote machine in order to be able to run tests on it. You must run the installer for the product you intend to use on the remote machine: + +- Test Studio Functional +- Test Studio Load. +- Send us the stack trace of the exception you are receiving (if applicable) +- Test Studio Run-Time - this is the most commonly product used on remote machines. It comes with our Scheduler, Storage Service and Execution Server. Everything you need to run Test Studio tests remotely. It is only missing the Test Studio IDE used for opening, creating and editing tests. +- Testing Framework ## Activation -

    How do I activate Test Studio?

    -
    -
    -

    There are two ways to activate Test Studio:: -

    -
    -
    - -

    My computer does not have an Internet connection. How do I activate Test Studio on it?

    -
    -
    -

    You can use any computer that has an Internet connection and a web browser and follow our Manual Activation process to activate Test Studio on your computer that does not have an Internet connection.

    -
    -
    - -

    Can I transfer my Test Studio license to another machine?

    -
    -
    -

    Yes. Simply follow the Swap License procedure.

    -
    -
    - -

    Is there a limit to the number of times I can transfer my Test Studio license?

    -
    -
    -

    No there is no limit. You can transfer your license between machines as many times as you need to.

    -
    -
    - -

    When I try to activate Test Studio on my machine it tells me there are no free slots available?

    -
    -
    -

    If you purchased 5 licenses for Test Studio, then you can have up to 5 machines in your organization all activated at the same time. When you try to activate a 6th machine you will get this message. You must deactivate one of your other machines before you can activate the new one.

    - There are other reasons that can cause no free activation slots to become available, for example your machine crashed while it was activated, or you want to use Test Studio at home but forgot to deactivate it at work. When this happens you can use the Manage License Keys Page to delete the errant activation freeing up a slot in the process.

    -
    -
    +### How do I activate Test Studio? -## Test Recording +There are two ways to activate Test Studio:: + +- Automatic Activation - for a computer that has an Internet connection. +- Manual Activation - for a computer that does not have an Internet connection. + +### My computer does not have an Internet connection. How do I activate Test Studio on it? + +You can use any computer that has an Internet connection and a web browser and follow our Manual Activation process to activate Test Studio on your computer that does not have an Internet connection. +### Can I transfer my Test Studio license to another machine? +Yes. Simply follow the Swap License procedure. +### Is there a limit to the number of times I can transfer my Test Studio license? -

    Can I automate CAPTCHA?

    -
    -
    -

    Test Studio cannot be used to automate it. CAPTCHA is specifically designed to ensure the response is generated by a person and not a computer.

    The best we can offer in terms of testing phase for an application is as follows: -

      -
    • Whitelist company test IP. Adding your company or test machine’s IP to the trusted list and allow these IP to pass the CAPTCHA.
    • -
    • Turn off the CAPTCHA on the test environment, for example if you have testing, staging, and production.
    • -
    -
    -
    +No there is no limit. You can transfer your license between machines as many times as you need to. + +### When I try to activate Test Studio on my machine it tells me there are no free slots available? + +If you purchased 5 licenses for Test Studio, then you can have up to 5 machines in your organization all activated at the same time. When you try to activate a 6th machine you will get this message. You must deactivate one of your other machines before you can activate the new one. +There are other reasons that can cause no free activation slots to become available, for example your machine crashed while it was activated, or you want to use Test Studio at home but forgot to deactivate it at work. When this happens you can use the Manage License Keys Page to delete the errant activation freeing up a slot in the process. + +## Test Recording + +### Can I automate CAPTCHA? + +Test Studio cannot be used to automate it. CAPTCHA is specifically designed to ensure the response is generated by a person and not a computer.The best we can offer in terms of testing phase for an application is as follows: +- Whitelist company test IP. Adding your company or test machine’s IP to the trusted list and allow these IP to pass the CAPTCHA. +- Turn off the CAPTCHA on the test environment, for example if you have testing, staging, and production. ## Source Control -

    What source control systems does Test Studio support?

    -
    -
    -

    Test Studio has built-in support for Git-based repositories. However you can use other source control systems as well. Since all Test Studio projects are file based, you can use any source control system outside of Test Studio that will check files in and out.

    -
    -
    +### What source control systems does Test Studio support? +Test Studio has built-in support for Git-based repositories. However you can use other source control systems as well. Since all Test Studio projects are file based, you can use any source control system outside of Test Studio that will check files in and out. ## Test Execution +### My selected browser opens but nothing happens. The test script does not start. -

    My selected browser opens but nothing happens. The test script does not start.

    -
    -
    -

    Generate the Test Studio application log and submit a ticket to provide details for the occurence. -

    -
    -
    - -

    Is there a way I can run my tests in different versions of the same browser on the same machine

    -
    -
    -

    No. You can only install one version of the browser on a machine at a time. Test Studio will run the test in whatever version is currently installed. There is no mechanism to instruct Test Studio to run the test in a specific browser version such as IE 8.

    - However you can have multiple different browsers installed on the same machine at the same time. Then Test Studio can run your tests in each of the available browsers, one browser at a time (not concurrently on the same machine). -

    -
    -
    - -

    How do I run my tests in different browser versions?

    -
    -
    -

    To run your tests in multiple versions of the same browser requires you to setup multiple machines. Test Studio can only use the version of the browser that is currently installed on one machine. If you want to do something like run your tests in Chrome v.130, v.131, and v.133 requires you to setup 3 different machines (which can be VM's) each with a different version of Chrome installed on it.

    -
    -
    - -

    How can I create a performance test with N concurrent users?

    -
    -
    -

    A Test Studio Performance test will only do one user at a time. It is not possible create this type of test with more than one user.

    - To stress your web server with multiple users you must create and execute a Test Studio Load test.

    -
    -
    - -

    How do I automate testing of a PDF file?

    -
    -
    -

    Test Studio provides a built-in mechanism to valiate PDF file as part of a web test.

    -
    -
    - -

    Why are compilation errors being thrown by tests that have no relationship with the script that is being run?

    -
    -
    -

    The reason is that the whole project and pages.g.cs/vb is compiled before the run.

    -
    -
    - -

    When I build I get this build error: "Pages.g.cs/vb" was specified more than once in the "Sources" parameter. Duplicate items are not supported by the "Sources" parameter.

    -
    -
    -

    This happens when you add the Test Studio automatically generated file Pages.g.cs/vb to your Visual Studio project. This is unnecessary because our Visual Studio plug-in will automatically include this file in all compiles. By adding it to you Visual Studio project file, it creates duplicate compile references, and hence this error. Simply remove the Pages.g.cs/vb file from your Visual Studio project to fix this build error.

    -
    -
    - - -

    How do I run tests in parallel/How do I run tests in multiple browsers?

    -
    -
    -

    We have a detailed KB article that explains how to do this.

    -
    -
    - -

    How to handle Autocomplete input boxes?

    -
    -
    -

    Autocomplete boxes generally require that SimulateRealTyping is checked when entering text.

    -
    -
    - -

    How to detect JavaScript errors?

    -
    -
    -

    Test Studio provides a built-in mechanism to check for JS errors as part of a web test.

    -
    -
    +Generate the Test Studio application log and submit a ticket to provide details for the occurence. + +### Is there a way I can run my tests in different versions of the same browser on the same machine -## Test List Scheduling +No. You can only install one version of the browser on a machine at a time. Test Studio will run the test in whatever version is currently installed. There is no mechanism to instruct Test Studio to run the test in a specific browser version such as IE 8. +However you can have multiple different browsers installed on the same machine at the same time. Then Test Studio can run your tests in each of the available browsers, one browser at a time (not concurrently on the same machine). + +### How do I run my tests in different browser versions? + +To run your tests in multiple versions of the same browser requires you to setup multiple machines. Test Studio can only use the version of the browser that is currently installed on one machine. If you want to do something like run your tests in Chrome v.130, v.131, and v.133 requires you to setup 3 different machines (which can be VM's) each with a different version of Chrome installed on it. + +### How can I create a performance test with N concurrent users? +A Test Studio Performance test will only do one user at a time. It is not possible create this type of test with more than one user. +To stress your web server with multiple users you must create and execute a Test Studio Load test. +### How do I automate testing of a PDF file? -

    I can see test list results on one machine but not the other.

    -
    -
    -

    Check that all machines are connected to the scheduling server. Projects that are configured to "Run Locally" will only show the results loaded from the local set of result files. It will not show results stored in the scheduling server, even when the local machine is your scheduling server.

    -
    -
    +Test Studio provides a built-in mechanism to valiate PDF file as part of a web test. -

    How to select which browser to run test list in

    -
    -
    -

    Select the test list you want to execute and click on Edit Settings.

    - Under the Web tab select the execution browser. -

    -
    -
    +### Why are compilation errors being thrown by tests that have no relationship with the script that is being run? +The reason is that the whole project and pages.g.cs/vb is compiled before the run. - +Select the test list you want to execute and click on Edit Settings. +Under the Web tab select the execution browser. From f1544447006561929eee8f244efe5caca73c502d Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Thu, 3 Apr 2025 13:40:25 +0300 Subject: [PATCH 24/65] change publish to published --- .../coded-samples/general/open-and-read-pdf-file-wpf-desktop.md | 2 +- docs/automated-tests/source-control/git/branch-management.md | 2 +- docs/automated-tests/source-control/git/connect-to-git.md | 2 +- docs/automated-tests/source-control/git/open-git-project.md | 2 +- docs/features/project-explorer/search-tests.md | 2 +- .../installation-problems-tg/failed-internet-shortcut.md | 2 +- .../installation-problems-tg/vista-installer-error.md | 2 +- .../load-testing-problems-tg/401-in-results.md | 2 +- .../load-testing-problems-tg/cannot-add-scheduling-service.md | 2 +- .../load-testing-problems-tg/cannot-dispatch-load-test.md | 2 +- .../load-testing-problems-tg/duplicate-dynamic-targets.md | 2 +- .../load-testing-problems-tg/load-test-run-quits.md | 2 +- .../load-testing-problems-tg/missing-dynamic-targets.md | 2 +- .../recording-problems-tg/cannot-launch-exploratory.md | 2 +- .../recording-problems-tg/java-flash-activex.md | 2 +- .../recording-problems-tg/recorder-attached.md | 2 +- .../recording-problems-tg/ts-fails-to-start-msedge.md | 2 +- .../scheduling-issues-tg/project-runs-locally-not-remotely.md | 2 +- .../scheduling-issues-tg/run-failure-serialization-exception.md | 2 +- .../scheduling-issues-tg/run-failure-status-500.md | 2 +- .../scheduling-issues-tg/test-from-tfs-dont-run.md | 2 +- .../test-execution-problems-tg/chrome-tg/cannot-execute-test.md | 2 +- .../test-execution-problems-tg/dialog-handling-fails.md | 2 +- .../firefox-tg/extension-not-installed.md | 2 +- .../firefox-tg/https-with-custom-proxy.md | 2 +- .../test-execution-problems-tg/firefox-tg/mcafee-siteadvisor.md | 2 +- .../safari-tg/extension-not-installed.md | 2 +- .../silverlight-wpf-tg/find-element-timeout.md | 2 +- .../silverlight-wpf-tg/target-host-error.md | 2 +- .../silverlight-wpf-tg/window-partial-match.md | 2 +- .../test-execution-problems-tg/unable-to-show-data.md | 2 +- .../visual-studio-tg/cannot-build-project.md | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/advanced-topics/coded-samples/general/open-and-read-pdf-file-wpf-desktop.md b/docs/advanced-topics/coded-samples/general/open-and-read-pdf-file-wpf-desktop.md index b8c99258..21803984 100644 --- a/docs/advanced-topics/coded-samples/general/open-and-read-pdf-file-wpf-desktop.md +++ b/docs/advanced-topics/coded-samples/general/open-and-read-pdf-file-wpf-desktop.md @@ -3,7 +3,7 @@ title: Read Saved PDF File - WPF and Desktop Tests page_title: Read Saved PDF File - WPF and Desktop Tests description: "Open a saved locally PDF file in Test Studio WPF and Desktop Tests and read its content. The tested application creates a PDF file and let's you save it locally on the hard disc. How to open that PDF file and read its content from WPF or Desktop test?" position: 1 -publish: true +published: true --- # Read Saved PDF File diff --git a/docs/automated-tests/source-control/git/branch-management.md b/docs/automated-tests/source-control/git/branch-management.md index 6ab41a07..674072db 100644 --- a/docs/automated-tests/source-control/git/branch-management.md +++ b/docs/automated-tests/source-control/git/branch-management.md @@ -2,7 +2,7 @@ title: Branch Management For Git page_title: Branch Management For Git description: "Test Studio Git integration Branch Management For Git Source Control" -publish: true +published: true position: 4 --- # Branch Management For Git Source Control diff --git a/docs/automated-tests/source-control/git/connect-to-git.md b/docs/automated-tests/source-control/git/connect-to-git.md index ce457813..b73458bf 100644 --- a/docs/automated-tests/source-control/git/connect-to-git.md +++ b/docs/automated-tests/source-control/git/connect-to-git.md @@ -2,7 +2,7 @@ title: Connect Project To Git page_title: Connect Project To Git description: "Connect Test Studio Project To Git Source control repository. Use Personal Access token to connect to Git repo accessed with 2FA (two factor authentication). Unable to connect to Git. Error connecting to Git, too many redirects or authentication replays" -publish: true +published: true position: 2 --- # Connect Project To Git diff --git a/docs/automated-tests/source-control/git/open-git-project.md b/docs/automated-tests/source-control/git/open-git-project.md index ce2af147..e6310e73 100644 --- a/docs/automated-tests/source-control/git/open-git-project.md +++ b/docs/automated-tests/source-control/git/open-git-project.md @@ -2,7 +2,7 @@ title: Open Git Project page_title: Open Git Project description: "Open Test Studio Project To Git Source control repository. Use Personal Access token to connect to Git repo accessed with 2FA (two factor authentication). Unable to connect to Git. Error connecting to Git, too many redirects or authentication replays" -publish: true +published: true position: 1 --- # Open Git Project diff --git a/docs/features/project-explorer/search-tests.md b/docs/features/project-explorer/search-tests.md index 4292b830..2127209c 100644 --- a/docs/features/project-explorer/search-tests.md +++ b/docs/features/project-explorer/search-tests.md @@ -3,7 +3,7 @@ title: Search And Filter Tests page_title: Search And Filter Tests description: "Search for a test in Test Studio. Filter tests containing a key word in Test Studio." previous_url: /features/test-maintenance/search-tests -publish: true +published: true position: 1 --- # Search Project Tests diff --git a/docs/troubleshooting-guide/installation-problems-tg/failed-internet-shortcut.md b/docs/troubleshooting-guide/installation-problems-tg/failed-internet-shortcut.md index d06f3930..5a05ac2a 100644 --- a/docs/troubleshooting-guide/installation-problems-tg/failed-internet-shortcut.md +++ b/docs/troubleshooting-guide/installation-problems-tg/failed-internet-shortcut.md @@ -3,7 +3,7 @@ title: Failed Internet Shortcut page_title: Failed to Create Internet Shortcut description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Failed to Create Internet Shortcut diff --git a/docs/troubleshooting-guide/installation-problems-tg/vista-installer-error.md b/docs/troubleshooting-guide/installation-problems-tg/vista-installer-error.md index 736efb50..74b21e78 100644 --- a/docs/troubleshooting-guide/installation-problems-tg/vista-installer-error.md +++ b/docs/troubleshooting-guide/installation-problems-tg/vista-installer-error.md @@ -3,7 +3,7 @@ title: Vista Installer Error page_title: Vista Installer Problem description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Vista Installer Problem diff --git a/docs/troubleshooting-guide/load-testing-problems-tg/401-in-results.md b/docs/troubleshooting-guide/load-testing-problems-tg/401-in-results.md index 952d0e4e..1f29fd51 100644 --- a/docs/troubleshooting-guide/load-testing-problems-tg/401-in-results.md +++ b/docs/troubleshooting-guide/load-testing-problems-tg/401-in-results.md @@ -3,7 +3,7 @@ title: 401 in Results page_title: 401 in Results description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Error 401 in Results diff --git a/docs/troubleshooting-guide/load-testing-problems-tg/cannot-add-scheduling-service.md b/docs/troubleshooting-guide/load-testing-problems-tg/cannot-add-scheduling-service.md index fe5e75ab..f9883769 100644 --- a/docs/troubleshooting-guide/load-testing-problems-tg/cannot-add-scheduling-service.md +++ b/docs/troubleshooting-guide/load-testing-problems-tg/cannot-add-scheduling-service.md @@ -3,7 +3,7 @@ title: Can't Add Scheduling Service page_title: Can't Add Scheduling Service description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Cannot Add Scheduling Service diff --git a/docs/troubleshooting-guide/load-testing-problems-tg/cannot-dispatch-load-test.md b/docs/troubleshooting-guide/load-testing-problems-tg/cannot-dispatch-load-test.md index 8df57231..dc6ae500 100644 --- a/docs/troubleshooting-guide/load-testing-problems-tg/cannot-dispatch-load-test.md +++ b/docs/troubleshooting-guide/load-testing-problems-tg/cannot-dispatch-load-test.md @@ -3,7 +3,7 @@ title: Cannot Dispatch Load Test page_title: Cannot Dispatch Load Test description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Cannot Dispatch Load Test diff --git a/docs/troubleshooting-guide/load-testing-problems-tg/duplicate-dynamic-targets.md b/docs/troubleshooting-guide/load-testing-problems-tg/duplicate-dynamic-targets.md index dd01ac02..ef1286b4 100644 --- a/docs/troubleshooting-guide/load-testing-problems-tg/duplicate-dynamic-targets.md +++ b/docs/troubleshooting-guide/load-testing-problems-tg/duplicate-dynamic-targets.md @@ -3,7 +3,7 @@ title: Duplicate Dynamic Targets page_title: Duplicate Dynamic Targets description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Duplicate Dynamic Targets diff --git a/docs/troubleshooting-guide/load-testing-problems-tg/load-test-run-quits.md b/docs/troubleshooting-guide/load-testing-problems-tg/load-test-run-quits.md index 72c27f80..0cf80266 100644 --- a/docs/troubleshooting-guide/load-testing-problems-tg/load-test-run-quits.md +++ b/docs/troubleshooting-guide/load-testing-problems-tg/load-test-run-quits.md @@ -3,7 +3,7 @@ title: Load Test Run Quits page_title: Load Test Run Quits description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Load Test Run Quits diff --git a/docs/troubleshooting-guide/load-testing-problems-tg/missing-dynamic-targets.md b/docs/troubleshooting-guide/load-testing-problems-tg/missing-dynamic-targets.md index 28183f6a..675f6920 100644 --- a/docs/troubleshooting-guide/load-testing-problems-tg/missing-dynamic-targets.md +++ b/docs/troubleshooting-guide/load-testing-problems-tg/missing-dynamic-targets.md @@ -3,7 +3,7 @@ title: Missing Dynamic Targets page_title: Missing Dynamic Targets description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Missing Dynamic Targets diff --git a/docs/troubleshooting-guide/recording-problems-tg/cannot-launch-exploratory.md b/docs/troubleshooting-guide/recording-problems-tg/cannot-launch-exploratory.md index 257b7147..73f781cf 100644 --- a/docs/troubleshooting-guide/recording-problems-tg/cannot-launch-exploratory.md +++ b/docs/troubleshooting-guide/recording-problems-tg/cannot-launch-exploratory.md @@ -3,7 +3,7 @@ title: Can't Launch Exploratory Tool page_title: Can't Launch Exploratory Tool description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Cannot Launch Exploratory Tool diff --git a/docs/troubleshooting-guide/recording-problems-tg/java-flash-activex.md b/docs/troubleshooting-guide/recording-problems-tg/java-flash-activex.md index 17b0c801..62feb9b6 100644 --- a/docs/troubleshooting-guide/recording-problems-tg/java-flash-activex.md +++ b/docs/troubleshooting-guide/recording-problems-tg/java-flash-activex.md @@ -3,7 +3,7 @@ title: Java Flash ActiveX page_title: Java Flash ActiveX description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Recording Java Plugins, Flash Objects, ActiveX Controls, and Chrome Frames diff --git a/docs/troubleshooting-guide/recording-problems-tg/recorder-attached.md b/docs/troubleshooting-guide/recording-problems-tg/recorder-attached.md index 4b4979b0..1582d6e8 100644 --- a/docs/troubleshooting-guide/recording-problems-tg/recorder-attached.md +++ b/docs/troubleshooting-guide/recording-problems-tg/recorder-attached.md @@ -3,7 +3,7 @@ title: Recorder Must Be Attached page_title: Silverlight Unable to Attach Recorder description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Silverlight: Unable to Attach Recorder diff --git a/docs/troubleshooting-guide/recording-problems-tg/ts-fails-to-start-msedge.md b/docs/troubleshooting-guide/recording-problems-tg/ts-fails-to-start-msedge.md index ee8f0c53..3d38aedb 100644 --- a/docs/troubleshooting-guide/recording-problems-tg/ts-fails-to-start-msedge.md +++ b/docs/troubleshooting-guide/recording-problems-tg/ts-fails-to-start-msedge.md @@ -3,7 +3,7 @@ title: Test Studio Fails to Start Edge Chromium page_title: Test Studio Fails to Start Microsoft Edge Browser description: "Telerik Test Studio cannot start Microsoft Edge Chromium browser in the mode without browser extension." position: 1 -publish: true +published: true --- # Test Studio Fails to Start Microsoft Edge Browser diff --git a/docs/troubleshooting-guide/scheduling-issues-tg/project-runs-locally-not-remotely.md b/docs/troubleshooting-guide/scheduling-issues-tg/project-runs-locally-not-remotely.md index cdc2832d..561ee917 100644 --- a/docs/troubleshooting-guide/scheduling-issues-tg/project-runs-locally-not-remotely.md +++ b/docs/troubleshooting-guide/scheduling-issues-tg/project-runs-locally-not-remotely.md @@ -3,7 +3,7 @@ title: My Project Runs Locally but Does Not Remotely page_title: My Project Runs Locally but Does Not Remotely description: "Possible issues if My Project Runs Locally but Does Not Remotely via Test Studio Scheduling setup" position: 1 -publish: true +published: true --- # My Project Runs Locally but Does Not Remotely diff --git a/docs/troubleshooting-guide/scheduling-issues-tg/run-failure-serialization-exception.md b/docs/troubleshooting-guide/scheduling-issues-tg/run-failure-serialization-exception.md index 8cbe345e..e43f1d69 100644 --- a/docs/troubleshooting-guide/scheduling-issues-tg/run-failure-serialization-exception.md +++ b/docs/troubleshooting-guide/scheduling-issues-tg/run-failure-serialization-exception.md @@ -3,7 +3,7 @@ title: Run Failure With Serialization Exception page_title: Run failure with SerializationException description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Run failure with SerializationException diff --git a/docs/troubleshooting-guide/scheduling-issues-tg/run-failure-status-500.md b/docs/troubleshooting-guide/scheduling-issues-tg/run-failure-status-500.md index 5a217794..2d704096 100644 --- a/docs/troubleshooting-guide/scheduling-issues-tg/run-failure-status-500.md +++ b/docs/troubleshooting-guide/scheduling-issues-tg/run-failure-status-500.md @@ -3,7 +3,7 @@ title: Run Failure with Status 500 page_title: Run failure with status 500 (Windows XP) description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Run failure with status 500 (Windows XP Only) diff --git a/docs/troubleshooting-guide/scheduling-issues-tg/test-from-tfs-dont-run.md b/docs/troubleshooting-guide/scheduling-issues-tg/test-from-tfs-dont-run.md index 7cd46f33..7b6fd9a3 100644 --- a/docs/troubleshooting-guide/scheduling-issues-tg/test-from-tfs-dont-run.md +++ b/docs/troubleshooting-guide/scheduling-issues-tg/test-from-tfs-dont-run.md @@ -3,7 +3,7 @@ title: Test from TFS Doesn't Run page_title: Test from TFS Doesn't Run description: "Scheduled test via Test Studio Scheduling setup and enabled to get latest from TFS connected project doesn't run on the remote machine. " position: 1 -publish: false +published: false --- # Test from TFS Doesn't Run diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execute-test.md b/docs/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execute-test.md index 977b9e31..25bfed24 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execute-test.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/chrome-tg/cannot-execute-test.md @@ -4,7 +4,7 @@ page_title: Tests Will Not Run in Google Chrome description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." previous_url: /user-guide/troubleshooting_guide/test-execution-problems/chrome/cannot-execute-in-chrome.aspx, /user-guide/troubleshooting_guide/test-execution-problems/chrome/cannot-execute-in-chrome position: 1 -publish: false +published: false --- # Tests Will Not Run in Google Chrome diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/dialog-handling-fails.md b/docs/troubleshooting-guide/test-execution-problems-tg/dialog-handling-fails.md index 51fef213..b7f065c7 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/dialog-handling-fails.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/dialog-handling-fails.md @@ -3,7 +3,7 @@ title: Dialog Handling Fails page_title: Dialog Handling Fails description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Dialog Handling Fails diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/extension-not-installed.md b/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/extension-not-installed.md index 3b287b16..36a9c3a3 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/extension-not-installed.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/extension-not-installed.md @@ -3,7 +3,7 @@ title: Extension Not Installed page_title: Firefox Extension Not Installed description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Firefox Extension Not Installed diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/https-with-custom-proxy.md b/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/https-with-custom-proxy.md index a03e4813..b33a608f 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/https-with-custom-proxy.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/https-with-custom-proxy.md @@ -3,7 +3,7 @@ title: HTTPS with Custom Proxy page_title: Firefox HTTPS Error with Custom Proxy description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Firefox HTTPS Error with Custom Proxy diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/mcafee-siteadvisor.md b/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/mcafee-siteadvisor.md index 99cbb198..a2b8697a 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/mcafee-siteadvisor.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/firefox-tg/mcafee-siteadvisor.md @@ -3,7 +3,7 @@ title: McAfee SiteAdvisor blocks execution page_title: McAfee SiteAdvisor blocks execution description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # McAfee SiteAdvisor blocks execution diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/safari-tg/extension-not-installed.md b/docs/troubleshooting-guide/test-execution-problems-tg/safari-tg/extension-not-installed.md index 422f9a2e..31e251de 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/safari-tg/extension-not-installed.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/safari-tg/extension-not-installed.md @@ -3,7 +3,7 @@ title: Extension Not Installed page_title: Safari Extension Not Installed description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Safari Extension Not Installed diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/find-element-timeout.md b/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/find-element-timeout.md index 89040915..c810179e 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/find-element-timeout.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/find-element-timeout.md @@ -3,7 +3,7 @@ title: Find Element Timeout page_title: Find Element Timeout description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Find Element Timeout diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/target-host-error.md b/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/target-host-error.md index f3c85328..60226dd0 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/target-host-error.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/target-host-error.md @@ -3,7 +3,7 @@ title: Target Host Error page_title: Unable to Find the Target Host description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Unable to Find the Target Host diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match.md b/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match.md index cc4def1e..df22d376 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/silverlight-wpf-tg/window-partial-match.md @@ -3,7 +3,7 @@ title: Window Partial Match page_title: How to Indicate a Partial Match for WPF Window Name description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # How to Indicate a Partial Match for WPF Window Name diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-show-data.md b/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-show-data.md index 2b19a794..d170daa6 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-show-data.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/unable-to-show-data.md @@ -3,7 +3,7 @@ title: Unable to Show Data Tables In Excel Data Source page_title: Unable to Show Data Data Tables in Excel Data Source description: "Test Studio data driven test throws an error Test Studio data bound test cannot bind excel file cannot select the sheets from the bound excel file error: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine" position: 1 -publish: false +published: false --- # Unable to Show Data Tables in Excel Data Source diff --git a/docs/troubleshooting-guide/visual-studio-tg/cannot-build-project.md b/docs/troubleshooting-guide/visual-studio-tg/cannot-build-project.md index 69634c48..e50a20a5 100644 --- a/docs/troubleshooting-guide/visual-studio-tg/cannot-build-project.md +++ b/docs/troubleshooting-guide/visual-studio-tg/cannot-build-project.md @@ -3,7 +3,7 @@ title: Cannot Build Project After version 2015.3.1202 page_title: Cannot Build Project After version 2015.3.1202 description: "Test Studio is an innovative and easy-to-use automated web, WPF and load testing solution. Test Studio tests support essential technologies like ASP.NET AJAX, Silverlight, PHP and MVC. HTML5, Testing framework, functional testing, performance testing, load testing, exploratory testing, manual testing." position: 1 -publish: false +published: false --- # Cannot build projects in Visual Studio after upgrading to 2015.3.1202 version and higher From fd9410135689d71aa3121fd80c7df75a5abbb7b4 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Thu, 3 Apr 2025 17:50:36 +0300 Subject: [PATCH 25/65] fix code block markdown --- .../open-and-read-pdf-file-wpf-desktop.md | 128 +++++----- .../coded-samples/html/add-tag-to-iframe.md | 26 +-- docs/automated-tests/elements/frames.md | 14 +- .../integration/quality-center/integration.md | 14 +- .../features/test-runners/artoftest-runner.md | 19 +- .../data-driven-testing-kb/sql-random-row.md | 12 +- .../login-issues-telerik-website.md | 4 +- .../scheduling-kb/configure-reverse-proxy.md | 220 +++++++++--------- .../test-list-execution-stops-unexpectedly.md | 10 +- .../frequently-asked-questions.md | 2 +- .../finding-page-elements.md | 40 ++-- .../settings-class.md | 58 ++--- ...ce-control-lockout-issue-in-test-studio.md | 4 +- .../download-dialog-access-denied.md | 4 +- .../single-coded-step.md | 4 +- 15 files changed, 279 insertions(+), 280 deletions(-) diff --git a/docs/advanced-topics/coded-samples/general/open-and-read-pdf-file-wpf-desktop.md b/docs/advanced-topics/coded-samples/general/open-and-read-pdf-file-wpf-desktop.md index 21803984..2f431947 100644 --- a/docs/advanced-topics/coded-samples/general/open-and-read-pdf-file-wpf-desktop.md +++ b/docs/advanced-topics/coded-samples/general/open-and-read-pdf-file-wpf-desktop.md @@ -23,75 +23,75 @@ The described approach using a 3rd party and open source dll is applicable for W 3. Create a coded step in your test and add the following *usings*, or *Imports* for VB.Net, on top: - ```C# - using iTextSharp.text.pdf; - using iTextSharp.text.pdf.parser; - using System.IO; - ``` - ```VB - Imports iTextSharp.text.pdf - Imports iTextSharp.text.pdf.parser - Imports System.IO - ``` +````C# +using iTextSharp.text.pdf; +using iTextSharp.text.pdf.parser; +using System.IO; +```` +````VB +Imports iTextSharp.text.pdf +Imports iTextSharp.text.pdf.parser +Imports System.IO +```` 4. The below snippet opens a PDF file, which is stored locally on the disc, then reads and outputs its content to the test execution log file. The sample uses C# StringBuidler Class to append the text from the PDF file. - ```C# - // Define the name of the file to open - string fileName = "C:\\pathToYourPDF\\PDFName.pdf"; +````C# +// Define the name of the file to open +string fileName = "C:\\pathToYourPDF\\PDFName.pdf"; - // Define the file to store the read from PDF content - StringBuilder text = new StringBuilder(); +// Define the file to store the read from PDF content +StringBuilder text = new StringBuilder(); - // Verify if the PDF file exists and open it - if (File.Exists(fileName)) - { - // Initilize the pdfReader - PdfReader pdfReader = new PdfReader(fileName); - - // Go through the pages of the PDF file, read its content and append it - for (int page = 1; page <= pdfReader.NumberOfPages; page++) - { - ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); - string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); - - currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); - text.Append(currentText); - } +// Verify if the PDF file exists and open it +if (File.Exists(fileName)) + { + // Initilize the pdfReader + PdfReader pdfReader = new PdfReader(fileName); - // Output the collected text in the test execution log file - Log.WriteLine(text.ToString()); + // Go through the pages of the PDF file, read its content and append it + for (int page = 1; page <= pdfReader.NumberOfPages; page++) + { + ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); + string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); - // Close the pdfReader - pdfReader.Close(); + currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); + text.Append(currentText); } - ``` - ```VB - ' Define the name of the file to open - Dim fileName AsString = "folder\\pdfFileName.pdf" - - ' Define the file to store the read from PDF content - Dim text AsNew StringBuilder() - - ' Verify if the PDF file exists and open it - If File.Exists(fileName) - Then - ' Initilize the pdfReader - Dim pdfReader AsNew PdfReader(fileName) - - ' Go through the pages of the PDF file, read its content and append it - For page AsInteger = 1 To pdfReader.NumberOfPages - - Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy() - Dim currentText AsString = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy) - - currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.[Default], Encoding.UTF8, Encoding.[Default].GetBytes(currentText))) - text.Append(currentText) - Next - ' Output the collected text in the test execution log file - Log.WriteLine(text.ToString()) - - ' Close the pdfReader - pdfReader.Close() - EndIf - ``` + + // Output the collected text in the test execution log file + Log.WriteLine(text.ToString()); + + // Close the pdfReader + pdfReader.Close(); + } +```` +````VB +' Define the name of the file to open +Dim fileName AsString = "folder\\pdfFileName.pdf" + +' Define the file to store the read from PDF content +Dim text AsNew StringBuilder() + +' Verify if the PDF file exists and open it +If File.Exists(fileName) + Then + ' Initilize the pdfReader + Dim pdfReader AsNew PdfReader(fileName) + + ' Go through the pages of the PDF file, read its content and append it + For page AsInteger = 1 To pdfReader.NumberOfPages + + Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy() + Dim currentText AsString = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy) + + currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.[Default], Encoding.UTF8, Encoding.[Default].GetBytes(currentText))) + text.Append(currentText) + Next + ' Output the collected text in the test execution log file + Log.WriteLine(text.ToString()) + + ' Close the pdfReader + pdfReader.Close() +EndIf +```` diff --git a/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md b/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md index bb88508f..718a7ca5 100644 --- a/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md +++ b/docs/advanced-topics/coded-samples/html/add-tag-to-iframe.md @@ -27,23 +27,23 @@ If it is not possible to add custom tags to your iframes, you can add them at ru 1. Add the following using directive to your code-behind file: - ```C# - using ArtOfTest.WebAii.Design.Extensions; - ``` +````C# +using ArtOfTest.WebAii.Design.Extensions; +```` 2. Call the **myFrame()** method on the frame object in a coded step. For example: - ```C# - [CodedStep(@"Tag Frame with 'MyCustomTag'")] - public void WebTest1_CodedStep() +````C# +[CodedStep(@"Tag Frame with 'MyCustomTag'")] +public void WebTest1_CodedStep() +{ + Browser myFrame = this.ActiveBrowser.Frames[0] as Browser; + if (myFrame != null ) { - Browser myFrame = this.ActiveBrowser.Frames[0] as Browser; - if (myFrame != null ) - { - myFrame.TagFrame("MyCustomTag"); - } - } - ``` + myFrame.TagFrame("MyCustomTag"); + } +} +```` To tag a nested iframe, ensure the entire DOM is built, so that Test Studio can access the iframes. For example: diff --git a/docs/automated-tests/elements/frames.md b/docs/automated-tests/elements/frames.md index 615722b2..36750c5c 100644 --- a/docs/automated-tests/elements/frames.md +++ b/docs/automated-tests/elements/frames.md @@ -49,13 +49,13 @@ These are frames, which have different __FrameInfo__ properties each time when t This usually happens when any of the frame properties are dynamic and don't match next time when the page and frame are loaded. There is an error message listed in the test execution log: - ``` - Unable to find the target host (Browser/SilverlightApp) to locate an element. Failure: Waiting for frame '[Frame:id=<>,name=<>,src=<>,UseQuery:False]' timed out. - Error: Wait for condition has timed out - InnerException: - System.Exception: Unable to find the target host (Browser/SilverlightApp) to locate an element. - Failure: Waiting for frame '[Frame:id=<>,name=<>,src=<>,UseQuery:False]' timed out. Error: Wait for condition has timed out - ``` +```` +Unable to find the target host (Browser/SilverlightApp) to locate an element. Failure: Waiting for frame '[Frame:id=<>,name=<>,src=<>,UseQuery:False]' timed out. +Error: Wait for condition has timed out + InnerException: +System.Exception: Unable to find the target host (Browser/SilverlightApp) to locate an element. +Failure: Waiting for frame '[Frame:id=<>,name=<>,src=<>,UseQuery:False]' timed out. Error: Wait for condition has timed out +```` * ___How can the dynamic frame be identified for each test run?___ diff --git a/docs/features/integration/quality-center/integration.md b/docs/features/integration/quality-center/integration.md index 8beab15b..435d8db5 100644 --- a/docs/features/integration/quality-center/integration.md +++ b/docs/features/integration/quality-center/integration.md @@ -56,13 +56,13 @@ Open a File Explorer and navigate to the Test Studio installation _Bin_ sub-fold 1. Open the file with a text editor (like Notepad++). 1. In the _appSettings_ section add a key _ShowQCPlugin_ and set its value to true. See example below. - ``` - - - - - - ``` +```` + + + + + +```` 1. Restart Test Studio and the QC button will be back in the _Project Ribbon_. diff --git a/docs/features/test-runners/artoftest-runner.md b/docs/features/test-runners/artoftest-runner.md index 80d5744b..8223b2b1 100644 --- a/docs/features/test-runners/artoftest-runner.md +++ b/docs/features/test-runners/artoftest-runner.md @@ -149,7 +149,7 @@ Use either the `xml`, or the `html` option to output the result into the corresp >"C:\Program Files (x86)\Progress\Test Studio\Bin\ArtOfTest.Runner.exe" list="D:\Test Studio Projects\July2024\TestLists\demoList-ArtOfTest.aiilist" xml -``` +```` ![Run test list outputting the results in xml format][9] @@ -306,7 +306,6 @@ Below is an example of a complete JSON setting file that contains all of Telerik "WebSettings": null, "PropertyBag": null } - ```` > __Tip__ @@ -367,28 +366,28 @@ padding: 8px; CodeTitleSummary - **0**RUN_TESTS_SUCCESS Run is processed and all tests passed. + 0RUN_TESTS_SUCCESS Run is processed and all tests passed. - **1**RUN_TESTS_ERRORRun is processed and some tests failed. + 1RUN_TESTS_ERRORRun is processed and some tests failed. - **2**NOT_RUN_UNEXPECTED_ERRORRun is not processed due to unexpected error. + 2NOT_RUN_UNEXPECTED_ERRORRun is not processed due to unexpected error. - **3**NOT_RUN_COMPILATION_ERRORRun is not processed due to compilation errors. + 3NOT_RUN_COMPILATION_ERRORRun is not processed due to compilation errors. - **10**NOT_RUN_USAGE_INFONo run to process, requested usage info. + 10NOT_RUN_USAGE_INFONo run to process, requested usage info. - **11**NOT_RUN_INVALID_COMMAND_ARGSNo run to process due to general invalid arguments error. + 11NOT_RUN_INVALID_COMMAND_ARGSNo run to process due to general invalid arguments error. - **12**NOT_RUN_TEST_NOT_FOUNDRun is not processed due to invalid test path argument. + 12NOT_RUN_TEST_NOT_FOUNDRun is not processed due to invalid test path argument. - **13**NOT_RUN_TESTLIST_NOT_FOUNDRun is not processed due to invalid test list path argument. + 13NOT_RUN_TESTLIST_NOT_FOUNDRun is not processed due to invalid test list path argument. diff --git a/docs/knowledge-base/data-driven-testing-kb/sql-random-row.md b/docs/knowledge-base/data-driven-testing-kb/sql-random-row.md index 692a4ca7..0ae0487f 100644 --- a/docs/knowledge-base/data-driven-testing-kb/sql-random-row.md +++ b/docs/knowledge-base/data-driven-testing-kb/sql-random-row.md @@ -23,12 +23,12 @@ This is possible with T-SQL. Here's how to do it: 3. Check **Use T-SQL**. Enter the following code into the **T-SQL Editor** section and click **Update**: - ```SQL - SELECT TOP 1 [Name], [City], [Email], [Message] - FROM [myDataBase].[dbo].[table] - Where Email Like '%domain%' - ORDER By NEWID() - ``` +````SQL +SELECT TOP 1 [Name], [City], [Email], [Message] +FROM [myDataBase].[dbo].[table] +Where Email Like '%domain%' +ORDER By NEWID() +```` * Line 1 indicates how many rows and which columns to use. * Line 2 indicates the database and table name. diff --git a/docs/knowledge-base/login-issues-telerik-website.md b/docs/knowledge-base/login-issues-telerik-website.md index 652917a7..6c960b6a 100644 --- a/docs/knowledge-base/login-issues-telerik-website.md +++ b/docs/knowledge-base/login-issues-telerik-website.md @@ -14,9 +14,9 @@ position: 19 When attempting to sign into the Telerik website errors may appear in the browser console due to the CloudFlare verification. The error in the browser is as follows: -```HTML +````HTML Oops! We couldn't verify you're human. Please try a different browser or contact us for assistance. -``` +```` ![Login error](/img/knowledge-base/telerik-login-kb/fig1.png) diff --git a/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md b/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md index fbb45a19..1a5821d4 100644 --- a/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md +++ b/docs/knowledge-base/scheduling-kb/configure-reverse-proxy.md @@ -51,64 +51,64 @@ where you need add the information for which you get prompted. This includes `Co 3. Create a _ts-server.ext_ file with the following content: - ``` - authorityKeyIdentifier=keyid,issuer - basicConstraints=CA:FALSE - keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment - subjectAltName = @alt_names - - [alt_names] - DNS.0 = ProxyMachineName - DNS.1 = ProxyMachineName.companyDomain.com - IP.0 = xxx.xxx.xx.x - ``` +```` +authorityKeyIdentifier=keyid,issuer +basicConstraints=CA:FALSE +keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment +subjectAltName = @alt_names + +[alt_names] +DNS.0 = ProxyMachineName +DNS.1 = ProxyMachineName.companyDomain.com +IP.0 = xxx.xxx.xx.x +```` where DNS.0 and DNS.1 hold the machine host name and the full qualified domain name for the machine which hosts the proxy server. IP.0 is the IP address of the proxy server machine in the network from which it will be accessed remotely. 4. Enter the following command in the console: -````openssl x509 -passin pass:"1234" -req -in ts-server.csr -CA ts-CA-cert.pem -CAkey ts-CA-key.pem -CAcreateserial -out ts-server.crt -days 1825 -sha256 -extfile ts-server.ext``` +````openssl x509 -passin pass:"1234" -req -in ts-server.csr -CA ts-CA-cert.pem -CAkey ts-CA-key.pem -CAcreateserial -out ts-server.crt -days 1825 -sha256 -extfile ts-server.ext```` 5. Create a _ts-server.pass_ file which contains the pass phrase for _ts-server.key_. This is _1234_ for this example. ### Create Client Certificate 1. Enter the following command in the console: -````openssl genrsa -aes256 -out ts-client.key -passout pass:"1234" 2048``` +````openssl genrsa -aes256 -out ts-client.key -passout pass:"1234" 2048```` where you need to replace _1234_ with a suitable password. 2. Enter the following command in the console: -````openssl req -passin pass:"1234" -new -key ts-client.key -out ts-client.csr``` +````openssl req -passin pass:"1234" -new -key ts-client.key -out ts-client.csr```` where you need add the information for which you get prompted. This includes `Common Name` and we recommend using the machine domain name. For the purpose of this example we use __ProxyMachineName__ as Common Name. 3. Create a _ts-client.ext_ file with the following content: - ``` - authorityKeyIdentifier=keyid,issuer - subjectKeyIdentifier = hash - basicConstraints=CA:FALSE - nsCertType = client, email - nsComment = "Test Studio Client Certificate" - keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment - extendedKeyUsage = clientAuth, emailProtection - subjectAltName = @alt_names - - [alt_names] - DNS.0 = ProxyMachineName - DNS.1 = ProxyMachineName.companyDomain.com - IP.0 = xxx.xxx.xx.x - ``` +```` +authorityKeyIdentifier=keyid,issuer +subjectKeyIdentifier = hash +basicConstraints=CA:FALSE +nsCertType = client, email +nsComment = "Test Studio Client Certificate" +keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment +extendedKeyUsage = clientAuth, emailProtection +subjectAltName = @alt_names + +[alt_names] +DNS.0 = ProxyMachineName +DNS.1 = ProxyMachineName.companyDomain.com +IP.0 = xxx.xxx.xx.x +```` where DNS.0 and DNS.1 hold the machine host name and the full qualified domain name for the machine which hosts the proxy server. IP.0 is the IP address of the proxy server machine in the network from which it will be accessed remotely. 4. Enter the following command in the console: -````openssl x509 -passin pass:"1234" -req -in ts-client.csr -CA ts-CA-cert.pem -CAkey ts-CA-key.pem -CAcreateserial -out ts-client.crt -days 1825 -sha256 -extfile ts-client.ext``` +````openssl x509 -passin pass:"1234" -req -in ts-client.csr -CA ts-CA-cert.pem -CAkey ts-CA-key.pem -CAcreateserial -out ts-client.crt -days 1825 -sha256 -extfile ts-client.ext```` 5. Enter the following command in the console: ````cat ts-client.key ts-client.crt ts-CA-cert.pem > ts-client.pem``` -6. Enter the following command in the console: -````openssl pkcs12 -passin pass:"1234" -export -out ts-client.pfx -inkey ts-client.key -in ts-client.pem -certfile ts-CA-cert.pem -passout pass:"1234"``` +6. Enter the following command in the console: ` +````openssl pkcs12 -passin pass:"1234" -export -out ts-client.pfx -inkey ts-client.key -in ts-client.pem -certfile ts-CA-cert.pem -passout pass:"1234"```` where you need to replace _1234_ with a suitable password. @@ -128,96 +128,96 @@ For this example we use nginx for Windows. As an alternative you can use any typ 2. Configure nginx by changing the contents of the nginx.conf file located in the conf folder. Be sure to __replace "c:/ts-certs/" with the folder where your CA and Server certificates are located__. - ``` - #user nobody; - worker_processes 1; +```` +#user nobody; +worker_processes 1; - pid logs/nginx.pid; +pid logs/nginx.pid; - events { - worker_connections 1024; - } +events { + worker_connections 1024; +} - http { - include mime.types; - default_type application/octet-stream; +http { + include mime.types; + default_type application/octet-stream; - # Enable large body size due to application specifics - client_max_body_size 0; + # Enable large body size due to application specifics + client_max_body_size 0; - keepalive_timeout 65; + keepalive_timeout 65; - # Add server certificate to enable TLS - # Replace the folder location with the one where you store the certificates - ssl_certificate c:/ts-certs/Server/ts-server.crt; - ssl_certificate_key c:/ts-certs/Server/ts-server.key; - ssl_password_file c:/ts-certs/Server/ts-server.pass; + # Add server certificate to enable TLS + # Replace the folder location with the one where you store the certificates + ssl_certificate c:/ts-certs/Server/ts-server.crt; + ssl_certificate_key c:/ts-certs/Server/ts-server.key; + ssl_password_file c:/ts-certs/Server/ts-server.pass; - # Enable client certificate verification and specify the CA certificate used to issue the client certificate - # Replace the folder location with the one where you store the certificates - ssl_verify_client on; - ssl_client_certificate c:/ts-certs/CA/ts-CA-cert.pem; + # Enable client certificate verification and specify the CA certificate used to issue the client certificate + # Replace the folder location with the one where you store the certificates + ssl_verify_client on; + ssl_client_certificate c:/ts-certs/CA/ts-CA-cert.pem; - # HTTPS server - # Ensure to keep the headers exactly as listed in the example below - server { - listen 9009 ssl default_server; - server_name localhost; + # HTTPS server + # Ensure to keep the headers exactly as listed in the example below + server { + listen 9009 ssl default_server; + server_name localhost; - #ssl_session_cache shared:SSL:1m; - #ssl_session_timeout 5m; + #ssl_session_cache shared:SSL:1m; + #ssl_session_timeout 5m; - ssl_ciphers HIGH:!aNULL:!MD5; - ssl_prefer_server_ciphers on; - - # Proxy calls to Test Studio Scheduling service - # This configuration is meant for the setup when Scheduling service and Proxy server are on the same machine - # If the proxy server is separate machine, replace localhost with the Scheduling machine host name - - location / { - proxy_pass http://localhost:8009; - proxy_pass_request_headers on; - proxy_set_header TS-Original-Request-Uri $scheme://$host:$server_port$request_uri; - } - - # Proxy calls to Test Studio Storage service - # This configuration is meant for the setup when Scheduling service and Proxy server are on the same machine - # If the proxy server is separate machine, replace localhost with the Scheduling machine host name - - location /v1 { - proxy_pass http://localhost:8492; - proxy_pass_request_headers on; - proxy_set_header TS-Original-Request-Uri $scheme://$host:$server_port$request_uri; - } - - # Proxy calls to Test Studio Executive Dashboard service - # This configuration is meant for the setup when Scheduling service and Proxy server are on the same machine - # If the proxy server is separate machine, replace localhost with the Scheduling machine host name - # Executive Dashboard can be then accessed on address https://proxyMachineName:9009/ed - - location /ed/ { - proxy_pass http://localhost:8085/; - proxy_pass_request_headers on; - - sub_filter_types application/javascript; - sub_filter 'href="/' 'href="/ed/'; - sub_filter 'src="/' 'src="/ed/'; - sub_filter '/assets/' '/ed/assets/'; - sub_filter '+"/api"' '+"/ed/api"'; - sub_filter_once off; - } + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + + # Proxy calls to Test Studio Scheduling service + # This configuration is meant for the setup when Scheduling service and Proxy server are on the same machine + # If the proxy server is separate machine, replace localhost with the Scheduling machine host name + + location / { + proxy_pass http://localhost:8009; + proxy_pass_request_headers on; + proxy_set_header TS-Original-Request-Uri $scheme://$host:$server_port$request_uri; + } + + # Proxy calls to Test Studio Storage service + # This configuration is meant for the setup when Scheduling service and Proxy server are on the same machine + # If the proxy server is separate machine, replace localhost with the Scheduling machine host name + + location /v1 { + proxy_pass http://localhost:8492; + proxy_pass_request_headers on; + proxy_set_header TS-Original-Request-Uri $scheme://$host:$server_port$request_uri; + } + + # Proxy calls to Test Studio Executive Dashboard service + # This configuration is meant for the setup when Scheduling service and Proxy server are on the same machine + # If the proxy server is separate machine, replace localhost with the Scheduling machine host name + # Executive Dashboard can be then accessed on address https://proxyMachineName:9009/ed + + location /ed/ { + proxy_pass http://localhost:8085/; + proxy_pass_request_headers on; - # Proxy call to test studio runner. Important this endpoint should use this convention /runner/{machineName} - # Substitute {machineName} with the name of the machine where the runner is located - # All Execution machines need to be listed as below with their host names - - location /runner/{machineName}/ { - proxy_pass http://localhost:55555/; - proxy_pass_request_headers on; - proxy_set_header TS-Original-Request-Uri $scheme://$host:$server_port$request_uri; - } + sub_filter_types application/javascript; + sub_filter 'href="/' 'href="/ed/'; + sub_filter 'src="/' 'src="/ed/'; + sub_filter '/assets/' '/ed/assets/'; + sub_filter '+"/api"' '+"/ed/api"'; + sub_filter_once off; + } + + # Proxy call to test studio runner. Important this endpoint should use this convention /runner/{machineName} + # Substitute {machineName} with the name of the machine where the runner is located + # All Execution machines need to be listed as below with their host names + + location /runner/{machineName}/ { + proxy_pass http://localhost:55555/; + proxy_pass_request_headers on; + proxy_set_header TS-Original-Request-Uri $scheme://$host:$server_port$request_uri; } } - ``` +} +```` 3. Start nginx by navigating to its folder in cmd window and run __"start nginx"__. You can reload the server via __"nginx -s reload"__ or stop it with __"nginx -s quit"__. \ No newline at end of file diff --git a/docs/knowledge-base/test-execution-kb/test-list-execution-stops-unexpectedly.md b/docs/knowledge-base/test-execution-kb/test-list-execution-stops-unexpectedly.md index 1b9f1bd8..a3ab8325 100644 --- a/docs/knowledge-base/test-execution-kb/test-list-execution-stops-unexpectedly.md +++ b/docs/knowledge-base/test-execution-kb/test-list-execution-stops-unexpectedly.md @@ -30,11 +30,11 @@ To identify and resolve the issue with the Test List execution stopping unexpect 3. Once the execution stops unexpectedly, review the generated application log. Look for entries similar to the following error message: - ``` - [Error] LoadTest: Unable to find test at 'C:\Test Studio\ProjectFolder\SubFolder\Test1.tstest'! - .... - CommandLineTestListRunner.RunnerProcess_Exited() : Runner process exit code: 12 - NOT_RUN_TEST_NOT_FOUND. - ``` +```` +[Error] LoadTest: Unable to find test at 'C:\Test Studio\ProjectFolder\SubFolder\Test1.tstest'! +.... +CommandLineTestListRunner.RunnerProcess_Exited() : Runner process exit code: 12 - NOT_RUN_TEST_NOT_FOUND. +```` 4. This error indicates that a test referenced in the Test List (`Test1.tstest`) is missing from the specified location in the project. diff --git a/docs/testing-framework/frequently-asked-questions.md b/docs/testing-framework/frequently-asked-questions.md index eb62aa68..150824fd 100644 --- a/docs/testing-framework/frequently-asked-questions.md +++ b/docs/testing-framework/frequently-asked-questions.md @@ -75,6 +75,6 @@ System.Configuration.ConfigurationErrorsException: System.Configuration.Configur
    Lower Level Text
    -``` +```` *In this example TextContent is the string "Same Level Text". InnerText is the string "Same Level TextForemenLower Level Text". You can probably use InnerText in your code in place of TextContent and be just fine.* \ No newline at end of file diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md index 750352b3..954e514f 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md @@ -23,7 +23,7 @@ The following identification methods are supported: MethodsDescriptionExample - **Find.ById()** + Find.ById() Searches for an element contained in a markup document using its set 'id' attribute. When the desired 'id' matches an element's id, the element is returned - identical to getElementById @@ -34,7 +34,7 @@ Element e = Find.ById("input1"); - **Find.ByName()** + Find.ByName() Searches for an element contained in a markup document using its set 'name' attribute. When the desired 'name' matches an element's name, the element is returned @@ -45,8 +45,8 @@ Element e = Find.ByName("goButton") - **Find.ByImage()**
    - **Find.AllByImage()** + Find.ByImage()
    + Find.AllByImage() Searches for an element or 'All' elements that look like a predefined image @@ -61,7 +61,7 @@ HtmlButton btn1 = elementImg1.As(); - **Find.ByTagIndex()** + Find.ByTagIndex() Searches for an element using its tag name occurrence index. Finds the element at the specified occurrence index and returns it. This method uses zero based indexing. @@ -72,8 +72,8 @@ Element table = Find.ByTagIndex("table", 2); - **Find.ByAttributes()**
    - **Find.AllByAttributes()** + Find.ByAttributes()
    + Find.AllByAttributes() Searches for an element or 'All' elements using an 'exact' or 'partial' list of attribute values (You can specify 1-N attribute/value pairs). When all attribute values match, the element or collection of elements is returned. @@ -89,8 +89,8 @@ IList allbtns = Find.AllByAttributes("class=myclass", "src=~foo.gif"); - **Find.ByContent()**
    - **Find.AllByContent()** + Find.ByContent()
    + Find.AllByContent() Searches for an element or 'All' elements using 'exact', 'partial' or 'regex' of the element content. The element content can be: InnerText, InnerMarkup, OuterMarkup, TextContent (default), StartTagContent. @@ -123,8 +123,8 @@ IList alle = Find.AllByContent("p:car") - **Find.ByExpression()**
    - **Find.AllByExpression()** + Find.ByExpression()
    + Find.AllByExpression() Searches for an element or 'All' elements matching an HtmlFindExpression. The HtmlFindExpression cannot use any type of hierarchical expressions including tag index path expressions, HTML path expressions, and XPath expressions. @@ -137,8 +137,8 @@ IList allSams = Find.AllByExpression(expr); - **Find.ByXPath()**
    - **Find.AllByXPath()** + Find.ByXPath()
    + Find.AllByXPath() Searches for an element or 'All' elements using an XPath expression. WebAii supports the .NET Framework XPath implementation. @@ -151,8 +151,8 @@ IList allDivs = Find.AllByXPath("/descendant::node()[starts-with(@id,'d - **Find.ByCssSelector()**
    - **Find.AllByCssSelector()** + Find.ByCssSelector()
    + Find.AllByCssSelector() Searches for an element or 'All' elements using a css selector query. @@ -165,7 +165,7 @@ IList allLinks = Find.AllByCssSelector("a"); - **Find.AllByTagName()** + Find.AllByTagName() Searches for 'All' elements with the specified tag name and returns it as a list of elements. @@ -176,7 +176,7 @@ IList allimg = Find.AllByTagName("img"); - **Find.ByNodeIndexPath()** + Find.ByNodeIndexPath() Searches for an element using dom tree node index paths. This identification is done using an xpath like approach that simply describes the hierarchy path to a specific element using the node index within the hierarchy without having to specify the tag name at each level. This identification method can be chosen in cases where a segment of the DomTree hierarchy at a specific location is consistent but element type changes. For example, if an element you are trying to target is the direct child of another element that fluctuates between a span and div, you can choose this identification method to provide a consistent way to identify that element. @@ -206,7 +206,7 @@ Element target = Find.ByNodeIndexPath("0/2/0/1"); - **Find.FromCollection()** + Find.FromCollection() Finds all elements with the FindParams in the passed in collection. @@ -217,8 +217,8 @@ return this.FromCollection(col); - **Find.ByCustom()**
    - **Find.AllByCustom()** + Find.ByCustom()
    + Find.AllByCustom() Searches for an element or 'All' elements using a custom predicate. diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md index 0341b41f..b17a54ed 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/settings-and-configuration-wtc/settings-class.md @@ -29,7 +29,7 @@ mySettings.ClientReadyTimeout = 60000; // Use my Settings object to construct my Manager object Manager myManager = new Manager(mySettings); -``` +```` ````VB ' Create my own Settings object and then modify the defaults Dim mySettings As New Settings() @@ -114,45 +114,45 @@ This table lists all of the WebAii framework settings that are available for you NameDescriptionPossible ValuesDefault Value - **AnnotateExecution** - Controls whether or not to highlight/annotate the target elements that the requested action is being executed against. e.g. **Actions.Click(goButton)**; + AnnotateExecution + Controls whether or not to highlight/annotate the target elements that the requested action is being executed against. e.g. Actions.Click(goButton); true
    false false - **AnnotationMode** + AnnotationMode This read-only setting contains the full physical path to your local ASP.NET development web server (WebDev.WebServer.EXE). It is set by the framework when LocalWebServer is set to "AspNetDevelopmentServer". Otherwise it is an empty string. - **AspNetDevServerPort** + AspNetDevServerPort Controls the AspNetDevServer (if used) port. If this is not set (-1) a random port will be generated each time the manager is created. 0 to int.MaxValue Random value - **BaseUrl** + BaseUrl Sets the base URL to use for all NavigateTo() commands. When set NavigateTo() should use a relative URL (e.g. "~/default.aspx"). Any valid URL string.Empty - **ClientReadyTimeout** + ClientReadyTimeout Timeout used to wait for a client (a browser) to be ready after it is first launched or after executing a command (in milliseconds). For example after launching the browser if the browser is not ready within this timeout the framework will throw a TimeoutException. 0 to int.MaxValue 30000 - **CreateLogFile** + CreateLogFile Gets or sets whether to create a log file on disk. This value is read once at initialization time. Changing this value during test execution has no effect. true
    false true - **DefaultBrowser** + DefaultBrowser The default browser (i.e. Internet Explorer or Firefox or AspNetHost) to launch when calling Manager.LaunchNewBrowser(). "InternetExplorer"
    "FireFox"
    @@ -161,120 +161,120 @@ This table lists all of the WebAii framework settings that are available for you "InternetExplorer" - **EnableScriptLogging** + EnableScriptLogging Globally enables or disables logging of JavaScript execution. true
    false false - **EnableSilverlight** + EnableSilverlight Controls whether or not Silverlight test automation is enabled. true
    false false - **EnableUILessRequestViewing** + EnableUILessRequestViewing Controls whether or not to allow debugging of UILess page requests using a UI browser like Internet Explorer. true
    false false - **ExecuteCommandTimeout** + ExecuteCommandTimeout The amount of time to wait for a response to be received from the browser (in milliseconds) after sending it a command request. For example: if there is no response from the browser within this amount of time after sending it a click request, the framework will throw a TimeoutException. 0 to int.MaxValue 20000 - **ExecutionDelay** + ExecutionDelay Sets the amount of execution delay (in milliseconds) between commands. This can help in observing test execution. 0 to int.MaxValue 0 - **IsStressRecordingMode** + IsStressRecordingMode Used internally by Automation Design Canvas only. - **IsUserInteractiveMode** + IsUserInteractiveMode This read-only setting indicates whether or not the currently logged on user is an interactive user. Normally this will always be true unless you are logged in under a non-interactive account. For example, if you create another account on your machine and from your current account launch a process using that other account without interactively logging into that account. That is when this property will be set to false. This is a common scenario when performing continuous integration within a build system and running tests. Usually there is a machine that has an account that VisualStudio simply uses to logon the machine non-interactively, build a product and launch tests. true
    false Depends on run time environment. - **KillBrowserProcessOnClose** - Gets or sets whether to make sure the browser process is killed when closing the browser. **Note:** Firefox is a single process browser. If you are using multiple browser instances and this setting is on, it will kill all open instances of Firefox. + KillBrowserProcessOnClose + Gets or sets whether to make sure the browser process is killed when closing the browser. Note: Firefox is a single process browser. If you are using multiple browser instances and this setting is on, it will kill all open instances of Firefox. true
    false false - **LocalWebServer** + LocalWebServer Controls whether or not to use the local ASP.NET development server. When set to true, be sure to set WebAppPhysicalPath to the full physical path of the root of your ASP.NET development server. None
    AspNetDevelopmentServer None - **LogAnnotations** + LogAnnotations Controls whether to log annotations to the log file. true
    false false - **LogLocation** + LogLocation Location where all logging will be performed, both captured bitmaps and WebAii's log file. Any valid URI. C:\WebAiiLog\ - **QueryEventLogErrorsOnExit** + QueryEventLogErrorsOnExit Controls whether or not the Manager object will query Windows Application Event log on exit for any error logged from automation clients. Any errors will be logged to the test log. true
    false false - **RecycleBrowser** + RecycleBrowser When set to true, one instance of the browser will be launched and recycled through out the entire test class and tests until Manager.Dispose is called. true
    false false - **SimulatedMouseMoveSpeed** + SimulatedMouseMoveSpeed Sets the simulated mouse move speed for Desktop.Mouse.Move()/DragDrop() operations in pixels/millisecond. Typically values are between 0.1f - 0.5f. 0 to Single.MaxValue 0.3 - **UseHttpProxy** - Gets/Sets whether to use the built-in http proxy during automation. **NOTE:** will be forced to true when EnableSilverlight is set to true. + UseHttpProxy + Gets/Sets whether to use the built-in http proxy during automation. NOTE: will be forced to true when EnableSilverlight is set to true. true
    false false - **VerboseHttpProxy** + VerboseHttpProxy Gets/Sets whether the HTTP proxy produces lots of tracing output. true
    false false - **WaitCheckInterval** + WaitCheckInterval Controls the rate that the condition is tested by the HtmlWait class. This value specifies the number of milliseconds to wait between tests of the condition. 1 to int.MaxValue 500 - **WebAppPhysicalPath** + WebAppPhysicalPath This setting is used when LocalWebServer is set to 'AspNetDevelopmentServer'. It must be the full physical path to the web application root that you are testing or a path relative to the location of the .config file. The full physical path to the web application root. string.Empty diff --git a/docs/troubleshooting-guide/source-control-problems-tg/fix-git-source-control-lockout-issue-in-test-studio.md b/docs/troubleshooting-guide/source-control-problems-tg/fix-git-source-control-lockout-issue-in-test-studio.md index eec51719..2a0fed2e 100644 --- a/docs/troubleshooting-guide/source-control-problems-tg/fix-git-source-control-lockout-issue-in-test-studio.md +++ b/docs/troubleshooting-guide/source-control-problems-tg/fix-git-source-control-lockout-issue-in-test-studio.md @@ -15,14 +15,14 @@ When pushing commits to Git source control in Test Studio, you get to a state wh In the log you can see errors like this: -```txt +````txt SourceControlFactory.GetControlInstance() : EXCEPTION! (see below) Situation: Error loading Git source control plugin. ... Inner Exception Type: LibGit2Sharp.LibGit2SharpException Message: too many redirects or authentication replaysInner Exception Type: LibGit2Sharp.LibGit2SharpException Message: too many redirects or authentication replays -``` +```` ## Solution To fix the Git source control lockout issue, follow these steps: diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/download-dialog-access-denied.md b/docs/troubleshooting-guide/test-execution-problems-tg/download-dialog-access-denied.md index 6060ec28..78ca4a1b 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/download-dialog-access-denied.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/download-dialog-access-denied.md @@ -12,7 +12,7 @@ position: 1 A web test with 'Handle Download dialog' or 'Handle Upload dialog' step fails with the following error message in the execution log. A WPF test with 'Handle OpenFile dialog' or 'Handle SaveFile dialog' step fails with the following error message in the execution log. -```txt +````txt Failure Information: The current user does not have access to this folder C:\workingStation\temp\noPermissionsFolder\myw3schoolsimage.jpg. @@ -27,7 +27,7 @@ System.UnauthorizedAccessException: The current user does not have access to thi You can use the %USERPROFILE%\Downloads\myw3schoolsimage.jpg folder instead or grant access to the folder on all executing machines. For more information: https://docs.telerik.com/teststudio/troubleshooting-guide/test-execution-problems-tg/download-dialog-access-denied -``` +```` ![Failure details for upload or download dialog not handled](/img/troubleshooting-guide/test-execution-problems-tg/download-dialog-access-denied/failure-message.png) diff --git a/docs/troubleshooting-guide/test-execution-problems-tg/single-coded-step.md b/docs/troubleshooting-guide/test-execution-problems-tg/single-coded-step.md index 78bdfbb2..df4961d0 100644 --- a/docs/troubleshooting-guide/test-execution-problems-tg/single-coded-step.md +++ b/docs/troubleshooting-guide/test-execution-problems-tg/single-coded-step.md @@ -21,10 +21,10 @@ This happens because a single coded step is not set to automatically call refres Add a statement to refresh the DOM tree as first row in the coded step. -```C# +````C# // Use Manager.ActiveBrowser for a web application Manager.ActiveBrowser.RefreshDomTree(); // Use Manager.ActiveApplication for a wpf application Manager.ActiveApplication.MainWindow.RefreshVisualTrees(); -``` +```` From 4dff69676af52a444e1f95d0187f042a9ec6a989 Mon Sep 17 00:00:00 2001 From: Atanas Atanasov Date: Thu, 3 Apr 2025 15:40:22 +0300 Subject: [PATCH 26/65] fix typo --- docs/docs-builder.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index a0d08cda..b9f76afc 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -402,7 +402,7 @@ meta: title: "Test Execution Problems" position: 9 troubleshooting-guide/visual-studio-tg: - title: "Visaul Studio" + title: "Visuаl Studio" position: 10 # ... Test Execution Problems section From fa0dd1bead53ae1351f69f41f44deb149d419600 Mon Sep 17 00:00:00 2001 From: Atanas Atanasov Date: Thu, 3 Apr 2025 15:51:05 +0300 Subject: [PATCH 27/65] fix typo and kb order --- docs/docs-builder.yml | 2 +- docs/knowledge-base/getting-out-of-memory-exception-errors.md | 2 +- docs/knowledge-base/login-issues-telerik-website.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index b9f76afc..67bb3256 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -402,7 +402,7 @@ meta: title: "Test Execution Problems" position: 9 troubleshooting-guide/visual-studio-tg: - title: "Visuаl Studio" + title: "Visual Studio" position: 10 # ... Test Execution Problems section diff --git a/docs/knowledge-base/getting-out-of-memory-exception-errors.md b/docs/knowledge-base/getting-out-of-memory-exception-errors.md index d1a022aa..83fd2212 100644 --- a/docs/knowledge-base/getting-out-of-memory-exception-errors.md +++ b/docs/knowledge-base/getting-out-of-memory-exception-errors.md @@ -3,7 +3,7 @@ title: Getting Out of Memory Exception Errors page_title: System Out of Memory Exception Errors description: Getting Out of Memory Exception (OutOfMemory or System.OutOfMemoryException) Errors when scheduling tests to run on remote machine. Remote test list execution is failing because of OutOfMemory exceptions. Fix OutOfMemory Exception OOM exception. Open results crashes with System.OutOfMemory. previous_url: /user-guide/knowledge-base/oom.aspx -position: 20 +position: 2 --- ## Problem diff --git a/docs/knowledge-base/login-issues-telerik-website.md b/docs/knowledge-base/login-issues-telerik-website.md index 6c960b6a..dd910efc 100644 --- a/docs/knowledge-base/login-issues-telerik-website.md +++ b/docs/knowledge-base/login-issues-telerik-website.md @@ -7,7 +7,7 @@ slug: login-issues-telerik-website tags: progress, telerik, test studio, login, troubleshooting res_type: kb ticketid: 1661389 -position: 19 +position: 1 --- ## Description From 058a98d8cfe481d30eca8100881411599d06a8a5 Mon Sep 17 00:00:00 2001 From: Atanas Atanasov Date: Thu, 3 Apr 2025 15:58:56 +0300 Subject: [PATCH 28/65] updated kbs order --- .../browsers-kb/calibration-error-preferences-file.md | 2 +- docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md | 2 +- docs/knowledge-base/browsers-kb/custom-chrome-path.md | 2 +- docs/knowledge-base/browsers-kb/custom-chrome-profile.md | 2 +- docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md | 2 +- .../telerik-test-studio-extension-not-available-in-web-store.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/knowledge-base/browsers-kb/calibration-error-preferences-file.md b/docs/knowledge-base/browsers-kb/calibration-error-preferences-file.md index faa3527d..0ef0b68d 100644 --- a/docs/knowledge-base/browsers-kb/calibration-error-preferences-file.md +++ b/docs/knowledge-base/browsers-kb/calibration-error-preferences-file.md @@ -2,7 +2,7 @@ title: Edge Calibration Error page_title: Edge Calibration Error description: "Edge Calibration Error in Test Studio - Could not read Edge Preferences file Error during serialization or deserialization. The length of the string exceeds the value set on the maxJsonLength value." -position: 1 +position: 3 --- ## Error on Trying to Calibrate Edge Browser diff --git a/docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md b/docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md index b72402eb..be7960a2 100644 --- a/docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md +++ b/docs/knowledge-base/browsers-kb/chrome-clean-reinstall.md @@ -2,7 +2,7 @@ title: Chrome Clean Reinstall page_title: Chrome Clean Reinstall description: A clean reinstall of Chrome browser may help to fix Test Studio Chrome Extension not loading or steps not executing issues. A clean reinstall of Chrome ensures the browser's user data is removed. -position: 3 +position: 6 --- ## How to Perform Clean Reinstall of Chrome Browser diff --git a/docs/knowledge-base/browsers-kb/custom-chrome-path.md b/docs/knowledge-base/browsers-kb/custom-chrome-path.md index e95127c4..35f61780 100644 --- a/docs/knowledge-base/browsers-kb/custom-chrome-path.md +++ b/docs/knowledge-base/browsers-kb/custom-chrome-path.md @@ -2,7 +2,7 @@ title: Custom Chrome Path page_title: Custom Chrome Path description: How to set Custom Chrome path if the Chrome installation is a custom one. -position: 1 +position: 2 --- ## How to Set a Custom Chrome Path diff --git a/docs/knowledge-base/browsers-kb/custom-chrome-profile.md b/docs/knowledge-base/browsers-kb/custom-chrome-profile.md index 5f1483c9..17adc069 100644 --- a/docs/knowledge-base/browsers-kb/custom-chrome-profile.md +++ b/docs/knowledge-base/browsers-kb/custom-chrome-profile.md @@ -2,7 +2,7 @@ title: Custom Chrome Profile page_title: Custom Chrome Profile description: Calibrate the default Chrome Profile -position: 2 +position: 4 --- ## How to Set a Custom Chrome Profile diff --git a/docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md b/docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md index 8eb42cc9..e6dba8e1 100644 --- a/docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md +++ b/docs/knowledge-base/browsers-kb/custom-edge-chromium-profile.md @@ -2,7 +2,7 @@ title: Custom Edge Chromium Profile page_title: Custom Edge Chromium Profile description: Use Custom Edge Chromium Profile for testing in Test Studio. -position: 2 +position: 5 --- ## How to Set a Custom Edge Chromium Profile diff --git a/docs/knowledge-base/browsers-kb/telerik-test-studio-extension-not-available-in-web-store.md b/docs/knowledge-base/browsers-kb/telerik-test-studio-extension-not-available-in-web-store.md index 744fbcaf..22050b18 100644 --- a/docs/knowledge-base/browsers-kb/telerik-test-studio-extension-not-available-in-web-store.md +++ b/docs/knowledge-base/browsers-kb/telerik-test-studio-extension-not-available-in-web-store.md @@ -6,7 +6,7 @@ page_title: Progress® Telerik® Test Studio® Extension is Not Available in Ch tags: progress, telerik, test studio, chrome, extension, edge chromium res_type: kb ticketid: 1678431 -position: 0 +position: 1 --- From d1c8bde548206019dde87bc7b904ff7ae27b85de Mon Sep 17 00:00:00 2001 From: Atanas Atanasov Date: Thu, 3 Apr 2025 16:04:26 +0300 Subject: [PATCH 29/65] Remove windows authentication docs in load test profile. --- .../load/advanced-topics/manage-windows-auth.md | 2 +- docs/docs-builder.yml | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/automated-tests/load/advanced-topics/manage-windows-auth.md b/docs/automated-tests/load/advanced-topics/manage-windows-auth.md index ce0fcf22..0ba4cd4d 100644 --- a/docs/automated-tests/load/advanced-topics/manage-windows-auth.md +++ b/docs/automated-tests/load/advanced-topics/manage-windows-auth.md @@ -3,7 +3,7 @@ title: Manage Windows Authentication page_title: Manage Windows Authentication description: "Manage Windows Authentication in Test Studio load test. The tested application supports Windows Authentication - can use that in Test Studio load test" position: 0 -publish: false +published: false --- # Manage Windows Authentication diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index 67bb3256..258502d0 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -2497,5 +2497,6 @@ redirects: from: "/prerequisites/configure-your-browser/safari" to: "/prerequisites/configure-your-browser/browser-configuration" - - from: "^/archived-docs/(.*)$" - to: "/welcome" \ No newline at end of file + from: "/automated-tests/load/advanced-topics/manage-windows-auth" + to: "/automated-tests/load/configuring-load-tests-quick-guide" + From 1d249fd3b8b8e102a004d3b6ce04b78718e0a9e7 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 11:05:06 +0300 Subject: [PATCH 30/65] change product-name to Telerik Test Studio --- docs/docs-builder.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index 258502d0..63d29f13 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -1,7 +1,7 @@ top-navigation-product: test-studio path-prefix: /teststudio/documentation product-id: 846 -product-name: Progress Test Studio +product-name: Telerik Test Studio product-url: https://www.telerik.com/teststudio search-engine-id: 001595215763381649090:ymztq4og6vc cta-overview: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" From b115bb25ba457baaed0767e3ec077b8de4244b70 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 11:05:37 +0300 Subject: [PATCH 31/65] add language to code block --- .../data-driven-testing-kb/sql-random-row.md | 9 ++++--- .../finding-page-elements.md | 26 +++++++++---------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/knowledge-base/data-driven-testing-kb/sql-random-row.md b/docs/knowledge-base/data-driven-testing-kb/sql-random-row.md index 0ae0487f..4f46dd84 100644 --- a/docs/knowledge-base/data-driven-testing-kb/sql-random-row.md +++ b/docs/knowledge-base/data-driven-testing-kb/sql-random-row.md @@ -29,13 +29,14 @@ FROM [myDataBase].[dbo].[table] Where Email Like '%domain%' ORDER By NEWID() ```` - * Line 1 indicates how many rows and which columns to use. + +- Line 1 indicates how many rows and which columns to use. - * Line 2 indicates the database and table name. +- Line 2 indicates the database and table name. - * Line 3 indicates whether to filter based on text matching criteria. In this case, since all entries in the Email column contain domain, all rows are returned. +- Line 3 indicates whether to filter based on text matching criteria. In this case, since all entries in the Email column contain domain, all rows are returned. - * Line 4 sorts the rows by a unique identifier, which essentially randomizes them in the database. +- Line 4 sorts the rows by a unique identifier, which essentially randomizes them in the database. 4.  Click **Update again** to see the randomization in action. diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md index 954e514f..7066ebb8 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/finding-page-elements.md @@ -27,7 +27,7 @@ The following identification methods are supported: Searches for an element contained in a markup document using its set 'id' attribute. When the desired 'id' matches an element's id, the element is returned - identical to getElementById -```` +````C# // Find element with id=input1 Element e = Find.ById("input1"); ```` @@ -38,7 +38,7 @@ Element e = Find.ById("input1"); Searches for an element contained in a markup document using its set 'name' attribute. When the desired 'name' matches an element's name, the element is returned -```` +````C# // Find element with name=goButton Element e = Find.ByName("goButton") ```` @@ -50,7 +50,7 @@ Element e = Find.ByName("goButton") Searches for an element or 'All' elements that look like a predefined image -```` +````C# // Specify the predefined image on which the search will be based System.Drawing.Image img1 = System.Drawing.Image.FromFile(@"C:\sampleImg.png"); // Find an element that looks like the predefind image @@ -65,7 +65,7 @@ HtmlButton btn1 = elementImg1.As(); Searches for an element using its tag name occurrence index. Finds the element at the specified occurrence index and returns it. This method uses zero based indexing. -```` +````C# // Find the 3rd occurrence of table tag Element table = Find.ByTagIndex("table", 2); ```` @@ -77,7 +77,7 @@ Element table = Find.ByTagIndex("table", 2); Searches for an element or 'All' elements using an 'exact' or 'partial' list of attribute values (You can specify 1-N attribute/value pairs). When all attribute values match, the element or collection of elements is returned. -```` +````C# // Find the first element with attribute class=myclass Element e = Find.ByAttributes("class=myclass"); // Find the first element with attribute class=myclass @@ -94,7 +94,7 @@ IList allbtns = Find.AllByAttributes("class=myclass", "src=~foo.gif"); Searches for an element or 'All' elements using 'exact', 'partial' or 'regex' of the element content. The element content can be: InnerText, InnerMarkup, OuterMarkup, TextContent (default), StartTagContent. -```` +````C# // Find element with TextContent has literal value: Education // l: signifies literal Element e = Find.ByContent("l:Education"); @@ -128,7 +128,7 @@ IList alle = Find.AllByContent("p:car") Searches for an element or 'All' elements matching an HtmlFindExpression. The HtmlFindExpression cannot use any type of hierarchical expressions including tag index path expressions, HTML path expressions, and XPath expressions. -```` +````C# // Create an HtmlFindExpression element HtmlFindExpression expr = new HtmlFindExpression("id=?sam","class=~bar","textcontent=!foo"); // Return all elements matching HtmlFindExpression @@ -142,7 +142,7 @@ IList allSams = Find.AllByExpression(expr); Searches for an element or 'All' elements using an XPath expression. WebAii supports the .NET Framework XPath implementation. -```` +````C# // Find the banner img element Element img = Find.ByXPath("//body[1]/table[1]/tbody[1]/tr[1]/td[1]/img[1]"); // Find all times with id=div @@ -156,7 +156,7 @@ IList allDivs = Find.AllByXPath("/descendant::node()[starts-with(@id,'d Searches for an element or 'All' elements using a css selector query. -```` +````C# // Find the active link HtmlAnchor activeLink = Find.ByCssSelector("a:active"); // Find all links @@ -169,7 +169,7 @@ IList allLinks = Find.AllByCssSelector("a"); Searches for 'All' elements with the specified tag name and returns it as a list of elements. -```` +````C# // Return all img elements IList allimg = Find.AllByTagName("img"); ```` @@ -180,7 +180,7 @@ IList allimg = Find.AllByTagName("img"); Searches for an element using dom tree node index paths. This identification is done using an xpath like approach that simply describes the hierarchy path to a specific element using the node index within the hierarchy without having to specify the tag name at each level. This identification method can be chosen in cases where a segment of the DomTree hierarchy at a specific location is consistent but element type changes. For example, if an element you are trying to target is the direct child of another element that fluctuates between a span and div, you can choose this identification method to provide a consistent way to identify that element. -```` +````C# Given this DOM: @@ -210,7 +210,7 @@ Element target = Find.ByNodeIndexPath("0/2/0/1"); Finds all elements with the FindParams in the passed in collection. -```` +````C# FindParamCollection col = FindParamCollection.LoadFromXml(xml); return this.FromCollection(col); ```` @@ -222,7 +222,7 @@ return this.FromCollection(col); Searches for an element or 'All' elements using a custom predicate. -```` +````C# // Find the first input button having an ID of 'input1' HtmlInputButton btn = Find.ByCustom( delegate(HtmlInputButton e) From ec89e86fb7e2fd0a4afb898e818ccac9cb79e7a5 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 11:20:21 +0300 Subject: [PATCH 32/65] remove expandable sections and format the article with MD --- .../configure-your-browser/firefox.md | 160 +++++++----------- 1 file changed, 57 insertions(+), 103 deletions(-) diff --git a/docs/prerequisites/configure-your-browser/firefox.md b/docs/prerequisites/configure-your-browser/firefox.md index 54a30785..8baef0b4 100644 --- a/docs/prerequisites/configure-your-browser/firefox.md +++ b/docs/prerequisites/configure-your-browser/firefox.md @@ -30,183 +30,137 @@ Install the latest **automatically calibrate the browser** out of the box. No manual interaction is required.

    +To ensure a flawless and consistent automation process, there are a few browser settings that we need to apply. We call this **browser calibration** and have implemented a feature to **automatically calibrate the browser** out of the box. No manual interaction is required. > __Tip__ >
    >
    -> You can check all settings applied from the calibration in the Manual Configuration section below (click the + sign to expand it).

    +> You can check all settings applied from the calibration in the Manual Configuration section below (click the + sign to expand it). -

    -

    +## Extension Install Procedure -


    -

    -

    +1.  When you start recording against Firefox, but the Progress extension is not installed, the browser will load the recording start page and will try to load the extension. The recorder will search for the extension for the period that is defined in the *ClientReady* Timeout (the default is 60 seconds). -

    Extension Install Procedure +

    +Wait For Extension -
    -
    +2.  If the Progress extension doesn't load within the timeout period, a link to the Mozzila Extension Page will be displayed to install the extension. -
    -
    +Get Extension -1.  When you start recording against Firefox, but the Progress extension is not installed, the browser will load the recording start page and will try to load the extension. The recorder will search for the extension for the period that is defined in the *ClientReady* Timeout (the default is 60 seconds).

    +3.  By clicking on Get It Free From Mozilla Extensions Page you will be directly navigated to the Progress extension on the Extension Page. -Wait For Extension

    +Extension In Page -2.  If the Progress extension doesn't load within the timeout period, a link to the Mozzila Extension Page will be displayed to install the extension.

    +4.  By clicking the Add to Firefox button the extension will be added after confirmation. -Get Extension

    +Add Extension Confirmation -3.  By clicking on Get It Free From Mozilla Extensions Page you will be directly navigated to the Progress extension on the Extension Page.

    +5.  Click on the icon located to the right of the address bar to find the extension's version. -Extension In Page

    +Extension Version -4.  By clicking the Add to Firefox button the extension will be added after confirmation.

    +## Manual Configuration -Add Extension Confirmation

    - -5.  Click on the icon located to the right of the address bar to find the extension's version.

    - -Extension Version

    - -
    - -
    -
    - -

    -

    -

    - -

    Manual Configuration +

    - -
    -
    - -

    Enable Progress Test Studio Extension

    +### Enable Progress Test Studio Extension Follow the steps below to manually configure Firefox for web automation with Test Studio. -1. Click on the browser settings button in the upper right corner and select Add-ons.

    +1. Click on the browser settings button in the upper right corner and select Add-ons. -Extension

    +Extension -2. Ensure that the Progress Test Studio Extension is enabled.

    +2. Ensure that the Progress Test Studio Extension is enabled. -Extension

    +Extension -

    Zoom Level Set to 100%

    +### Zoom Level Set to 100% 1. Click on the browser settings button.
    -2. Use the plus (+) and minus (-) buttons to set it to 100%.

    +2. Use the plus (+) and minus (-) buttons to set it to 100%. -Zoom

    +Zoom -

    Turn Off Pop-up Blocker & Enable JavaScript

    +### Turn Off Pop-up Blocker & Enable JavaScript -1. Click on the browser settings button and select Options.

    +1. Click on the browser settings button and select Options. -Zoom

    +Zoom -2. Click on the Privacy and Security tab (on the left side) and scroll down to Permissions section.

    +2. Click on the Privacy and Security tab (on the left side) and scroll down to Permissions section. -3. Uncheck the Block pop-up windows checkbox.

    +3. Uncheck the Block pop-up windows checkbox. -Pop up blocker

    +Pop up blocker -

    Pop-ups Open in a New Tab

    +### Pop-ups Open in a New Tab 1. Click on the browser settings button and select Options.
    -2. Scroll down to the Tabs section and check Open new windows in a new tab instead.

    +2. Scroll down to the Tabs section and check Open new windows in a new tab instead. -Pop up open in new window

    +Pop up open in new window -

    Enable File Downloads

    +### Enable File Downloads 1. Click on the browser settings button and select Options.
    -2. Scroll down to the Downloads section and check and select Always ask you where to save files.

    +2. Scroll down to the Downloads section and check and select Always ask you where to save files. -Downloads

    +Downloads -

    Enable Cookies

    +### Enable Cookies 1. Click on the browser settings button and select Options.
    2. Click on Privacy and Security.
    -3. Scroll down to the History section to set the option to Remember history.

    +3. Scroll down to the History section to set the option to Remember history. -Cookies

    +Cookies -

    Disable 'Remember passwords for sites'

    +### Disable 'Remember passwords for sites' 1. Click on the browser settings button and select Options.
    2. Click on Privacy and Security.
    -3. Make sure the Remember logins and passwords for websites option is disabled.

    +3. Make sure the Remember logins and passwords for websites option is disabled. -Passwords

    +Passwords -

    Set PDF Files to Be Always Saved

    +### Set PDF Files to Be Always Saved 1. Click on the browser settings button and select Options.
    2. Locate the Applications section on the General Settings tab.
    -3. Set the PDF format file action to Save File.

    - -Save PDF file

    +3. Set the PDF format file action to Save File. +Save PDF file -

    Use System Proxy Settings

    +### Use System Proxy Settings -As of the 2012 R1 version released in April 2012, set the Connection Settings to Use system proxy settings.

    +As of the 2012 R1 version released in April 2012, set the Connection Settings to Use system proxy settings. 1. Click on the browser settings button and select Options.
    2. Click on General.
    3. Scroll down to the Network Proxy section and press on Settings... button.
    -4. In the Connection Settings window select Use system proxy settings.

    +4. In the Connection Settings window select Use system proxy settings. -Proxy

    +Proxy -

    Setting Configuration Flags

    +### Setting Configuration Flags There are three more settings to be modified in the configuration editor - type about:config in the url bar and press Enter to access it. Double click the following settings to set these to false: -
      -
    • browser.sessionstore.resume_from_crash

      browser_sessionstore_resume_from_crash
    • -
    • browser.tabs.warnOnClose

      browser_tabs_warnOnClose
    • -
    • browser.tabs.warnOnCloseOtherTabs

      browser_tabs_warnOnCloseOtherTabs
    • +- **browser.sessionstore.resume_from_crash** +browser_sessionstore_resume_from_crash -
    +- **browser.tabs.warnOnClose** +browser_tabs_warnOnClose -
    +- **browser.tabs.warnOnCloseOtherTabs** +browser_tabs_warnOnCloseOtherTabs -

    Disable Conflicting Extensions

    +### Disable Conflicting Extensions The following Add-ons are known to conflict with the Progress Test Studio Extension:
    -
      -
    • AOL Messaging Toolbar
    • -
    • FoxyProxyStandard
    • -
    - -
    -
    - - +- AOL Messaging Toolbar +- FoxyProxyStandard \ No newline at end of file From d4e9bf8b5244c8e9dd44152d02de9e630663a290 Mon Sep 17 00:00:00 2001 From: Atanas Atanasov Date: Fri, 4 Apr 2025 11:05:35 +0300 Subject: [PATCH 33/65] updated path-prefix for teststudio-dev and apis --- docs-apitesting/docs-builder.yml | 2 +- docs-teststudiodev/docs-builder.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-apitesting/docs-builder.yml b/docs-apitesting/docs-builder.yml index f39511ab..72c58940 100644 --- a/docs-apitesting/docs-builder.yml +++ b/docs-apitesting/docs-builder.yml @@ -1,6 +1,6 @@ #top nagivation might be wrong top-navigation-product: api-testing -path-prefix: /teststudio-apis +path-prefix: /teststudio-apis/documentation product-id: 1720 product-name: Progress Telerik Test Studio for APIs product-url: https://www.telerik.com/teststudio-apis diff --git a/docs-teststudiodev/docs-builder.yml b/docs-teststudiodev/docs-builder.yml index b8f53129..59ca6a50 100644 --- a/docs-teststudiodev/docs-builder.yml +++ b/docs-teststudiodev/docs-builder.yml @@ -1,6 +1,6 @@ #top nagivation might be wrong top-navigation-product: test-studio-dev-edition -path-prefix: /devtools/teststudiodev +path-prefix: /teststudio-dev/documentation product-id: 1846 product-name: Progress Telerik Test Studio Dev Edition Documentation product-url: https://www.telerik.com/teststudio-dev From 691c72a09a6e4c5b09f249d034070fe9b4f64639 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 12:09:49 +0300 Subject: [PATCH 34/65] Fix code blocks missing closing annotation --- .../silverlight/combobox-automation/verify-all-text.md | 1 + .../silverlight/combobox-automation/verify-specific-text.md | 1 + .../silverlight/radgridview-automation/scrolling-paging.md | 1 + .../silverlight/radgridview-automation/scrolling.md | 1 + .../silverlight/radgridview-automation/total-rows-count.md | 1 + .../radgridview-automation/verify-specific-column.md | 1 + .../coded-samples/silverlight/verify-colors-in-silverlight.md | 1 + .../coded-samples/silverlight/verify-sort-order.md | 1 + .../coded-samples/silverlight/verify-text-in-rich-textbox.md | 2 ++ .../test-execution-kb/set-test-execution-time-limit.md | 1 + 10 files changed, 11 insertions(+) diff --git a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md index f94ccada..0d209579 100644 --- a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md +++ b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-all-text.md @@ -16,6 +16,7 @@ full = full.Trim(); Log.WriteLine(full); Assert.AreEqual(full, "All Add Delete Edit Navigation None"); +```` ````VB Dim cb As ComboBox = Pages.SilverlightToolkitSamples.SilverlightApp.Item0Combobox diff --git a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md index ab6edafd..297744a6 100644 --- a/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md +++ b/docs/advanced-topics/coded-samples/silverlight/combobox-automation/verify-specific-text.md @@ -18,6 +18,7 @@ bool found = cb.TextBlockContent.Contains(Data["Col1"].ToString()); Log.WriteLine("Match found: " + found.ToString()); Assert.IsTrue(found); +```` ````VB Dim cb As ComboBox = Pages.SilverlightToolkitSamples.SilverlightApp.Item0Combobox Dim found As Boolean = cb.TextBlockContent.Contains(Data("Col1").ToString()) diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md index 8e7a67aa..f08ffbb6 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling-paging.md @@ -77,6 +77,7 @@ public FrameworkElement FindElementByTextContent(string content) grid.Find.Strategy = originalStrategy; return null; } +```` ````VB Public Function FindElementByTextContent(content As String) As FrameworkElement diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md index 6cf8f89b..0f6407da 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/scrolling.md @@ -54,6 +54,7 @@ grid.Refresh(); verticalOffset += viewPortHeight; VirtualizingPanel.InvokeMethod("SetVerticalOffset", verticalOffset); } +```` ````VB Dim verticalOffset As Integer = 0 diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md index 48c4c16d..051dfe5b 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/total-rows-count.md @@ -46,6 +46,7 @@ totalOverallRows = totalPageRows + totalOverallRows; // Show the result Log.WriteLine("Total Number of Rows: "+ totalOverallRows.ToString()); +```` ````VB Dim extentHeight As Integer diff --git a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md index 0bbd6a54..7066be80 100644 --- a/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md +++ b/docs/advanced-topics/coded-samples/silverlight/radgridview-automation/verify-specific-column.md @@ -58,6 +58,7 @@ while (verticalOffset < extentHeight) verticalOffset += viewPortHeight; VirtualizingPanel.InvokeMethod("SetVerticalOffset", verticalOffset); } +```` ````VB Dim verticalOffset As Integer = 0 diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md b/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md index cbb41859..f80e8b64 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-colors-in-silverlight.md @@ -44,6 +44,7 @@ else // If it's not a SolidColorBrush what is it? How do we handle it? throw new ApplicationException("Expecting a SolidColorBrush, but got a " + textblockBrush.GetType().ToString()); } +```` ````VB Manager.Settings.Web.EnableSilverlight = True Manager.LaunchNewBrowser() diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md b/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md index b93c730b..c7159e1d 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-sort-order.md @@ -44,6 +44,7 @@ for (int j = 0; j < list.Count; j++) Assert.IsTrue(list[j+1].CompareTo(list[j]) >= 0); } } +```` ````VB Dim app As SilverlightApp = ActiveBrowser.SilverlightApps()(0) diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md b/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md index 14bbdbf5..9d3189f0 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md @@ -73,6 +73,7 @@ foreach(XmlNode runNode in runNodes) { Log.WriteLine(runNode.Attributes["Text"].Value); } +```` ````VB Dim rtbContents As String = DirectCast(Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(New AutomationProperty("Xaml", GetType(String))), String) @@ -104,6 +105,7 @@ Log.WriteLine(attr.Value); // Verify it is Bold Assert.AreEqual("Bold", attr.Value); +```` ````VB Dim rtbContents As String = DirectCast(Pages.SilverlightAppTesting.SilverlightApp.RichTextBox1Richtextbox.GetProperty(New AutomationProperty("Xaml", GetType(String))), String) Log.WriteLine(rtbContents) diff --git a/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md b/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md index f3b2f41d..afe34109 100644 --- a/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md +++ b/docs/knowledge-base/test-execution-kb/set-test-execution-time-limit.md @@ -100,6 +100,7 @@ public class ExecutionTimeout : IExecutionExtension } } } +```` ````VB Public Class ExecutionTimeout From bea6bb4c177ffd8094f43eaba82ac9ff06a426a3 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 12:10:38 +0300 Subject: [PATCH 35/65] fix code block --- .../coded-samples/silverlight/change-find-strategy.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md b/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md index d07fd865..02dc65db 100644 --- a/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md +++ b/docs/advanced-topics/coded-samples/silverlight/change-find-strategy.md @@ -42,6 +42,7 @@ finally { app.Find.Strategy = originalStrategy; } +```` ````VB Dim app As SilverlightApp = ActiveBrowser.SilverlightApps()(0) Dim originalStrategy As FindStrategy = app.Find.Strategy From 8fee05b35246bae809ae7b8b9c18757ea563f60e Mon Sep 17 00:00:00 2001 From: Atanas Atanasov Date: Fri, 4 Apr 2025 11:58:16 +0300 Subject: [PATCH 36/65] changed dev and apis primary color --- docs-apitesting/docs-builder.yml | 4 +++- docs-teststudiodev/docs-builder.yml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs-apitesting/docs-builder.yml b/docs-apitesting/docs-builder.yml index 72c58940..1909f380 100644 --- a/docs-apitesting/docs-builder.yml +++ b/docs-apitesting/docs-builder.yml @@ -10,7 +10,9 @@ cta-intro: "@ProductLink is a test automation platform for web, WPF, and respons default-title-prefix: Telerik Test Studio for APIs avatar-path: ./images/avatar-ninja.svg no-results-image-path: ./images/ninja-no-results.svg -primary-color: "#27A306" +primary-color: + light: "#1D8800" + dark: "#68BF51" product-code: TESTSTUDIOAPI product-trial-url: https://www.telerik.com/try/test-studio-ultimate diff --git a/docs-teststudiodev/docs-builder.yml b/docs-teststudiodev/docs-builder.yml index 59ca6a50..bc25bd75 100644 --- a/docs-teststudiodev/docs-builder.yml +++ b/docs-teststudiodev/docs-builder.yml @@ -10,7 +10,9 @@ cta-intro: "@ProductLink is a test automation platform for web, WPF, and respons default-title-prefix: Telerik Test Studio Dev Edition avatar-path: ./images/avatar-ninja.svg no-results-image-path: ./images/ninja-no-results.svg -primary-color: "#27A306" +primary-color: + light: "#1D8800" + dark: "#68BF51" product-code: TSDEVED product-trial-url: https://www.telerik.com/try/test-studio-dev-edition From 80a116aaf2734e21fadbbc2cd0e3fc3083bc49db Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 12:17:04 +0300 Subject: [PATCH 37/65] Update translator tables to remove custom scripts The solution is not ideal and we will need help from the designers to find a new solution and implement it. --- docs/features/project-settings/translators.md | 885 +++--------------- 1 file changed, 153 insertions(+), 732 deletions(-) diff --git a/docs/features/project-settings/translators.md b/docs/features/project-settings/translators.md index f2d93c88..8e99b3f1 100644 --- a/docs/features/project-settings/translators.md +++ b/docs/features/project-settings/translators.md @@ -28,738 +28,159 @@ As Quality Assurance Engineer you often don't know what type and version of UI c In the below grid you can find the versions of the supported UI components matching the translators versions from the list. -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Telerik UI for Blazor -
    R320212.27.0
    R120223.0.0
    R12022SP13.1.0
    R220223.3.0
    R22022SP13.4.0
    R320223.6.0
    R120234.0.0
    R12023SP14.1.0
    R220234.3.0
    R320234.6.0
    R220246.0.0
    -

    - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Telerik UI for ASP.NET AJAX -
    R320212021.3.914
    R120222022.1.119
    R12022SP12022.1.302
    R220222022.2.511
    R22022SP12022.2.622
    R320222022.3.913
    R120232023.1.117
    R12023SP12023.1.314
    R220232023.2.606
    R320232023.3.1010
    R220242024.2.513
    -

    - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Kendo UI for jQuery -
    R320212021.3.914
    R120222022.1.119
    R12022SP12022.1.301
    R220222022.2.510
    R22022SP12022.2.621
    R320222022.3.913
    R120232023.1.117
    R12023SP12023.1.314
    R220232023.2.606
    R320232023.3.1010
    R220242024.2.514
    -

    -

    - - - - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Kendo UI for Angular
    R32021Click to expand the list of translators
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Translator NameComponent NameComponent Version
    KendoAngularAutoCompletekendo-angular-dropdowns5.4.0
    KendoAngularButtonkendo-angular-buttons6.3.0
    KendoAngularComboBoxkendo-angular-dropdowns5.4.0
    KendoAngularDialogkendo-angular-dialog5.1.1
    KendoAngularDropdownListkendo-angular-dropdowns5.4.0
    KendoAngularGridkendo-angular-grid5.4.0
    KendoAngularInputskendo-angular-inputs7.4.0
    KendoAngularPagerkendo-angular-pager1.0.0
    KendoAngularPanelBarkendo-angular-layout6.3.0
    KendoAngularSwitchkendo-angular-inputs7.4.0
    KendoAngularTabStripkendo-angular-layout6.3.0
    KendoAngularWindowkendo-angular-dialog5.1.1
    -
    R12022Click to expand the list of translators
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Translator NameComponent NameComponent Version
    KendoAngularAutoCompletekendo-angular-dropdowns6.0.0
    KendoAngularButtonkendo-angular-buttons7.0.0
    KendoAngularComboBoxkendo-angular-dropdowns6.0.0
    KendoAngularDialogkendo-angular-dialog6.0.0
    KendoAngularDropdownListkendo-angular-dropdowns6.0.0
    KendoAngularGridkendo-angular-grid6.0.0
    KendoAngularInputskendo-angular-inputs8.0.0
    KendoAngularPagerkendo-angular-pager3.0.0
    KendoAngularPanelBarkendo-angular-layout6.4.0
    KendoAngularSwitchkendo-angular-inputs8.0.0
    KendoAngularTabStripkendo-angular-layout6.4.0
    KendoAngularWindowkendo-angular-dialog6.0.0
    -
    R12022SP1Click to expand the list of translators
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Translator NameComponent NameComponent Version
    KendoAngularAutoCompletekendo-angular-dropdowns6.0.1
    KendoAngularButtonkendo-angular-buttons7.0.3
    KendoAngularComboBoxkendo-angular-dropdowns6.0.1
    KendoAngularDialogkendo-angular-dialog6.0.2
    KendoAngularDropdownListkendo-angular-dropdowns6.0.1
    KendoAngularGridkendo-angular-grid6.1.0
    KendoAngularInputskendo-angular-inputs8.0.7
    KendoAngularPagerkendo-angular-pager3.0.2
    KendoAngularPanelBarkendo-angular-layout6.5.1
    KendoAngularSwitchkendo-angular-inputs8.0.7
    KendoAngularTabStripkendo-angular-layout6.5.1
    KendoAngularWindowkendo-angular-dialog6.0.2
    -
    R22022Click to expand the list of translators
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Translator NameComponent NameComponent Version
    KendoAngularAutoCompletekendo-angular-dropdowns7.0.1
    KendoAngularButtonkendo-angular-buttons8.0.0
    KendoAngularComboBoxkendo-angular-dropdowns7.0.1
    KendoAngularDialogkendo-angular-dialog7.0.0
    KendoAngularDropdownListkendo-angular-dropdowns7.0.1
    KendoAngularGridkendo-angular-grid7.0.1
    KendoAngularInputskendo-angular-inputs9.0.1
    KendoAngularPagerkendo-angular-pager4.0.0
    KendoAngularPanelBarkendo-angular-layout7.0.1
    KendoAngularSwitchkendo-angular-inputs9.0.1
    KendoAngularTabStripkendo-angular-layout7.0.1
    KendoAngularWindowkendo-angular-dialog7.0.0
    -
    R22022SP1Click to expand the list of translators
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Translator NameComponent NameComponent Version
    KendoAngularAutoCompletekendo-angular-dropdowns7.0.2
    KendoAngularButtonkendo-angular-buttons8.0.0
    KendoAngularComboBoxkendo-angular-dropdowns7.0.2
    KendoAngularDialogkendo-angular-dialog7.1.2
    KendoAngularDropdownListkendo-angular-dropdowns7.0.2
    KendoAngularGridkendo-angular-grid7.2.0
    KendoAngularInputskendo-angular-inputs9.0.3
    KendoAngularPagerkendo-angular-pager4.0.0
    KendoAngularPanelBarkendo-angular-layout7.1.0
    KendoAngularSwitchkendo-angular-inputs9.0.3
    KendoAngularTabStripkendo-angular-layout7.1.0
    KendoAngularWindowkendo-angular-dialog7.1.2
    -
    R32022Click to expand the list of translators
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Translator NameComponent NameComponent Version
    KendoAngularAutoCompletekendo-angular-dropdowns7.2.0
    KendoAngularButtonkendo-angular-buttons8.1.0
    KendoAngularComboBoxkendo-angular-dropdowns7.2.0
    KendoAngularDialogkendo-angular-dialog7.1.3
    KendoAngularDropdownListkendo-angular-dropdowns7.2.0
    KendoAngularGridkendo-angular-grid7.3.1
    KendoAngularInputskendo-angular-inputs10.0.0
    KendoAngularPagerkendo-angular-pager4.0.5
    KendoAngularPanelBarkendo-angular-layout7.1.3
    KendoAngularSwitchkendo-angular-inputs10.0.0
    KendoAngularTabStripkendo-angular-layout7.1.3
    KendoAngularWindowkendo-angular-dialog7.1.3
    -
    R1202311.0.0
    R12023SP111.4.0
    R2202313.0.0
    R3202314.0.0
    R2202416.0.0
    -

    +# Telerik UI for Blazor + +| Release | Version | +|------------|----------| +| R32021 | 2.27.0 | +| R12022 | 3.0.0 | +| R12022SP1 | 3.1.0 | +| R22022 | 3.3.0 | +| R22022SP1 | 3.4.0 | +| R32022 | 3.6.0 | +| R12023 | 4.0.0 | +| R12023SP1 | 4.1.0 | +| R22023 | 4.3.0 | +| R32023 | 4.6.0 | +| R22024 | 6.0.0 | + +# Telerik UI for ASP.NET AJAX + +| Release | Version | +|------------|--------------| +| R32021 | 2021.3.914 | +| R12022 | 2022.1.119 | +| R12022SP1 | 2022.1.302 | +| R22022 | 2022.2.511 | +| R22022SP1 | 2022.2.622 | +| R32022 | 2022.3.913 | +| R12023 | 2023.1.117 | +| R12023SP1 | 2023.1.314 | +| R22023 | 2023.2.606 | +| R32023 | 2023.3.1010 | +| R22024 | 2024.2.513 | + +# Kendo UI for jQuery + +| Release | Version | +|------------|--------------| +| R32021 | 2021.3.914 | +| R12022 | 2022.1.119 | +| R12022SP1 | 2022.1.301 | +| R22022 | 2022.2.510 | +| R22022SP1 | 2022.2.621 | +| R32022 | 2022.3.913 | +| R12023 | 2023.1.117 | +| R12023SP1 | 2023.1.314 | +| R22023 | 2023.2.606 | +| R32023 | 2023.3.1010 | +| R22024 | 2024.2.514 | + +# Kendo UI for Angular + +| Release R32021 | | | +|--------------------------|----------------------------|-------------------| +| **Translator Name** | **Component Name** | **Component Version** | +| KendoAngularAutoComplete | kendo-angular-dropdowns | 5.4.0 | +| KendoAngularButton | kendo-angular-buttons | 6.3.0 | +| KendoAngularComboBox | kendo-angular-dropdowns | 5.4.0 | +| KendoAngularDialog | kendo-angular-dialog | 5.1.1 | +| KendoAngularDropdownList | kendo-angular-dropdowns | 5.4.0 | +| KendoAngularGrid | kendo-angular-grid | 5.4.0 | +| KendoAngularInputs | kendo-angular-inputs | 7.4.0 | +| KendoAngularPager | kendo-angular-pager | 1.0.0 | +| KendoAngularPanelBar | kendo-angular-layout | 6.3.0 | +| KendoAngularSwitch | kendo-angular-inputs | 7.4.0 | +| KendoAngularTabStrip | kendo-angular-layout | 6.3.0 | +| KendoAngularWindow | kendo-angular-dialog | 5.1.1 | + +| Release R12022 | | | +|--------------------------|----------------------------|-------------------| +| **Translator Name** | **Component Name** | **Component Version** | +| KendoAngularAutoComplete | kendo-angular-dropdowns | 6.0.0 | +| KendoAngularButton | kendo-angular-buttons | 7.0.0 | +| KendoAngularComboBox | kendo-angular-dropdowns | 6.0.0 | +| KendoAngularDialog | kendo-angular-dialog | 6.0.0 | +| KendoAngularDropdownList | kendo-angular-dropdowns | 6.0.0 | +| KendoAngularGrid | kendo-angular-grid | 6.0.0 | +| KendoAngularInputs | kendo-angular-inputs | 8.0.0 | +| KendoAngularPager | kendo-angular-pager | 3.0.0 | +| KendoAngularPanelBar | kendo-angular-layout | 6.4.0 | +| KendoAngularSwitch | kendo-angular-inputs | 8.0.0 | +| KendoAngularTabStrip | kendo-angular-layout | 6.4.0 | +| KendoAngularWindow | kendo-angular-dialog | 6.0.0 | + +| Release R12022SP1 | | | +|--------------------------|----------------------------|-------------------| +| **Translator Name** | **Component Name** | **Component Version** | +| KendoAngularAutoComplete | kendo-angular-dropdowns | 6.0.1 | +| KendoAngularButton | kendo-angular-buttons | 7.0.3 | +| KendoAngularComboBox | kendo-angular-dropdowns | 6.0.1 | +| KendoAngularDialog | kendo-angular-dialog | 6.0.2 | +| KendoAngularDropdownList | kendo-angular-dropdowns | 6.0.1 | +| KendoAngularGrid | kendo-angular-grid | 6.1.0 | +| KendoAngularInputs | kendo-angular-inputs | 8.0.7 | +| KendoAngularPager | kendo-angular-pager | 3.0.2 | +| KendoAngularPanelBar | kendo-angular-layout | 6.5.1 | +| KendoAngularSwitch | kendo-angular-inputs | 8.0.7 | +| KendoAngularTabStrip | kendo-angular-layout | 6.5.1 | +| KendoAngularWindow | kendo-angular-dialog | 6.0.2 | + +| Release R22022 | | | +|--------------------------|----------------------------|-------------------| +| **Translator Name** | **Component Name** | **Component Version** | +| KendoAngularAutoComplete | kendo-angular-dropdowns | 7.0.1 | +| KendoAngularButton | kendo-angular-buttons | 8.0.0 | +| KendoAngularComboBox | kendo-angular-dropdowns | 7.0.1 | +| KendoAngularDialog | kendo-angular-dialog | 7.0.0 | +| KendoAngularDropdownList | kendo-angular-dropdowns | 7.0.1 | +| KendoAngularGrid | kendo-angular-grid | 7.0.1 | +| KendoAngularInputs | kendo-angular-inputs | 9.0.1 | +| KendoAngularPager | kendo-angular-pager | 4.0.0 | +| KendoAngularPanelBar | kendo-angular-layout | 7.0.1 | +| KendoAngularSwitch | kendo-angular-inputs | 9.0.1 | +| KendoAngularTabStrip | kendo-angular-layout | 7.0.1 | +| KendoAngularWindow | kendo-angular-dialog | 7.0.0 | + +| Release R22022SP1 | | | +|--------------------------|----------------------------|-------------------| +| **Translator Name** | **Component Name** | **Component Version** | +| KendoAngularAutoComplete | kendo-angular-dropdowns | 7.0.2 | +| KendoAngularButton | kendo-angular-buttons | 8.0.0 | +| KendoAngularComboBox | kendo-angular-dropdowns | 7.0.2 | +| KendoAngularDialog | kendo-angular-dialog | 7.1.2 | +| KendoAngularDropdownList | kendo-angular-dropdowns | 7.0.2 | +| KendoAngularGrid | kendo-angular-grid | 7.2.0 | +| KendoAngularInputs | kendo-angular-inputs | 9.0.3 | +| KendoAngularPager | kendo-angular-pager | 4.0.0 | +| KendoAngularPanelBar | kendo-angular-layout | 7.1.0 | +| KendoAngularSwitch | kendo-angular-inputs | 9.0.3 | +| KendoAngularTabStrip | kendo-angular-layout | 7.1.0 | +| KendoAngularWindow | kendo-angular-dialog | 7.1.2 | + +| Release R32022 | | | +|--------------------------|----------------------------|-------------------| +| **Translator Name** | **Component Name** | **Component Version** | +| KendoAngularAutoComplete | kendo-angular-dropdowns | 7.2.0 | +| KendoAngularButton | kendo-angular-buttons | 8.1.0 | +| KendoAngularComboBox | kendo-angular-dropdowns | 7.2.0 | +| KendoAngularDialog | kendo-angular-dialog | 7.1.3 | +| KendoAngularDropdownList | kendo-angular-dropdowns | 7.2.0 | +| KendoAngularGrid | kendo-angular-grid | 7.3.1 | +| KendoAngularInputs | kendo-angular-inputs | 10.0.0 | +| KendoAngularPager | kendo-angular-pager | 4.0.5 | +| KendoAngularPanelBar | kendo-angular-layout | 7.1.3 | +| KendoAngularSwitch | kendo-angular-inputs | 10.0.0 | +| KendoAngularTabStrip | kendo-angular-layout | 7.1.3 | +| KendoAngularWindow | kendo-angular-dialog | 7.1.3 | + +| Release | Version | +|------------|----------| +| R12023 | 11.0.0 | +| R12023SP1 | 11.4.0 | +| R22023 | 13.0.0 | +| R32023 | 14.0.0 | +| R22024 | 16.0.0 | ## Available Translators From d29c7486d8dcfa40dcf04a7ec70b085f7e12acd4 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 12:31:34 +0300 Subject: [PATCH 38/65] Update product-name --- docs-apitesting/docs-builder.yml | 2 +- docs-teststudiodev/docs-builder.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-apitesting/docs-builder.yml b/docs-apitesting/docs-builder.yml index 1909f380..e5696e58 100644 --- a/docs-apitesting/docs-builder.yml +++ b/docs-apitesting/docs-builder.yml @@ -2,7 +2,7 @@ top-navigation-product: api-testing path-prefix: /teststudio-apis/documentation product-id: 1720 -product-name: Progress Telerik Test Studio for APIs +product-name: Telerik Test Studio for APIs product-url: https://www.telerik.com/teststudio-apis search-engine-id: 001595215763381649090:lxlmtcw2g-u cta-overview: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" diff --git a/docs-teststudiodev/docs-builder.yml b/docs-teststudiodev/docs-builder.yml index bc25bd75..54a2144b 100644 --- a/docs-teststudiodev/docs-builder.yml +++ b/docs-teststudiodev/docs-builder.yml @@ -2,7 +2,7 @@ top-navigation-product: test-studio-dev-edition path-prefix: /teststudio-dev/documentation product-id: 1846 -product-name: Progress Telerik Test Studio Dev Edition Documentation +product-name: Telerik Test Studio Dev Edition product-url: https://www.telerik.com/teststudio-dev search-engine-id: 001595215763381649090:8yrsvynfbrc cta-overview: "@ProductLink is a test automation platform for web, WPF, and responsive web applications, supporting UI, functional, load, and RESTful API testing. Sign up for a free 30-day trial!" From 88fa95094eea229f1b55130efee3a7885360bcbe Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 12:39:32 +0300 Subject: [PATCH 39/65] fix CTA panel name --- docs/getting-started/first-project.md | 16 ++++++++-------- .../browser-configuration.md | 2 +- .../installation/installation-consideration.md | 2 +- .../activating-your-license.md | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/getting-started/first-project.md b/docs/getting-started/first-project.md index 02cdec73..0c68299f 100644 --- a/docs/getting-started/first-project.md +++ b/docs/getting-started/first-project.md @@ -22,7 +22,7 @@ Once you have successfully __Project Explorer__ - this is the pane, which displays the structure of the project with all tests, coded files, folders in the project root folder. Provides access to the items properties, allows you to copy, cut and paste these, add new items, etc. -- __Elements Explorer__ - this is the pane, which shows all elements referred from the test steps in the project, structured in a tree view, which includes page node, frame, element. Provides access to the elements' find expressions and properties, allows you to edit these. -- __Edit Project Items Pane__ - this is the pane, which shows the selected component (test, element, coded file) and allows you to edit it. -- __Output Pane__ - this is the pane, which displays different messages related to your work in the project - syntax or compilation errors when adding code snippets, or messages in regards the Source Control related actions. -- __Step Builder__ - this is the pane, which allows you to add different steps in the tests even if no recording session is currently active. -- __Properties Pane__ - this is the pane to list the properties of the currently selected item (test, step, element, page node, frame) and allows you to edit these. -- __Tools Ribbon__ - the Tools Ribbon provides access to various settings in regards the active tab in the project. +- Project Explorer - this is the pane, which displays the structure of the project with all tests, coded files, folders in the project root folder. Provides access to the items properties, allows you to copy, cut and paste these, add new items, etc. +- Elements Explorer - this is the pane, which shows all elements referred from the test steps in the project, structured in a tree view, which includes page node, frame, element. Provides access to the elements' find expressions and properties, allows you to edit these. +- Edit Project Items Pane - this is the pane, which shows the selected component (test, element, coded file) and allows you to edit it. +- Output Pane - this is the pane, which displays different messages related to your work in the project - syntax or compilation errors when adding code snippets, or messages in regards the Source Control related actions. +- Step Builder - this is the pane, which allows you to add different steps in the tests even if no recording session is currently active. +- Properties Pane - this is the pane to list the properties of the currently selected item (test, step, element, page node, frame) and allows you to edit these. +- Tools Ribbon - the Tools Ribbon provides access to various settings in regards the active tab in the project. ![Project Layout](/img/getting-started/first-project/project-components.png) diff --git a/docs/prerequisites/configure-your-browser/browser-configuration.md b/docs/prerequisites/configure-your-browser/browser-configuration.md index 6e0f674a..24f842b7 100644 --- a/docs/prerequisites/configure-your-browser/browser-configuration.md +++ b/docs/prerequisites/configure-your-browser/browser-configuration.md @@ -10,7 +10,7 @@ position: 0 A specific set of settings is required to enable each of the supported browsers for test recording and execution with Test Studio and this is called __Browser Calibration__. Some of the browsers also require the installation of an extension. {% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-overview.html %} +{% include cta-panel-overview.html %} {% endif %}
    diff --git a/docs/prerequisites/installation/installation-consideration.md b/docs/prerequisites/installation/installation-consideration.md index 4e51b13f..3e74b3ea 100644 --- a/docs/prerequisites/installation/installation-consideration.md +++ b/docs/prerequisites/installation/installation-consideration.md @@ -15,7 +15,7 @@ Before you install Test Studio, make sure that the following requirements are me - If you plan on running Test Studio test automation on Windows Server OS and use IE, turn off the __Windows component Internet Explorer Enhanced Security Configuration__. {% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-overview.html %} +{% include cta-panel-overview.html %} {% endif %} ## Visual Studio 2022 Installation Specifics diff --git a/docs/prerequisites/license-activation/activating-your-license.md b/docs/prerequisites/license-activation/activating-your-license.md index 12b1a16f..37631440 100644 --- a/docs/prerequisites/license-activation/activating-your-license.md +++ b/docs/prerequisites/license-activation/activating-your-license.md @@ -16,7 +16,7 @@ You can find the following topics in the article: - [Possible troubles when activating the license](#possible-troubles) {% if site.has_cta_panels == true %} -{% include cta-panel-teststudio-overview.html %} +{% include cta-panel-overview.html %} {% endif %} ## Launch Test Studio and Login From 0941fcc3b8b00c79f9a24fc4a57c8305712791a1 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 14:08:58 +0300 Subject: [PATCH 40/65] rename the landing page --- docs-apitesting/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs-apitesting/index.md b/docs-apitesting/index.md index 6eb9314f..67b93042 100644 --- a/docs-apitesting/index.md +++ b/docs-apitesting/index.md @@ -1,11 +1,11 @@ --- -title: Overview -page_title: Overview of Test Studio for APIs +title: About Test Studio for APIs +page_title: About of Test Studio for APIs description: "Progress® Test Studio® for APIs - Overview" position: 1 --- -# Overview +# About Test Studio for APIs The new Test Studio for APIs helps customers verify the integrity and reliability of their APIs in an easy way and incorporate their API testing effort in their continuous testing and delivery process. Test Studio for APIs is used to determine whether APIs return the correct response for a broad range of commonly accepted requests, react properly to edge cases such as failures and unexpected inputs, as well as deliver the responses in an acceptable amount of time. From 2c1f1bc493f30088fa8ceada44bdda9ffa0584ab Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 14:09:39 +0300 Subject: [PATCH 41/65] fix md typo --- .../coded-samples/silverlight/verify-text-in-rich-textbox.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md b/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md index 9d3189f0..70fafdd2 100644 --- a/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md +++ b/docs/advanced-topics/coded-samples/silverlight/verify-text-in-rich-textbox.md @@ -5,8 +5,8 @@ description: "Test Studio is an innovative and easy-to-use automated web, WPF an position: 1 --- # Verify Text in a Silverlight RichTextBox -* -I cannot verify all the text or its properties in my Silverlight RichTextBox. The contents are either not visible or each word is contained in an individual TextBlock in the Visual Tree.* + +*I cannot verify all the text or its properties in my Silverlight RichTextBox. The contents are either not visible or each word is contained in an individual TextBlock in the Visual Tree.* ## Solution From dab9a2a4e32b1491596e6a2d598349b49ff0c3fc Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 14:09:58 +0300 Subject: [PATCH 42/65] add new redirects since the branch was created --- docs/docs-builder.yml | 82 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/docs/docs-builder.yml b/docs/docs-builder.yml index 63d29f13..141b38e2 100644 --- a/docs/docs-builder.yml +++ b/docs/docs-builder.yml @@ -1173,9 +1173,11 @@ redirects: to: "/general-information/configure-your-browser/internet-explorer" - from: "/general-information/configure-your-browser/internet-explorer" - to: "/prerequisites/configure-your-browser/internet-explorer" - + to: "/system-requirements" +- + from: "/prerequisites/configure-your-browser/internet-explorer" + to: "/prerequisites/configure-your-browser/edge-chromium" - from: "/user-guide/configure-your-browser/safari.aspx" @@ -2500,3 +2502,79 @@ redirects: from: "/automated-tests/load/advanced-topics/manage-windows-auth" to: "/automated-tests/load/configuring-load-tests-quick-guide" +- + from: "/advanced-topics/build-server/tfs-2017-builds" + to: "/advanced-topics/build-server/azure-devops" +- + from: "/user-guide/command-line-test-execution.aspx" + to: "/automated-tests/continuous-integration/continious-integration-overview" +- + from: "/user-guide/command-line-test-execution" + to: "/automated-tests/continuous-integration/continious-integration-overview" +- + from: "/user-guide/command-line-test-execution/continuous-integration/team-foundation-server-builds" + to: "/automated-tests/continuous-integration/continious-integration-overview" +- + from: "/user-guide/command-line-test-execution/continuous-integration/team-foundation-server-builds.aspx" + to: "/automated-tests/continuous-integration/continious-integration-overview" +- + from: "/teststudio/automated-tests/scheduling/multiple-machines-scheduling-setup/create-storage-server" + to: "/teststudio/automated-tests/scheduling/multiple-machines-scheduling-setup/create-scheduling-server" +- + from: "/teststudio/automated-tests/scheduling/advanced-topics/using-service-api" + to: "/teststudio/automated-tests/scheduling/overview" +- + from: "/teststudio/automated-tests/scheduling/advanced-topics/change-service-account" + to: "/teststudio/automated-tests/scheduling/overview" +- + from: "/teststudio/user-guide/command-line-test-execution/continuous-integration/cruisecontrol-net.aspx" + to: "/teststudio/advanced-topics/build-server/cruise-control.net-builds" +- + from: "/teststudio/user-guide/command-line-test-execution/continuous-integration/cruisecontrol-net" + to: "/teststudio/advanced-topics/build-server/cruise-control.net-builds" +- + from: "/teststudio/user-guide/command-line-test-execution/continuous-integration/teamcity.aspx" + to: "/teststudio/advanced-topics/build-server/team-city-builds" +- + from: "/teststudio/user-guide/command-line-test-execution/continuous-integration/teamcity" + to: "/teststudio/advanced-topics/build-server/team-city-builds" +- + from: "/teststudio/knowledge-base/scheduling-kb/non-domain-environment" + to: "https://testdocs.telerik.com/teststudio/automated-tests/scheduling/overview" +- + from: "/teststudio/knowledge-base/silverlight-kb/automate-in-tfs-builds" + to: "/teststudio/welcome" +- + from: "/teststudio/knowledge-base/silverlight-kb/codeless-scrolling-in-virtualized-panel" + to: "/teststudio/welcome" +- + from: "/teststudio/knowledge-base/verification-kb/verify-silverlight-combobox-items" + to: "/teststudio/welcome" +- + from: "/teststudio/knowledge-base/verification-kb/verify-silverlight-tool-tips" + to: "/teststudio/welcome" +- + from: "/teststudio/knowledge-base/silverlight-kb/silverlight-oob-and-elevated-trust" + to: "/teststudio/welcome" +- + from: "/teststudio/knowledge-base/silverlight-kb/testing-framework-with-silverlight-oob-and-elevated-trust" + to: "/teststudio/welcome" +- + from: "/teststudio/knowledge-base/data-driven-testing-kb/data-driven-test-with-mstest" + to: "/teststudio/automated-tests/data-drive-test/what-is-ddt" +- + from: "/teststudio/knowledge-base/project-configuration-kb/anonymous-access-error-when-connecting-to-team-foundation-service" + to: "/teststudio/automated-tests/source-control/checkin-guidelines" +- + from: "/teststudio/knowledge-base/visual-studio-kb/convert-trx-to-html" + to: "/teststudio/welcome" +- + from: "/teststudio/troubleshooting-guide/scheduling-issues-tg/no-change-button" + to: "/teststudio/automated-tests/scheduling/multiple-machines-scheduling-setup/create-scheduling-server" +- + from: "/teststudio/troubleshooting-guide/scheduling-issues-tg/scheduling-service-shuts-down" + to: "/teststudio/automated-tests/scheduling/multiple-machines-scheduling-setup/create-scheduling-server" +- + from: "/teststudio/automated-tests/load/advanced-topics/manage-windows-auth" + to: "/teststudio/automated-tests/load/configuring-load-tests-quick-guide" + From 98e511010d0c8613a966097f71fa976d75b82e64 Mon Sep 17 00:00:00 2001 From: Plamen Mitrev Date: Fri, 4 Apr 2025 14:16:04 +0300 Subject: [PATCH 43/65] Fix inline code that are discovered through testing --- .../html/partial-attributes-search-fails.md | 2 +- .../test-maintenance/test-step-properties.md | 394 +++++++++++++----- .../advanced-topics-wtc/frames-support.md | 20 +- .../using-the-http-proxy.md | 28 +- .../intermediate-topics-wtc/ajax-support.md | 2 +- .../linq-queries.md | 32 +- .../html-control-suite-wtc/introduction.md | 150 +++++-- .../framework-element-object.md | 46 +- .../invoking-actions.md | 10 +- .../locating-elements.md | 24 +- .../synchronization.md | 24 +- .../wpf-ui-automation.md | 12 +- .../change-text-input-value.md | 12 +- 13 files changed, 541 insertions(+), 215 deletions(-) diff --git a/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md b/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md index d3270ddd..e9272bfc 100644 --- a/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md +++ b/docs/advanced-topics/coded-samples/html/partial-attributes-search-fails.md @@ -31,7 +31,7 @@ In the first example, the framework returns null if there is another element tha ## Solution -A simple solution is available. Use Find.AllByAttributes overload and return the first (and actually the only completely matching control): +A simple solution is available. Use `Find.AllByAttributes` overload and return the first (and actually the only completely matching control): ````C# HtmlInputButton button = Find.AllByAttributes("id=~MyButtonIDPart")[0]; diff --git a/docs/features/test-maintenance/test-step-properties.md b/docs/features/test-maintenance/test-step-properties.md index 57e8c641..b6208509 100644 --- a/docs/features/test-maintenance/test-step-properties.md +++ b/docs/features/test-maintenance/test-step-properties.md @@ -47,115 +47,191 @@ padding: 8px; PropertyDescriptionWhen To Use - **AltKey**Whether to hold the Alt key while clicking.To execute an Alt + Click. + + +**AltKey**Whether to hold the Alt key while clicking.To execute an Alt + Click. - **AnnotationText**The text to use for annotation.With a Custom Annotation step. + + +**AnnotationText**The text to use for annotation.With a Custom Annotation step. - **BaseUrl**The BaseURL to use when a global base is missing. + + +**BaseUrl**The BaseURL to use when a global base is missing. - **CaptureType**The type of window to capture.With a Browser/Desktop Capture step. + + +**CaptureType**The type of window to capture.With a Browser/Desktop Capture step. - **ClickPoint / Offset**ClickUnitType - the unit of point to use: percentage or pixel.
    OffSetReference - the reference point of screen to use for the click.
    X - the x-axis offset from reference point.
    Y - the y-axis offset from reference point.To click the target element based on specific offset coordinates instead of at absolute center. + + +**ClickPoint / Offset**ClickUnitType - the unit of point to use: percentage or pixel.
    OffSetReference - the reference point of screen to use for the click.
    X - the x-axis offset from reference point.
    Y - the y-axis offset from reference point.To click the target element based on specific offset coordinates instead of at absolute center. - **ClosesBrowser**ndicates to the automation that this action will force the browser to close. Typical for HTML pop-ups.With a Click step that closes an HTML pop-up. + + +**ClosesBrowser**ndicates to the automation that this action will force the browser to close. Typical for HTML pop-ups.With a Click step that closes an HTML pop-up. - **ControlKey**Whether to hold the Ctrl key while clicking.To execute a Ctrl + Click. + + +**ControlKey**Whether to hold the Ctrl key while clicking.To execute a Ctrl + Click. - **Desktop Command Type** The mouse action type. + + +**Desktop Command Type** The mouse action type. - **DisplayLocation**The location to display the annotation relative to the browser window.With a Custom Annotation step. + + +**DisplayLocation**The location to display the annotation relative to the browser window.With a Custom Annotation step. - **DisplayTime** The length of time in milliseconds to display the annotation.With a Custom Annotation step. + + +**DisplayTime** The length of time in milliseconds to display the annotation.With a Custom Annotation step. - **Encrypt**When set, will encrypt text typed into input control.
    Once set to true, cannot be changed back to false.
    'Text' property cannot be modified and current step cannot be converted to code. With a Set text step on a password field. + + +**Encrypt**When set, will encrypt text typed into input control.
    Once set to true, cannot be changed back to false.
    'Text' property cannot be modified and current step cannot be converted to code. With a Set text step on a password field. - **EventType**The Javascript event type to invoke. + + +**EventType**The Javascript event type to invoke. - **FileNamePrefix**The file name prefix to use to save the capture on disk.To edit the file name for a browser or desktop Capture image. + + +**FileNamePrefix**The file name prefix to use to save the capture on disk.To edit the file name for a browser or desktop Capture image. - **FireKeyEvents**Whether to fire KeyDown and KeyUp events during simulated typing.If target input element requires these events to be fired. + + +**FireKeyEvents**Whether to fire KeyDown and KeyUp events during simulated typing.If target input element requires these events to be fired. - **Focus**Scroll element into view before performing an action on it.For action steps that require the element be scrolled into view before being acted upon. + + +**Focus**Scroll element into view before performing an action on it.For action steps that require the element be scrolled into view before being acted upon. - **HandleButton**The button to click to handle this dialog.To change the button clicked in the dialog. + + +**HandleButton**The button to click to handle this dialog.To change the button clicked in the dialog. - **HandleTimeout**The timeout in milliseconds for the dialog to be handled once it is detected.Increase if dialog is not fully handled within time set. + + +**HandleTimeout**The timeout in milliseconds for the dialog to be handled once it is detected.Increase if dialog is not fully handled within time set. - **InitializationTime**The fixed time to wait in milliseconds before the handling of the dialog starts.Increase if dialog needs longer to initialize. + + +**InitializationTime**The fixed time to wait in milliseconds before the handling of the dialog starts.Increase if dialog needs longer to initialize. - **IsPassword**Whether the text field is a password.To mask the password in the step description. + + +**IsPassword**Whether the text field is a password.To mask the password in the step description. - **KeyHoldTime**The length of time in milliseconds to hold each key down when SimulateRealTyping is true.To slow down or speed up typing. + + +**KeyHoldTime**The length of time in milliseconds to hold each key down when SimulateRealTyping is true.To slow down or speed up typing. - **Modifier Keys**Any modifier keys held while clicking.If the click step requires a modifier key to be held. + + +**Modifier Keys**Any modifier keys held while clicking.If the click step requires a modifier key to be held. - **MouseButton**The clicked mouse button.With a Mouse Action Desktop Command step. + + +**MouseButton**The clicked mouse button.With a Mouse Action Desktop Command step. - **NavigateUrl**The URL for the Navigate step.To edit the target URL. + + +**NavigateUrl**The URL for the Navigate step.To edit the target URL. - **OverrideFile**Whether to override the image file if it exists.To create new or override existing browser or desktop Capture images. + + +**OverrideFile**Whether to override the image file if it exists.To create new or override existing browser or desktop Capture images. - **Recorded Text Content** Text to use when SimulateRealTyping is false.To edit input text. + + +**Recorded Text Content** Text to use when SimulateRealTyping is false.To edit input text. - **ScrollToVisibleType**Scroll element to visible type.To set a Scroll step to window top, center or bottom. + + +**ScrollToVisibleType**Scroll element to visible type.To set a Scroll step to window top, center or bottom. - **SearchByImageFirst**Search by image before searching by element's find expression.**ParentSetting** will inherit Project or Test List settings. **True** and **False** overrides Project and Test List settings. + + +**SearchByImageFirst**Search by image before searching by element's find expression. + +**ParentSetting** will inherit Project or Test List settings. **True** and **False** overrides Project and Test List settings. - **ShiftKey**Whether to hold the Shift key while clicking.To execute a Shift + Click. + + +**ShiftKey**Whether to hold the Shift key while clicking.To execute a Shift + Click. - **SimulateRealClick**Whether to perform the click using the mouse rather than directly invoking a click on the DOM element.If the click target requires a real click to trigger an event or validation. + + +**SimulateRealClick**Whether to perform the click using the mouse rather than directly invoking a click on the DOM element.If the click target requires a real click to trigger an event or validation. - **SimulateRealTyping**Whether to simulate real text typing one character at a time.If input field requires real typing to trigger an event or validation. + + +**SimulateRealTyping**Whether to simulate real text typing one character at a time.If input field requires real typing to trigger an event or validation. - **SimulateRealUser**Whether to simulate real user actions.For Silverlight/WPF action steps. + + +**SimulateRealUser**Whether to simulate real user actions.For Silverlight/WPF action steps. - **Text**Text entered into input control.To edit the input text. + + +**Text**Text entered into input control.To edit the input text. - **TimeBetweenKeyPresses**The pause in milliseconds between key presses to use when SimulateRealUser is set.To increase or decrease the typing speed. + + +**TimeBetweenKeyPresses**The pause in milliseconds between key presses to use when SimulateRealUser is set.To increase or decrease the typing speed. - **Typed Text**Text that will be played back when SimulateRealUser is true.To edit the typed text. + + +**Typed Text**Text that will be played back when SimulateRealUser is true.To edit the typed text. - **Typing Delay**The pause between key presses when SimulateRealUser is set.To increase or decrease the typing speed. + + +**Typing Delay**The pause between key presses when SimulateRealUser is set.To increase or decrease the typing speed. - **Use Offset**Whether to click at a specific point within the target element or the center of it.With a Click step. + + +**Use Offset**Whether to click at a specific point within the target element or the center of it.With a Click step. - **WaitTime**Time to wait in milliseconds.With an Execution Delay step. + + +**WaitTime**Time to wait in milliseconds.With an Execution Delay step. @@ -166,7 +242,9 @@ padding: 8px; PropertyPropertyWhen To Use - **Comment**The text comment to display as a single test step in the test log.To insert a comment into the test log next to the step. + + +**Comment**The text comment to display as a single test step in the test log.To insert a comment into the test log next to the step. @@ -177,7 +255,9 @@ padding: 8px; PropertyPropertyWhen To Use - **(Bindings)**Bind data driven properties against a data source. Click the drop-down to see properties that support data binding.To data bind the step to a specific column from the data source. + + +**(Bindings)**Bind data driven properties against a data source. Click the drop-down to see properties that support data binding.To data bind the step to a specific column from the data source. @@ -188,13 +268,19 @@ padding: 8px; PropertyDescriptionWhen To Use - **ChildWindowTextContent**A partial text that might be found on the dialog.If two dialogs have similar titles, further distinguish them by adding this property. + + +**ChildWindowTextContent**A partial text that might be found on the dialog.If two dialogs have similar titles, further distinguish them by adding this property. - **DialogTitle**The dialog title to look for to identify the dialog.To edit the identifying dialog title. + + +**DialogTitle**The dialog title to look for to identify the dialog.To edit the identifying dialog title. - **MatchPartialTitle**Whether to use partial text matching to match the dialog title.To match an exact or partial dialog title. + + +**MatchPartialTitle**Whether to use partial text matching to match the dialog title.To match an exact or partial dialog title. @@ -205,7 +291,9 @@ padding: 8px; PropertyDescriptionWhen To Use - **DownloadPath**The download location to set for the download dialog.To change where a file is saved by the Download dialog handler step. + + +**DownloadPath**The download location to set for the download dialog.To change where a file is saved by the Download dialog handler step. @@ -216,7 +304,9 @@ padding: 8px; PropertyDescriptionWhen To Use - **Offset**ClickUnitType - the unit of point to use: percentage or pixel.
    OffSetReference - the reference point of screen to use for the click.
    X - the x-axis offset from reference point.
    Y - the y-axis offset from reference point.To start the drag from an offset of the source element, as opposed to absolute center. + + +**Offset**ClickUnitType - the unit of point to use: percentage or pixel.
    OffSetReference - the reference point of screen to use for the click.
    X - the x-axis offset from reference point.
    Y - the y-axis offset from reference point.To start the drag from an offset of the source element, as opposed to absolute center. @@ -227,13 +317,19 @@ padding: 8px; PropertyDescriptionWhen To Use - **DragDropWindowData**Used when entire window is considered the drop target.To edit the window coordinates where the source element is dropped when using window target. + + +**DragDropWindowData**Used when entire window is considered the drop target.To edit the window coordinates where the source element is dropped when using window target. - **DropOffset**The offset to use for the drop target.To drop the source element to offset coordinates of the target element. + + +**DropOffset**The offset to use for the drop target.To drop the source element to offset coordinates of the target element. - **DropTargetType**The type of drop target to use for the drag drop.To drop the source element to a window or element target. Element targets tend to be more reliable. + + +**DropTargetType**The type of drop target to use for the drag drop.To drop the source element to a window or element target. Element targets tend to be more reliable. @@ -244,22 +340,34 @@ padding: 8px; PropertyDescriptionWhen To Use - **Drag Element**Key of the element to use for the drag.To change the source element to drag. + + +**Drag Element**Key of the element to use for the drag.To change the source element to drag. - **Drop Element**Key of the element to use for the drop.To change the target element to drop onto. + + +**Drop Element**Key of the element to use for the drop.To change the target element to drop onto. - **PrimaryTarget**The primary automation element that this step is targeting.To change the element the step is based on. + + +**PrimaryTarget**The primary automation element that this step is targeting.To change the element the step is based on. - **SecondaryTarget**The primary automation element that this step is targeting. Used only for steps that require two targets, like a drag and drop.Only in drag and drop scenarios. + + +**SecondaryTarget**The primary automation element that this step is targeting. Used only for steps that require two targets, like a drag and drop.Only in drag and drop scenarios. - **Virtualizing Container**The object containing this element, if any.(Silverlight only) + + +**Virtualizing Container**The object containing this element, if any.(Silverlight only) - **Virtualizing Container Offset**The offset to scroll the virtualizing container to before searching for the target element of this step.(Silverlight only) + + +**Virtualizing Container Offset**The offset to scroll the virtualizing container to before searching for the target element of this step.(Silverlight only) @@ -270,28 +378,44 @@ padding: 8px; PropertyDescriptionWhen To Use - **AjaxTimeout** The timeout to wait for pending AJAX requests. If the test step relies on an AJAX postback to complete before proceeding. + + +**AjaxTimeout** The timeout to wait for pending AJAX requests. If the test step relies on an AJAX postback to complete before proceeding. - **EnsureElementsClickable**Whether to ensure the target element of this action is visible and clickable before performing the action. + + +**EnsureElementsClickable**Whether to ensure the target element of this action is visible and clickable before performing the action. - **Pause**Whether to pause the step during execution. Only respected when running tests from the Test Explorer.To pause test execution at a certain point to manually debug. + + +**Pause**Whether to pause the step during execution. Only respected when running tests from the Test Explorer.To pause test execution at a certain point to manually debug. - **ScrollToVisibleType**When 'SimulateRealClick' or 'SimulateRealTyping' is set to 'True', you can specify the scroll direction in order to get the target element into view.Choose whether to scroll the element to top, center or bottom of the page. + + +**ScrollToVisibleType**When 'SimulateRealClick' or 'SimulateRealTyping' is set to 'True', you can specify the scroll direction in order to get the target element into view.Choose whether to scroll the element to top, center or bottom of the page. - **UseStepWaitOnElementsTimeout**Whether to use step's WaitOnElementsTimeout instead of the global setting.To specifically increase one step's element locating timeout. + + +**UseStepWaitOnElementsTimeout**Whether to use step's WaitOnElementsTimeout instead of the global setting.To specifically increase one step's element locating timeout. - **WaitForNoMotion**Wait for the element to stop moving before executing the action. + + +**WaitForNoMotion**Wait for the element to stop moving before executing the action. - **WaitOnElements**Whether to wait on step's elements to exist before executing it.The default is True (recommended). False will ignore the Global and per step settings and will execute the step without waiting for the element (not recommended). + + +**WaitOnElements**Whether to wait on step's elements to exist before executing it.The default is True (recommended). False will ignore the Global and per step settings and will execute the step without waiting for the element (not recommended). - **WaitOnElementsTimeout**Number of milliseconds to wait for element to exist if WaitOnElements is true.To specifically increase one step's element locating timeout. + + +**WaitOnElementsTimeout**Number of milliseconds to wait for element to exist if WaitOnElements is true.To specifically increase one step's element locating timeout. @@ -302,7 +426,9 @@ padding: 8px; PropertyDescriptionWhen To Use - **DataBindVariableName**The name with which this extraction is published.To change the Extraction variable used for later data binding. + + +**DataBindVariableName**The name with which this extraction is published.To change the Extraction variable used for later data binding. @@ -313,7 +439,9 @@ padding: 8px; PropertyDescriptionWhen To Use - **TriggerjQueryEvent**During step execution, attempt to trigger proper jQuery event.Step is expected to trigger a jQuery event on the page. + + +**TriggerjQueryEvent**During step execution, attempt to trigger proper jQuery event.Step is expected to trigger a jQuery event on the page. @@ -324,13 +452,19 @@ padding: 8px; PropertyDescriptionWhen To Use - **ButtonId**The button ID to use when HandleButtonMethod = ButtonId.To edit the button ID used to handle a Generic dialog. + + +**ButtonId**The button ID to use when HandleButtonMethod = ButtonId.To edit the button ID used to handle a Generic dialog. - **ButtonPartialText**The partial button text to use when HandleButtonMethod = ButtonPartialText.To edit the partial button text used to handle a Generic dialog. + + +**ButtonPartialText**The partial button text to use when HandleButtonMethod = ButtonPartialText.To edit the partial button text used to handle a Generic dialog. - **HandleButtonMethod**Identification method of the handle method. NoneCloseDialog simply attempts to knock down the dialog using the Close button.To change the handle method for a Generic dialog. + + +**HandleButtonMethod**Identification method of the handle method. NoneCloseDialog simply attempts to knock down the dialog using the Close button.To change the handle method for a Generic dialog. @@ -341,10 +475,14 @@ padding: 8px; PropertyDescriptionWhen To Use - **Password**The password to use to log on.To edit the password in a Logon dialog handler step. + + +**Password**The password to use to log on.To edit the password in a Logon dialog handler step. - **UserName**The user name to use to log on.To edit the user name in a Logon dialog handler step. + + +**UserName**The user name to use to log on.To edit the user name in a Logon dialog handler step. @@ -355,10 +493,14 @@ padding: 8px; PropertyDescriptionWhen To Use - **ExecutionTimeout**Timeout in milliseconds to wait for the manual execution, else step will timeout and log a failure.To change the time in minutes a Manual step will wait for input. + + +**ExecutionTimeout**Timeout in milliseconds to wait for the manual execution, else step will timeout and log a failure.To change the time in minutes a Manual step will wait for input. - **ManualDescription**Description displayed in Execute Manual Step dialog.To edit the message displayed in the Manual step dialog. + + +**ManualDescription**Description displayed in Execute Manual Step dialog.To edit the message displayed in the Manual step dialog. @@ -369,49 +511,79 @@ padding: 8px; PropertyDescriptionWhen To Use - **DialogType**The type of dialog handled by the step.(Read only) + + +**DialogType**The type of dialog handled by the step.(Read only) - **InvokeSelectionChanged** Whether to invoke the OnChange javascript event. If the step requires the OnChange event. + + +**InvokeSelectionChanged** Whether to invoke the OnChange javascript event. If the step requires the OnChange event. - **IsDoubleClick**Whether a click step is a single or double click.To toggle between single or double click. + + +**IsDoubleClick**Whether a click step is a single or double click.To toggle between single or double click. - **IsPartial**Whether to perform a partial or exact match on the URL.With a Wait For Url step. + + +**IsPartial**Whether to perform a partial or exact match on the URL.With a Wait For Url step. - **LogMessageOnFailure**Message to log as part of log content if step fails.To insert a custom message in the test log if the step fails. + + +**LogMessageOnFailure**Message to log as part of log content if step fails.To insert a custom message in the test log if the step fails. - **RequiresSilverlight**Whether this step requires Silverlight to be enabled. + + +**RequiresSilverlight**Whether this step requires Silverlight to be enabled. - **RunsAgainst**The browsers this step can run against.If a step should only be run for a specific browser type. + + +**RunsAgainst**The browsers this step can run against.If a step should only be run for a specific browser type. - **RunsAgainstVersion**The browser version that this step can run against.If a step should only be run for a specific browser version. + + +**RunsAgainstVersion**The browser version that this step can run against.If a step should only be run for a specific browser version. - **RunsAgainstVersionCompare**The compare type of the browser version that this step can run against.To change the browser version comparison from Equals to LessThan, for example. + + +**RunsAgainstVersionCompare**The compare type of the browser version that this step can run against.To change the browser version comparison from Equals to LessThan, for example. - **StepType**Step descriptor type.(Read only) + + +**StepType**Step descriptor type.(Read only) - **TestName**Name of the test to execute for Test as Step.(Read only) + + +**TestName**Name of the test to execute for Test as Step.(Read only) - **TestPath**Test path to use for Test as Step. + + +**TestPath**Test path to use for Test as Step. - **TestUniqueId**Unique ID for Test as Step. + + +**TestUniqueId**Unique ID for Test as Step. - **Url**The URL to wait for.With a Wait For Url step. + + +**Url**The URL to wait for.With a Wait For Url step. - **WaitTimeout**The timeout to use for waiting.With a Wait For Url step. + + +**WaitTimeout**The timeout to use for waiting.With a Wait For Url step. @@ -422,7 +594,9 @@ padding: 8px; PropertyDescriptionWhen To Use - **FileUploadPath**The file upload path on disk.To change the upload path. + + +**FileUploadPath**The file upload path on disk.To change the upload path. @@ -433,28 +607,44 @@ padding: 8px; PropertyDescriptionWhen To Use - **AttributeName** The attribute name to verify. To change the target attribute to verify. + + +**AttributeName** The attribute name to verify. To change the target attribute to verify. - **AttributeValue** The attribute value to verify. To change the attribute's value to verify. + + +**AttributeValue** The attribute value to verify. To change the attribute's value to verify. - **CompareType**The compare type of the text verification.To change from an exact to a partial match, for example. + + +**CompareType**The compare type of the text verification.To change from an exact to a partial match, for example. - **EnsureStateIsCurrent**Whether to explicitly refresh the target element on which the verification is performed.To eliminate the need to explicitly refresh the DOM tree in a coded step before the verification. + + +**EnsureStateIsCurrent**Whether to explicitly refresh the target element on which the verification is performed.To eliminate the need to explicitly refresh the DOM tree in a coded step before the verification. - **ExpectedString**The expected string to compare against.To change the string to verify. + + +**ExpectedString**The expected string to compare against.To change the string to verify. - **PropertyName**The name of the property being verified.To change the property to verify. + + +**PropertyName**The name of the property being verified.To change the property to verify. - **TagSegmentType**The segment of the target element to compare.To change which attribute the Verification is based on. + + +**TagSegmentType**The segment of the target element to compare.To change which attribute the Verification is based on. - **Value**Represents the expected value of the property.To change the value to verify. + + +**Value**Represents the expected value of the property.To change the value to verify. @@ -465,16 +655,24 @@ padding: 8px; PropertyDescriptionWhen To Use - **CheckInterval**The check interval in milliseconds when acting as a Wait.To cause the Wait to check its condition more or less frequently. + + +**CheckInterval**The check interval in milliseconds when acting as a Wait.To cause the Wait to check its condition more or less frequently. - **IsWaitOnly**Whether this descriptor can only be a wait.(Read only) + + +**IsWaitOnly**Whether this descriptor can only be a wait.(Read only) - **SupportsWait**Whether this verification supports wait.(Read only) + + +**SupportsWait**Whether this verification supports wait.(Read only) - **Timeout**The wait time when acting as a wait.To increase or decrease the wait time. + + +**Timeout**The wait time when acting as a wait.To increase or decrease the wait time. diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md index 9745191a..54583396 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/frames-support.md @@ -15,27 +15,37 @@ Frames are treated just like another browser instance. In order to work with the MethodParameterDescription - **Browser.Frames[string frameName]** + + +**Browser.Frames[string frameName]** Takes a string that specifies the name of the frame. e.g. This method searches for a frame that matches the specified string and then returns a Browser object representing that frame that you can use to interact with the frame. Returns null if no matching frame can be found. - **Browser.Frames[int frameIndex]** + + +**Browser.Frames[int frameIndex]** Takes an integer specifying which frame to get from the frame collection. Useful if you know ahead of time you want the second frame. e.g. ActiveBrowser.Frames[1] This method searches for a frame that matches the specified string and then returns a Browser object representing that frame that you can use to interact with the frame. Throws an error if the index value is out of range. - **Browser.Frames[FrameInfo frameInfo]** + + +**Browser.Frames[FrameInfo frameInfo]** Takes a FrameInfo object that specifies the properties of the frame you want. Perhaps you want to locate a frame by its src property. This method searches for a frame that matches the specified string and then returns a Browser object representing that frame that you can use to interact with the frame. Returns null if no matching frame can be found. - **Browser.Frames.ById(string frameId)** + + +**Browser.Frames.ById(string frameId)** Takes a string that specifies the ID of the frame. Prefix with a tilde (~) to indicate a partial match. This method searches for a frame that matches the specified string and then returns a Browser object representing that frame that you can use to interact with the frame. Returns null if no matching frame can be found. - **Browser.Frames.BySrc(string src)** + + +**Browser.Frames.BySrc(string src)** Takes a string that specifies the source of the frame. Prefix with a tilde (~) to indicate a partial match. This method searches for a frame that matches the specified string and then returns a Browser object representing that frame that you can use to interact with the frame. Returns null if no matching frame can be found. diff --git a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md index b6c20ac3..3018344b 100644 --- a/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md +++ b/docs/testing-framework/write-tests-in-code/advanced-topics-wtc/using-the-http-proxy.md @@ -21,31 +21,45 @@ In this namespace you will find the following methods classes: ClassDescription - **HttpProxyManager** + + +**HttpProxyManager** Manages the HTTP proxy agent. - **HttpRequest** + + +**HttpRequest** Used to create and manipulate an HTTP request. - **HttpRequestEventArgs** + + +**HttpRequestEventArgs** EventArgs subclass that wraps an HTTP request, and possibly the related response. - **HttpResponse** + + +**HttpResponse** Class wrapper of an HTTP response. - **HttpResponseEventArgs** + + +**HttpResponseEventArgs** EventArgs subclass that wraps an HTTP response and the related request. - **RequestListenerInfo** + + +**RequestListenerInfo** Wraps a listener for BeforeRequest events from the proxy. - **ResponseListenerInfo** + + +**ResponseListenerInfo** Wraps a listener for BeforeResponse events from the proxy. diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/ajax-support.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/ajax-support.md index baaa48f3..a177bf8b 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/ajax-support.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/ajax-support.md @@ -144,7 +144,7 @@ When using Ajax the application, in most scenarios, updates the document's DOM u In some scenarios that might not even be enough. For example, you want to retrieve a property value that doesn't usually get emitted into the DOM when serialized like the default or inherited values of an unset property or in Firefox the 'value' property of input tags. -To help address this issue and potentially other issues, the Telerik infrastructure supports a generic and simple method of retrieving any property of any element directly from the live DOM hosted in the browser. Each Element object in the Telerik Testing Framework has a GetValue() method that you can use to evaluate any custom or standard attribute of your Dom element at any point in your test code or application. +To help address this issue and potentially other issues, the Telerik infrastructure supports a generic and simple method of retrieving any property of any element directly from the live DOM hosted in the browser. Each Element object in the Telerik Testing Framework has a `GetValue()` method that you can use to evaluate any custom or standard attribute of your Dom element at any point in your test code or application. For example, if you want to retrieve the text set by a user in an input textbox in Firefox, you can simply do the following: diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md index 561b95c4..d41908c5 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/element-identification-wtc/linq-queries.md @@ -15,15 +15,33 @@ The Find.Byxxx methods now support Language-Integrated Query (LINQ) queries. Som MethodsDescriptionExample - **AllElements** - Gets a IEnumerable for all elements to be used for LINQ queries. - var inlineStyledElements = Find.AllElements().Where(element =>
    - element.ContainsAttribute("style")); + + +**AllElements** + + +Gets a `IEnumerable` for all elements to be used for LINQ queries. + + +````C# +var inlineStyledElements = Find.AllElements().Where(element => +element.ContainsAttribute("style")); +```` + - **AllControls** - Gets an IEnumerable for TControl to be used for LINQ queries. This will return only elements that are convertible to TControl. - var images = Find.AllControls(); + + +**AllControls** + + +Gets an `IEnumerable` for `TControl` to be used for LINQ queries. This will return only elements that are convertible to TControl. + + +````C# +var images = Find.AllControls(); +```` + diff --git a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md index 748cda1e..a4b3b798 100644 --- a/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md +++ b/docs/testing-framework/write-tests-in-code/intermediate-topics-wtc/html-control-suite-wtc/introduction.md @@ -9,11 +9,11 @@ position: 1 Telerik Framework includes an extensive suite of strongly typed HTML element wrappers that abstracts out actions and verifications of the controls contained on the webpage. With the classes contained in the control suite you can do things like: -**nextPageButton.Click()** instead of **Actions.Click(nextPageButton)** +`nextPageButton.Click()` instead of `Actions.Click(nextPageButton)` or -**Assert.IsTrue(textBox.Text.Equals("foo"))** instead of **Assert.IsTrue(element.GetAttribute("value").Equals("foo"))** +`Assert.IsTrue(textBox.Text.Equals("foo"))` instead of `Assert.IsTrue(element.GetAttribute("value").Equals("foo"))` In addition there are many other features that make the abstraction even more powerful. Here is a list off all the wrapper classes currently available along with the properties and methods they expose: @@ -23,7 +23,9 @@ In addition there are many other features that make the abstraction even more po HTML ControlDescriptionPropertiesMethodsBase Class - **HtmlAnchor** + + +**HtmlAnchor** Wraps access to a HTML \ anchor element. HRef
    Name
    @@ -33,7 +35,9 @@ In addition there are many other features that make the abstraction even more po
    HtmlContainerControl - **HtmlButton** + + +**HtmlButton** Wraps access to a HTML \