﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://community.devexpress.com/feed-stylesheets/rss.xsl" media="screen"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dx="https://www.devexpress.com/" xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>TestCafe Team Blog</title>
    <link>https://community.devexpress.com/Blogs/testcafe/default.aspx</link>
    <description />
    <language>en-US</language>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:384864</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2020/09/23/the-fastest-way-to-your-next-test.aspx</link>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/testing+tools">testing tools</category>
      <category domain="https://community.devexpress.com/Tags/web+testing">web testing</category>
      <category domain="https://community.devexpress.com/Tags/Webinar">Webinar</category>
      <title>The Fastest Way to Your Next Test – TestCafe + TestCafe Studio - Q&amp;A's</title>
      <description>&lt;p&gt;Thank you to all that attended the recent TestCafe Studio presentation, the questions raised have been answered by the team and listed below.&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Watch the Webinar&lt;/h3&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/3ZsYj1my-us" allowfullscreen="" style="width:560px;" referrerpolicy="strict-origin-when-cross-origin"&gt;&lt;/iframe&gt;


&lt;h3&gt;Questions &amp;amp; Answers&lt;/h3&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Will the webinar recording on YouTube include the Q&amp;amp;A section?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;We discussed the most popular Q&amp;amp;As at the end of the webinar. This part is included in the &lt;a href="https://youtu.be/3ZsYj1my-us?t=3216"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;recording&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;. The remaining questions are answered in this post.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I test Windows Form applications with TestCafe Studio?&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;TestCafe Studio can test web applications only.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Am I allowed to install TestCafe Studio on our customer’s site to test it in their environment?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;TestCafe Studio is a desktop application installed on a developer’s/tester’s local computer, not on a website. You can install TestCafe Studio on any Windows, macOS, or Linux machine. If the machine where TestCafe Studio runs can access the website deployed on your customer’s infrastructure, you can simply specify its URL to test it in its native environment.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Does TestCafe Studio support multiple languages?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;The TestCafe Studio UI only supports English. If you are asking about programming languages in which you can write tests, TestCafe Studio supports JavaScript, TypeScript, CoffeeScript, and of course tests recorded in TestCafe Studio (*.testcafe files).&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I include TestCafe Studio in Continuous Integration?&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;You can use the open-source TestCafe to run tests recorded or written in TestCafe Studio in CI systems. See the &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400445/guides/integrate-tests-with-ci-systems"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Integrate Tests with CI Systems&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; topic for more information.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;What value does TestCafe Studio add to an automated CI pipeline in which tests are executed in headless mode?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;TestCafe Studio allows you to create and modify tests with ease. In a CI system, the tests will run with an open-source TestCafe runner that doesn’t make any difference between TestCafe Studio recorded tests and JavaScript TestCafe tests. See the &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400445/guides/integrate-tests-with-ci-systems"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Integrate Tests with CI Systems&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; topic for more information. So, TestCafe Studio’s goal is to facilitate recording and maintenance.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Is there a way to record tests in TestCafe Studio and export them to JavaScript to run individually?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Yes, you can do this. See the &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401052/test-directory-structure/test-scripts#convert-recorded-tests-to-javascript"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Convert Recorded Tests to JavaScript&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; topic for more information.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Does TestCafe Studio have any known issues with SPA apps, specifically Angular?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;No, we are not aware of any significant issues with SPAs including Angular applications. You can also make use of the following selector extension that enables you to test Angular applications even easier: &lt;/span&gt;&lt;a href="https://github.com/DevExpress/testcafe-angular-selectors"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;DevExpress/testcafe-angular-selectors&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Are there any recommendations on the best method for initializing a selector?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;We plan to publish an article that details the best practices for TestCafe tests, including suggestions on how to build effective selectors. In the meantime, refer to the &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400407/test-actions/element-selectors"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Element Selectors&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; topic to learn more about them.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Does the open-source TestCafe have the reporting and screen capturing capabilities?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Yes, it has both. See the &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/concepts/reporters.html"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Reporters&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; and &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/screenshots-and-videos.html"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Screenshots and Videos&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; topics for details.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I test “concurrent” scenarios where two users use the app and modify the data simultaneously?&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;To simulate users interacting with the app concurrently, you need two browser windows. Support for multiple browser windows is currently available in beta for coded tests only. See the details in the open-source TestCafe documentation: &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/multiple-browser-windows.html"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Multiple Browser Windows&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;. As an alternative solution, you can try running the same test that edits a data record in different browsers at the same time.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I run tests at specific moments in time, e.g. on schedule?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;You can &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400445/guides/integrate-tests-with-ci-systems"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;integrate your test with any CI service&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; to run them on schedule.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I receive an email notification with test results once they are done?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;You can &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400187/user-interface/report-view#get-more-report-formats"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;search for a TestCafe reporter&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; that sends an email with test run results or &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/extend-testcafe/reporter-plugin.html#generate-a-reporter-project"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;create a new custom reporter&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; for your needs.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I deliberately slow down the test run in TestCafe Studio for more convenient&amp;nbsp; viewing?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Yes, you can adjust &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400179/guides/debug-tests#test-speed"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;the Speed option&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; to slow down test execution.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;How do you use the GUI to create a custom attribute for a webpage?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;You can customize &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400186/user-interface/record-configuration-dialog#selector-generation"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;the selector generation mechanism&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; to take into account custom attributes. Add a custom attribute name to the list of selector types. TestCafe Studio will then use this attribute to create selectors. On your website end, you should specify the custom attribute for page elements manually.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Is it possible to write a text assertion with wildcards in it, so that it matches multiple text values?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Yes, you can use regular expressions for this purpose: &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400167/test-actions/assertions#match"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Match Assertion&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Is it possible to load user credentials from a file to use them in tests?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;You can use the &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401265/test-actions/custom-scripts"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Run TestCafe Script action&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;. Write a script that imports &lt;/span&gt;&lt;a href="https://nodejs.org/api/fs.html"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;the fs Node.js module&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;, reads the file content and saves the credentials in the &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401265/test-actions/custom-scripts#script-context"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;test context&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;. Now you can read these values from `t.ctx` in other scripts within Run TestCafe Script actions. Currently, you cannot pass the test context to recorded action parameters.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I create variables to store secrets or URLs for different environments?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;TestCafe Studio can save &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400401/test-actions/statements"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;selectors and functions&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; to variables. In &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401265/test-actions/custom-scripts"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Run TestCafe Script action&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; code, you can create other types of variables and use them according to your needs. To share variables between different scripts, store them in the &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401265/test-actions/custom-scripts#script-context"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;test context&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I use conditions, add conditional jumps or go-to statements?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;In recorded tests, you cannot use conditions and go-to statements. You can record test scenarios and then &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401052/test-directory-structure/test-scripts#convert-recorded-tests-to-javascript"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;convert them to JavaScript&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; to add conditions.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;How to organize tests in TestCafe Studio? How can I tag Smoke and Regression tests to distinguish between them? I tried metadata but found it ineffective. Is there an alternative way in TestCafe Studio?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;This is no such capability built in so far. You can split your tests across different directories or &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401052/test-directory-structure/test-scripts#convert-recorded-tests-to-javascript"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;convert the recorded tests into JavaScript&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; and &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/organize-tests.html#specify-test-metadata"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;use metadata&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; with the open-source TestCafe test runner.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I use data from external sources (text files or databases) in my tests?&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-weight:400;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Yes, but not in the Test Editor UI. If you &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401052/test-directory-structure/test-scripts#convert-recorded-tests-to-javascript"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;convert the recorded tests into JavaScript&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;, you can use any Node.js or npm module to read data from your files or load from a database to use it in your test cases.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;How can I ensure temporary objects that pop up briefly after a button is pushed or the mouse hovers over something are displayed? The display doesn&amp;#39;t last long enough for me to click on it after activating the &amp;quot;=&amp;quot; assertion.&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;In recoded tests, you can add &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400401/test-actions/statements#define-function"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;the Define Function action&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; that checks if the target element exists every n milliseconds and returns the result when the element is found (you can use a &lt;/span&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Promise&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;). Then add an action for click. After that, use the client function’s return value in an assertion.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;How would I test visuals that indicate drag-and-drop, since that visuals only exist while you are actively dragging?&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-weight:400;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;TestCafe cannot execute an assertion while you are dragging. We may suggest a multi-step workaround where you &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/inject-client-scripts.html"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;inject&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; client-side code that is triggered during the drag, checks for the visuals, and stores the result. When drag is finished, you can obtain this value &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/obtain-client-side-info.html"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;via a client function&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; and &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/assert.html"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;verify it in an assertion&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;. For manual verification, you can use the open-source TestCafe to &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/screenshots-and-videos.html#record-videos"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;record a video of a test run&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; to ensure that the drag-and-drop indicator is displayed.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;How do I run the same test against my app versions deployed in different environments (at different URLs), e.g., FAT/UAT/production?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;In coded tests, you can &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/faq/#how-do-i-work-with-configuration-files-and-environment-variables"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;specify the test’s start page programmatically&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;. To test multiple versions of your app with the same test suite, start the tests as many times as you need while passing a different URL each time.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;In recorded tests, you can use the same approach, but instead of setting the start page (which is not possible programmatically), begin tests with &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401265/test-actions/custom-scripts"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;a custom script&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; that accesses the passed URL and navigates to the required page with the &lt;/span&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/navigateto.html"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;t.navigateTo&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; method.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can variables be parameterized?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Currently, you cannot use parameters for recorded test steps but you can write any custom code in &lt;/span&gt;&lt;a href="https://docs.devexpress.com/TestCafeStudio/401265/test-actions/custom-scripts"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;the Run TestCafe Script action&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can the JS scripts act as a REST client to obtain assertion values (via a service call to a helper endpoint)?&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Yes, you can use a Node.js HTTP client like &lt;/span&gt;&lt;a href="https://www.npmjs.com/package/got"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;got&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;In our tests, selectors throw errors occasionally. How can we get rid of this irregular behavior?&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-weight:400;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Let us know how we can replicate this behavior. &lt;/span&gt;&lt;a href="https://devexpress.com/ask"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Please submit an issue in the Support Center.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can I record accessibility tests with TestCafe Studio&lt;/span&gt;&lt;span style="font-weight:400;"&gt;?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;No, but you can use &lt;/span&gt;&lt;a href="https://www.npmjs.com/package/axe-testcafe"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;axe-testcafe&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; in coded tests for accessibility testing.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;How do I integrate TestCafe reports with Xray?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Check out the following custom reporter plug-in for Xray: &lt;/span&gt;&lt;a href="https://github.com/antreyes/testcafe-reporter-xray"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;antreyes/testcafe-reporter-xray&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can you show an example of a much more complex real-life test?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;We publish TestCafe examples in this GitHub repository: &lt;/span&gt;&lt;a href="https://github.com/DevExpress/testcafe-examples"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;DevExpress/testcafe-examples&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt;. You can find both basic examples as well as samples that address some rare scenarios.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;However, you wouldn’t find a really complex test among our examples because it’s not good practice to overengineer end-to-end tests. After all, we created TestCafe to keep your tests simple.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Can you please show an example with the DevExpress Grid Control?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;DevExpress Grid Controls can be easily tested with TestCafe like any other web control/page. You can try to record your own test on &lt;/span&gt;&lt;a href="https://js.devexpress.com/Demos/WidgetsGallery/Demo/DataGrid/Overview/jQuery/Light/"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;JS Grid demo pages&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; with TestCafe Studio.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Will TestCafe be able to generate tests in other languages, like C#, or using Selenium API, etc?&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;span style="font-weight:400;"&gt;Not in the nearest future.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;span&gt;Do you offer a testing framework for desktop applications (specifically, .NET)?&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;span style="font-weight:400;"&gt;Yes, we offer &lt;/span&gt;&lt;a href="https://www.devexpress.com/products/net/controls/winforms/coded-ui/"&gt;&lt;span style="color:#1155cc;font-weight:400;"&gt;Coded UI&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight:400;"&gt; for WinForms applications.&lt;/span&gt;</description>
      <pubDate>Wed, 23 Sep 2020 11:00:00 Z</pubDate>
      <dc:creator>Paul Usher (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:384599</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2020/08/16/testcafe-webinar-your-questions-answered.aspx</link>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/Webinar">Webinar</category>
      <title>TestCafe Webinar - Your Questions Answered</title>
      <description>&lt;p&gt;We recently hosted a webinar on TestCafe and found the response overwhelming. During the presentation a large number of questions were raised, and as promised, the team have been through and answered them all.&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Watch the Webinar&lt;/h3&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/kwV_HCE7neM" allowfullscreen="" style="width:560px;" referrerpolicy="strict-origin-when-cross-origin"&gt;&lt;/iframe&gt;

&lt;h3&gt;Webinar Resources&lt;/h3&gt;
&lt;div&gt;&lt;strong&gt;Does the book (&lt;em&gt;End-to-End Testing with TestCafe&lt;/em&gt; by Dennis Martinez) go over the examples from the Webinar?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;This webinar is based on the book, so you will certainly find details about the examples we showed.&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Is the webinar available in other languages?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;We currently hold online events in English only.&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;In what language the application you show is written?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;It is JavaScript, the ES6 standard.&lt;/div&gt;

&lt;h3&gt;TestCafe Benefits&lt;/h3&gt;
&lt;div&gt;&lt;strong&gt;What are the advantages of TestCafe over Selenium/Cypress/Nightwatch.js/Robot Framework/WebdriverIO?&lt;/strong&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;TestCafe does not require browser plugins, SDKs or other tools and libraries - just Node.js and browsers.&lt;/li&gt;&lt;li&gt;You don’t need to configure testing environment. Install TestCafe from npm and you are ready to test.&lt;/li&gt;&lt;li&gt;TestCafe is truly cross-browser and cross-platform. It can run tests on Windows, macOS, Linux, iOS, and Android. Supported browsers include Chrome, Firefox, Safari, Edge, and Internet Explorer.&lt;/li&gt;&lt;li&gt;TestCafe features a built-in wait mechanism. You don’t need to insert manual waiting in your tests. TestCafe waits for all kinds of loadings and animations automatically, so your tests are stable even when they slow down for whatever reason.&lt;/li&gt;&lt;li&gt;TestCafe allows you to test even the most complex scenarios like those with cross-domain navigation, file upload, sophisticated iframe use cases, secure services (payment, geolocation) or multiple windows (in beta).&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;License&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Do I need to purchase a separate license for TestCafe? Is it included in any of the DevExpress subscriptions?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe is open-source and free. It is licensed under &lt;a href="https://github.com/DevExpress/testcafe/blob/master/LICENSE"&gt;the MIT license&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;h3&gt;Desktop Application Testing&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Does TestCafe only work in a browser? Can I use it to test desktop applications, like WinForms?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe is designed for Web applications only. Thankfully, if you use Electron.js for your desktop application, you can easily &lt;a href="https://github.com/DevExpress/testcafe-browser-provider-electron"&gt;test it with TestCafe&lt;/a&gt;. &lt;/div&gt;&lt;h3&gt;Parallelization&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Can I start 100 TestCafe tests to simulate high load?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can start 100 parallel browser instances if your computer has sufficient resources to run such a number of browsers. But we recommend using TestCafe for end-to-end rather than load testing. &lt;/div&gt;&lt;div&gt;&lt;strong&gt;Can I run the tests in parallel in multiple browser windows?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe allows you to execute tests concurrently. In concurrent mode, TestCafe invokes multiple instances of each browser. These instances constitute the pool of browsers against which tests run concurrently, i.e. each test runs in the first available instance. You can find information how to run tests in parallel &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/run-tests.html#run-tests-concurrently"&gt;in this topic&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;How well does TestCafe scale when it comes to parallelization? What is the ideal number of tests that can be run in parallel?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can run any number of tests in concurrent mode. Regarding the number of browser instances that can be used to run these test, it’s hard to name an optimal number. It all depends on the resources available on your machine and the tests themselves. It is best to choose this number on a case-by-case basis.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Can I have multiple TestCafe instances running tests?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can use several TestCafe instances. There are no special restrictions here. But in this case you will have to make sure that the instances do not conflict for resources (open ports, access to files, etc.).&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Is there a way to start more parallel tests in memory without running browsers?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Concurrent mode implies launching the specified number of browser instances. All instances will be launched even if the number of tests is not enough to run at least one on each of them. Therefore, now there is no way to use this mode without launching browsers.&lt;/div&gt;&lt;h3&gt;Integrations&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Does TestCafe integrate with BrowserStack?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can run tests in Cloud Testing Services (BrowserStack, Sauce Labs) via the corresponding plugins. See more in the &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/concepts/browsers.html#browsers-in-cloud-testing-services"&gt;documentation&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Can I run TestCafe on Azure DevOps?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can find a topic about Azure DevOps integration &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/continuous-integration/azure-devops.html"&gt;in the TestCafe documentation&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;strong&gt;Can I run TestCafe on Jenkins where there are no local browsers installed? Should I use headless mode on Jenkins?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;If the machine that runs Jenkins does not have local browsers installed, you can use &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/run-tests.html#test-in-portable-browsers"&gt;portable &lt;/a&gt;browsers or &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/run-tests.html#test-in-cloud-testing-services"&gt;cloud testing services&lt;/a&gt; (BrowserStack, SauceLabs).&lt;/div&gt;&lt;div&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/run-tests.html#use-headless-mode"&gt;Headless mode&lt;/a&gt; is supported for both locally installed and portable browsers. We recommend that you use headless mode to decrease testing time. You can run browsers in headless mode even on machines without graphical system.&lt;/div&gt;&lt;div&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/continuous-integration/jenkins.html"&gt;This tutorial&lt;/a&gt; describes how to integrate TestCafe with Jenkins.&lt;/div&gt;&lt;div&gt;You may also wish to check &lt;a href="https://devexpress.github.io/testcafe/media/team-blog/introducing-the-testcafe-jenkins-plugin.html"&gt;the TestCafe plugin for Jenkins&lt;/a&gt; that attaches screenshots and videos to the Jenkins test results page.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Is TestCafe compatible with Angular applications?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe has full support for Angular applications. You can use &lt;a href="https://github.com/DevExpress/testcafe-angular-selectors"&gt;the Angular selector plugin&lt;/a&gt;&amp;nbsp;that adds selector extensions to make it easier to test Angular applications with TestCafe. These extensions allow you to create a Selector to find elements on the page in a way that is native to Angular applications.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Does TestCafe support Vue?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe allows you test Vue applications the same way as any other apps. You can use &lt;a href="https://github.com/DevExpress/testcafe-vue-selectors"&gt;the Vue selector plugin&lt;/a&gt; that contains selector extensions to make it easier to test Vue components with TestCafe. These extensions allow you to test Vue component state and result markup alongside.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Can TestCafe pick elements by their React component name?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can use &lt;a href="https://github.com/DevExpress/testcafe-react-selectors"&gt;the TestCafe selector plugin for React components&lt;/a&gt;.&amp;nbsp;This plugin adds selector extensions that allow you to select page elements in a way that is native to React. For instance, you can use component names to identify page elements.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Is TestCafe compatible with Knockout?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe can test applications based on Knockout. There are no known issues.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe support Bamboo?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can use &amp;quot;Script Task&amp;quot; in Bamboo setting  to write a wrapper that invokes automated tests. Alternatively, you can use &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/use-testcafe-docker-image.html"&gt;the TestCafe Docker image&lt;/a&gt;. &lt;/div&gt;  &lt;h3&gt;Blazor&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Can I use TestCafe to test a Blazor application?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe supports testing for Blazor apps. You can test your Blazor app the same way as any other application. There are no known issues. &lt;/div&gt; &lt;h3&gt;Action Chaining&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Are there limitations as to what kinds of actions can be chained? Is it the best practice to chain as many actions as I can?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Almost all &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/"&gt;TestCafe test controller’s methods&lt;/a&gt; can be chained, except those that return a value and hence break the chain:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/eval.html"&gt;t.eval&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/getbrowserconsolemessages.html"&gt;t.getBrowserConsoleMessages&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/getnativedialoghistory.html"&gt;t.getNativeDialogHistory&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div&gt;You can chain these methods in any desirable manner but we recommend adding blank lines between logical parts of the action chain to improve tests readability, e.g.&lt;/div&gt; &lt;div&gt;&lt;pre&gt;&lt;code class="language-js"&gt;await t
. click(‘#id1’) //some settings
. click(‘#id1’)
. click(‘#id1’)

.expect(Selector(‘#result’).textContent).eql(‘expected text’);//assertion&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can I extend the TestController object with my own chainable methods? Or only helpers and pageobjects are the way to go?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestController cannot be extended with custom methods at the moment. We may consider adding this feature, but it isn’t in our current roadmap. As you correctly suggested, you can use helpers and page objects to implement custom methods.&lt;/div&gt;  &lt;h3&gt;TestCafe Studio&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Can TestCafe record my actions (some tests&amp;nbsp;need many&amp;nbsp;entries and writing them is very time-consuming)?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can use &lt;a href="https://www.devexpress.com/products/testcafestudio/"&gt;TestCafe Studio&lt;/a&gt; that has a built-in test recorder. It allows you to record your actions without coding them. &lt;/div&gt; &lt;div&gt;&lt;strong&gt;Is there a user interface for building tests, or is it all JS-based?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can use TestCafe Studio which is a UI tool to maintain your tests.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Is TestCafe Studio a desktop application or is it available as a Web service?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe Studio is a cross-platform desktop application (powered by Electron.js). You can download its installer for Windows, macOS or Linux and install on your machine. Offline registration is available for computers without internet access. Read more in the&amp;nbsp;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400163/guides/installation"&gt;Installation topic&lt;/a&gt; in the Docs.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe Studio require a license?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, this is a commercial product that requires obtaining a license. There are two options available: TestCafe Studio and TestCafe Studio Pro with DevExpress Technical support.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can TestCafe Studio generate test&amp;nbsp;steps in a more user-friendly form than code?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe Studio has the built-in &lt;a href="https://docs.devexpress.com/TestCafeStudio/400190/user-interface/test-editor"&gt;Test Editor&lt;/a&gt; designed for codeless test creation.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can you change the order of tests on the side panel on the left?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;The &lt;a href="https://docs.devexpress.com/TestCafeStudio/400182/user-interface/explorer-panel"&gt;Explorer Panel&lt;/a&gt; allows you to view and manage files in your testing directory.&amp;nbsp; For recorded tests, the Explorer Panel displays fixtures and tests. You can create new tests, copy/paste them and more. But currently you can’t change the order of the tests. &lt;/div&gt; &lt;div&gt;&lt;strong&gt;Are there more formats of report logs in TestCafe Studio?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;In the Report View you can see tests run report in the TestCafe Studio format -&amp;nbsp;&lt;a href="https://docs.devexpress.com/TestCafeStudio/400187/user-interface/report-view"&gt;Grid View&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;The following built-in reports formats are also available:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;JSON&lt;/li&gt;&lt;li&gt;xUnit&lt;/li&gt;&lt;li&gt;List&lt;/li&gt;&lt;li&gt;Minimal&lt;/li&gt;&lt;li&gt;Spec&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;You can install TestCafe reporter plugins to add more formats: &lt;a href="https://docs.devexpress.com/TestCafeStudio/400187/user-interface/report-view#get-more-report-formats"&gt;Get More Report Formats&lt;/a&gt;.&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Is there any guide with comprehensive instructions and examples for TestCafe Studio?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;See docs, guides, videos, and examples &lt;a href="https://docs.devexpress.com/TestCafeStudio/400157/testcafe-studio"&gt;in the TestCafe Studio documentation&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;What is the element locator strategy?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe Studio use some characteristic of the DOM element in order to identify it on the page, such as id, class, text etc. You can set the usage priority of these characteristics, switch them off (e.g. for auto generated id) or create new ones based on custom attributes. See the details &lt;a href="https://docs.devexpress.com/TestCafeStudio/400407/test-actions/element-selectors"&gt;in the documentation&lt;/a&gt;.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Is TestCafe Studio a part of the Universal Subscription?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, &lt;a href="https://www.devexpress.com/subscriptions/universal.xml"&gt;TestCafe Studio Pro version is&lt;/a&gt;.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe Studio support console.log output? I am currently running tests from the command line so I’d like to see my console.log statements.&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can add &lt;a href="https://docs.devexpress.com/TestCafeStudio/401265/test-actions/custom-scripts"&gt;the Run TestCafe Script action&lt;/a&gt;.&amp;nbsp;In this action, you can use console.log() to print messages directly, or even call &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/getbrowserconsolemessages.html"&gt;t.getBrowserConsoleMessages()&lt;/a&gt; to fetch messages from the browser’s console.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can TestCafe Studio generate reports with statistics, graphs, pies, etc., illustrating execution results?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Currently there is no such capability.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;In TestCafe Studio, moving a line becomes almost impossible over 100 lines. Is that a memory issue that can be changed via config?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;We cannot reproduce this behavior on our side. Please create an inquiry on &lt;a href="https://www.devexpress.com/ask" target="_blank"&gt;https://www.devexpress.com/ask&lt;/a&gt; and provide more detail about the issue you encounter.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;We are using both DevExpress and custom controls in our application. We record tests in TestCafe Studio, but they fail when we run them. Can you tell why this happens?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;To resolve the issue, please refer to the Troubleshooting section on our &lt;a href="https://docs.devexpress.com/TestCafeStudio/400610/faq"&gt;FAQ page&lt;/a&gt;. If suggestions describe there do not help or apply to your case, create a ticket on &lt;a href="https://www.devexpress.com/ask" target="_blank"&gt;https://www.devexpress.com/ask&lt;/a&gt; and describe your issue in detail.&lt;/div&gt;  &lt;h3&gt;Page Model&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Do you create the page models manually? Can the page models be dynamically generated?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Page Models should be created manually, there is no built-in way to generate page models automatically. A page model reflects the internal structure of the testing page: what is the container, what is the parent and what is the child, etc., which distinguishing characteristics are best used to identify elements. Any automatically generated model is unlikely to reflect these semantics.&lt;/div&gt; &lt;div&gt;Is it necessary to create selectors with the Selector constructor in a page object class?&lt;/div&gt;&lt;div&gt;No, you can use CSS strings:&lt;/div&gt; &lt;div&gt;&lt;pre&gt;&lt;code class="language-js"&gt;class Page {
constructor(){
this.submitButton = ‘#submit’;
}
}&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt; &lt;div&gt;But if you want to extend or chain such a selector with &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/selector/"&gt;selector’s methods&lt;/a&gt;, you will need to use the Selector constructor:&lt;/div&gt; &lt;div&gt;&lt;pre&gt;&lt;code class="language-js"&gt;class Page {
constructor(){
this.button = Selector(‘button’);
this.submitButton = this.button.withText(‘Submit’);
this.cancelButton = this.button.withText(‘Cancel’);
}
}&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can I add additional methods to page object in TestCafe?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can add methods to a page model. Usually these methods are the most frequently repeated actions specific to this page. See an example &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/concepts/page-model.html#step-7---add-actions-to-the-page-model"&gt;in the TestCafe docs&lt;/a&gt;. &lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe support the PageObjects library?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;If you mean &lt;a href="https://github.com/devcon5io/pageobjects"&gt;this PageObjects library&lt;/a&gt;, then TestCafe does not support it because this library is designed for Selenium.&lt;/div&gt; &lt;h3&gt;Database Access&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Can test results be sent to a database?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;There&amp;#39;s no built-in functionality for this, but you can certainly &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/extend-testcafe/reporter-plugin.html"&gt;make a plugin&lt;/a&gt; that will do this.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can TestCafe connect to databases to verify that the correct data was written?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe doesn’t have built-in functionality for interaction with databases. But you can use any npm module for it.&lt;/div&gt; &lt;h3&gt;Browsers&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Does TestCafe support Microsoft Edge? Can TestCafe create mocks and run tests in IE11? &lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe supports both browsers. You can find the list of supported browsers &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/concepts/browsers.html#officially-supported-browsers"&gt;in the TestCafe docs&lt;/a&gt;.&lt;/div&gt; &lt;h3&gt;Selectors&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;What type of selectors are available? Is it only HTML element IDs and/or classes?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can use any &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors"&gt;pure CSS selectors &lt;/a&gt;or &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/selector/"&gt;TestCafe Selector API&lt;/a&gt; that extends capabilities offered by CSS selectors.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can I target elements based on text that is actually visible to the end-user?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe Selector’s &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/selector/withtext.html"&gt;withText&lt;/a&gt; method finds elements by text that is visible to the end-user (the element’s innerText property). You can also create a selector that uses custom logic to find an element. Pass a function to the &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/selector/constructor.html#initialize-selectors"&gt;selector’s constructor&lt;/a&gt;.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Is it possible to set the waiting time for an element? What if I mistyped the selector&amp;#39;s &amp;quot;name&amp;quot; or the page is loading really slow? How long does TestCafe wait by default?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can specify the Selector’s &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/selector/constructor.html#optionstimeout"&gt;timeout option&lt;/a&gt; During this timeout, the selector waits for the element. The default timeout duration is 10000 ms.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;I use auto-generated names for DevExpress control’s elements in my application. Can TestCafe interact with them?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can identify these elements by their static parts. See an example &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/select-page-elements.html#select-elements-with-dynamic-ids"&gt;in our docs&lt;/a&gt;.&amp;nbsp;&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can I use XPath to locate elements?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;XPath selectors are not built-in with TestCafe, but you can implement a simple helper method to use them. See an example &lt;a href="https://github.com/DevExpress/testcafe-examples/tree/master/examples/use-xpath-selectors"&gt;here&lt;/a&gt;.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can I verify a certain element does not exist or will that cause a failure?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;If an element used in some action doesn’t exist, a test fails. A test run report then indicates that the test failed because a target element doesn’t exist on the page. To check if the element exists before TestCafe attempts to interact with it, use the following approach&lt;/div&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;div&gt;&lt;pre&gt;&lt;code class="language-js"&gt;if(await Selector(&amp;#39;#element&amp;#39;).exists)
    await t.click(Selector(&amp;#39;#element&amp;#39;));&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="color:#111111;"&gt;For instance, you would use this verification to close ad popups (should they appear).&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;h3&gt;Debug&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Are there any approaches that help debug tests? How can I debug TestCafe and the Hammerhead proxy?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Check out &lt;a href="https://devexpress.github.io/testcafe/media/team-blog/how-to-debug-tests-in-testcafe-quick-guide.html"&gt;this blog post&lt;/a&gt; on how to debug your application and tests.&lt;/div&gt;&lt;div&gt;You can also find the instruction about how to debug in other IDEs&lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/debug.html"&gt; in our guide&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;To debug TestCafe and Hammerhead, enable the development mode. Use the &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#--dev"&gt;--dev flag&lt;/a&gt; when you run tests:&lt;/div&gt;&lt;pre&gt;&lt;code class="language-js"&gt;testcafe chrome my-tests --dev&lt;/code&gt;&lt;/pre&gt; &lt;div&gt;&lt;strong&gt;What are the available debug options?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;The following capabilities help you determine the cause of errors and failures:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#takeonfails"&gt;Take screenshots automatically when tests fail&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#--video-basepath"&gt;Capture videos of test runs&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#--speed-factor"&gt;Set the speed of test execution&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#--debug-on-fail"&gt;Enter debug mode&lt;/a&gt; automatically when the first test fails &lt;/li&gt;&lt;li&gt;Execute tests step by step &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#-d---debug-mode"&gt;in debug mode&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div&gt;&lt;strong&gt;Can TestCafe capture a screenshot when a test fails?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Absolutely, enable the &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#takeonfails"&gt;takeOnFails &lt;/a&gt;option to do this.&lt;/div&gt; &lt;h3&gt;Authentication&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Can I log in once and execute multiple tests under the same account rather than logging in in every test?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can use roles to perform actions that log you in only once. In the subsequent tests, you just activate the role you defined earlier to log in without repeating the authentication process each time. See &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/authentication.html#user-roles"&gt;User Roles&lt;/a&gt; in the documentation for details.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Do roles work with auth0/openid which has JWT in headers?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Roles can process the JWT if it is sent in the cookies or stored in the local or session storage. &lt;/div&gt; &lt;div&gt;&lt;strong&gt;Would we run into any issues if we&amp;#39;re using Microsoft authentication tokens for permissions? &lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You should not have any issue. Please try this and see how it works. If you face any issues, let us know, so we can research it.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;How does TestCafe log out the user to switch to a different role? Does it just re-open the page?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;When you switch to a role that was active previously in the current session, TestCafe restores cookies and browser’s local and session storage where authentication data is located. If the new role wasn’t used yet, TestCafe just resets the cookies and storage and then performs authentication actions.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can you create Roles with API calls instead of functional steps?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;If your question is about REST API, then yes, you can call REST API to authenticate a user in a role. Just note that you need to use a &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/obtain-client-side-info.html"&gt;client function&lt;/a&gt; to call REST API from the browser. You may want to &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/inject-client-scripts.html"&gt;inject a library that can call API into the tested page&lt;/a&gt;. &lt;/div&gt; &lt;div&gt;&lt;strong&gt;What are the options for smart card logins?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe only supports web-based authentication. That is, your website should be able to authenticate you by your actions in the web browser, without relying on additional hardware. The only way is to deploy a testing instance of your web app without smart card authentication.&lt;/div&gt; &lt;h3&gt;Multiple Apps, Windows, and Tabs&lt;/h3&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Can TestCafe test integration across multiple applications?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can test any number of web applications.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can you test multiple browser windows at the same time? For example, I may need to access application A, then check application B and come back to A.&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can do this. We released multiple window support in beta in v1.9.0. Please find more information in the &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/multiple-browser-windows.html"&gt;Multiple Browser Window&lt;/a&gt;s topic and don’t hesitate to leave your feedback. Your opinion helps us make sure you get the best experience when this feature is released.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe support multiple tabs?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can open and switch between multiple browser windows with &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/multiple-browser-windows.html"&gt;this new beta feature&lt;/a&gt;. TestCafe will open a new popup window instead of a tab when necessary. This is because tabs can be throttled which interrupts TestCafe scripts.&lt;/div&gt; &lt;h3&gt;iframes&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Does TestCafe support iframes?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe supports iframes and provides two simple methods to interact with their content: &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/switchtoiframe.html"&gt;switchToIframe &lt;/a&gt;to switch the test&amp;#39;s browsing context to iframe’s context and &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/switchtomainwindow.html"&gt;switchToMainWindow &lt;/a&gt;to switch it back to the main window.&lt;/div&gt; &lt;h3&gt;Reports&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;How does TestCafe output test run reports? Where can I find test results?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe shows the test run report in the console by default. You can redirect output to a file or use dedicated reporters to post reports to a CI system or elsewhere.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;What happens when a test fails? What logs are produced?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;If a test fails, you will see a comprehensive report in the console. For example:&lt;/div&gt;&lt;img src="https://community.devexpress.com:443/blogs/testcafe/Console.png" alt=""&gt; &lt;div&gt;Multiple report formats are supported, including the following: &lt;/div&gt;&lt;ul&gt;&lt;li&gt;spec&lt;/li&gt;&lt;li&gt;list&lt;/li&gt;&lt;li&gt;minimal&lt;/li&gt;&lt;li&gt;xUnit&lt;/li&gt;&lt;li&gt;JSON&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Read more &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/concepts/reporters.html"&gt;in the TestCafe documentation&lt;/a&gt;.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;In what format does TestCafe generate the reports? Is it XML or HTML?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;The format depends on the reporter. It can be XML, JSON, HTML, and many others.&lt;/div&gt;&lt;div&gt;You can explore t&lt;a href="https://www.npmjs.com/search?q=testcafe-reporter"&gt;he available reporter packages on npm&lt;/a&gt;. &lt;/div&gt; &lt;h3&gt;Test Organization&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Can I use logic operators to have different conditional &amp;quot;paths&amp;quot; during a test?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe can do conditional testing. You can use standard JavaScript if-clauses to make this happen.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Is it possible to share fixtures between test files?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe treats fixtures declared in different files separately. If you can share your use case when merging fixtures is useful, please &lt;a href="https://github.com/DevExpress/testcafe/issues/new?template=feature_request.md"&gt;open an issue&lt;/a&gt; on GitHub.&lt;/div&gt; &lt;h3&gt;How TestCafe Works&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Did I miss what the ‘async’ keyword means in code?  Is that to say TestCafe commands can run as other tests are running?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;‘async’ is a JavaScript keyword that indicates that the function is asynchronous. Technically, an asynchronous function means that this function returns a Promise. TestCafe actions are asynchronous because so are the page events. Page loading, animations, HTTP requests take different amounts of time. The test function is asynchronous as well because it uses asynchronous TestCafe actions.&lt;/div&gt; &lt;div&gt;‘await’ means that the next command should not execute until the previous (‘awaited’) command is completed. This is required to execute test actions in the right sequence (and, in the same manner, TestCafe ‘awaits’ tests in a fixture to run them one by one). Note that, by contrast, tests in different browsers can run in parallel, just like in concurrency mode.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Please provide technical insight about how TestCafe avoids installing special plug-ins in order to interact with the browser. How does it actually interact with browsers?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe proxies the tested webpage and injects automation scripts right inside the proxied copy. This way, browsers do all the work when they execute the injected scripts. You can find more details in the &lt;a href="https://devexpress.github.io/testcafe/documentation/how-it-works/"&gt;How It Works&lt;/a&gt; article.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Is it possible to access runtimeJS objects from application client libraries loaded in the browser?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe is designed to conceal itself from application’s JavaScript code. This is necessary to ensure that pages proxied by TestCafe run exactly in the same way as they do on the website. For this reason, application code cannot access TestCafe scripts or test code entities.&lt;/div&gt; &lt;h3&gt;Waiting and Asynchrony&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;What if a portion of a page takes a while to render (for instance, the page uses AJAX). Can TestCafe take it into account?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe tests wait automatically until the page is rendered completely. You can also insert manual waiting, but it shouldn’t be necessary in almost all cases.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;I set up my page in a jQuery callback: $(document).ready(function(){}). Will there be JS races with TestCafe?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe will wait until the page loads completely and run tests only after that. TestCafe wait mechanisms are designed to prevent races with JS code.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;It is great that TestCafe handles waiting internally. Would there be a need to override default timeout functionality though? How should a user go about it?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You may need to override the default timeout if your page requires extra long waiting. All TestCafe auto-wait timeouts are customizable. You can find more information in the &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/concepts/built-in-wait-mechanisms.html"&gt;Built-in Wait Mechanisms topic&lt;/a&gt;.&lt;/div&gt; &lt;h3&gt;Other Features&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;Does TestCafe support all ES6 or later features? Do I need plugins to support arrow functions or the async/await syntax? &lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe supports all modern JavaScript and TypeScript features. No plugins needed, everything works out of the box.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can TestCafe work with the Service Worker?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;We are currently in the progress of implementing full support for Service Workers. Stay tuned for our updates to be the first to know when we are ready.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe work with Python?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can write tests in JavaScript/TypeScript/CoffeeScript only.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe support upload ( excel ) data functionality?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe can upload files, including Excel, to websites if it is a part of the test scenario. However, if you are asking about API to access Excel data sheets from test code, TestCafe does not provide one out of the box. You can search for npm modules that implement the functionality you need and use them from TestCafe tests. &lt;/div&gt; &lt;div&gt;&lt;strong&gt;What about functional test coverage? Does TestCafe support it?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Test coverage estimation is not available at the moment.&lt;/div&gt; &lt;h3&gt;Miscellaneous&lt;/h3&gt;&lt;div&gt;&lt;strong&gt;If TestCafe runs in headless mode, is it still possible to grab screenshots on failures?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, TestCafe can take screenshots even in headless mode.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does this require a test framework like jest/mocha/jasmine?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;No additional frameworks are required for TestCafe.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;How can I use TestCafe to test different resolutions?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can use the &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/testcontroller/resizewindow.html"&gt;t.resizeWindow&lt;/a&gt; action to change the browser window size and test adaptive UIs. TestCafe also supports &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/run-tests.html#enable-mobile-device-emulation"&gt;Chromium device emulation&lt;/a&gt; to test on emulated mobile devices of various sizes.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can we use Test Cafe to compare two documents? Like documents with logos, disclaimers and other information?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;If you mean visual comparison, TestCafe does not provide this functionality out of the box. However, you can find multiple open-source packages that try to solve this task, like &lt;a href="https://github.com/tacoss/testcafe-blink-diff"&gt;testcafe-blink-diff&lt;/a&gt;.&amp;nbsp;Note that they are maintained by the community and are not related to the TestCafe team.&lt;/div&gt;&lt;div&gt;If your goal is to compare HTML, you can pass ‘innerHTML’ to a TestCafe assertion as shown in the example&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/test-api/selector/addcustomdomproperties.html"&gt; in this topic&lt;/a&gt;.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;How do you change the base URL to test in different environments?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can import the base URL from a configuration file or an environment variable, and then use it to build start page URLs in test code. See &lt;a href="https://devexpress.github.io/testcafe/faq/#how-do-i-work-with-configuration-files-and-environment-variables"&gt;this example&lt;/a&gt; on the FAQ page.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can I run TestCafe on a Linux computer without the UI?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can run your tests on Linux and use headless browsers to run your tests without the UI.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Could you please share ideas about how to do localization testing? Does TestCafe support that?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe does not have built-in functionality for localization testing. As a suggestion, you can fetch the localization strings from a resource file or database with Node.js means or third-party npm modules. Then, you can create &lt;a href="https://devexpress.github.io/testcafe/documentation/recipes/best-practices/create-data-driven-tests.html"&gt;data-driven tests&lt;/a&gt; that check if the displayed strings are localized (present in the localization resources).&lt;/div&gt; &lt;div&gt;&lt;strong&gt;When do you plan to release version 1.9.0?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;1.9.0 was released on August 6th. If you are asking about the multi-window support final release, we do not have an exact date yet.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;How does TestCafe handle exceptions?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe considers the test failed if its code throws an exception. The report will indicate the line of code and call stack where this exception originated. Exceptions in JavaScript code on the tested page also make tests fail. However, this behavior is customizable. You can use the &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#-e---skip-js-errors"&gt;--skip-js-errors&lt;/a&gt; flag to ignore page errors. Similarly, the &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#-u---skip-uncaught-errors"&gt;--skip-uncaught-errors&lt;/a&gt; flag allows you to continue tests when test code throws an exception.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can we measure client-side performance using TestCafe (both HTTP and script execution time)?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;TestCafe is not intended for this task. In fact, TestCafe impacts the webpage performance when it runs tests. We are constantly optimizing our code to minimize this slowdown, but we do not aim to precisely match the original performance.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Are tests executed in sequence within a fixture?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, tests are executed as they are declared in code.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can I add my custom element library to the context object?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;You can add anything to the feature and test context objects. However, keep in mind that test code does not run in the browser, so adding browser libraries to the context objects might not help. If this is the case, you may be more interested in the &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/advanced-guides/inject-client-scripts.html"&gt;custom script injection functionality&lt;/a&gt; designed for user’s client libraries.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can TestCafe test HTML5 features like fullscreen, camera, audio or video interaction?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can test these HTML 5 features with TestCafe.&lt;/div&gt;&lt;div&gt;Note that you might need to set the --autoplay-policy=no-user-gesture-required browser flag as explained in &lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html#start-a-browser-with-arguments"&gt;this article&lt;/a&gt; to test the fullscreen mode and audio/video. The camera can be mocked using &lt;a href="https://devexpress.github.io/testcafe/documentation/guides/basic-guides/obtain-client-side-info.html"&gt;ClientFunctions&lt;/a&gt;.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe support multiple domains in a test?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, navigation and requests between different domains work out of the box. You do not need to care if you visit pages on one or several domains. &lt;/div&gt; &lt;div&gt;&lt;strong&gt;What happens if TestCafe loses network connection with a remote device that runs tests?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Tests cannot run without network connection because TestCafe must be able to send commands to the remote device. If the connection is interrupted, TestCafe will throw an error saying that a browser connection is lost.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Is it possible to run all JS in one command? Could you please specify this command?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;If I understand you correctly, yes, you can run all your JS tests using a single console command.&lt;/div&gt;&lt;div&gt;&lt;a href="https://devexpress.github.io/testcafe/documentation/reference/command-line-interface.html"&gt;Here is the CLI reference&lt;/a&gt; where you can see the testcafe&amp;nbsp;command syntax. &lt;/div&gt; &lt;div&gt;&lt;strong&gt;I noticed non-standard code indentation. Is a respective formatter for VS Code available?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;We didn’t release a specific formatter because you can use any indentation you prefer with TestCafe.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Can I use TestCafe to test the development and production instances of my app? If so, how can I configure different URLs for my instances?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, you can import the base URL from a configuration file or an environment variable, and then use it to build start page URLs in test code. See &lt;a href="https://devexpress.github.io/testcafe/faq/#how-do-i-work-with-configuration-files-and-environment-variables"&gt;this example&lt;/a&gt; on the FAQ page.&lt;/div&gt; &lt;div&gt;&lt;strong&gt;Does TestCafe have support for file download? Can you set the default file download location using TestCafe API?&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Yes, if test actions on the page trigger file download, the browser will download it as usually. Then you can access the file from test code to perform verification. Currently, TestCafe API does not allow you to set the default download location.&lt;/div&gt;</description>
      <pubDate>Sun, 16 Aug 2020 15:30:00 Z</pubDate>
      <dc:creator>Paul Usher (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:384380</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2020/07/15/testcafe-webinar-integrate-testing-into-development-workflow.aspx</link>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/web+testing">web testing</category>
      <category domain="https://community.devexpress.com/Tags/Webinar">Webinar</category>
      <title>TestCafe and TestCafe Studio: Learn How to Integrate Our Web Testing Tools into Your Workflow</title>
      <description>&lt;p&gt;
    We will soon host a TestCafe webinar that will cater to both first-time users and those who may have tried TestCafe (&lt;a href="https://www.devexpress.com/products/testcafestudio/"&gt;our end-to-end web testing tool&lt;/a&gt;) in the past. Paul Usher, our technical evangelist and live session host, will begin with first-time setup and then will go into a few of the more recent TestCafe innovations. He will also cover the differences between &lt;a href="https://github.com/DevExpress/testcafe"&gt;TestCafe Open Source&lt;/a&gt; and &lt;a href="https://www.devexpress.com/products/testcafestudio/"&gt;TestCafe Studio&lt;/a&gt;. See the details below.  
&lt;/p&gt;

&lt;h3&gt;
    Upcoming Webinar: 10 Ways to Simplify UI Testing
&lt;/h3&gt;

&lt;p&gt;
    See how you can easily incorporate UI testing in your development workflow. In this presentation, Paul Usher will show you how TestCafe can be leveraged to deliver high quality web apps that always meet end-user expectations. You’ll discover:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;How to setup TestCafe and start testing in under 10 minutes.&lt;/li&gt;
    &lt;li&gt;How to create customizable tests that can easily evolve as business requirements change.&lt;/li&gt;
    &lt;li&gt;The purpose of Custom Selectors and why they make web testing so much easier.&lt;/li&gt;
    &lt;li&gt;The purpose of the Page Model approach and why it helps increase productivity.&lt;/li&gt;
    &lt;li&gt;And you’ll learn how to master use of Smart Assertions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    &lt;a href="https://attendee.gotowebinar.com/register/3794797665645805324"&gt;Register Now&lt;/a&gt; &lt;br&gt;
    &lt;b&gt;Date and Time&lt;/b&gt;: July 29th at 10am Pacific Time.
&lt;/p&gt;

&lt;h3&gt;
    What&amp;#39;s So Cool about TestCafe?
&lt;/h3&gt;

&lt;p&gt;
    &lt;a href="https://github.com/DevExpress/testcafe"&gt;TestCafe Open Source&lt;/a&gt; and &lt;a href="https://www.devexpress.com/products/testcafestudio/"&gt;TestCafe Studio&lt;/a&gt; are driver free and do not require you to manage complex plug-ins. Their flexibility and ease of use are probably best illustrated by the ability to run tests on remote browsers across multiple devices and platforms. TestCafe Studio generates a URL used to connect to the test runner... or a QR code so you can easily connect your mobile devices. 
&lt;/p&gt;

&lt;img src="https://docs.devexpress.com/TestCafeStudio/images/guides/running-in-remote-browsers.png" alt="TestCafe Studio QR Code for Remote Web Testing"&gt;

&lt;p&gt;
    This functionality is not limited to TestCafe Studio. You can do the same if you use our open source TestCafe library and start your tests from the command line: 
&lt;/p&gt;

&lt;img src="https://devexpress.github.io/testcafe/images/recipe-remote-mobile.png" alt="TestCafe Open Source QR Code for Remote Web Testing"&gt;

&lt;p&gt;
    The URL provides access to run the tests the remote device. This minimal setup philosophy always has been our guiding principle in all areas of web testing - from installation to test debugging. 
&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p dir="ltr"&gt;Something &lt;a href="https://twitter.com/hashtag/webdriver?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#webdriver&lt;/a&gt; can’t do... &lt;a href="https://twitter.com/hashtag/testcafe?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#testcafe&lt;/a&gt; &lt;a href="https://t.co/bgD8cgUwXX"&gt;pic.twitter.com/bgD8cgUwXX&lt;/a&gt;&lt;/p&gt;— TestCafe (@DXTestCafe) &lt;a href="https://twitter.com/DXTestCafe/status/804368394569052160?ref_src=twsrc%5Etfw"&gt;December 1, 2016&lt;/a&gt;&lt;/blockquote&gt; &lt;script src="https://platform.twitter.com/widgets.js"&gt;&lt;/script&gt;

&lt;p&gt;
    If you&amp;#39;d like to know more - &lt;a href="https://attendee.gotowebinar.com/register/3794797665645805324"&gt;register for the webinar on July 29th&lt;/a&gt;. Even if you cannot attend the live session, we&amp;#39;ll make sure to send out a recording to all registrants. 
&lt;/p&gt;</description>
      <pubDate>Wed, 15 Jul 2020 03:33:00 Z</pubDate>
      <dc:creator>TestCafe Team (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:384250</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2020/06/10/testcafe-studio-v1-3-0-a-new-way-to-work-with-selectors.aspx</link>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/testing+tools">testing tools</category>
      <category domain="https://community.devexpress.com/Tags/Web">Web</category>
      <category domain="https://community.devexpress.com/Tags/web+testing">web testing</category>
      <title>TestCafe Studio v1.3.0 - A New Way to Work with Selectors</title>
      <description>&lt;p&gt;TestCafe&amp;#39;s Visual Test Recorder automatically creates selectors for all elements used in a test. This complicated algorithm balances many different variables, and we just recently added a few options so that you can customize it to meet your specific needs.&lt;/p&gt;
&lt;p&gt;This article first covers what we consider to be a reliable selector. We then mention the pros and cons of various selector strategies, and custom attributes in particular. Finally, we&amp;#39;ll show you how to customize TestCafe options so that it builds selectors that are optimized for your website.&lt;/p&gt;

&lt;h2&gt;How TestCafe Studio Generates Selectors&lt;/h2&gt;

&lt;p&gt;To record an automated test in TestCafe Studio, specify the tested page’s URL and start the recorder. TestCafe Studio launches the selected browser, opens the web page, and records your actions. Once the test scenario is ready, you can run it in any local browser, a mobile device, or as part of your CI pipeline.&lt;/p&gt;
&lt;p&gt;TestCafe Studio not only records your actions (element clicks, text input), but it also creates a selector for every affected page element. The selector generation algorithm was developed to adhere to the following requirements:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Selectors shouldn’t be too specific.&lt;/strong&gt; Otherwise, you might have to rewrite them after each page modification. For instance, &lt;em&gt;Selector(‘body’).find(‘div’).nth(5).find(‘p’).nth(3)&lt;/em&gt; must be revised each time the number of elements on the page changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selectors shouldn&amp;#39;t be too generic.&lt;/strong&gt; Otherwise, they may return different elements after each markup change. For example, &lt;em&gt;Selector(‘div &amp;gt; button’) &lt;/em&gt;can match multiple elements at once.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selectors shouldn’t rely on element parameters that are likely to change.&lt;/strong&gt; For instance, &lt;em&gt;Selector(&amp;#39;[style*=&amp;quot;background-color: red&amp;quot;]&amp;#39;) &lt;/em&gt;uses a CSS style that changes frequently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selectors should remain readable&lt;/strong&gt;. Selectors should be easy to understand (by you or another developer) for as long as the test is maintained. For instance, it may be difficult to understand which element corresponds to the following selector: &lt;em&gt;Selector(‘div’).find(‘pre’).nextSibling(-1).&lt;/em&gt; If you use &lt;em&gt;Selector(‘#topContainer’).find(‘.child’).withText(‘Add item’) &lt;/em&gt;instead, the selector is much easier to read.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selectors should reflect the user’s point of view&lt;/strong&gt;. Since TestCafe supports &lt;em&gt;end-to-end&lt;/em&gt; testing, it’s a good idea to build selectors that identify elements as an end-user would. For instance, &lt;em&gt;Selector(‘form’).find(‘[name=”btn-foo-123”]’)&lt;/em&gt; might be stable, but it is written from the programmer’s perspective rather than from the user’s point of view.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition to these general requirements for selectors, page organization is also vital in the testing process. Some pages may have stable selectors that rely on the ‘id’ attribute, while other pages use auto-generated ‘id’ attributes - so it does not make sense to use ‘id’ in a selector. This also applies to other attributes such as ‘class’. Text-based selectors can also be ineffective, depending on changes you introduce to the page over time.&lt;/p&gt;

&lt;h2&gt;Why Custom Attributes are Required&lt;/h2&gt;

&lt;p&gt;Modern web component frameworks, like React, complicate DOM element identification. This is why many developers prefer to assign custom attributes to page elements. Custom attributes enable tests to survive changes in HTML structure, script behavior, and styles.&lt;/p&gt;

&lt;p&gt;Let’s consider the following Populate button on our example page:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class="language-xml"&gt;&lt;span style="background-color:#ffffff;"&gt;&lt;span style="color:#24292e;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#22863a;"&gt;input&lt;/span&gt; &lt;span style="color:#005cc5;"&gt;type&lt;/span&gt;&lt;span style="color:#24292e;"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:#032f62;"&gt;button&lt;/span&gt;&lt;span style="color:#24292e;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="color:#005cc5;"&gt;id&lt;/span&gt;&lt;span style="color:#24292e;"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:#032f62;"&gt;populate&lt;/span&gt;&lt;span style="color:#24292e;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="color:#24292e;"&gt;data-testid=&amp;quot;populate-button&amp;quot; &lt;/span&gt;&lt;span style="color:#005cc5;"&gt;value&lt;/span&gt;&lt;span style="color:#24292e;"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="color:#032f62;"&gt;Populate&lt;/span&gt;&lt;span style="color:#24292e;"&gt;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can build the following selectors for this button:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML-based&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Selector:&lt;/strong&gt; &lt;code&gt;Selector(&amp;#39;input&amp;#39;).nth(1)&lt;/code&gt;&lt;br&gt;
        &lt;strong&gt;Pros and Cons:&lt;/strong&gt; Too generic.&lt;br&gt;
        &lt;strong&gt;Summary:&lt;/strong&gt; Might match the wrong elements because it is vague.
    &lt;/li&gt;
    
    &lt;li&gt;&lt;strong&gt;Selector:&lt;/strong&gt; &lt;code&gt;Selector(&amp;#39;body&amp;#39;).find(&amp;#39;form&amp;#39;).find(&amp;#39;div&amp;#39;).find(&amp;#39;fieldset&amp;#39;).find(&amp;#39;input&amp;#39;).nth(1)&lt;/code&gt;&lt;br&gt;
        &lt;strong&gt;Pros and Cons:&lt;/strong&gt; Too strict.&lt;br&gt;
        &lt;strong&gt;Summary:&lt;/strong&gt; May break due to minor changes in HTML structure.
        &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;ID-based&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Selector:&lt;/strong&gt; &lt;code&gt;Selector(&amp;#39;#populate&amp;#39;)&lt;/code&gt;&lt;br&gt;
        &lt;strong&gt;Pros and Cons:&lt;/strong&gt; Relies on ID only, which could be introduced for styling or event handling, or may be auto-generated.&lt;br&gt;
        &lt;strong&gt;Summary:&lt;/strong&gt; Better options are available.
    &lt;/li&gt;
    
    &lt;li&gt;&lt;strong&gt;Selector:&lt;/strong&gt; &lt;code&gt;Selector(&amp;#39;#main-form&amp;#39;).find(&amp;#39;input&amp;#39;).nth(1)&lt;/code&gt;&lt;br&gt;
        &lt;strong&gt;Pros and Cons:&lt;/strong&gt; Similar to the above selector, but relies on the parent ID.&lt;br&gt;
        &lt;strong&gt;Summary:&lt;/strong&gt; Appears to be more specific than the above selector, but it is not.
        &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Class-based&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Selector:&lt;/strong&gt; &lt;code&gt;Selector(&amp;#39;.column.col-1&amp;#39;).find(&amp;#39;input&amp;#39;).nth(1)&lt;/code&gt;&lt;br&gt;
        &lt;strong&gt;Pros and Cons:&lt;/strong&gt; The element has no class, so this selector uses the parent class. Classes can change because they are usually assigned for styling purposes.&lt;br&gt;
        &lt;strong&gt;Summary:&lt;/strong&gt; Sensitive to CSS modifications; difficult to maintain.
    &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Text-based (text matches the attribute value in this case)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Selector:&lt;/strong&gt; &lt;code&gt;Selector(&amp;#39;input[value=&amp;quot;Populate&amp;quot;]&amp;#39;)&lt;/code&gt;&lt;br&gt;
        &lt;strong&gt;Pros and Cons:&lt;/strong&gt; Mirrors how users perceive the page, so it may be stable. Detects actual issues caused by accidental text changes.&lt;br&gt;
        &lt;strong&gt;Summary:&lt;/strong&gt; Satisfactory, but fails even when text changes are intended.
    &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Custom attribute-based&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Selector:&lt;/strong&gt; &lt;code&gt;Selector(&amp;#39;[data-testid=&amp;quot;populate-button&amp;quot;]&amp;#39;)&lt;/code&gt;&lt;br&gt;
        &lt;strong&gt;Pros and Cons:&lt;/strong&gt; The most stable selector, since it is not affected by changes.&lt;br&gt;
        &lt;strong&gt;Summary:&lt;/strong&gt; The preferred selector type for most scenarios.
    &lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;In summary, custom attributes have the following benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tests do not break based on markup or code changes.&lt;/strong&gt; A test will not fail when you refactor HTML or implement new behavior in JavaScript.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tests do not depend on page styles.&lt;/strong&gt; You can switch themes as many times as you wish - tests will not fail because of a certain style or theme.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Text content modifications do not affect tests&lt;/strong&gt;. Tests are not affected by changes to content, including localization changes. Note, however, that if an element’s text is essential to a test scenario, you should verify the text content or use a text-based selector: &lt;em&gt;Selector(‘div’).withText(‘Add to Cart’).&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a custom attribute to indicate that an element is used in tests&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;A New Way to Customize Selectors&lt;/h2&gt;
&lt;p&gt;When you record a test, TestCafe automatically generates a selector. TestCafe also lets you choose an alternative selector from a drop-down list or create one manually. The latest TestCafe update (v1.3.0) ships with an adjustable selector generation algorithm. You can now configure the selector generator on the fly, based on the tested page:&lt;/p&gt;

&lt;ul&gt;

    &lt;li&gt;&lt;strong&gt;Prioritize selector types.&lt;/strong&gt; Use this option if you often need to choose a different selector from the suggestion list. The default selector is generated based on your preferences.
    &lt;p&gt; &lt;img src="https://community.devexpress.com/blogs/testcafe/Studio1.3.0/1@2x.png" alt="Prioritize selector types" style="width:780px;"&gt; &lt;/p&gt;  
    &lt;/li&gt; 
                   
    &lt;li&gt;&lt;strong&gt;Disable unwanted selector types&lt;/strong&gt;. For instance, your website can generate id, class, or other element attributes automatically, so that they change each time the page reloads. However, you cannot use these values in selectors because the test cannot be replayed. In this instance, you may want to exclude these attributes from selector generation rules. You can now simply disable the corresponding selector type - and switch back to it at any time - without restarting the recorder.
    &lt;p&gt; &lt;img class="small" src="https://community.devexpress.com/blogs/testcafe/Studio1.3.0/2@2x.png" alt="Prioritize selector types" style="width:520px;"&gt; &lt;/p&gt;
     &lt;/li&gt;

    &lt;li&gt;&lt;strong&gt;Add selector types based on custom attributes.&lt;/strong&gt; These selector types are preferred because if you configure them, you won’t have to edit selectors due to changes. The only requirement is that you maintain unique attribute values during development.
    &lt;p&gt; &lt;img src="https://community.devexpress.com/blogs/testcafe/Studio1.3.0/3@2x.png" alt="Prioritize selector types" style="width:780px;"&gt; &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Recap&lt;/h2&gt;

&lt;p&gt;TestCafe Studio generates selectors for every page element that takes part in a test. Good selectors must comply with strict guidelines to be stable and reliable. TestCafe algorithms use best practices to generate selectors that meet these criteria. You can also optimize selectors based on your understanding of how the website works. Our latest update (v1.3.0) allows you to instruct TestCafe Studio to use custom attributes in selectors or ignore dynamic IDs. The result is more stable selectors that are easy to read and maintain.&lt;/p&gt;
&lt;p&gt;You can read more about the new adjustable selector generation algorithm in our &lt;a href="https://docs.devexpress.com/TestCafeStudio/400407/test-actions/element-selectors#element-selector-types"&gt;documentation&lt;/a&gt;. As always, we are happy to answer your questions in the comments. Happy testing!&lt;/p&gt;</description>
      <pubDate>Wed, 10 Jun 2020 11:00:00 Z</pubDate>
      <dc:creator>The DevExpress Team</dc:creator>
      <dx:excerpt>TestCafe&amp;#39;s Visual Test Recorder automatically creates selectors for all elements used in a test. This complicated algorithm balances many different variables, and we just recently added a few options so that you can customize it to meet your specific needs.&#xD;
This article first covers what we consider to be a reliable selector. We then mention the pros and cons of various selector strategies, and custom attributes in particular. Finally, we&amp;#39;ll show you how to customize TestCafe options so that it </dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:383097</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2019/12/24/automated-web-testing-when-to-choose-recording-over-scripting.aspx</link>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/testing+tools">testing tools</category>
      <category domain="https://community.devexpress.com/Tags/Web">Web</category>
      <category domain="https://community.devexpress.com/Tags/web+testing">web testing</category>
      <title>Automated Web Testing - When to Choose Recording Over Scripting?</title>
      <description>&lt;p&gt;
    As you may know, we currently offer both scripting-based (&lt;a href="https://devexpress.github.io/testcafe/?utm_source=devexpress&amp;amp;utm_medium=content&amp;amp;utm_campaign=testcafestudio&amp;amp;utm_content=when-to-choose-recording-over-scripting&amp;amp;utm_term=testcafe"&gt;TestCafe&lt;/a&gt;) and visual recording-based (&lt;a href="https://devexpress.com/products/testcafestudio/?utm_source=devexpress&amp;amp;utm_medium=content&amp;amp;utm_campaign=testcafestudio&amp;amp;utm_content=when-to-choose-recording-over-scripting&amp;amp;utm_term=testcafestudio"&gt;TestCafe Studio&lt;/a&gt;) platforms for web test automation. Though both options can get you where you want to go, we believe that visual test recording offers unique strengths for those who want to incorporate automated testing in the product delivery process.  
&lt;/p&gt;
 
 &lt;h3&gt;
     Visual Recording in a Nutshell  
&lt;/h3&gt;

&lt;p&gt;
    Unlike script-based test automation, visual test recording eliminates (or significantly reduces) the need to write test script. We like to think of visual test recording as “codeless automation.” To create a recorded test, you simply open a browser and click through your way to a web test (you interact with your web app in the same way end-users would). The visual recorder tracks actions and generates test scripts that you or a CI system can automatically replay later.  
&lt;/p&gt;

&lt;p&gt;
    This leads to the obvious question - when does it make sense to select automated recording over manual scripting?
&lt;/p&gt;
 
&lt;h3&gt;
    1. When You Have Limited Programming Experience 
&lt;/h3&gt;

&lt;p&gt;
    With TestCafe Studio’s visual test recorder, test authors don’t have to be software developers.  To create an automated test with the visual recorder, you simply open a web browser and execute standard user actions (click buttons, fill in forms, drag sliders).  Once you’ve recorded actions, you specify the page elements that require verification (via point and click) within your test scenario. 
&lt;/p&gt;

&lt;h3&gt;
    2. When You Have Multiple Test Scenarios 
&lt;/h3&gt;
 
&lt;p&gt;
    If you have programming experience and you need to write ten or twenty tests – you can write your test scripts manually without much difficulty. If, however, you must write a few hundred tests, scripting could be rather time-consuming. In such instances, it may make sense to consider automated recording. Regardless of how fast you write code, point and click recording is always faster and less costly. This is especially true when the recorder allows you to re-record individual actions and modify selectors when the user interface changes over time.  
&lt;/p&gt;

&lt;h3&gt;
    3. When You Have to Test Apps Based on Different Technologies 
&lt;/h3&gt;

 &lt;p&gt;
     Coding tests for large web applications requires that you examine the structure of every page involved. This can be hard if the application consolidates multiple services, includes third-party iframes, etc. If you write tests for more than one application, you may spend unnecessary energy on platform-specifics - specifics that can affect your test code.  Recording conceals these complexities and allows QA engineers to get the job done with the least amount of effort. When using an automated recorder, test script generation remains straightforward regardless of how technologies are used on a webpage. 
&lt;/p&gt;

&lt;h3&gt;
    4. When You Have to Perform Black-Box Testing 
&lt;/h3&gt;

&lt;p&gt;
    When you write a test with a web testing framework, you would normally call page code or browser API to perform actions against page elements. This approach can lead to situations wherein test authors make modifications that are unavailable to end-users. When recording tests visually, engineers are limited to the same screen elements available to end-users.  
&lt;/p&gt;
 
&lt;h3&gt;
    Visual Recording and You 
&lt;/h3&gt;
 
&lt;p&gt;
    Though visual recording cannot address every single test scenario, we think it offers important advantages over manual scripting – advantages that can save your team significant time.  If you are currently using scripting alone or recording your test scripts, we’d love your feedback. Please tell us why you prefer manual scripting or visual recording in the comments section below.  
&lt;/p&gt;

&lt;h4&gt;
   About TestCafe Studio  
&lt;/h4&gt;

&lt;p&gt;
    &lt;em&gt;TestCafe Studio is a cross-platform, end-to-end web testing IDE with the fully integrated Visual Web Test Recorder. TestCafe Studio requires no WebDrivers and allows you to create, run and maintain automated web tests with zero code. &lt;a href="https://devexpress.com/products/testcafestudio/?utm_source=devexpress&amp;amp;utm_medium=content&amp;amp;utm_campaign=testcafestudio&amp;amp;utm_content=when-to-choose-recording-over-scripting&amp;amp;utm_term=download"&gt;Download Free 30-day Trial&lt;/a&gt;.&lt;/em&gt; 
&lt;/p&gt;</description>
      <pubDate>Tue, 24 Dec 2019 07:00:00 Z</pubDate>
      <dc:creator>The DevExpress Team</dc:creator>
      <dx:excerpt>As you may know, we currently offer both scripting-based (TestCafe) and visual recording-based (TestCafe Studio) platforms for web test automation. Though both options can get you where you want to go, we believe that visual test recording offers unique strengths for those who want to incorporate automated testing in the product delivery process.</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:382769</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2019/12/05/web-application-testing-6-tips-to-make-the-most-of-testcafe-studios-web-test-recorder.aspx</link>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/testing+tools">testing tools</category>
      <category domain="https://community.devexpress.com/Tags/Web">Web</category>
      <category domain="https://community.devexpress.com/Tags/web+testing">web testing</category>
      <title>Web Application Testing - 6 Tips to Make the Most of TestCafe Studio’s Web Test Recorder</title>
      <description>&lt;blockquote&gt;
    TestCafe Studio allows us to test large pools of data and scenarios, thereby catching issues before we launch our products. It has transformed our launches and improved our product success rate.
&lt;/blockquote&gt;

&lt;p&gt;
Our customers love &lt;a href="https://dxpr.es/36b4AlD" target="_blank"&gt;TestCafe Studio&lt;/a&gt; for many reasons – among them its accurate and easy-to-use test recording engine.  By clicking through a target website, TestCafe Studio allows you to emulate end-user actions and automatically record stable web tests without writing any code. &lt;/p&gt;

&lt;p&gt; 
In this post, we will show you 6 tips to boost productivity and leverage TestCafe Studio’s Test Recorder to address a variety of usage scenarios. 
&lt;/p&gt;

&lt;h3&gt; &lt;a name="hover-over-an-element"&gt;&lt;/a&gt;
    1.	Hover Over an Element
&lt;/h3&gt; 

&lt;p&gt;
TestCafe Studio’s recorder does not save mouse movements during most actions (except for drag-and-drop operations). This enhances test stability because recorded mouse movements usually generate random errors during playback (for instance, this occurs when an element is rendered at a different position). 
&lt;/p&gt;

&lt;p&gt;
If you need to perform actions against specific UI elements (when you hover over a menu item or button), TestCafe Studio requires you to explicitly add a hover action.
&lt;/p&gt;

&lt;p&gt;
To add a hover action during recording, switch to the TestCafe Studio window and click &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/hover-icon.png" alt="Hover icon"&gt; in the Actions panel to add a Hover action:
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/1-hover-add.png" alt="Add a Hover action" style="width:362px;"&gt;
&lt;/p&gt;

&lt;p&gt;
  Click &lt;img src="https://community.devexpress.com:443/blogs/testcafe/RecorderTips/element-picker-icon.png" alt="Element Picker icon"&gt; Pick a target element to select an element to hover within the browser:
&lt;/p&gt;

&lt;p&gt;
 &lt;img src="https://community.devexpress.com:443/blogs/testcafe/RecorderTips/2-hover-pick.png" alt="Pick a target element" style="width:520px;"&gt;   
&lt;/p&gt;

&lt;p&gt;
  You can now switch back to the browser window and continue recording.  
&lt;/p&gt;

&lt;h3&gt; &lt;a name="save-the-actual-click-point"&gt;&lt;/a&gt;
    2.	Save the Actual Click Point
&lt;/h3&gt;

&lt;p&gt;
   TestCafe Studio clicks the center of the target element when it replays a recorded test. This produces stable tests even when a target element’s size changes over time. 
&lt;/p&gt;

&lt;p&gt;
   If you need TestCafe Studio to click the exact position you clicked during recording, simply add an Offset parameter. To add an Offset parameter, expand the action within our Test Editor and click the +Add Option. 
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/3-add-options.png" alt="Add Options" style="width:298px;"&gt;
&lt;/p&gt;

&lt;p&gt;
    Select Offsets from the dropdown menu. This adds both X and Y options to the action.
&lt;/p&gt;

&lt;p&gt;
   &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/4-options-offsets.png" alt="Select offsets" style="width:286px;"&gt; 
&lt;/p&gt;

&lt;p&gt;
    TestCafe Studio initializes these with coordinates captured during the recording. You can use these values or specify a different offset.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="repeat-recorded-actions-before-each-test"&gt;&lt;/a&gt;
    3.	Repeat Recorded Actions Before Each Test
&lt;/h3&gt;

&lt;p&gt;
    Many test scenarios begin with similar actions (like login or opening a view). TestCafe Studio allows you to record these actions and configure them prior to each test run.
&lt;/p&gt;

&lt;p&gt;
    Action sequences executed before and after each test are called hooks. Here’s how to add actions to a hook.
&lt;/p&gt;

&lt;p&gt;
   Run the recorder as you normally would and record your actions: 
&lt;/p&gt;

&lt;p&gt;
  &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/5-hook-record.png" alt="Record your actions" style="width:298px;"&gt;  
&lt;/p&gt;

&lt;p&gt;
    Hold the Cmd/Ctrl button and select actions you need to repeat before each test:
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/6-hook-select-actions.png" alt="Select actions" style="width:298px;"&gt;
&lt;/p&gt;

&lt;p&gt;
    Then click the &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/before-each-hook-icon.png" alt="Before Each Hook button"&gt; Move to before each hook button.
&lt;/p&gt;

&lt;p&gt;
   &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/7-hook-click-move.png" alt="Click the move to before each hook button" style="width:298px;"&gt; 
&lt;/p&gt;

&lt;p&gt;
    TestCafe Studio creates a ‘before each’ hook with these actions or appends them to an existing hook. 
&lt;/p&gt;

&lt;h3&gt;&lt;a name="handle-native-browser-dialogs"&gt;&lt;/a&gt;
    4.	Handle Native Browser Dialogs
&lt;/h3&gt;

&lt;p&gt;
    TestCafe Studio allows you to define how tests should respond to native browser dialogs (alert, confirmations, etc.) invoked on a page.
&lt;/p&gt;

&lt;p&gt;
  Click &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/set-native-dialog-handler-icon.png" alt="Set Native Dialog Handler icon"&gt; in the Actions panel to add the Handle Native Dialogs action. Ensure that it is executed before the action that invokes the dialog.  
&lt;/p&gt;

&lt;p&gt;
   &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/8-handle-native-dialogs-create.png" alt="Add the Handle Native Dialogs action" style="width:298px;"&gt; 
&lt;/p&gt;

&lt;p&gt;
    Click +Confirm to add a confirmation dialog.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/9-handle-native-dialogs-add-confirm.png" alt="Add a confirmation dialog" style="width:286px;"&gt;
&lt;/p&gt;

&lt;p&gt;
    Specify OK as the close action, enable the Message switch and specify the expected message:
&lt;/p&gt;

&lt;p&gt;
   &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/10-handle-native-dialogs-configure.png" alt="Configure the Handle Native Dialogs action" style="width:286px;"&gt; 
&lt;/p&gt;

&lt;p&gt;
    If any subsequent action invokes a confirmation dialog with the specified message, TestCafe Studio will emulate the OK click to close it.
&lt;/p&gt;

&lt;h3&gt;&lt;a name="take-a-screenshot-of-the-tested-page"&gt;&lt;/a&gt;
    5.	Take a Screenshot of the Tested Page
&lt;/h3&gt;

&lt;p&gt;
    TestCafe Studio allows you to take screenshots of your tested page throughout the test execution process.
&lt;/p&gt;

&lt;p&gt;
    Once you record actions that require a screen capture, switch to the TestCafe Studio window and click &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/take-screenshot-icon.png" alt="Take a Screenshot icon"&gt; in the Actions panel.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/11-1-take-screenshot-add.png" alt="Click the Take a Screenshot button" style="width:362px;"&gt;
&lt;/p&gt;

&lt;p&gt;
    TestCafe Studio can also capture screenshots each time a test fails. To enable this option, click the &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/settings-icon.png" alt="Settings icon"&gt; button next to the Run Configuration drop-down menu on the main toolbar and check ‘Take a screenshot if a test fails‘ in the dialog window.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/11-2-take-screenshot-option.png" alt="check ‘Take a screenshot if a test fails‘ in the dialog window." style="width:363px;"&gt;
&lt;/p&gt;

&lt;p&gt;
   You can view screenshots captured during test execution in your report. 
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/11-3-report-view.png" alt="Report view" style="width:371px;"&gt;
&lt;/p&gt;

&lt;p&gt;
    Click the &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/screenshot-icon.png" alt="Screenshot icon"&gt; icon in the grid to open the screenshot window.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/11-4-screenshots-window.png" alt="Open the screenshot window" style="width:291px;"&gt;
&lt;/p&gt;

&lt;h3&gt;&lt;a name="add-an-assertion-and-verify-its-status"&gt;&lt;/a&gt;
    6.	Add an Assertion and Verify Its Status
&lt;/h3&gt;

&lt;p&gt;
    TestCafe Studio provides a straightforward way to create an assertion, configure it and check if it passes.
&lt;/p&gt;

&lt;p&gt;
    Select the assertion in the Actions panel to create your assertion.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/12-assertion-add.png" alt="Create your assertion" style="width:362px;"&gt;
&lt;/p&gt;

&lt;p&gt;
    Click &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/element-picker-icon.png" alt="Element Picker icon"&gt; Pick a target element to specify the element whose state you need to verify. This opens the browser where you can point to the target element.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/13-assertion-pick.png" alt="Point to the target element" style="width:520px;"&gt;
&lt;/p&gt;

&lt;p&gt;
    Use the property grid to select the element property whose value you need to check.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/14-assertion-property-grid.png" alt="Select the element property" style="width:286px;"&gt;
&lt;/p&gt;

&lt;p&gt;
   TestCafe Studio retrieves and displays its actual value. Click the &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/copy-value-icon.png" alt="Copy Value icon"&gt; button to copy this value to the ‘Expected Value’ field. This is a reference value compared with the values obtained during the test run. 
&lt;/p&gt;

&lt;p&gt;
   &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/15-assertion-copy-value.png" alt="Copy this value to the ‘Expected Value’ field." style="width:286px;"&gt; 
&lt;/p&gt;

&lt;p&gt;
    Finally, click the &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/assertion-state-icon.png" alt="Assertion State icon"&gt; button to check if the assertion passes. The tick mark indicates that the assertion’s condition matches.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/RecorderTips/16-assertion-refresh.png" alt="Click the Assertion State button to check if the assertion passes" style="width:286px;"&gt;
&lt;/p&gt;

&lt;h2&gt;
    Your Feedback Counts
&lt;/h2&gt;

&lt;p&gt;
    As always, we welcome your feedback. Please share your thoughts below and let us know how you’re using TestCafe Studio within your enterprise.
&lt;/p&gt;</description>
      <pubDate>Thu, 05 Dec 2019 05:00:00 Z</pubDate>
      <dc:creator>The DevExpress Team</dc:creator>
      <dx:excerpt>Our customers love TestCafe Studio for many reasons – among them its accurate and easy-to-use test recording engine.  By clicking through a target website, TestCafe Studio allows you to emulate end-user actions and automatically record stable web tests without writing any code.  &#xD;
 &#xD;
In this post, we will show you 6 tips to boost productivity and leverage TestCafe Studio’s Test Recorder to address a variety of usage scenarios.</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:381833</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2019/08/21/automated-web-testing-create-web-test-in-2-minutes-with-testcafe.aspx</link>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/testing+tools">testing tools</category>
      <category domain="https://community.devexpress.com/Tags/Web">Web</category>
      <category domain="https://community.devexpress.com/Tags/web+testing">web testing</category>
      <title>Automated Web Testing: How to Create a Web Test in 2 Minutes with TestCafe Studio</title>
      <description>&lt;p&gt;
    In this quick tutorial, I’ll describe how to get started with TestCafe Studio and how to test an existing webpage (in this instance, a relatively advanced web page with integrated file upload functionality). 
As you’ll soon see, I will select and upload two files and then run two assertions: The first for correct file name output and the other for correct file size label format. 
&lt;/p&gt;

&lt;p&gt;
    I promise – this should only take two minutes of your time - TestCafe Studio’s Visual Test Recorder makes it easy to visually record web tests.  
&lt;/p&gt;

&lt;p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/40mSSjHqAJc" allowfullscreen="" style="width:560px;" referrerpolicy="strict-origin-when-cross-origin"&gt;&lt;/iframe&gt;    
&lt;/p&gt;

 
&lt;h3&gt;
    Step 1: Record a Script
&lt;/h3&gt;

&lt;p&gt;
    I’ll first launch TestCafe Studio (if you’d like to install TestCafe Studio and follow along, simply download our 30-day trial), enter the website URL inside TestCafe’s Welcome screen and press ‘Start Recording a Test’. My browser will navigate to the appropriate address – and since TestCafe’s Visual Test Recorder is up and running in the background – I’ll be ready to record actions performed on this webpage.
&lt;/p&gt; 

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/02-start-recording.png" alt="Start the Visual Test Recorder"&gt;
&lt;/p&gt;
 
&lt;p&gt;
    I’ll use the Upload mode drop-down and specify that I wish to begin file upload manually. 
&lt;/p&gt;

&lt;p&gt;
	&lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/03-select-upload-mode.jpg" alt="Select upload mode" style="width:265px;"&gt;
&lt;/p&gt;
 
&lt;p&gt;
    I’ll then enable multi-file checkbox. 
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/04-check-box.jpg" alt="Check box action" style="width:285px;"&gt;
&lt;/p&gt;
 
&lt;p&gt;
    I’ll click Select file and make my file selections.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/05-select-files.png" alt="Select the files" style="width:403px;"&gt;
&lt;/p&gt;

&lt;p&gt;
I’ll click Upload to complete the process.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/06-click-upload.png" alt="Click Upload" style="width:172px;"&gt;
&lt;/p&gt;
 

&lt;h3&gt;
    Step 2: Review the Action List
&lt;/h3&gt;

&lt;p&gt;
    Its time to switch to TestCafe Studio and review the commands generated by my actions.
&lt;/p&gt;

&lt;p&gt;
&lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/07-action-list.png" alt="Visual Test Recorder - Action List Editor"&gt;
&lt;/p&gt;
 

&lt;h3&gt;
    Step 3: Add a Value Assertion
&lt;/h3&gt;

&lt;p&gt;
    As you can see, site UI is rendered in an IFRAME, so the first action represents a context switch - click and upload steps follow thereafter (replicating my earlier site actions).
&lt;/p&gt;

&lt;p&gt;
    It’s time to finalize the test with a couple of assertions. I’ll first check whether the demo app displays the correct file name.
&lt;/p&gt;

&lt;p&gt;
    As you can see, you don’t have to write a single line of code to do this (unlike competing web testing tools which do require you to write lots of custom test code). I’ll simply click a toolbox icon to add an assertion with an “equals” condition.
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/09-add-assertion.png" alt="Add assertion" style="width:124px;"&gt;
&lt;/p&gt;

 &lt;p&gt;
I’ll then use the Element Picker button to select the target element within the browser.      
&lt;/p&gt;
&lt;p&gt;
&lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/11-invoke-element-picker.png" alt="Invoke Element Picker" style="width:444px;"&gt;
&lt;/p&gt;
 
&lt;p&gt;
    This focuses the browser window so you can point to the appropriate element.
&lt;/p&gt;

&lt;p&gt;
&lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/12-pick-label.png" alt="Pick the Label on the Web Page" style="width:296px;"&gt;
&lt;/p&gt;

&lt;p&gt;
As you can see below, TestCafe Studio generates a selector for this element and opens a list of its properties. Select the property you wish to assert.    
&lt;/p&gt;

&lt;p&gt;
&lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/13-property-grid.png" alt="Select an element&amp;#39;s property from the Property Grid" style="width:402px;"&gt;
&lt;/p&gt;

&lt;p&gt;
TestCafe Studio obtains the current property value and asks me to confirm its use (for comparison).
&lt;/p&gt;

&lt;p&gt;
&lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/14-confirm-value.png" alt="Confirm the value" style="width:436px;"&gt;
&lt;/p&gt;
 
&lt;h3&gt;
    Step 4: Add a Format Assertion
&lt;/h3&gt; 

&lt;p&gt;
In much the same way, you can assert a label’s font-size CSS property value.     
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/15-assertion.png" alt="Add a CSS Style Assertion"&gt;
&lt;/p&gt;
 

&lt;h3&gt;
    Step 5: Stop the Recorder and Run the Test
&lt;/h3&gt;

&lt;p&gt;
    My test is ready and recording can be stopped. To execute my newly recorded test, I’ll press the Run button and watch TestCafe replay my actions.
&lt;/p&gt;

&lt;p&gt;
&lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/16-run-test.png" alt="Run the Web Test"&gt;
&lt;/p&gt;
 
&lt;h3&gt;
Step 6: Review the Test Report
&lt;/h3&gt;

&lt;p&gt;
    Once TestCafe completes the test run, I can review test results within TestCafe’s intuitive UX. 
&lt;/p&gt;

&lt;p&gt;
   &lt;img src="https://community.devexpress.com/blogs/testcafe/TwoMinutes/17-view-report.png" alt="Review the Test Execution Report"&gt; 
&lt;/p&gt;
 

&lt;p&gt;
    That’s it. In just a few minutes and without a single line of code, I created a test that was ready to run across all modern browsers and on different platforms (Win, Mac, and Linux).
&lt;/p&gt;

&lt;h2&gt;
Get Started Today
&lt;/h2&gt;
&lt;p&gt;
    Ready to compare TestCafe Studio to your current web testing platform and experience the TestCafe difference for yourself?
&lt;/p&gt;

&lt;p&gt;
    
   &lt;a href="https://www.devexpress.com/products/testcafestudio/"&gt;Download Free 30-Day Trial&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    Should you have any questions or need assistance, share your comments below.  
&lt;/p&gt;</description>
      <pubDate>Wed, 21 Aug 2019 16:55:00 Z</pubDate>
      <dc:creator>TestCafe Team (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:380887</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2019/04/26/testcafe-studio-is-here.aspx</link>
      <category domain="https://community.devexpress.com/Tags/featured">featured</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/web+testing">web testing</category>
      <title>TestCafe Studio is Here</title>
      <description>&lt;p&gt;We are proud to announce the immediate availability of &lt;b&gt;TestCafe Studio&lt;/b&gt; – our next-gen automated web testing framework. To learn more about TestCafe Studio and experience its capabilities first hand, feel free to download a no-cost &lt;a href="https://www.devexpress.com/products/testcafestudio/"&gt;30-day evaluation version&lt;/a&gt; today.&lt;/p&gt;&#xD;
&#xD;
&#xD;
&lt;h2&gt;Online Webinar: Introducing TestCafe Studio&lt;/h2&gt;&#xD;
&#xD;
&lt;p&gt;Join Paul Usher and Julian Bucknall on April 30th to learn more about TestCafe Studio and how you can leverage its capabilities to deliver more robust web solutions to your end users.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="https://register.gotowebinar.com/register/6820145681096329484"&gt;Webinar: Introducing TestCafe Studio&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&#xD;
&#xD;
&lt;h2&gt;TestCafe Studio vs TestCafe v15.1&lt;/h2&gt;&#xD;
&#xD;
&lt;p&gt;TestCafe Studio ships with unique features unavailable in its predecessor (TestCafe v15.1), including:&lt;/p&gt;&#xD;
&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;A more powerful test execution platform – TestCafe Studio is now based on hybrid client-server architecture instead of in-browser execution.&lt;/li&gt;&#xD;
&lt;li&gt;A redesigned Visual Test Recorder – TestCafe Studio can now visually record a test from scratch or edit existing test scripts.&lt;/li&gt;&#xD;
&lt;li&gt;A feature-complete code editor.&lt;/li&gt;&#xD;
&lt;li&gt;A new test debugger designed to run tests step-by-step and access page element data while doing so.&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&#xD;
&lt;p&gt;For additional information on the differences between TestCafe v15.x and TestCafe Studio, please refer to the following blog post: &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="https://www.devexpress.com/go/TestCafeStudio_Owners_Blog.aspx"&gt;TestCafe Studio: A New Web Testing IDE&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;h2&gt;Upgrade from TestCafe Open Source Edition&lt;/h2&gt;&#xD;
&#xD;
&lt;p&gt;Needless to say, we remain fully committed to TestCafe as an open source web testing platform and are looking forward to extending TestCafe’s end-to-end web testing capabilities now and into the future. As you might expect, users have repeatedly asked us to create a Visual Test Editor/Test Recorder.  With the release of TestCafe Studio, we’ve made certain to address this requirement and to deliver a straightforward way to visual record and edit test scripts.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Whether you’re looking to simplify the way you record your tests, or want to delegate testing to a QA team that does not want to write JavaScript, try the Studio edition and tell us what you think. For information on how TestCafe Studio can become part of your existing continuous integration workflow, read the following article: &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="https://www.devexpress.com/products/testcafestudio/qa-end-to-end-web-testing.xml"&gt;What&amp;#39;s Better than TestCafe? TestCafe Studio&lt;/a&gt;&lt;/p&gt;&#xD;
&#xD;
&#xD;
&lt;h2&gt;Contact Us if You Have Any Questions&lt;/h2&gt;&#xD;
&#xD;
&lt;p&gt;Should you have any questions about TestCafe, its capabilities or licensing terms, post a comment below or create a new ticket in our Support Center and we&amp;#39;ll be happy to help.&lt;/p&gt;&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
</description>
      <pubDate>Fri, 26 Apr 2019 06:43:00 Z</pubDate>
      <dc:creator>TestCafe Team (DevExpress)</dc:creator>
      <dx:excerpt>Join a webinar on April 30th to learn more about TestCafe Studio and how you can leverage its capabilities to deliver more robust web solutions to your end users.</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:379382</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2019/01/30/testcafe-studio-a-new-web-testing-ide.aspx</link>
      <category domain="https://community.devexpress.com/Tags/featured">featured</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/TestCafe+Studio">TestCafe Studio</category>
      <category domain="https://community.devexpress.com/Tags/testing+tools">testing tools</category>
      <category domain="https://community.devexpress.com/Tags/web+testing">web testing</category>
      <title>TestCafe Studio: A New Web Testing IDE</title>
      <description>&lt;p&gt;Two years ago, we &lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2016/10/18/testcafe-now-available-in-free-open-source-amp-commercial-studio-versions.aspx"&gt;announced&lt;/a&gt; a shift in our long-term plans for TestCafe. As some of you may already know, we chose to freeze the features shipping in v2015.1 and to focus our energies on two new versions of the product: &lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
        &lt;b&gt;TestCafe: an open-source CLI tool&lt;/b&gt; &lt;br&gt;
        The team always wanted to publish a free open-source version that doesn’t include advanced UI capabilities. You can now &lt;a href="https://github.com/DevExpress/testcafe" target="_blank"&gt;find this version on GitHub&lt;/a&gt;, where it’s been freely available to everyone for the past several months.
    &lt;/li&gt;
    &lt;li&gt;
        &lt;b&gt;TestCafe Studio: the next step in GUI version evolution&lt;/b&gt; &lt;br&gt;
        A commercial web testing IDE built around the same engine as the open-source version. Our work on this product is almost completed: you can download a Preview version today.
    &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below you’ll find all the information about the new TestCafe Studio: how to get started, the differences between the new version and v2015.1, and where to find the latest Preview version. &lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
        &lt;a href="#getstarted"&gt;TestCafe Studio 101 &amp;amp; Getting Started&lt;/a&gt; &lt;br&gt;
        Start here if you’re new to TestCafe. A short video will explain the basic concepts.
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#new"&gt;What’s New in TestCafe Studio: Compare to v2015.1&lt;/a&gt; &lt;br&gt;
        Start here if you’ve used TestCafe before. This part will bring you up-to-date on TestCafe capabilities.
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#try"&gt;Try the Preview and Let Us Know What You Think &lt;/a&gt; &lt;br&gt;
        Migrate your existing TestCafe tests or start working on new projects.
    &lt;/li&gt;
&lt;/ul&gt;

&lt;a name="getstarted"&gt;&lt;/a&gt;
&lt;h2&gt;TestCafe Studio 101 &amp;amp; Getting Started&lt;/h2&gt;

&lt;p&gt;TestCafe Studio is a standalone application that allows you to create, edit, manage, execute, and debug tests with ease.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Runs on Windows, Mac and Linux.&lt;/li&gt;
    &lt;li&gt;Ships with a Visual Test Recorder, allowing you to create and edit tests without coding.&lt;/li&gt;
    &lt;li&gt;Includes a built-in code editor with auto-complete and syntax highlighting support (for those who prefer to script their tests in code).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’ve never used TestCafe before, watch this short Getting Started video.&lt;/p&gt;

&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/kcICIuKenuM" allowfullscreen="" referrerpolicy="strict-origin-when-cross-origin"&gt;&lt;/iframe&gt;


&lt;a name="new"&gt;&lt;/a&gt;
&lt;h2&gt;What’s New in TestCafe Studio: Compare to v2015.1&lt;/h2&gt;

&lt;p&gt;Here’s a brief summary of the capabilities that differentiate the new TestCafe Studio from its predecessor.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
        &lt;a href="#electron"&gt;TestCafe is Now a Desktop Application&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#recorder"&gt;Visual Recorder: Now with Test Editing Capability&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#selectors"&gt;Smart Element Selectors&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#concurrent"&gt;Concurrent Test Execution Improvements&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#configuration"&gt;Improved Test Execution Configuration Management&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#autowait"&gt;Faster and More Stable Tests with the New Auto-Wait Mechanism&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#filemanager"&gt;Updated File Manager UI&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#reports"&gt;Enhanced Reports&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#codeeditor"&gt;Feature-Complete Code Editor&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#debug"&gt;Powerful Test Debugger&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#api"&gt;Test API&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;a href="#ci"&gt;Continuous Integration Support&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;

&lt;a name="electron"&gt;&lt;/a&gt;
&lt;h3&gt;TestCafe is Now a Desktop Application&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt; is a desktop application that looks and behaves much like today’s most popular IDEs. It includes familiar UI elements such as a Toolbar, File Explorer, Main Menu, Tabs View, and Reports Panel.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt; had a UI implemented as a website hosted on a local Node.js server.&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/TestCafe-Application-UI.png" alt="TestCafe New Desktop Application UI"&gt;
&lt;/p&gt;


&lt;a name="recorder"&gt;&lt;/a&gt;
&lt;h3&gt;Visual Recorder: Now with Test Editing Capability&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: the Visual Test Recorder now ships with a new “Continue Recording” option. As its name suggests, this feature allows you to edit previously recorded tests and add additional test actions visually.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: Visual Test Recorder could be used for initial test construction, but the only way to modify a test was to edit generated code.&lt;/p&gt;


&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/test-recorder.png" alt="TestCafe Visual Test Recorder"&gt;
&lt;/p&gt;

&lt;p&gt;You will find the action list UI more user-friendly and easier to understand. Every action on the list can be edited according to your needs.&lt;/p&gt;

&lt;p&gt;Tests recorded in TestCafe Studio are saved in a new &amp;quot;*.testcafe&amp;quot; file format. Recorded tests are no longer transformed into plain JavaScript code once recording is complete. This is what allows you to display your tests as a sequence of actions, edit them as needed, and modify them using the Visual Test Recorder.&lt;/p&gt;

&lt;p&gt;Should you prefer to edit JavaScript code, we provide you with the option of manual &amp;quot;*.testcafe&amp;quot; to &amp;quot;*.js&amp;quot; conversion.&lt;/p&gt;


&lt;a name="selectors"&gt;&lt;/a&gt;
&lt;h3&gt;Smart Element Selectors&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: You can pick a selector from a list of predefined types or build your own. The new Selector Builder UI allows you to locate an element in a variety of ways:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Use CSS selectors&lt;/li&gt;
    &lt;li&gt;Run custom JavaScript functions&lt;/li&gt;
    &lt;li&gt;Filter page elements by index, text, attributes or visibility &lt;/li&gt;
    &lt;li&gt;Find elements based on their position within the DOM tree &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: Advanced Selector Builder UI wasn&amp;#39;t available. Customization was limited to manual CSS selector construction.&lt;/p&gt;

&lt;p&gt;Automatically-generated selectors:&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/auto-generated-selectors.png" alt="TestCafe Page Element Selectors"&gt;
&lt;/p&gt;

&lt;p&gt;Custom selector builder:&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/selector-builder.png" alt="Custom Element Selector Builder"&gt;
&lt;/p&gt;


&lt;a name="concurrent"&gt;&lt;/a&gt;
&lt;h3&gt;Concurrent Test Execution Improvements&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: Can start several instances of the same browser, divide fixture tests into several batches, and execute each batch in its own browser instance. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: Only one browser instance was created per test run and all tests were executed sequentially.&lt;/p&gt;

&lt;p&gt;Both TestCafe Studio and its predecessor execute tests in parallel if you specify multiple target browsers. &lt;/p&gt;


&lt;a name="configuration"&gt;&lt;/a&gt;
&lt;h3&gt;Improved Test Execution Configuration Management&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: You can create multiple “configurations” that define target browsers and additional test execution settings. You can then run tests for specific configurations. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: You needed to set configuration settings each time you ran tests.&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/test-configuration-manager.png" alt="TestCafe Configuration Manager"&gt;
&lt;/p&gt;



&lt;a name="autowait"&gt;&lt;/a&gt;
&lt;h3&gt;Faster and More Stable Tests with the New Auto-Wait Mechanism&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: Automatically suspends test execution while waiting for element availability, page load completion, XHR requests, etc. The new auto-wait mechanism also extends to assertions and thus makes tests more stable when you verify the page state. Customizable timeouts allow you to fine-tune built-in waiting mechanisms.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: Also waited for element availability, page loads and XHR requests automatically, but didn’t wait for assertions to pass, and the timeouts were not customizable. &lt;/p&gt;



&lt;a name="filemanager"&gt;&lt;/a&gt;
&lt;h3&gt;Updated File Manager UI&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: You can create, edit, and view various file formats including test files, test recordings, helpers, wrappers, and PageModels. You can launch tests directly from selected files or folders. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: You could create, edit, and view only .js test files. It was not possible to start an arbitrary selection of tests or fixtures - you could only launch an individual test or fixture.&lt;/p&gt;


&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/test-file-manager.png" alt="TestCafe File Manager UI"&gt;
&lt;/p&gt;


&lt;a name="reports"&gt;&lt;/a&gt;
&lt;h3&gt;Enhanced Reports&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: The new UI includes a panel with information on past test runs and current sessions that can be cancelled if necessary. A click on an item within the Reports panel opens a detailed report on any given test. You can view test reports and export them into various formats (json, list, minimal, spec,  xunit). You can install plugins that provide additional report formats.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: Displayed a summary of test runs on a separate page, instead of a panel integrated in the main UI. Tests that were currently in progress could only be stopped by closing the browser that ran them, but this led to an error. There was no way to add more report formats. &lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/test-execution-progress.png" alt="Interactive Test Execution Progress Panel"&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/test-report.png" alt="TestCafe Test Report Details"&gt;
&lt;/p&gt;


&lt;a name="codeeditor"&gt;&lt;/a&gt;
&lt;h3&gt;Feature-Complete Code Editor&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: Features a fully integrated code editor with autocomplete and syntax highlighting. You can launch tests directly from the editor.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: Auto-completion wasn’t available, tests could not be launched from the code editor, and a minimap (outline view) was not displayed. &lt;/p&gt;


&lt;p&gt;
    &lt;img src="https://community.devexpress.com/blogs/testcafe/studio-beta/code-editor.png" alt="TestCafe Code Editor"&gt;
&lt;/p&gt;


&lt;a name="debug"&gt;&lt;/a&gt;
&lt;h3&gt;Powerful Test Debugger&lt;/h3&gt;

&lt;p&gt;If an automated test fails, but you cannot reproduce the failure manually, there may be an issue with the script. The best way to catch those issues is by debugging the test session. For this purpose, TestCafe Studio implements all the means necessary to effectively troubleshoot test execution.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: &lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;The Debug action stops a test at a desired moment. &lt;/li&gt;
    &lt;li&gt;The Debug Mode allows you to run the entire test step-by-step.&lt;/li&gt;
    &lt;li&gt;The “Pause the test when it fails” option stops a test the moment it fails.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whenever a test pauses, you can explore the tested page with developer tools, interact with it or step over to the next action (if the test has not failed).&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: You could stop a test with the ‘debugger’ keyword, but the tested page was frozen, you could not interact with it or step over to the next action. There was no way to stop execution automatically when a test failed.&lt;/p&gt;



&lt;a name="api"&gt;&lt;/a&gt;
&lt;h3&gt;Test API&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: The new engine includes the following API changes: &lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;a more intuitive interface that simplifies the task of writing a test from scratch;&lt;/li&gt;
    &lt;li&gt;test code can now include conditions and cycles;&lt;/li&gt;
    &lt;li&gt;built-in support for ES6 and TypeScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: Test code had to be organized into &amp;quot;steps&amp;quot;, where each step could only contain a single test action. Test code logic had to be linear: cycles and conditions were not allowed. There was no support for TypeScript. The version of JavaScript was limited by the browser version in which you ran tests.&lt;/p&gt;


&lt;a name="ci"&gt;&lt;/a&gt;
&lt;h3&gt;Continuous Integration Support&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;TestCafe Studio&lt;/b&gt;: Use the open-source TestCafe, with its extensive command line and JavaScript interfaces, as a test runner.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;TestCafe v2015.1&lt;/b&gt;: You needed to use a separate Node.js module that provided only a minimal JavaScript API and no command line features.&lt;/p&gt;


&lt;a name="try"&gt;&lt;/a&gt;
&lt;h2&gt;Try the Preview and Let Us Know What You Think&lt;/h2&gt;

&lt;p&gt;TestCafe Studio maintains full backward compatibility - all tests you recorded in TestCafe versions up to 15.1 can be executed in TestCafe Studio without limitations. We do suggest, however, that you switch to the new API once we release the RTM version, so you can enjoy all the new features shipping inside TestCafe Studio.&lt;/p&gt;

&lt;p&gt;TestCafe Studio Preview is free to download - &lt;a href="https://www.devexpress.com/products/testcafestudio/" target="_blank"&gt;sign up now&lt;/a&gt; to get your copy. &lt;/p&gt;

&lt;p&gt;We look forward to hearing about your experience. Write to us at &lt;a href="mailto:testcafeteam@devexpress.com"&gt;testcafeteam@devexpress.com&lt;/a&gt; or create a ticket in our Support Center to share your thoughts and feedback.&lt;/p&gt;</description>
      <pubDate>Wed, 30 Jan 2019 08:01:00 Z</pubDate>
      <dc:creator>TestCafe Team (DevExpress)</dc:creator>
      <dx:excerpt>Two years ago, we announced a shift in our long-term plans for TestCafe. As some of you may already know, we chose to freeze the features shipping in v2015.1 and to focus our energies on two new versions of the product.</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:372055</guid>
      <link>https://community.devexpress.com/Blogs/testcafe/archive/2014/07/10/testcafe-update-v14-1-2.aspx</link>
      <category domain="https://community.devexpress.com/Tags/TestCafe">TestCafe</category>
      <category domain="https://community.devexpress.com/Tags/testing+tools">testing tools</category>
      <title>TestCafe Update (v14.1.2)</title>
      <description>&lt;p&gt;We have just released TestCafe v14.1.2 - a new version of our functional testing framework for web applications. There have been several changes to the product and I’d like to show off some of the more important new features and improvements.&lt;/p&gt;  &lt;p&gt;(Not familiar with TestCafe yet? &lt;a href="https://community.devexpress.com/blogs/ctodx/archive/2013/08/15/testcaf-233-webinar-and-quick-faq.aspx"&gt;Read this FAQ&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;br&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Extended&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Reporter/CI API &lt;/strong&gt;– The most popular continuous integration (CI) system report formats - JUnit and NUnit - are now supported. &lt;/p&gt;  &lt;p&gt;&lt;br&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Test Parameterization &lt;/strong&gt;- TestCafe now provides a way to define data sets (test cases) and use them as inputs to run the same test with a different set of data each time. &lt;/p&gt;  &lt;p&gt;Here’s how to specify several test cases within the test code and run the test with each of the different parameters:&lt;/p&gt;  &lt;div id="codeSnippetWrapperWrapperDataDriven"&gt;   &lt;pre id="codeSnippetDataDriven" style="border-top-style:none;overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span style="color:#006080;"&gt;&amp;#39;@test&amp;#39;&lt;/span&gt;[&lt;span style="color:#006080;"&gt;&amp;#39;Data-driven testing&amp;#39;&lt;/span&gt;] = {&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;@testCases&amp;#39;&lt;/span&gt;: [&lt;br&gt;        { &lt;span style="color:#006080;"&gt;&amp;quot;@name&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Peter&amp;quot;&lt;/span&gt;, login: &lt;span style="color:#006080;"&gt;&amp;quot;Peter Parker&amp;quot;&lt;/span&gt;, password: &lt;span style="color:#006080;"&gt;&amp;quot;12345&amp;quot;&lt;/span&gt;, group: &lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt; },&lt;br&gt;        { &lt;span style="color:#006080;"&gt;&amp;quot;@name&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;John&amp;quot;&lt;/span&gt;, login: &lt;span style="color:#006080;"&gt;&amp;quot;John Smith&amp;quot;&lt;/span&gt;, password: &lt;span style="color:#006080;"&gt;&amp;quot;test&amp;quot;&lt;/span&gt;, group: &lt;span style="color:#006080;"&gt;&amp;quot;user&amp;quot;&lt;/span&gt; },&lt;br&gt;        { &lt;span style="color:#006080;"&gt;&amp;quot;@name&amp;quot;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;quot;Olivia&amp;quot;&lt;/span&gt;, login: &lt;span style="color:#006080;"&gt;&amp;quot;Olivia Taylor&amp;quot;&lt;/span&gt;, password: &lt;span style="color:#006080;"&gt;&amp;quot;qwerty&amp;quot;&lt;/span&gt;, group: &lt;span style="color:#006080;"&gt;&amp;quot;moderator&amp;quot;&lt;/span&gt; }&lt;br&gt;    ],&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Type in input login&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; input = $(&lt;span style="color:#006080;"&gt;&amp;#39;#login_input&amp;#39;&lt;/span&gt;);&lt;br&gt;        act.type(input, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.login);&lt;br&gt;    },&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Type in input password&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; input = $(&lt;span style="color:#006080;"&gt;&amp;#39;#password_input&amp;#39;&lt;/span&gt;);&lt;br&gt;        act.type(input, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.password);&lt;br&gt;    },&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Click submit button&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; submitButton = $(&lt;span style="color:#006080;"&gt;&amp;#39;#submit_button&amp;#39;&lt;/span&gt;);&lt;br&gt;        act.click(submitButton);&lt;br&gt;    },&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Check Result&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; header = $(&lt;span style="color:#006080;"&gt;&amp;#39;#group_header&amp;#39;&lt;/span&gt;);&lt;br&gt;        eq(header, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.group);&lt;br&gt;    }&lt;br&gt;}; &lt;br&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&lt;p&gt;&#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="https://community.devexpress.com/blogs/testcafe/22_4C4D436E.png"&gt;&lt;img title="22" style="border-width:0px;height:350px;width:815px;padding-top:0px;padding-left:0px;margin:0px;display:inline;padding-right:0px;background-image:none;" border="0" alt="Parameterization" src="https://community.devexpress.com/blogs/testcafe/2.png" width="244" height="107"&gt;&lt;/a&gt;&amp;nbsp; &lt;br&gt;&#xD;
&#xD;
&lt;/p&gt;&lt;p&gt;If there are many test cases, you can save them to a separate JSON file. This is also useful if you are going to share these data sets with other tests and fixtures.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;Mixins &lt;/strong&gt;–&lt;strong&gt; &lt;/strong&gt;We’ve also added support for mixins that represent reusable test code snippets.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;This example shows how to use a mixin to log in to an account before viewing or editing a profile. The &amp;quot;Authentication” mixin contains three steps: enter login, enter password, and click the &amp;quot;Submit&amp;quot; button. When you need to log in to an account, just call the &amp;quot;Authentication” mixin in the &amp;quot;Log In&amp;quot; step. This will allow you to re-use code without duplicating it:&lt;/p&gt;&#xD;
&#xD;
&lt;div id="codeSnippetWrapperMixin"&gt;&#xD;
  &lt;pre id="codeSnippetMixin" style="border-top-style:none;overflow:visible;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;width:100%;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;border-left-style:none;line-height:12pt;padding-right:0px;background-color:#f4f4f4;"&gt;&lt;span style="color:#006080;"&gt;&amp;#39;@mixin&amp;#39;&lt;/span&gt;[&lt;span style="color:#006080;"&gt;&amp;#39;Authentication&amp;#39;&lt;/span&gt;] = {&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Type in input login&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; input = $(&lt;span style="color:#006080;"&gt;&amp;#39;#login_input&amp;#39;&lt;/span&gt;);&lt;br&gt;        act.type(input, &lt;span style="color:#006080;"&gt;&amp;#39;Peter Parker&amp;#39;&lt;/span&gt;);&lt;br&gt;    },&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Type in input password&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; input = $(&lt;span style="color:#006080;"&gt;&amp;#39;#password_input&amp;#39;&lt;/span&gt;);&lt;br&gt;        act.type(input, &lt;span style="color:#006080;"&gt;&amp;#39;12345&amp;#39;&lt;/span&gt;);&lt;br&gt;    },&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Click submit button&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; submitButton = $(&lt;span style="color:#006080;"&gt;&amp;#39;#submit_button&amp;#39;&lt;/span&gt;);&lt;br&gt;        act.click(submitButton);&lt;br&gt;    }&lt;br&gt;};&lt;br&gt;&lt;br&gt;&lt;span style="color:#006080;"&gt;&amp;#39;@test&amp;#39;&lt;/span&gt;[&lt;span style="color:#006080;"&gt;&amp;#39;View profile&amp;#39;&lt;/span&gt;] = {&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Log In&amp;#39;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;#39;@mixin Authentication&amp;#39;&lt;/span&gt;,&lt;br&gt;&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Click link &amp;quot;My Profile&amp;quot;&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; link = $(&lt;span style="color:#006080;"&gt;&amp;#39;:containsExcludeChildren(My Profile)&amp;#39;&lt;/span&gt;);&lt;br&gt;        act.click(link);&lt;br&gt;    }&lt;br&gt;};&lt;br&gt;&lt;br&gt;&lt;span style="color:#006080;"&gt;&amp;#39;@test&amp;#39;&lt;/span&gt;[&lt;span style="color:#006080;"&gt;&amp;#39;Edit profile&amp;#39;&lt;/span&gt;] = {&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Log In&amp;#39;&lt;/span&gt;: &lt;span style="color:#006080;"&gt;&amp;#39;@mixin Authentication&amp;#39;&lt;/span&gt;,&lt;br&gt;&lt;br&gt;    &lt;span style="color:#006080;"&gt;&amp;#39;Click link &amp;quot;Edit Profile&amp;quot;&amp;#39;&lt;/span&gt;: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; link = $(&lt;span style="color:#006080;"&gt;&amp;#39;:containsExcludeChildren(Edit Profile)&amp;#39;&lt;/span&gt;);&lt;br&gt;        act.click(link);&lt;br&gt;    }&lt;br&gt;}; &lt;br&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;br&gt;&lt;/div&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;Improved Architecture &lt;/strong&gt;- The TestCafe Core engine has been significantly overhauled to provide greater reliability and performance and to close many outstanding issues.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;Test Run Metadata &lt;/strong&gt;- A new property (this.__workerName) has been introduced to the TestCafe API. This allows your test code to retrieve the name of the current worker.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;New Installer with GUI Runner for Mac OS Users &lt;/strong&gt;- TestCafe for Mac OS now ships with a simplified installer that initializes the testing environment as well as installing the product. There is no need any more to unpack the TestCafe distribution and configure it using the command line. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="https://community.devexpress.com/blogs/testcafe/01-mac-installer.png"&gt; &#xD;
&#xD;
  &lt;br&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;When you launch TestCafé on the Mac, it will display a specific icon within the menu bar. Click this icon to access a context menu. This context menu allows you to open the TestCafe Control Panel, to copy TestCafe&amp;#39;s URL to the clipboard, or to exit TestCafe.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img alt="" src="https://community.devexpress.com/blogs/testcafe/Mac-icon.png"&gt; &#xD;
&#xD;
  &lt;br&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;You can also run TestCafe from the application launcher by clicking the TestCafe icon listed in Launchpad.&lt;/p&gt;&#xD;
&#xD;
&lt;div style="border-top:#ebebeb 1px solid;border-right:#ebebeb 1px solid;border-bottom:#ebebeb 1px solid;padding-left:10px;border-left:#ebebeb 1px solid;background-color:#f2f2f2;"&gt;&#xD;
  &lt;p&gt;&lt;strong&gt;Get started today&lt;/strong&gt; &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;TestCafe is easy to get started with. Just download, install, and you&amp;#39;re ready to record your first test. &lt;/p&gt;&#xD;
&#xD;
  &lt;p&gt;You can download the new version of TestCafe from our site (&lt;a href="http://testcafe.devexpress.com/Download"&gt;http://testcafe.devexpress.com/Download&lt;/a&gt;). We look forward to your feedback as you use TestCafe v14.1.2. &lt;/p&gt;&#xD;
&lt;/div&gt;</description>
      <pubDate>Thu, 10 Jul 2014 05:32:00 Z</pubDate>
      <dc:creator>The DevExpress Team</dc:creator>
    </item>
  </channel>
</rss>