<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>QF-Test - videos</title><link href="https://www.qftest.com/en/" rel="alternate"/><link href="https://www.qftest.com/support/videos.atom.xml" rel="self"/><id>https://www.qftest.com/en/</id><updated>2026-03-02T00:00:00+01:00</updated><entry><title>When tests become intelligent: AI-driven checks with QF-Test</title><link href="https://www.qftest.com/en/support/videos/special-webinar-ai-checks.html" rel="alternate"/><published>2026-03-02T00:00:00+01:00</published><updated>2026-03-02T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2026-03-02:/en/support/videos/special-webinar-ai-checks.html</id><summary type="html">&lt;p&gt;In this special webinar, we&amp;#8217;ll show you how to get the most out of the new AI integrations in QF-Test. With QF-Test 10, you can use AI to test non-deterministic UIs, validate UI components based on semantic criteria, generate test data, and much more.&lt;/p&gt;</summary><content type="html">&lt;p&gt;In this special webinar, we&amp;#8217;ll show you how to get the most out of the new AI integrations in QF-Test. With QF-Test 10, you can use AI to test non-deterministic UIs, validate UI components based on semantic criteria, generate test data, and much more.&lt;/p&gt;
&lt;h2&gt;Materials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/videos/resources/2026-03-special-webinar-ai-en.pdf"&gt;Presentation (PDF)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/qfs/qftest-cmcp"&gt;QF-Test Connected MCP Server (Public Preview)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/videos/resources/2026-03-special-webinar-ai-browser-interaction-demo.qft"&gt;AI browser interaction demo (.qft)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/videos/resources/2026-03-special-webinar-ai-datadriver-demo.qft"&gt;AI data driver demo (.qft)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Contents&lt;/h2&gt;
&lt;h3&gt;Artificial Intelligence&lt;/h3&gt;
&lt;p&gt;A Large Language Model (LLM) auto-completes text prompts according to previously trained statistical connections.&lt;/p&gt;
&lt;h3&gt;Our Mission&lt;/h3&gt;
&lt;p&gt;QF-Test provides AI integrations that increase the productivity of test automation engineers without calling the quality of the results into
question.&lt;/p&gt;
&lt;p&gt;QF-Test builds on the expertise of QA professionals without replacing them.&lt;/p&gt;
&lt;p&gt;AI in QF-Test will always remain optional.&lt;/p&gt;
&lt;h3&gt;„Bring Your Own Model“&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;More flexibility&lt;/li&gt;
&lt;li&gt;No extra costs&lt;/li&gt;
&lt;li&gt;Better data privacy&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;AI Configuration&lt;/h3&gt;
&lt;p&gt;Your key to all AI functionality in QF-Test&lt;/p&gt;
&lt;h3&gt;Check text with AI&lt;/h3&gt;
&lt;p&gt;Semantic text checks in the UI of the application under test.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Testing a chat bot integration&lt;/li&gt;
&lt;li&gt;Checking the semantic content of text&lt;/li&gt;
&lt;li&gt;Checking the language of text&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;ai.ask and the AI Scripting Module&lt;/h3&gt;
&lt;p&gt;Send LLM requests in any scripting context.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Test data generation&lt;/li&gt;
&lt;li&gt;Advanced test run integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Test generation with QF-Test – Sneak Preview&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Level 1: Test cases and test steps are generated from an existing test definition.&lt;/li&gt;
&lt;li&gt;Level 2: QF-Test agent executes pre-planned test steps; the interactions are recoded. A robust, repeatable test is created.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;QF-Test MCP Server&lt;/h3&gt;
&lt;p&gt;MCP (Model Context Protocol): Integrating external services into an LLM tool&lt;/p&gt;
&lt;p&gt;Future versions of QF-Test Pro will include an integrated MCP server. This will enable agent-based workflows with QF-Test.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages over other automation MCPs:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Controlling Windows, iOS, Android, Java, and web applications&lt;/li&gt;
&lt;li&gt;Strong component recognition by combining QF-Test intelligence and artificial intelligence&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The experimental QF-Test Connected MCP Server (Public Preview) allows integrating QF-Test into agentic workflows today.&lt;/p&gt;
&lt;h3&gt;AI and Test Result Evaluation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Explain test failures and suggest corrective actions&lt;/li&gt;
&lt;li&gt;Analyze “component not found” errors&lt;/li&gt;
&lt;li&gt;Analyze text comparison diffs&lt;/li&gt;
&lt;li&gt;Summarize test reports&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your ideas are welcome!&lt;/p&gt;
&lt;h3&gt;What‘s the Price?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Basic AI features such as AI checks or test suite generation are and will remain included in the standard price of every QF-Test license.&lt;/li&gt;
&lt;li&gt;“Bring your own model”: Costs for using AI itself may arise depending on the chosen model and provider.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the future:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Advanced features such as integrating QF-Test into agent-based workflows via MCP will require a QF-Test Pro license.&lt;/li&gt;
&lt;li&gt;If there is sufficient interest: Secure, privacy-compliant access to AI models directly via QF-Test.&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="specialwebinars"/><category term="ai"/></entry><entry><title>Welcome to QF-Test</title><link href="https://www.qftest.com/en/support/videos/welcome-to-qftest.html" rel="alternate"/><published>2025-12-12T00:00:00+01:00</published><updated>2025-12-12T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2025-12-12:/en/support/videos/welcome-to-qftest.html</id><summary type="html">&lt;p&gt;Meet QF-Test &amp;ndash; our all-in-one platform for automated UI testing.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Meet QF-Test &amp;ndash; our all-in-one platform for automated UI testing.&lt;/p&gt;
&lt;p&gt;Whether you’re building &lt;a href="/en/product/qf-test/web-testing.html"&gt;web apps&lt;/a&gt;, &lt;a href="/en/product/qf-test/testing-mobile-apps.html"&gt;mobile experiences&lt;/a&gt; or &lt;a href="/en/product/qf-test/java-testing.html"&gt;desktop applications&lt;/a&gt;, QF-Test helps you deliver quality, faster.&lt;/p&gt;
&lt;p&gt;QF-Test is built for all kinds of users, from &lt;a href="/en/company/references/testimonials/benefits-for-testers.html"&gt;manual testers and business analysts&lt;/a&gt; to &lt;a href="/en/company/references/testimonials/benefits-for-developers.html"&gt;automation engineers and software developers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can create complete and complex automated tests &lt;a href="/en/support/videos/quick-run-through-qf-test.html"&gt;without ever writing code&lt;/a&gt; &amp;ndash; but of course you always have the option to augment your tests with our &lt;a href="/en/support/videos/scripting-in-qf-test-basics.html"&gt;scripting engine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you&amp;#8217;ve created your first tests with QF-Test, you can effortlessly spot regressions in your application &amp;ndash; less repetitive work, more confidence in every release.&lt;/p&gt;
&lt;p&gt;While QF-Test started as a way to test Java UIs, it has continuously evolved to support &lt;a href="/en/product/qf-test.html"&gt;many other UI technologies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Whether on Windows, Linux or macOS, QF-Test reliably supports you in automating your Tests.&lt;/p&gt;
&lt;p&gt;Now you can unlock the full potential of QF-Test and create your own automated tests with ease and precision.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;If you are interested in testing your own application, contact us and try QF-Test for free at &lt;a href="/"&gt;qftest.com&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="startervideos"/></entry><entry><title>QF-Test 10 – WebAPI, AI and more</title><link href="https://www.qftest.com/en/support/videos/qftest-version-10-highlights.html" rel="alternate"/><published>2025-12-09T00:00:00+01:00</published><updated>2025-12-09T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2025-12-09:/en/support/videos/qftest-version-10-highlights.html</id><summary type="html">&lt;p&gt;Hi there! Today I’m going to show you how you can test web APIs with QF-Test 10. I’ll also walk you through the new AI features in QF-Test, and we have some exciting updates on accessibility testing for web applications in QF-Test 10.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Hi there! Today I’m going to show you how you can test web APIs with QF-Test 10. I’ll also walk you through the new AI features in QF-Test, and we have some exciting updates on accessibility testing for web applications in QF-Test 10.&lt;/p&gt;
&lt;p&gt;Finally, we’ll take a look at all the other great new features that come with version 10.&lt;/p&gt;
&lt;p&gt;QF-Test is the tool for professional UI test automation.&lt;/p&gt;
&lt;h3&gt;WebAPI&lt;/h3&gt;
&lt;p&gt;Testing web interfaces has long been possible in QF-Test, but only in a limited way. With QF-Test 10 and its new WebAPI testing capabilities, this test type has become both much more comfortable and significantly more powerful.&lt;/p&gt;
&lt;p&gt;You can now send GET, POST, and other HTTP requests directly via the new &amp;#8220;Web Request&amp;#8221; node. You get full control over every detail of your requests, with freely configurable headers and bodies.&lt;/p&gt;
&lt;p&gt;Authentication data can be neatly managed with the new &amp;#8220;Request Authentication&amp;#8221; node.&lt;/p&gt;
&lt;p&gt;Cookies and proxy settings can be configured via the new &amp;#8220;Request Options&amp;#8221; node.&lt;/p&gt;
&lt;p&gt;You can validate API responses by checking the expected status code or use QF-Test’s powerful scripting tools to parse and verify JSON, XML, or any other kind of server response.&lt;/p&gt;
&lt;p&gt;For maximum flexibility in designing your tests, QF-Test also provides &amp;#8220;Pre-Request Handler&amp;#8221; and &amp;#8220;Post-Request Handler&amp;#8221; nodes, enabling advanced configuration and post-processing of requests and responses.&lt;/p&gt;
&lt;p&gt;A comprehensive scripting API lets you model even complex scenarios in a clean and maintainable way.&lt;/p&gt;
&lt;p&gt;Unlike other API tools, QF-Test not only offers extensive tools for sending and receiving web requests. You also get access to all of QF-Test’s proven automation and reporting features within WebAPI tests, and QF-Test is excellent for hybrid testing that combines web UI and API interfaces.&lt;/p&gt;
&lt;h3&gt;AI Integration and the AI Text Check&lt;/h3&gt;
&lt;p&gt;Version 10 also brings the world of “Artificial Intelligence”- or more precisely, LLMs &amp;ndash; into QF-Test. In the new &amp;#8220;Check Text with AI&amp;#8221; node, you can let an LLM dynamically decide whether a given text is correct or contains errors.&lt;/p&gt;
&lt;p&gt;In addition, the new scripting API &amp;#8220;ai.ask&amp;#8221; lets you communicate with LLMs at any point during test execution to accomplish tasks that were previously cumbersome or impossible.&lt;/p&gt;
&lt;p&gt;QF-Test supports integrating various externally hosted LLMs so you can get started right away with your provider of choice. And through our powerful scripting interface, you can connect any LLM provider or API to your tests.&lt;/p&gt;
&lt;p&gt;This makes QF-Test 10 ideal for testing chatbots and other UI components with non-deterministic output. It also allows you to check texts for semantic criteria for which no algorithm exists &amp;ndash; but for which a good prompt does.&lt;/p&gt;
&lt;h3&gt;Updated Accessibility (A11y) Checks for Websites&lt;/h3&gt;
&lt;p&gt;Since QF-Test 9, you’ve been able to check websites for their accessibility. QF-Test 10 now includes additional accessibility tests.&lt;/p&gt;
&lt;p&gt;For example, you can now verify the visibility of the keyboard focus on elements.&lt;/p&gt;
&lt;p&gt;You can also ensure that your pages use the HTML &amp;#8220;lang&amp;#8221; attribute correctly.&lt;/p&gt;
&lt;p&gt;All of this is configured through our clean, new &amp;#8220;Check Accessibility&amp;#8221; node and can be tailored exactly to your needs.&lt;/p&gt;
&lt;p&gt;Accessibility tests created in QF-Test 9 continue to work normally, but if you’d like to take advantage of the new features, you can easily convert your old procedure calls to the new node using the context menu function &amp;#8220;Transform node into&amp;#8221;.&lt;/p&gt;
&lt;p&gt;The heart of the node is this text input area, where tests are defined interactively in a clean YAML syntax. Multiple tests can be enabled and configured at once.&lt;/p&gt;
&lt;p&gt;You can also flexibly exclude known issues or potential false positives from the test report.&lt;/p&gt;
&lt;h3&gt;New Nodes for Image Handling&lt;/h3&gt;
&lt;p&gt;Image comparisons have never been the ideal mechanism for UI test automation—but they can certainly be useful. Until now, QF-Test could only generate, process, and compare images through scripting.&lt;/p&gt;
&lt;p&gt;With QF-Test 10, image handling becomes dramatically simpler. The new &amp;#8220;Set Image&amp;#8221; node lets you assign an existing image directly to a QF-Test variable. Likewise, &amp;#8220;Fetch Image&amp;#8221; allows you to store the image of a specific UI component in a variable.&lt;/p&gt;
&lt;p&gt;We’ve also enhanced the familiar &amp;#8220;Check Image&amp;#8221; node and many procedures in the standard library so that they now accept images from variables. This gives you more flexibility when designing tests, making it much easier to reuse or log images.&lt;/p&gt;
&lt;h3&gt;Product Editions&lt;/h3&gt;
&lt;p&gt;Starting with version 10, QF-Test comes in four editions: Pro, Web, Desktop, and Mobile.&lt;/p&gt;
&lt;p&gt;QF-Test Pro is the full version with the complete feature set.&lt;/p&gt;
&lt;p&gt;If you want to focus on a specific UI technology, you can now use the Web, Desktop, or Mobile editions. These contain only the features needed for the respective application types, making them streamlined and easier to navigate. All new editions remain fully compatible with existing licenses.&lt;/p&gt;
&lt;h3&gt;Modeless Editing&lt;/h3&gt;
&lt;p&gt;QF-Test itself becomes easier to use in version 10. We’ve simplified our node editing concept so all invalid fields in your testsuite are now clearly marked, helping you immediately detect and fix issues that might break a test run. And you no longer need to endlessly click “OK” before continuing to edit your test suite.&lt;/p&gt;
&lt;h3&gt;New Debugger Dialog on Errors&lt;/h3&gt;
&lt;p&gt;When using QF-Test’s integrated debugger, you now get more detailed feedback when the test run stops due to an error or exception. In this new dialog, you can conveniently choose how to proceed with a single click.&lt;/p&gt;
&lt;h3&gt;Improved Manual&lt;/h3&gt;
&lt;p&gt;We’ve further optimized our HTML manual so it’s easier than ever to navigate the wealth of available information. The secondary sidebar lets you jump directly to specific sections of a page without losing context.&lt;/p&gt;
&lt;p&gt;You’ll also find the helpful Copy to Clipboard buttons for code snippets not only here but also in our HTML report and directly inside QF-Test.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;As always, you can learn more about everything that&amp;#8217;s new in QF-Test 10 from the detailed release notes on our website, qftest.com. There, you will also find a download link so you can get started with it right away.&lt;/p&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>Scripting in QF-Test (basics)</title><link href="https://www.qftest.com/en/support/videos/scripting-in-qf-test-basics.html" rel="alternate"/><published>2025-11-14T00:00:00+01:00</published><updated>2025-11-14T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2025-11-14:/en/support/videos/scripting-in-qf-test-basics.html</id><summary type="html">&lt;p&gt;Here you can find the basics on scripting in QF-Test and lern about the SUT script and Server script.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Here you will learn about the basics of scripting in QF-Test and get a demonstration for using the SUT script and Server script nodes.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/user_scripting.html#usec_scripting"&gt;Further information: Scripting in QF-Test (Manual)&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Welcome to this video about the scripting capabilities of QF-Test.&lt;/p&gt;
&lt;p&gt;Today I will give you an overview of how to use scripts in QF-Test.&lt;/p&gt;
&lt;p&gt;In addition to event nodes such as mouse clicks or checks and control structures such as loops or if nodes, QF-Test also offers the possibility to integrate arbitrary code snippets implemented in various scripting languages into the test run. Such scripts can greatly extend the functionality of QF-Test.&lt;/p&gt;
&lt;h3&gt;Script Types&lt;/h3&gt;
&lt;p&gt;To insert such a script, I select insert control structures from the menu and then &lt;strong&gt;Server&lt;/strong&gt; or &lt;strong&gt;SUT script&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unlike a Server script, an SUT script can interact directly with the system under test and therefore also determine the properties of graphical objects at runtime.&lt;/li&gt;
&lt;li&gt;A Server script on the other hand should be used for actions that are independent of the graphical user interface such as database or file operations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am now adding an SUT script to my test suite. There are several scripting languages available for implementation. In the current version of QF-Test, there are &lt;strong&gt;Jython, Groovy, and JavaScript&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;SUT script example&lt;/h3&gt;
&lt;p&gt;A simple example of an SUT script is the count of rows in a table and then to write this row count to the QF-Test run log. We will now implement the script in the &lt;strong&gt;Groovy scripting language&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kt"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getComponent&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;#VehicleTable&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kt"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getElementsByClassName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;TableRow&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kt"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rowCount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;logMessage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Table has &amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rowCount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot; rows.&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;In line one of the script, the table is retrieved from the test application and stored in the variable &lt;code&gt;table&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;In line two, the table rows are retrieved into a list &lt;/li&gt;
&lt;li&gt;and stored in line three in the variable &lt;code&gt;rowCount&lt;/code&gt; with the length of this list.&lt;/li&gt;
&lt;li&gt;Line four finally writes this row count to the QF-Test run log.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Pseudo DOM API and accessing native Java component methods&lt;/h3&gt;
&lt;p&gt;To read the properties of web components, QF-Test offers its own DOM API which is documented in the manual and provides simple methods for accessing DOM properties and HTML elements.&lt;/p&gt;
&lt;p&gt;This approach works for every supported technology but the method names may be different because they are technology-dependent. You will find information on this in the respective documentation. For applications with Java Swing, methods can be assessed directly.&lt;/p&gt;
&lt;p&gt;When I now run the script, the number of table rows is written to the QF-Test run log, which we can see accordingly.&lt;/p&gt;
&lt;h3&gt;The QF-Test run context&lt;/h3&gt;
&lt;p&gt;Let&amp;#8217;s go back to the script. You can see in line one and in line four that a variable &lt;code&gt;rc&lt;/code&gt; is used there. This stands for the &lt;strong&gt;QF-Test run context&lt;/strong&gt; and offers you options for interacting with QF-Test methods and scripts. In our case, the aim is to identify a graphical component, our table, and write a message to the QF-Test run log.&lt;/p&gt;
&lt;p&gt;The run context also allows you to write your custom error messages to the run log or execute entire checks.&lt;/p&gt;
&lt;p&gt;The script editor also offers auto-completion for &lt;code&gt;rc&lt;/code&gt;. So you type &lt;code&gt;rc.&lt;/code&gt;, press &lt;kbd&gt;Control&lt;/kbd&gt;+&lt;kbd&gt;Space&lt;/kbd&gt;, and now you will see all supported methods and the corresponding documentation.&lt;/p&gt;
&lt;h3&gt;An example server script&lt;/h3&gt;
&lt;p&gt;A typical use case for a server script is to write a message or variable content into a file. You can see such a server script here now in the &lt;strong&gt;Jython scripting language&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getStr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;nameOfVehicle&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;fh&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;testfile.txt&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;fh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Vehicle is : &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;fh&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;In line one, the QF-Test run context is assessed again and the content of a variable is determined which was previously set somewhere in the test run.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Outlook&lt;/h2&gt;
&lt;p&gt;Scripts and QF-Test allow you to extend your tests with any logic and simplify some complex tasks. However, scripts and QF-Test can do much more. Scripts allow you to develop so-called &lt;strong&gt;Resolvers&lt;/strong&gt; that optimize QF-Test&amp;#8217;s component recognition for your application. Alternatively, you can use a &lt;strong&gt;TestRunListener&lt;/strong&gt; to add additional logic to the test execution. In addition, QF-Test offers many other interfaces which you can learn more about in our detailed manual.&lt;/p&gt;
&lt;p&gt;You have now learned the most important basics about scripting support in QF-Test. In the &lt;strong&gt;QF-Test Help menu&lt;/strong&gt;, you will find further links to three available scripting languages and their documentation and tutorials. The QF-Test manual contains several chapters explaining scripts and their possible uses with many examples. Take advantage of this powerful feature to further advance your test automation.&lt;/p&gt;</content><category term="videos"/><category term="featurevideos"/></entry><entry><title>Dependencies in QF-Test (basics)</title><link href="https://www.qftest.com/en/support/videos/dependencies-in-qf-test-basics.html" rel="alternate"/><published>2025-11-03T00:00:00+01:00</published><updated>2025-11-03T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2025-11-03:/en/support/videos/dependencies-in-qf-test-basics.html</id><summary type="html">&lt;p&gt;See here why the so called dependencies are useful for your daily work with QF-Test and you&amp;#8217;ll learn how to implement them.&lt;/p&gt;</summary><content type="html">&lt;p&gt;See here why the so called dependencies are useful for your daily work with QF-Test and you&amp;#8217;ll learn how to implement them.&lt;/p&gt;
&lt;h2&gt;Materials for this video&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/videos/resources/1_Dependencies.qft"&gt;1_Dependencies.qft&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt;&lt;a href="/videos/resources/1_Dependencies_done.qft"&gt;1_Dependencies_done.qft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.qftest.com/doc/manual/en/dependencies.html"&gt;More information in the manual&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Abridged Transcript&lt;/h2&gt;
&lt;p&gt;This video covers the basics of QF-Test dependencies. It explains the purpose and intention of dependencies and shows how to implement a simple dependency.  &lt;/p&gt;
&lt;p&gt;This video does not cover advanced topics such as nested dependencies, characteristic variables, or error handling. Those parts are discussed in other videos.&lt;/p&gt;
&lt;p&gt;For the current video, I work in a specially provided test suite, which you can also download from the QF-Test website.  &lt;/p&gt;
&lt;p&gt;The test suite uses the &lt;strong&gt;CarConfigurator&lt;/strong&gt; provided by QF-Test in the web version as the &amp;#8220;system under test&amp;#8221; (SUT).  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you would like to work along with me during the video, you will find the suite in the commentary section.  &lt;/li&gt;
&lt;li&gt;If you would prefer to see the result of this tutorial straight away, you will also find that suite there.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Opening the Test Suite&lt;/h3&gt;
&lt;p&gt;Now I have opened the dependency test suite I just mentioned. Let&amp;#8217;s take a closer look at its implementation.  &lt;/p&gt;
&lt;p&gt;Here you can see a test suite implemented in a simple way:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This is the &lt;strong&gt;Setup node&lt;/strong&gt; that starts our &amp;#8220;system under test&amp;#8221; (the CarConfigurator)  &lt;/li&gt;
&lt;li&gt;Here are some &lt;strong&gt;test cases&lt;/strong&gt;  &lt;/li&gt;
&lt;li&gt;Finally, a &lt;strong&gt;Cleanup node&lt;/strong&gt; will close our SUT again  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this example, a single test case runs as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, the application is reset  &lt;/li&gt;
&lt;li&gt;Then a vehicle is selected  &lt;/li&gt;
&lt;li&gt;Then a special model is selected  &lt;/li&gt;
&lt;li&gt;Then further accessories are selected  &lt;/li&gt;
&lt;li&gt;A discount is set  &lt;/li&gt;
&lt;li&gt;Finally, the calculated final price is checked  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The setup and Cleanup sequences use &lt;strong&gt;procedure calls&lt;/strong&gt;. By double-clicking on a procedure call, I also get to the Procedure node of QF-Test where I can view the existing procedures of this test suite.  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;SUT package&lt;/strong&gt; contains the procedures for starting and stopping our CarConfigurator  &lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;CarConfig package&lt;/strong&gt; contains procedures needed for the test cases (these are not of interest for the time being)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Running Test Cases&lt;/h3&gt;
&lt;p&gt;Now that you are more or less familiar with our test suite, I will run test cases from it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I select the test set and press &amp;#8220;Start test run&amp;#8221;  &lt;/li&gt;
&lt;li&gt;QF-Test now works its way through this test suite and executes the test cases with the different discount levels  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We wait until the test run is complete.&lt;/p&gt;
&lt;p&gt;The test case has run through and we can take a look at the QF-Test &lt;strong&gt;run log&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the details of the run log, we can see that first the &lt;strong&gt;setup&lt;/strong&gt; was run to start the SUT  &lt;/li&gt;
&lt;li&gt;Then the first &lt;strong&gt;test case&lt;/strong&gt; was executed  &lt;/li&gt;
&lt;li&gt;Then the application was completely closed with the &lt;strong&gt;Cleanup&lt;/strong&gt;  &lt;/li&gt;
&lt;li&gt;Then the application was restarted and the next test case was executed  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a complete restart on my system, we need approximately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;28 seconds for the &lt;strong&gt;setup&lt;/strong&gt;  &lt;/li&gt;
&lt;li&gt;Almost 1 second for the &lt;strong&gt;Cleanup work&lt;/strong&gt;  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The whole thing adds up and accounts for a large part of the total test runtime, which we can also see in the &lt;strong&gt;performance view&lt;/strong&gt;.  &lt;/p&gt;
&lt;p&gt;Particularly with larger applications, constantly stopping and starting the application would be inefficient and does not represent real user behavior.  &lt;/p&gt;
&lt;p&gt;In our case, this tidying up is actually unnecessary during a normal run of a test case. The SUT has already been started and changes are reset in the test cases anyway.  &lt;/p&gt;
&lt;p&gt;However, I cannot simply remove the &lt;strong&gt;Cleanup node&lt;/strong&gt;, otherwise the application would still run on the test machine forever after a test run.  &lt;/p&gt;
&lt;p&gt;In addition, an error in the SUT in an unattended test run could compromise the entire test run instead of just a single test case.  &lt;/p&gt;
&lt;p&gt;This shows the first disadvantage of the current implementation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Cleanup node&lt;/strong&gt; is executed at the end of every test case  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Another disadvantage is that it is not easily possible to start just a single test case.  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For example, if a test case had thrown an exception during the last test run (due to an implementation error or a defect in the SUT), I cannot simply execute this test case again  &lt;/li&gt;
&lt;li&gt;I first have to run the &lt;strong&gt;setup&lt;/strong&gt; to start the application, or create the preconditions manually, which ultimately means executing the &lt;strong&gt;setup&lt;/strong&gt; again  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is still simple in this example, but as soon as test cases become larger and more complex, the entire setup can become tedious.  &lt;/p&gt;
&lt;p&gt;We can see that we won&amp;#8217;t get very far with these means.  &lt;/p&gt;
&lt;h3&gt;Introducing Dependencies&lt;/h3&gt;
&lt;p&gt;QF-Test dependencies now enter the stage.  &lt;/p&gt;
&lt;p&gt;Dependencies ensure that the &lt;strong&gt;preconditions for a test case are fulfilled&lt;/strong&gt;, if implemented correctly.  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Individual test cases can be executed without manually creating preconditions beforehand  &lt;/li&gt;
&lt;li&gt;This works even if a completely different test case was previously executed  &lt;/li&gt;
&lt;li&gt;Dependencies also regulate the Cleanup process and do not carry out unnecessary Cleanup work  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Summary:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dependencies&lt;/strong&gt; ensure a certain state  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Setup and Cleanup nodes&lt;/strong&gt; only execute a certain sequence  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Creating a Simple Dependency&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I use the test set from earlier and copy it directly below  &lt;/li&gt;
&lt;li&gt;Rename the test case, for example, &amp;#8220;Tests with dependencies&amp;#8221;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Insert a &lt;strong&gt;Dependency node&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menu: &lt;code&gt;Insert → Dependencies → Dependency&lt;/code&gt;  &lt;/li&gt;
&lt;li&gt;Right-click: &lt;code&gt;Insert node → Dependency&lt;/code&gt;  &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Name the dependency &amp;#8220;SUT started&amp;#8221;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Add a &lt;strong&gt;Setup node&lt;/strong&gt; and &lt;strong&gt;Cleanup node&lt;/strong&gt; by dragging the existing nodes into the dependency  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why define the dependency at the test set level?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each node inherits the dependencies of its parent node by default  &lt;/li&gt;
&lt;li&gt;In this case, each test case inherits the dependencies of the test set  &lt;/li&gt;
&lt;li&gt;Defining it at test set level is sufficient as it automatically applies to all contained test cases  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Testing the Dependency&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ensure no SUT is running.  &lt;/li&gt;
&lt;li&gt;Try to start a single test case in the old test set → QF-Test throws a &lt;strong&gt;ComponentNotFound&lt;/strong&gt; exception  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now try the new dependency:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Execute the first test case of the new test set  &lt;/li&gt;
&lt;li&gt;The test case is executed without any problems, even though the precondition was not fulfilled before the test case started  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What happened:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;QF-Test first looked at the &lt;strong&gt;Dependency&lt;/strong&gt; when the test case was started  &lt;/li&gt;
&lt;li&gt;The entry &lt;code&gt;"Required dependency"&lt;/code&gt; indicates that the test case requires &lt;code&gt;"SUT started"&lt;/code&gt;  &lt;/li&gt;
&lt;li&gt;QF-Test jumps to the dependency and executes the &lt;strong&gt;Setup node&lt;/strong&gt;  &lt;/li&gt;
&lt;li&gt;The SUT starts automatically  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Full Test Set Execution with Dependency&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Close the run log and all clients  &lt;/li&gt;
&lt;li&gt;Execute the entire test set  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Observations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Execution is much faster than the old test set  &lt;/li&gt;
&lt;li&gt;The application is not closed between individual test cases  &lt;/li&gt;
&lt;li&gt;From the run log, we see that no Cleanup node is executed between test cases  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Time savings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Around 30 seconds per test case from the second test case onward  &lt;/li&gt;
&lt;li&gt;Around 2 seconds on the first test case  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;How Dependencies Work&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Precondition setup sequences are ensured at the beginning of each test case  &lt;/li&gt;
&lt;li&gt;QF-Test maintains a &lt;strong&gt;list of currently valid dependencies&lt;/strong&gt; (&lt;code&gt;Stored dependencies&lt;/code&gt;)  &lt;/li&gt;
&lt;li&gt;At the beginning of the first test case, the list is empty  &lt;/li&gt;
&lt;li&gt;When the dependency is executed, QF-Test saves the dependency name in the list  &lt;/li&gt;
&lt;li&gt;Every new test case compares its required dependency with the stored dependencies  &lt;/li&gt;
&lt;li&gt;If they match, the Cleanup node is skipped  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setup nodes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Should start the SUT only if it is not already running  &lt;/li&gt;
&lt;li&gt;In the example, a &lt;strong&gt;Wait for client node&lt;/strong&gt; checks whether the CarConfigurator client is available  &lt;/li&gt;
&lt;li&gt;The result is stored in &lt;code&gt;IsSUTRunning&lt;/code&gt;  &lt;/li&gt;
&lt;li&gt;The subsequent &lt;strong&gt;If node&lt;/strong&gt; starts the SUT only if necessary  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Advanced Behavior&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Another test set demonstrates handling of different dependencies  &lt;/li&gt;
&lt;li&gt;Required dependencies are compared with stored dependencies  &lt;/li&gt;
&lt;li&gt;If a stored dependency is no longer needed, QF-Test executes the &lt;strong&gt;Cleanup&lt;/strong&gt;  &lt;/li&gt;
&lt;li&gt;This allows combining and executing test cases from multiple test sets intelligently  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Reusing Dependencies&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Dependencies can be copied between test sets, but changes would require updating each copy manually  &lt;/li&gt;
&lt;li&gt;QF-Test allows storing dependencies in the &lt;strong&gt;Procedures section&lt;/strong&gt;  &lt;/li&gt;
&lt;li&gt;New test sets or test cases can reference these stored dependencies  &lt;/li&gt;
&lt;li&gt;The &amp;#8220;Dependency reference&amp;#8221; node acts as a link to the existing dependency  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Dependencies simplify test case execution and precondition management  &lt;/li&gt;
&lt;li&gt;Setup nodes are executed at the start of each test case  &lt;/li&gt;
&lt;li&gt;Cleanup nodes are executed only when necessary  &lt;/li&gt;
&lt;li&gt;Using stored dependencies allows reuse across multiple test sets  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In a follow-up video, we will cover &lt;strong&gt;nested dependencies&lt;/strong&gt; and &lt;strong&gt;error and exception handling&lt;/strong&gt;.  &lt;/p&gt;
&lt;p&gt;Check your own QF-Test test suites to see if dependencies are already used — implementing them is definitely worth it!&lt;/p&gt;</content><category term="videos"/><category term="featurevideos"/></entry><entry><title>Going POSTal! Discover WebAPI Testing in QF-Test</title><link href="https://www.qftest.com/en/support/videos/webAPI-testing.html" rel="alternate"/><published>2025-10-20T00:00:00+02:00</published><updated>2025-10-20T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2025-10-20:/en/support/videos/webAPI-testing.html</id><summary type="html">&lt;p&gt;In this webinar, we will give a brief introduction to web accessibility and present the new accessibility testing features of QF-Test.&lt;/p&gt;</summary><content type="html">&lt;p&gt;With QF-Test 10, the testing of web interfaces has been fundamentally revised, with a focus on web APIs such as REST, SOAP and other web services. In this special webinar, we will introduce you to the new functions.&lt;/p&gt;
&lt;p&gt;Materials:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://services.qftest.com/en/download/webapi"&gt;QF-Test WebAPI Preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/qfs/webinars/-/tree/main/webapi"&gt;Demo suite and presentation slides&lt;/a&gt; (Requires QF-Test 10 or QF-Test WebAPI Preview)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;With the upcoming &lt;strong&gt;QF-Test version 10&lt;/strong&gt;, web application and web API testing have been fundamentally redesigned. A major focus of this release is on &lt;strong&gt;Web APIs&lt;/strong&gt; such as REST, SOAP, and other web-based services.&lt;/p&gt;
&lt;p&gt;Testing APIs differs significantly from traditional UI testing.
While QF-Test still supports visual test nodes, &lt;strong&gt;script nodes&lt;/strong&gt; are often needed to simulate realistic workflows.
Complex test logic can be wrapped in reusable &lt;strong&gt;procedures&lt;/strong&gt;, making it easy to maintain and scale even sophisticated tests.&lt;/p&gt;
&lt;p&gt;After the introduction, Thomas hands over to his colleague &lt;strong&gt;Plamen Vesselinov&lt;/strong&gt;, who presents the new features live in action.&lt;/p&gt;
&lt;h3&gt;Introduction to Web API Testing&lt;/h3&gt;
&lt;p&gt;Plamen begins by explaining the difference between &lt;strong&gt;UI testing&lt;/strong&gt; and &lt;strong&gt;API testing&lt;/strong&gt;.
Up to now, QF-Test has primarily been used to automate user interfaces — clicking buttons, entering text, and verifying visible changes.
In contrast, Web APIs communicate directly via the &lt;strong&gt;network&lt;/strong&gt;, exchanging data through &lt;strong&gt;HTTP requests&lt;/strong&gt;, most commonly in &lt;strong&gt;JSON format&lt;/strong&gt; (though XML and other formats are also supported).&lt;/p&gt;
&lt;p&gt;For example:
A client application can query a server for user information via an API by providing an ID. The server responds with the requested data. Using a &lt;strong&gt;PUT request&lt;/strong&gt;, this data can then be modified.&lt;/p&gt;
&lt;h3&gt;Demo: Using the New Web Request Node&lt;/h3&gt;
&lt;p&gt;Plamen then demonstrates the new &lt;strong&gt;Web Request node&lt;/strong&gt; introduced in QF-Test 10.
This node is designed specifically for API testing and allows users to configure and send HTTP requests directly from within QF-Test.&lt;/p&gt;
&lt;p&gt;He uses a simple REST service — a sample &lt;em&gt;Pet Store&lt;/em&gt; API — to illustrate:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A &lt;strong&gt;POST request&lt;/strong&gt; adds a new pet (“Wolf”) to the store.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;PUT request&lt;/strong&gt; updates the pet’s name.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;GET request&lt;/strong&gt; retrieves the updated information.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;QF-Test logs each step in detail: the exact &lt;strong&gt;request&lt;/strong&gt; sent, the &lt;strong&gt;response&lt;/strong&gt; received, the &lt;strong&gt;status code&lt;/strong&gt;, and the full &lt;strong&gt;JSON content&lt;/strong&gt;.
A status code of &lt;strong&gt;200&lt;/strong&gt; indicates success.&lt;/p&gt;
&lt;p&gt;QF-Test 10 also introduces &lt;strong&gt;syntax highlighting&lt;/strong&gt; for JSON and XML bodies and supports custom HTTP headers such as &lt;code&gt;Content-Type&lt;/code&gt; and &lt;code&gt;Accept&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Pre- and Post-Request Handlers&lt;/h3&gt;
&lt;p&gt;For more advanced scenarios, QF-Test provides &lt;strong&gt;Pre-Request&lt;/strong&gt; and &lt;strong&gt;Post-Request Handlers&lt;/strong&gt;.
These allow users to modify a request before it is sent or process a response after it is received.&lt;/p&gt;
&lt;p&gt;Typical use cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Setting authentication credentials&lt;/li&gt;
&lt;li&gt;Adjusting request headers&lt;/li&gt;
&lt;li&gt;Automatically verifying response content&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Handlers are executed in a defined order:
Global handlers run first, followed by local handlers defined within the test case itself.&lt;/p&gt;
&lt;h3&gt;Test Cases, Variables, and Assertions&lt;/h3&gt;
&lt;p&gt;Next, Plamen presents a complete &lt;strong&gt;test suite&lt;/strong&gt; that adds several pets using different data sets.
The suite uses a &lt;strong&gt;data driver&lt;/strong&gt; so that the same test case can be executed multiple times with varying input values.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Assertion API&lt;/strong&gt; (&lt;code&gt;rc.check&lt;/code&gt;) enables checks and validations without interrupting the test flow if one fails.
All results are documented clearly in both the execution log and the &lt;strong&gt;HTML report&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;QF-Test 10 adds convenient &lt;strong&gt;Copy buttons&lt;/strong&gt; in the report and log views, making it easier to extract large JSON bodies or specific sections for debugging.&lt;/p&gt;
&lt;h3&gt;Scripting and Technical Background&lt;/h3&gt;
&lt;p&gt;Under the hood, QF-Test uses the &lt;strong&gt;&lt;code&gt;java.net.http&lt;/code&gt; package&lt;/strong&gt; from the Java Development Kit to handle web requests.
This means that standard Java methods and classes are directly available within QF-Test scripting environments (e.g., &lt;strong&gt;Groovy&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Scripts can be used to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Loop through data&lt;/li&gt;
&lt;li&gt;Dynamically set variables&lt;/li&gt;
&lt;li&gt;Parse responses&lt;/li&gt;
&lt;li&gt;Implement custom checks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All related classes and objects (&lt;code&gt;Request&lt;/code&gt;, &lt;code&gt;Response&lt;/code&gt;, &lt;code&gt;rc.web&lt;/code&gt;, &lt;code&gt;rc.check&lt;/code&gt;, etc.) are documented in detail in the &lt;strong&gt;QF-Test manual&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Authentication&lt;/h3&gt;
&lt;p&gt;QF-Test 10 natively supports several authentication schemes in its Web Request node:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Basic Authentication&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bearer Token Authentication&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Key Authentication&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These credentials can be supplied either through HTTP headers or URL parameters.
Sensitive information (such as tokens) can be encrypted or hidden from logs and reports.&lt;/p&gt;
&lt;h3&gt;SOAP Example&lt;/h3&gt;
&lt;p&gt;In addition to REST APIs, QF-Test also supports &lt;strong&gt;SOAP web services&lt;/strong&gt;.
Plamen demonstrates this using a simple &lt;em&gt;Calculator&lt;/em&gt; service that adds two numbers.
The SOAP request includes an XML body and a &lt;code&gt;SOAPAction&lt;/code&gt; header.&lt;/p&gt;
&lt;p&gt;If the service responds successfully (status 200), QF-Test displays the result.
If not, the system issues a warning rather than failing the test, since the problem is likely with the demo service itself.&lt;/p&gt;
&lt;h3&gt;Proxy and Certificate Management&lt;/h3&gt;
&lt;p&gt;QF-Test provides extensive options for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proxy configuration&lt;/strong&gt; (HTTP/S),&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cookie management&lt;/strong&gt;, and&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificate handling&lt;/strong&gt;, including &lt;strong&gt;client certificates&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By default, QF-Test accepts all SSL certificates, but this can be customized.
There is also a built-in &lt;strong&gt;procedure&lt;/strong&gt; that allows testing Web APIs with client-side certificates.&lt;/p&gt;
&lt;p&gt;To observe live network traffic, Plamen recommends using a &lt;strong&gt;MITM proxy&lt;/strong&gt;.
Such a proxy can be integrated with QF-Test, allowing users to watch HTTP requests and responses as they happen.&lt;/p&gt;
&lt;h3&gt;Future Outlook&lt;/h3&gt;
&lt;p&gt;The QF-Test team is continuously expanding the Web API testing capabilities.
Planned features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for &lt;strong&gt;WebSockets&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;Additional &lt;strong&gt;authentication mechanisms&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;Enhanced &lt;strong&gt;response validation tools&lt;/strong&gt;, and&lt;/li&gt;
&lt;li&gt;More pre-built &lt;strong&gt;procedures&lt;/strong&gt; within the &lt;code&gt;webapi&lt;/code&gt; package.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Thomas Max concludes the session by thanking all participants.
The QF-Test team welcomes &lt;strong&gt;feedback, questions, and feature requests&lt;/strong&gt; and encourages attendees to reach out via email after the webinar.&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Beyond Strings – How To Effectively Use Object Variables In QF-Test 9</title><link href="https://www.qftest.com/en/support/videos/beyond-strings-object-variables.html" rel="alternate"/><published>2025-07-15T00:00:00+02:00</published><updated>2025-07-15T00:00:00+02:00</updated><author><name>Pascal Bihler</name></author><id>tag:www.qftest.com,2025-07-15:/en/support/videos/beyond-strings-object-variables.html</id><summary type="html">&lt;p&gt;In this webinar, we will do a technical deep dive into the new &amp;#8220;object variables&amp;#8221; concept in QF-Test 9.&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://gitlab.com/qfs/webinars/-/tree/main/objectvariables?ref_type=heads"&gt;Slides and Materials&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Contents&lt;/h2&gt;
&lt;p&gt;00:00 Intro&lt;br /&gt;
02:08 Until QF-Test 8: All variables are Strings&lt;br /&gt;
02:50 Automatic Conversion&lt;br /&gt;
6:22 Since QF-Test 9: Variables store original object&lt;br /&gt;
12:32 Representation in run log and protocol&lt;br /&gt;
16:48 Replacement of variable values (expand)&lt;br /&gt;
19:08 Simplified access in scripts&lt;br /&gt;
22:31 Default values&lt;br /&gt;
31:10 Return value in procedures&lt;br /&gt;
31:33 Conversion if required&lt;br /&gt;
47:16 Additional information&lt;br /&gt;
51:30 Usage example: Configuration&lt;br /&gt;
56:40 Usage example: Process Parameters  &lt;/p&gt;
&lt;h2&gt;Code examples and summaries&lt;/h2&gt;
&lt;h3&gt;Until QF-Test 8: All variables are Strings&lt;/h3&gt;
&lt;p&gt;Simple Assignment: Name (String) -&amp;gt; Value (String)&lt;/p&gt;
&lt;h3&gt;Automatic Conversion&lt;/h3&gt;
&lt;p&gt;Write:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setGlobal&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Numbervalue&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; Converts into the String &amp;quot;23&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setLocal&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Booleanvalue&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; Converts into the &amp;quot;true&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Object&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Object&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; Converts into the String &amp;quot;java.lang.Object@29f364c&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Read:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getStr&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; returns directly the variable value&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getBool&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; Value in (&amp;quot;1&amp;quot;,&amp;quot;y&amp;quot;,&amp;quot;yes&amp;quot;,&amp;quot;true&amp;quot;,&amp;quot;True&amp;quot;,…) ?&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getInt&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; Integer.valueOf(Value) / new BigInteger(Value)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Since QF-Test 9: Variables store original object&lt;/h3&gt;
&lt;p&gt;New Assignment: Name (String) -&amp;gt; VariableData&lt;/p&gt;
&lt;p&gt;With:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Value (any Object): &lt;code&gt;.getObject()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;String value (String): &lt;code&gt;.toString()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Description (String): &lt;code&gt;.getDescription()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No change &amp;#8220;from the outside&amp;#8221; during access:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Like before: &lt;code&gt;$(name)&lt;/code&gt; and &lt;code&gt;${group:name}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Like before: &lt;code&gt;rc.getStr(…)&lt;/code&gt;, &lt;code&gt;rc.getInt(…)&lt;/code&gt;, &lt;code&gt;rc.getBool(…)&lt;/code&gt;, …&lt;/li&gt;
&lt;li&gt;New: &lt;code&gt;rc.getObj(name)&lt;/code&gt; and &lt;code&gt;rc.getObj(group, name)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Representation in run log and protocol&lt;/h3&gt;
&lt;p&gt;Replacement of variable values (expand)&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setLocal&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ext&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;TXT&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setLocal&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;filename&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;qftest.$(ext)&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getStr&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;filename&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;expand:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; &amp;#39;qftest.TXT&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getStr&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;filename&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;expand:&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; &amp;#39;qftest.$(ext)&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getStr&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;filename&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ?&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getStr&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;filename&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;expand:&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; &amp;#39;qftest.TXT&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setLocal&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;regexp&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Pattern&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;compile&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;abc$(ext)&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getStr&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;regexp&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;expand:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; &amp;#39;abcTXT&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getStr&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;regexp&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;expand:&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; &amp;#39;abc$(ext)&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getStr&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;regexp&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// -&amp;gt; &amp;#39;abc$(ext)&amp;#39; – new!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Simplified access in scripts&lt;/h3&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;obj1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;varname&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setLocal&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;answer&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;obj2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;groupname&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;propname&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;qftest&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;suite.dir&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;decrypt&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C2094F52F62C0D7953E0CEFF81E269A7&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;newGroup&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;newName&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;newValue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;obj1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;vars&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;varname&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;vars&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;answer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;
&lt;span class="n"&gt;obj2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groupname&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;propname&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groupname&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;propname&lt;/span&gt;
&lt;span class="n"&gt;dir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;qftest&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;suite.dir&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;qftest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;suite&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;dir&lt;/span&gt;
&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;decrypt&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C2094F52F62C0D7953E0CEFF81E269A7&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;newGroup&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;newName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;newValue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Default values&lt;/h3&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;dflt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;default&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;unknown:Standardvalue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dflt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;unknown:Standardvalue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;dflt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withDefault&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Standardvalue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;vars&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;unknown&lt;/span&gt;
&lt;span class="n"&gt;gd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withDefault&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Standardvalue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;groups&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;unknowngrp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;unknownprop&lt;/span&gt;
&lt;span class="n"&gt;dflt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withDefault&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Standardvalue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;unknown&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;gd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withDefault&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Standardvalue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;unknowngrp&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;unknownprop&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Return value in procedures&lt;/h3&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;throw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ReturnException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;NeuerValue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;returnValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;NeuerValue&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;returnValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;myObject&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;qf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;wrapObject&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;myObject&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;qf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;wrapObject&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;myObject&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;String value&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Description&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;returnValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Conversion if required&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Replacements in combinations: -&amp;gt; String
    &amp;ndash; &lt;code&gt;"Today I turn $(age)."&lt;/code&gt;
    &amp;ndash; &lt;code&gt;"${qftest:suite.dir}/test.png"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Complete replacement -&amp;gt; Object type is preserved!
    &amp;ndash; &lt;code&gt;"$(data)"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Still automatic:
    &amp;ndash; &lt;code&gt;rc.getInt(…)&lt;/code&gt;, &lt;code&gt;rc.getNum(…)&lt;/code&gt;, &lt;code&gt;rc.getStr(…)&lt;/code&gt;, &lt;code&gt;rc.getBool(…)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Explicitely with the special group &amp;#8220;as&amp;#8221;:
    &amp;ndash; String expansion: &lt;code&gt;${as:int:23}&lt;/code&gt;, &lt;code&gt;${as:bool:$(is_available)}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;as&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;int:23&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getObj&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;as&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bool:$(is_available)&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Valid types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;str, bool, number, object, pattern, int, long, float, double, cmdline, json&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Variable exchange QF-Test &amp;lt;-&amp;gt; SUT&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;QF-Test and the application under test run in different processes&lt;/li&gt;
&lt;li&gt;Data exchange via (Java Remote Method Invocation)&lt;/li&gt;
&lt;li&gt;Also objects in variables&lt;/li&gt;
&lt;li&gt;Must be &lt;code&gt;Serializable&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The class definition has to be available in both processes&lt;/li&gt;
&lt;li&gt;Works for example with standard classes:
    &amp;ndash; String, Wrappers (Integer, Boolean, &amp;#8230;), Pattern, Date
    &amp;ndash; ArrayLists, HashSets (depending in the contents)&lt;/li&gt;
&lt;li&gt;Falls back on the &amp;#8220;String value&amp;#8221; in the other process&lt;/li&gt;
&lt;li&gt;In the original process still available as Object (+String)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Additional information&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Decrypted flag
    &amp;ndash; Is set automatically if &lt;code&gt;${decrypt:…}&lt;/code&gt; is expanded.
    &amp;ndash; The &amp;#8220;description&amp;#8221; of the value (e.g. in the run log) is always &lt;code&gt;***&lt;/code&gt;
    &amp;ndash; &lt;code&gt;rc.logMessage(rc.getStr("secret"))&lt;/code&gt; still logs the real value!
    &amp;ndash; Is &amp;#8220;inherited&amp;#8221; during expansion.&lt;/li&gt;
&lt;li&gt;AutoExpandable flag
    &amp;ndash; Avoids replacing variables in Strings &amp;#8220;by incident&amp;#8221;
    &amp;ndash; E.g. in the return value of &lt;code&gt;qfs.utils.readTextFromFile&lt;/code&gt;
    &amp;ndash; &lt;code&gt;rc.returnValue(text, autoExpandable:false)&lt;/code&gt;
    &amp;ndash; &lt;code&gt;wrapped = qf.wrapObject(text); wrapped.setAutoExpandable(false)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Rerun from run log
    &amp;ndash; Only available for certain (simple) objects&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Web Accessibility Testing with QF-Test</title><link href="https://www.qftest.com/en/support/videos/web-accessiblity-testing.html" rel="alternate"/><published>2025-05-19T00:00:00+02:00</published><updated>2025-05-19T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2025-05-19:/en/support/videos/web-accessiblity-testing.html</id><summary type="html">&lt;p&gt;In this webinar, we will give a brief introduction to web accessibility and present the new accessibility testing features of QF-Test.&lt;/p&gt;</summary><content type="html">&lt;p&gt;By June 28, 2025, business websites within the EU must be accessible. But what does accessibility mean in a web context? Who is affected and what do website operators need to be aware of?
And above all: How can QF-Test support you in meeting the legal requirements?&lt;/p&gt;
&lt;p&gt;In this webinar, we will give a brief introduction to web accessibility and present the new accessibility testing features of QF-Test.&lt;/p&gt;
&lt;p&gt;Material: &lt;a href="https://gitlab.com/qfs/webinars/-/raw/9e862192ad9c7f5264839163dcd18b402c6db61c/a11y_qf-test_specialwebinar_handout-en.pdf?inline=false"&gt;Presentation &amp;#8220;Accessibility testing&amp;#8221;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Abridged Transcript&lt;/h2&gt;
&lt;p&gt;Welcome to this special webinar about accessibility testing with QF-Test. My name is Daniel Rieth, a junior software developer at Quality First Software, and my co-moderator, Sofya Leventhal – a fellow software developer – will be keeping an eye on the chat during this event. We are both involved in the accessibility testing project at Quality First Software. Today, I will present the accessibility testing features we’ve implemented.&lt;/p&gt;
&lt;h3&gt;Agenda&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Basics of accessibility and accessibility laws&lt;/li&gt;
&lt;li&gt;Overview of QF-Test and its accessibility testing features&lt;/li&gt;
&lt;li&gt;Live demo of accessibility testing&lt;/li&gt;
&lt;li&gt;Notes and frequently asked questions&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;What Is Accessibility?&lt;/h3&gt;
&lt;p&gt;Accessibility is about removing barriers for people with disabilities. Originally discussed in contexts such as public transportation, the focus has shifted to the digital world as more of our activities move online.&lt;/p&gt;
&lt;h4&gt;Web Accessibility&lt;/h4&gt;
&lt;p&gt;The W3C (World Wide Web Consortium) defines web accessibility as ensuring that, despite a disability, everyone can perceive, understand, navigate, and interact with the web. There are multiple kinds of disabilities that can affect web interactions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual disabilities&lt;/strong&gt;: Includes color blindness, low vision, and blindness. Screen readers (integrated into iOS, Windows, Android, or available as third-party programs like Jaws and NVDA) help users interact with digital content.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hearing disabilities&lt;/strong&gt;: Users who are hard of hearing or deaf may require subtitles or sign language interpretation for multimedia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cognitive disabilities&lt;/strong&gt;: Poor content structure or unintuitive controls can hinder understanding and navigation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Physical disabilities&lt;/strong&gt;: Issues with control movements (e.g., drag-and-drop, pinch-to-zoom) may require simplified interactions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is essential for developers to offer text alternatives for graphics and images, provide accessible multimedia content, and ensure that controls are easy to use.&lt;/p&gt;
&lt;h3&gt;Why Make Websites Accessible?&lt;/h3&gt;
&lt;p&gt;There are several motivations, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Humanistic&lt;/strong&gt;: Enabling everyone to participate fully.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Economic&lt;/strong&gt;: Increasing your reach and customer base.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User experience&lt;/strong&gt;: Accessible websites tend to be more user-friendly and better structured.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Legal compliance&lt;/strong&gt;: In Europe (and other regions), laws require websites to be accessible to avoid penalties.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Accessibility Laws and Regulations&lt;/h3&gt;
&lt;h4&gt;European Accessibility Act (EAA)&lt;/h4&gt;
&lt;p&gt;The EAA implements the resolutions of the UN Convention on the Rights of Persons with Disabilities. It mandates that products and services (including online and digital offerings) be accessible. As an EU directive, it is transposed into national laws. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;German implementation – BFSG&lt;/strong&gt;: A law to strengthen accessibility that goes into effect at the end of June. It affects most B2C websites and digital communication tools. Similar laws or guidelines exist in other regions, like the American with Disabilities Act (ADA) in the United States, though the specific requirements may vary.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Web Content Accessibility Guidelines (WCAG)&lt;/h4&gt;
&lt;p&gt;WCAG provides a set of guidelines to make web content accessible. They are structured around four principles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Perceivable&lt;/strong&gt;: Content must be presentable to users in ways they can perceive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operable&lt;/strong&gt;: User interface components and navigation must be operable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Understandable&lt;/strong&gt;: Information and operation of the user interface must be understandable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Robust&lt;/strong&gt;: Content must be robust enough to be interpreted reliably by various user agents, including assistive technologies.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each guideline also comes with levels of conformance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Level A&lt;/strong&gt;: Minimum accessibility features; without these, some users may find the site unusable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Level AA&lt;/strong&gt;: Addresses the biggest and most common barriers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Level AAA&lt;/strong&gt;: The highest level, exceeding legal requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Overview of QF-Test&lt;/h3&gt;
&lt;p&gt;QF-Test provides an automated UI testing solution with multiple ways to simulate user interactions, record sessions, and run extensive test suites. It supports different technologies with a special focus on web applications.&lt;/p&gt;
&lt;h4&gt;Accessibility Testing Features&lt;/h4&gt;
&lt;p&gt;To test accessibility using QF-Test, there are two primary approaches:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Integration with an existing accessibility library&lt;/strong&gt;: We integrated the open-source library &lt;em&gt;axe core&lt;/em&gt;, which is developed by experts in web content accessibility guidelines. We enhanced its logging and reporting capabilities to make its results more user-friendly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QF-Test’s native accessibility checks&lt;/strong&gt;: We implemented additional procedures for testing aspects like color contrast for graphics—not just text. This allows us to check images (JPEG, PNG, SVG) for proper contrast and verify that alternative texts are provided.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;QF-Test version 9.0 (or higher) is required to use these features. You can try these features with a free trial license before committing to a full purchase.&lt;/p&gt;
&lt;h3&gt;Live Demo Walkthrough&lt;/h3&gt;
&lt;h4&gt;Starting with the Quick Start Wizard&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Click the wand icon in QF-Test to open the Quick Start Wizard.&lt;/li&gt;
&lt;li&gt;Select the accessibility testing module.&lt;/li&gt;
&lt;li&gt;Define the URL of the website to test (in our demo, we use a demo website intentionally filled with accessibility errors).&lt;/li&gt;
&lt;li&gt;Choose which accessibility tests to run—either the comprehensive &lt;em&gt;axe&lt;/em&gt; tests or specific tests like the color contrast check.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Running an Accessibility Test&lt;/h4&gt;
&lt;p&gt;1. &lt;strong&gt;Setup and execution&lt;/strong&gt;  &lt;/p&gt;
&lt;p&gt;The test setup includes a procedure that checks the entire website (or a defined scope) for errors based on selected rules, such as color contrast checks for text.&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;Logging and screenshots&lt;/strong&gt;  &lt;/p&gt;
&lt;p&gt;During the test run, QF-Test logs details, takes screenshots of problematic elements, and highlights errors (e.g., elements with a red border indicating contrast issues).&lt;/p&gt;
&lt;p&gt;3. &lt;strong&gt;Error details&lt;/strong&gt;  &lt;/p&gt;
&lt;p&gt;Each error message includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The rule ID (e.g., for color contrast or missing alternative text)&lt;/li&gt;
&lt;li&gt;An impact rating (ranging from critical to minor)&lt;/li&gt;
&lt;li&gt;The faulty element’s identification details (XPath or CSS selector)&lt;/li&gt;
&lt;li&gt;A descriptive error message with tips for remediation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;4. &lt;strong&gt;Remedial actions&lt;/strong&gt;  &lt;/p&gt;
&lt;p&gt;For example, one error might indicate that light green text on a white background doesn’t meet contrast requirements (minimum 4.5:1 ratio). Changing the text color from light green to black can resolve the error.&lt;/p&gt;
&lt;h4&gt;Reporting&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;QF-Test can generate detailed reports that include screenshots, logs, and all error messages.&lt;/li&gt;
&lt;li&gt;These reports provide a quick overview for developers and non-certified QF-Test users, summarizing successful and failed checks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Advanced Configuration&lt;/h3&gt;
&lt;p&gt;QF-Test offers extensive configuration options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rule exclusions&lt;/strong&gt;: Skip checks for certain rules if you are confident they are not an issue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scope definition&lt;/strong&gt;: Limit checks to specific parts of a page using a QF-Test ID or a smart selector.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logging options&lt;/strong&gt;: Customize how many screenshots are taken and how errors are grouped or reported.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, you can configure checks to focus on specific elements (such as icons represented by IMG tags) by defining custom generic classes and adjusting the scope within the test parameters.&lt;/p&gt;
&lt;h3&gt;Presentation Notes and Closing Remarks&lt;/h3&gt;
&lt;p&gt;During the live demo, we observed that even if all automatic tests run successfully, it does not guarantee full accessibility compliance. Some guidelines—such as ensuring meaningful titles or alternative texts—require human judgment. While automation can catch up to roughly 75% of issues, manual review remains essential.&lt;/p&gt;
&lt;p&gt;Future improvements planned for QF-Test include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Additional checks for focus visibility when elements are activated.&lt;/li&gt;
&lt;li&gt;Extending accessibility testing support beyond web applications to desktop software.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Q&amp;amp;A and Final Thoughts&lt;/h3&gt;
&lt;p&gt;Thank you for joining this webinar on accessibility testing with QF-Test. We hope that the demonstration and walkthrough have provided valuable insights into how to implement and benefit from these accessibility features.&lt;/p&gt;
&lt;p&gt;Happy testing, and let’s make the web accessible for everyone!&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Automatically test the accessibility of your web application with QF-Test 9</title><link href="https://www.qftest.com/en/support/videos/qftest-version-9-highlights.html" rel="alternate"/><published>2025-02-20T00:00:00+01:00</published><updated>2025-02-20T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2025-02-20:/en/support/videos/qftest-version-9-highlights.html</id><summary type="html">&lt;p&gt;In this video we show you how you can use QF-Test 9 to test the accessibility of your website or web application. It&amp;#8217;s quick and almost completely automatic! We will also demonstrate some of the other abilities QF-Test has gained with version 9.&lt;/p&gt;</summary><content type="html">&lt;p&gt;In this video we show you how you can use QF-Test 9 to test the accessibility of your website or web application. It&amp;#8217;s quick and almost completely automatic! We will also demonstrate some of the other abilities QF-Test has gained with version 9.&lt;/p&gt;
&lt;p&gt;QF-Test 9 introduces accessibility testing for web applications to ensure compliance with WCAG and other standards, based on the proven axe-core library but including additional features like testing the color contrast of graphical elements and a highly informative visual report. QF-Test power users will be thrilled that variables are no longer limited to strings. You can now also store lists, UI components, images and arbitrary other data structures.&lt;/p&gt;
&lt;h2&gt;Transcript&lt;/h2&gt;
&lt;p&gt;Hi! In this video we will show you how you can use QF-Test 9 to test the accessibility of your website or web application. It&amp;#8217;s quick and almost completely automatic! Also, we will demonstrate some of the other abilities QF-Test has gained with version 9. QF-Test is the tool for professional UI test automation.&lt;/p&gt;
&lt;p&gt;In terms of accessibility, a lot has changed with QF-Test 9. Firstly, we have significantly improved the usability and accessibility of QF-Test itself: Using QF-Test with a screen reader or just a keyboard works much better now than before.&lt;/p&gt;
&lt;p&gt;Secondly, QF-Test can now assist you with making your own applications more accessible. Version 9 introduces a whole new suite of accessibilty checks. With them, you can fully automatically test your web application for conformity to WCAG (&amp;#8220;wee-cag&amp;#8221;/&amp;#8221;double-u c a g&amp;#8221;), the Web Content Accessibility Guidelines – an important step towards compliance with the European Accessibility Act and other laws.&lt;/p&gt;
&lt;p&gt;As always with QF-Test, it could not be easier to get started with the new accessibility testing tools.&lt;/p&gt;
&lt;p&gt;Every good test in QF-Test starts with the Quickstart Wizard. In here you will find a new entry for our accessiblity tests.&lt;/p&gt;
&lt;p&gt;Basically, we only need to enter a URL and off we go. Using QF-Test 9, you can test the accessiblity of any website or web application.&lt;/p&gt;
&lt;p&gt;In the next step, you can optionally define exactly which checks QF-Test should perform. QF-Test version 9 can run every check included with the well-known and trusted open-source library &amp;#8220;axe-core&amp;#8221;. In addition, we offer color contrasts checks of graphics. Our goal is to introduce support for more aspects of accessiblity testing in future versions of QF-Test.&lt;/p&gt;
&lt;p&gt;But for now, wo don&amp;#8217;t need to do anything else. With one click, QF-Test now launches a browser and thoroughly puts our app through its paces.&lt;/p&gt;
&lt;p&gt;The best part of this feature, however, is the reporting built into QF-Test. For every test run, QF-Test generates a comprehensive technical run log.&lt;/p&gt;
&lt;p&gt;In addition, there&amp;#8217;s a clear and interactive HTML report. It visualizes which elements of your application failed which checks using lots of screenshots. It also offers tips on how to fix many of these issues.&lt;/p&gt;
&lt;p&gt;On the occasion of this update, we also upgraded the HTML report. Next to some visual upgrades, it now offers a dark mode, same as QF-Test itself. We also greatly improved the navigation through screenshots and messages.&lt;/p&gt;
&lt;p&gt;QF-Test 9 also includes a new example test suite which you can use as inspiration for your own tests. It&amp;#8217;s the only sample suite in QF-Test which will generate errors when run. But don&amp;#8217;t worry: In this case, this is on purpose - so you can get a realistic impression of what a typical QF-Test accessiblity report looks like.&lt;/p&gt;
&lt;p&gt;As with all features, you can find detailed information about everything new in QF-Test in the included manual. And in this version, we have completely overhauled the HTML manual.&lt;/p&gt;
&lt;p&gt;It now includes an intuitive navigation sidebar, so you always know where you are in the manual.&lt;/p&gt;
&lt;p&gt;We also added a lightning-fast search engine to the manual. Using it, you can effortlessly find what ever you are looking for – even without an internet connection.&lt;/p&gt;
&lt;p&gt;The new manual is much more readable and more informative. And most importantly, it also includes a cool dark mode.&lt;/p&gt;
&lt;p&gt;One chapter of the manual that has gotten especially interesting in QF-Test 9 is the one on &amp;#8220;Variables&amp;#8221;. With this update, we have extended our variable system by object variables. Now, you can no longer just store strings in QF-Test variables, but lists, UI components, images and any other data structure you want.&lt;/p&gt;
&lt;p&gt;This addition makes QF-Test more powerful than ever. For example, object variables allow you to define a variable as encrypted and keep it encrypted throughout your whole suite, and it&amp;#8217;s true value will never be logged.&lt;/p&gt;
&lt;p&gt;In many places in QF-Test, you can now choose a desired object type when defining a variable. And many procedures across the qfs.qft standard library will now optionally return objects.&lt;/p&gt;
&lt;p&gt;We also developed powerful new scripting APIs such as &amp;#8220;rc.vars&amp;#8221;. With &amp;#8220;rc.vars&amp;#8221;, it becomes incredibly intutive to read and write QF-Test variables.&lt;/p&gt;
&lt;p&gt;And of course, all of these additions are backwards-compatible. Your existing tests will perform exactly as before and you only have to dive into this topic once you are ready for it. But we are confident that especially our power users will quickly learn to use the new object variables in QF-Test 9 to great effect.&lt;/p&gt;
&lt;p&gt;Our UI inspector is still the best tool to keep tabs on how QF-Test sees your application in real-time. With QF-Test 9, we have enhanced the UI inspector with a search and filter function.&lt;/p&gt;
&lt;p&gt;Using it, you can get a better overview about which component classes show up where in your application. Especially with more complicated component hierarchies, this feature can be invaluable.&lt;/p&gt;
&lt;p&gt;Another very neat little addition to QF-Test 9 is the ability to set options only for the scope of a specific node.&lt;/p&gt;
&lt;p&gt;Often, you only need an option for a brief moment to override an otherwise useful default behavior of QF-Test. Thanks to the new &amp;#8220;option&amp;#8221; doctag, you can now summarize the annoying &amp;#8220;set option&amp;#8221;, &amp;#8220;perform action&amp;#8221;, &amp;#8220;reset option&amp;#8221; steps into one action.&lt;/p&gt;
&lt;p&gt;You can not only set the doctag on individual nodes, you can also set it on an entire test step - or any other sequence. The option will then apply for all nodes that are part of that sequence.&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s not even everything that&amp;#8217;s new in QF-Test 9. There are a ton of smaller improvements and features. Visit our website and take a look at the full release notes to learn about all the details.&lt;/p&gt;
&lt;p&gt;Not convinced yet? Try QF-Test 9 for yourself today! You can download QF-Test for free at www.qftest.com and start testing right away.&lt;/p&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>iOS included – Testing mobile apps with QF-Test</title><link href="https://www.qftest.com/en/support/videos/ios-included-testing-mobile-apps-with-qf-test.html" rel="alternate"/><published>2024-10-01T00:00:00+02:00</published><updated>2024-10-01T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2024-10-01:/en/support/videos/ios-included-testing-mobile-apps-with-qf-test.html</id><content type="html">&lt;p&gt;In this special webinar, we show you how to conveniently record and efficiently automate tests for iOS apps. Our experts also reveal tricks and tips from the field.&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Automatically test iOS apps with QF-Test 8</title><link href="https://www.qftest.com/en/support/videos/automatically-test-ios-apps-with-qf-test-8.html" rel="alternate"/><published>2024-08-22T00:00:00+02:00</published><updated>2024-08-22T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2024-08-22:/en/support/videos/automatically-test-ios-apps-with-qf-test-8.html</id><summary type="html">&lt;p&gt;In this video I will show you how you can test &lt;strong&gt;iOS applications&lt;/strong&gt; with QF-Test 8. Also, I will demonstrate what else QF-Test 8 has in store.&lt;/p&gt;</summary><content type="html">&lt;hr /&gt;
&lt;p&gt;In this video I will show you how you can test &lt;strong&gt;iOS applications&lt;/strong&gt; with QF-Test 8. Also, I will demonstrate what else QF-Test 8 has in store.&lt;/p&gt;
&lt;h2&gt;Transcript&lt;/h2&gt;
&lt;h3&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Hi! In this video I will show you how you can test iOS applications with QF-Test 8. Also, I will demonstrate what else QF-Test 8 has in store. QF-Test 8 is the most recent version of QF-Test, the tool for professional UI test automation.&lt;/p&gt;
&lt;h3&gt;Testing iOS applications&lt;/h3&gt;
&lt;p&gt;First, let&amp;#8217;s get the system requirements out of the way: Testing iOS applications is only possible on macOS. Also, you need to have Xcode an a couple of other helper tools installed. To prepare your system, we have developed a useful little assistant that will lead you through the necessary steps. It will also set up your test environment for you automatically as much as possible.&lt;/p&gt;
&lt;p&gt;As always in QF-Test, a new test project starts with the quick-start wizard, via the magic wand icon. Here I can now select an iOS device or Simulator from the list &amp;#8230; and here I&amp;#8217;ll select the iOS app bundle I want to test &amp;#8230; and QF-Test takes care of all the rest for me.&lt;/p&gt;
&lt;p&gt;With my newly created setup sequence, I can start testing. With just one click, QF-Test launches my test application and connects to the device or Simulator I just selected. Now, I can start a new recording using the QF-Test recording button. This opens the Recording Window. This Recording Window mirrors the screen contents of the connected iOS device in real-time.&lt;/p&gt;
&lt;p&gt;When I now interact with my test application through the Recording Window, QF-Test will automatically record all of my interactions. The Simulator window was hidden to avoid confusion, but everything that happens in the recording window is transmitted live to the Simulator. Swipe gestures are also no problem for the QF-Test Recording Window.&lt;/p&gt;
&lt;p&gt;Interactions can only be recorded through the QF-Test recording window, not directly on the device or Simulator. Instead, the recording window offers a bunch of other functionality, for example the recording of checks. Checks are used to ensure the correct state of my application. To use them, I activate the check recording mode from the recording window and then click on a UI element whose properties I want to check.&lt;/p&gt;
&lt;p&gt;After finishing my recording, I get a test sequence made of individual steps which I can now tweak and modify however I like. But most importantly, I can replay the steps reproducibly and with great speed.&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s it! The first step on the road to complete end-to-end tests for my application.&lt;/p&gt;
&lt;h3&gt;Updates to the foundations&lt;/h3&gt;
&lt;p&gt;But of course that is not everything that is new in QF-Test 8. Even if you don&amp;#8217;t plan to test iOS applications, there is a lot here to make an upgrade worth it.&lt;/p&gt;
&lt;p&gt;For example, we have modernized the foundations and are now running on Java 17 and 64 bit, which should make QF-Test quicker, more stable and better integrated into your operating system.&lt;/p&gt;
&lt;p&gt;Of course you can still test applications built on Java 8 as well. Also, QF-Test is still able to test 32-bit Windows applications. And on the Mac, QF-Test now runs natively on Apple Silicon. Naturally, QF-Test still works with Intel-based applications as well.&lt;/p&gt;
&lt;h3&gt;Json and Chai&lt;/h3&gt;
&lt;p&gt;As the developers behind QF-Test, we know that many of our users also work with code-based tools for testing software. One of them is the well-known JavaScript library &amp;#8220;chai.js&amp;#8221;.&lt;/p&gt;
&lt;p&gt;QF-Test has also been offering code based testing since the beginning. With QF-Test 8, we let ourselves be inspired by Chai and now offer the QF-Test Assertions API.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;def foo = &amp;#39;bar&amp;#39;
def beverages = [ tea: [ &amp;#39;chai&amp;#39;, &amp;#39;matcha&amp;#39;, &amp;#39;oolong&amp;#39; ] ]

expect(foo).to.be.a(&amp;#39;String&amp;#39;)
foo.should.be.equal(&amp;#39;bar&amp;#39;)
expect(foo).to.have.lengthOf(3)
expect(beverages).to.have.property(&amp;#39;tea&amp;#39;).with.lengthOf(3)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;With it, you can use QF-Test to write assertions in a fluid, language-like syntax, like the one Chai made popular. And the whole thing not only works in JavaScript, but in all three supported script languages: Groovy, Jython and JavaScript.&lt;/p&gt;
&lt;p&gt;It gets even better when you combine the Assertions API with our new JSON module and directly access individual properties in a JSON object in your assertions.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setLocal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;jsonData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="s2"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;    &amp;quot;Actors&amp;quot;: [&lt;/span&gt;
&lt;span class="s2"&gt;        {&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;name&amp;quot;: &amp;quot;Robert Downey Jr.&amp;quot;,&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;age&amp;quot;: 53,&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;Born At&amp;quot;: &amp;quot;New York City, NY&amp;quot;,&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;Birthdate&amp;quot;: &amp;quot;April 4, 1965&amp;quot;,&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;wife&amp;quot;: &amp;quot;Susan Downey&amp;quot;,&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;weight&amp;quot;: 77.1,&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;hasChildren&amp;quot;: true,&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;hasGreyHair&amp;quot;: false,&lt;/span&gt;
&lt;span class="s2"&gt;            &amp;quot;children&amp;quot;: [&lt;/span&gt;
&lt;span class="s2"&gt;                &amp;quot;Indio Falconer&amp;quot;,&lt;/span&gt;
&lt;span class="s2"&gt;                &amp;quot;Avri Roel&amp;quot;,&lt;/span&gt;
&lt;span class="s2"&gt;                &amp;quot;Exton Elias&amp;quot;&lt;/span&gt;
&lt;span class="s2"&gt;            ]&lt;/span&gt;
&lt;span class="s2"&gt;        }&lt;/span&gt;
&lt;span class="s2"&gt;    ]&lt;/span&gt;
&lt;span class="s2"&gt;}&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getJson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;jsonData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Actors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;should&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;ArrayList&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Actors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;LinkedHashMap&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;Assert&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;instanceOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Actors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;LinkedHashMap&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Bla&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Actors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;should&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;String&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Actors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;should&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Long&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Actors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;should&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Double&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Actors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hasChildren&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;should&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Boolean&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setGlobalJson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;gData&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;New Theme: Solarized&lt;/h3&gt;
&lt;p&gt;Even if you are only in the mood for some visual variety, QF-Test 8 is for you. We have turned the popular Solarized color scheme into a UI theme. It joins our existing default theme and the high contrast mode. With it&amp;#8217;s deliberately tuned colors, Solarized brings even more choice to the visual presentation of QF-Test. And of course, this theme, too, is available in a light variant.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;And there are even more things that are new in QF-Test 8. There are a ton of smaller improvements and fixes. Visit our website and take a look at the full release notes to learn about all the details.&lt;/p&gt;
&lt;p&gt;Not convinced yet? Try QF-Test 8 for yourself today! You can download QF-Test for free at www.qfs.de and start testing right away.&lt;/p&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>The Quickstart Wizard for PDF</title><link href="https://www.qftest.com/en/support/videos/the-quickstart-wizard-pdf.html" rel="alternate"/><published>2024-05-16T00:00:00+02:00</published><updated>2024-05-16T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2024-05-16:/en/support/videos/the-quickstart-wizard-pdf.html</id><summary type="html">&lt;p&gt;When &lt;a href="/en/product/qf-test/pdf-testing.html"&gt;testing PDF documents&lt;/a&gt; all this is possible: Checking of content, texts, images/geometry and comparisons.&lt;/p&gt;</summary><content type="html">&lt;p&gt;When &lt;a href="/en/product/qf-test/pdf-testing.html"&gt;testing PDF documents&lt;/a&gt; all this is possible: Checking of content, texts, images/geometry and comparisons.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/pdf-testing.html#sec_pdf" title="Testing PDF Documents (Manual)"&gt;Further information in the manual&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>The QF-Test UI Inspector in use</title><link href="https://www.qftest.com/en/support/videos/the-qf-test-ui-inspector-in-use.html" rel="alternate"/><published>2024-04-29T00:00:00+02:00</published><updated>2024-04-29T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2024-04-29:/en/support/videos/the-qf-test-ui-inspector-in-use.html</id><summary type="html">&lt;p&gt;The UI inspector of QF-Test is a valuable tool to better understand the structure of the UI to be tested.&lt;/p&gt;</summary><content type="html">&lt;p&gt;The UI inspector of QF-Test is a valuable tool to better understand the structure of the UI to be tested.&lt;/p&gt;
&lt;p&gt;In this video, we will show you how you can use the UI inspector to quickly configure your CustomWebResolver, for example, and what tricks the tool also offers for Windows and Java applications.&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>The Quickstart Wizard for Web</title><link href="https://www.qftest.com/en/support/videos/the-quickstart-wizard-web.html" rel="alternate"/><published>2024-04-04T00:00:00+02:00</published><updated>2024-04-04T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2024-04-04:/en/support/videos/the-quickstart-wizard-web.html</id><summary type="html">&lt;p&gt;In this video we&amp;#8217;ll show how to define a &lt;a href="/en/product/qf-test/web-testing.html"&gt;web application&lt;/a&gt; as test object in QF-Test in just a view steps in order to be able to start directly with test development.&lt;/p&gt;</summary><content type="html">&lt;p&gt;In this video we&amp;#8217;ll show how to define a &lt;a href="/en/product/qf-test/web-testing.html"&gt;web application&lt;/a&gt; as test object in QF-Test in just a view steps in order to be able to start directly with test development.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/user_quickstart.html#usec_quickstart" title="Manual: Quickstar your application"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>QF-Test Version 7.1 Highlights</title><link href="https://www.qftest.com/en/support/videos/qf-test-version-71-highlights-with-new-display-options-resolvers-and-more.html" rel="alternate"/><published>2024-02-20T00:00:00+01:00</published><updated>2024-02-20T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2024-02-20:/en/support/videos/qf-test-version-71-highlights-with-new-display-options-resolvers-and-more.html</id><summary type="html">&lt;p&gt;With new display options, resolvers and more.&lt;/p&gt;</summary><content type="html">&lt;p&gt;With new display options, resolvers and more.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Revised tree view&lt;/li&gt;
&lt;li&gt;Better display options&lt;/li&gt;
&lt;li&gt;Script languages in step conditions&lt;/li&gt;
&lt;li&gt;High-contrast theme&lt;/li&gt;
&lt;li&gt;UI Inspector for Windows and Swing Apps&lt;/li&gt;
&lt;li&gt;CustomWebResolver improvements&lt;/li&gt;
&lt;li&gt;News resolvers for Flutter, Vaadin 14+ and ARIA&lt;/li&gt;
&lt;li&gt;Easy drawing on images and screenshots&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>Smart Testing with SmartID</title><link href="https://www.qftest.com/en/support/videos/smart-testing-with-smartid.html" rel="alternate"/><published>2024-02-14T00:00:00+01:00</published><updated>2024-02-14T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2024-02-14:/en/support/videos/smart-testing-with-smartid.html</id><summary type="html">&lt;p&gt;SmartID is a completely new way to address the UI components of you application which we continue to tweak and improve.&lt;/p&gt;</summary><content type="html">&lt;p&gt;SmartID is a completely new way to address the UI components of you application which we continue to tweak and improve.&lt;/p&gt;
&lt;p&gt;In this special webinar, we will show you the new feature additions in QF-Test 7 around SmartID and label recognition, and how you can make the most of your tests with them.&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>The Quickstart Wizard for Java</title><link href="https://www.qftest.com/en/support/videos/the-quickstart-wizard-java.html" rel="alternate"/><published>2023-12-21T00:00:00+01:00</published><updated>2023-12-21T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2023-12-21:/en/support/videos/the-quickstart-wizard-java.html</id><summary type="html">&lt;p&gt;This video shows the creation of a setup sequence with QF-Test. This sequence allows to start your Java application as System under Test (SUT) from QF-Test.&lt;/p&gt;</summary><content type="html">&lt;p&gt;This video shows the creation of a setup sequence with QF-Test. This sequence allows to start your Java application as System under Test (SUT) from QF-Test.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/user_quickstart.html#usec_quickstart" title="Manual: Quickstart your application"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>No rocket science – Launch your web tests with QF-Test 7’s new component mapping workflow</title><link href="https://www.qftest.com/en/support/videos/launch-your-web-tests-with-qf-test-7s-new-component-mapping-workflow.html" rel="alternate"/><published>2023-10-12T00:00:00+02:00</published><updated>2023-10-12T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2023-10-12:/en/support/videos/launch-your-web-tests-with-qf-test-7s-new-component-mapping-workflow.html</id><content type="html">&lt;p&gt;In QF-Test 7 we completely overhauled the recommended workflow for mapping components in web applications. In this special webinar, we show you how to make the most of the new UI inspector and CustomWebResolver node.&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Well tested, but also securely implemented?</title><link href="https://www.qftest.com/en/support/videos/well-tested-but-also-securely-implemented.html" rel="alternate"/><published>2023-07-13T00:00:00+02:00</published><updated>2023-07-13T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2023-07-13:/en/support/videos/well-tested-but-also-securely-implemented.html</id><summary type="html">&lt;p&gt;Critical security aspects in application development, from approach over vulnerabilities down to testing.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Critical security aspects in application development, from approach over vulnerabilities down to testing.&lt;/p&gt;
&lt;p&gt;Developing software securely is a &lt;em&gt;must&lt;/em&gt; today. Our sister company mgm Security Partners shows how this can be ensured even in agile projects, sheds light on the interaction of different testing approaches, and devotes herself to supply chain risks. In the webinar, they share their practical experience from many hundreds of software projects.&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>QF-Test 7.0 – these are the highlights you should know!</title><link href="https://www.qftest.com/en/support/videos/qf-test-70-these-are-the-highlights-you-should-know.html" rel="alternate"/><published>2023-05-16T00:00:00+02:00</published><updated>2023-05-16T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2023-05-16:/en/support/videos/qf-test-70-these-are-the-highlights-you-should-know.html</id><summary type="html">&lt;p&gt;In this special webinar we will introduce you to the new refreshed user interface and present the other highlights of the latest version.&lt;/p&gt;</summary><content type="html">&lt;p&gt;In this special webinar we will introduce you to the new refreshed user interface and present the other highlights of the latest version.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/history.html"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>QF-Test Version 7.0 Highlights with Dark Mode, SmartID, UI Inspector and more</title><link href="https://www.qftest.com/en/support/videos/qf-test-version-70-highlights-with-dark-mode-smartid-ui-inspector-and-more.html" rel="alternate"/><published>2023-04-27T00:00:00+02:00</published><updated>2023-04-27T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2023-04-27:/en/support/videos/qf-test-version-70-highlights-with-dark-mode-smartid-ui-inspector-and-more.html</id><summary type="html"/><content type="html">&lt;ul&gt;
&lt;li&gt;Streamlined UI&lt;/li&gt;
&lt;li&gt;Dark mode&lt;/li&gt;
&lt;li&gt;Paradigm shift towards SmartID&lt;/li&gt;
&lt;li&gt;Complete overhaul of the algorithm for determining the best label of a component&lt;/li&gt;
&lt;li&gt;Improved Testing of web applications thanks to an intuitive new way of configuring CustomWebResolvers&lt;/li&gt;
&lt;li&gt;New visual UI inspector&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>Testing Webswing applications with QF-Test</title><link href="https://www.qftest.com/en/support/videos/testing-webswing-applications-with-qf-test.html" rel="alternate"/><published>2023-03-22T00:00:00+01:00</published><updated>2023-03-22T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2023-03-22:/en/support/videos/testing-webswing-applications-with-qf-test.html</id><summary type="html">&lt;p&gt;In this eight-minute video overview, we show you how to test your Webswing applications with our test automation tool QF-Test.&lt;/p&gt;</summary><content type="html">&lt;p&gt;In this eight-minute video overview, we show you how to test your Webswing applications with our test automation tool QF-Test.&lt;/p&gt;
&lt;p&gt;&lt;a href="/en/product/qf-test/java-testing/webswing-testing-with-qf-test.html" title="Webswing and QF-Test"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>What’s in the box?! – Using QF-Test with Docker containers</title><link href="https://www.qftest.com/en/support/videos/whats-in-the-box-using-qf-test-with-docker-containers.html" rel="alternate"/><published>2023-02-15T00:00:00+01:00</published><updated>2023-02-15T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2023-02-15:/en/support/videos/whats-in-the-box-using-qf-test-with-docker-containers.html</id><summary type="html">&lt;p&gt;In this special webinar we will present the out-of-the-box QF-Test Docker image and show you how to use it for your test automation.&lt;/p&gt;</summary><content type="html">&lt;p&gt;In this special webinar we will present the out-of-the-box QF-Test Docker image and show you how to use it for your test automation.&lt;/p&gt;
&lt;p&gt;&lt;a href="/pdf/specialwebinar_qfs_docker_slides_en.pdf"&gt;Look at the presentation&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>SmartID – Direct use of recognition criteria</title><link href="https://www.qftest.com/en/support/videos/smartids-direct-use-of-recognition-criteria.html" rel="alternate"/><published>2022-10-26T00:00:00+02:00</published><updated>2022-10-26T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-10-26:/en/support/videos/smartids-direct-use-of-recognition-criteria.html</id><summary type="html">&lt;p&gt;In this special webinar you will learn everything there is to know about the new SmartID technology in QF-Test.&lt;/p&gt;</summary><content type="html">&lt;p&gt;In this special webinar you will learn everything there is to know about the new SmartID technology in QF-Test.&lt;/p&gt;
&lt;p&gt;&lt;a href="/pdf/special-webinar_SmartID_en.pdf"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Testing Android applications with QF-Test I UI test automation</title><link href="https://www.qftest.com/en/support/videos/testing-android-applications-with-qf-test-i-gui-test-automation.html" rel="alternate"/><published>2022-10-24T00:00:00+02:00</published><updated>2022-10-24T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-10-24:/en/support/videos/testing-android-applications-with-qf-test-i-gui-test-automation.html</id><content type="html">&lt;p&gt;QF-Test supports testing Android applications both in emulators and on real devices.&lt;/p&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>Testing Web applications with QF-Test I UI test automation</title><link href="https://www.qftest.com/en/support/videos/testing-web-applications-with-qf-test-i-gui-test-automation.html" rel="alternate"/><published>2022-08-16T00:00:00+02:00</published><updated>2022-08-16T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-08-16:/en/support/videos/testing-web-applications-with-qf-test-i-gui-test-automation.html</id><summary type="html">&lt;p&gt;In this video, you will learn everything you need to get started with testing web applications with QF-Test.&lt;/p&gt;</summary><content type="html">&lt;ul&gt;
&lt;li&gt;For classic static HTML websites and dynamic Frameworks (Angular, React, Vue.js, Vaadin etc.)&lt;/li&gt;
&lt;li&gt;Cross-browser testing: Google Chrome, Mozilla Firefox, Microsoft Edge (headless, too), as well as Opera and Safari&lt;/li&gt;
&lt;li&gt;Testing Electron applications, Webswing and JPro&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>Sweet like Nougat, Oreo, and Pie – Testing Android with QF-Test</title><link href="https://www.qftest.com/en/support/videos/sweet-like-nougat-oreo-and-pie-testing-android-with-qf-test.html" rel="alternate"/><published>2022-07-11T00:00:00+02:00</published><updated>2022-07-11T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-07-11:/en/support/videos/sweet-like-nougat-oreo-and-pie-testing-android-with-qf-test.html</id><summary type="html">&lt;p&gt;Testing Android with QF-Test on real devices e.g. from Samsung, LG and Google as well as with the emulator from Android Studio.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Testing Android with QF-Test on real devices e.g. from Samsung, LG and Google as well as with the emulator from Android Studio.&lt;/p&gt;
&lt;p&gt;&lt;a href="/pdf/en/android-testing-special-webinar.pdf"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Spring-clean in May – Optimizing the test structure and documentation in QF-Test</title><link href="https://www.qftest.com/en/support/videos/optimizing-the-test-structure-and-documentation-in-qf-test.html" rel="alternate"/><published>2022-06-15T00:00:00+02:00</published><updated>2022-06-15T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-06-15:/en/support/videos/optimizing-the-test-structure-and-documentation-in-qf-test.html</id><summary type="html">&lt;p&gt;Optimize your test structure and documentation for all stakeholders: colleagues, bosses and clients.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Optimize your test structure and documentation for all stakeholders: colleagues, bosses and clients.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/qfs/webinars/-/blob/main/optimizing-structure-and-documentation/spring_clean_may.qft"&gt;Testsuite&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Testing Java Swing with QF-Test</title><link href="https://www.qftest.com/en/support/videos/testing-java-swing-with-qf-test-i-gui-test-automation.html" rel="alternate"/><published>2022-05-30T00:00:00+02:00</published><updated>2022-05-30T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-05-30:/en/support/videos/testing-java-swing-with-qf-test-i-gui-test-automation.html</id><summary type="html"/><content type="html">&lt;ul&gt;
&lt;li&gt;QF-Test supports Java Swing specifically WebView, JxBrowser, Webswing and JPro cross-platform on Windows, Linux and macOS.&lt;/li&gt;
&lt;li&gt;QF-Test itself is based on Java and therefore offers the best possible support for your Java Swing applications.&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>Highlights of QF-Test Version 6.0 with Android, SmartIDs and much more</title><link href="https://www.qftest.com/en/support/videos/highlights-of-qf-test-version-60-with-android-smartids-and-much-more.html" rel="alternate"/><published>2022-05-17T00:00:00+02:00</published><updated>2022-05-17T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-05-17:/en/support/videos/highlights-of-qf-test-version-60-with-android-smartids-and-much-more.html</id><summary type="html">&lt;p&gt;New features and improvements.&lt;/p&gt;</summary><content type="html">&lt;p&gt;New features and improvements.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Testing Android applications&lt;/li&gt;
&lt;li&gt;SmartIDs for component recognition&lt;/li&gt;
&lt;li&gt;Java17, Groovy 4, more modern HTML reports&lt;/li&gt;
&lt;li&gt;Run-log with relative execution time and optimized screenshots&lt;/li&gt;
&lt;li&gt;Connection to the Robot-Framework&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>Testing JavaFX with QF-Test I UI test automation</title><link href="https://www.qftest.com/en/support/videos/testing-javafx-with-qf-test-i-gui-test-automation.html" rel="alternate"/><published>2022-05-03T00:00:00+02:00</published><updated>2022-05-03T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-05-03:/en/support/videos/testing-javafx-with-qf-test-i-gui-test-automation.html</id><summary type="html"/><content type="html">&lt;ul&gt;
&lt;li&gt;QF-Test supports JavaFX specifically WebView, JxBrowser, Webswing and JPro cross-platform on Windows, Linux and macOS.&lt;/li&gt;
&lt;li&gt;QF-Test itself is based on Java and therefore offers the best possible support for your JavaFX applications.&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>Using the Debugger</title><link href="https://www.qftest.com/en/support/videos/using-the-debugger.html" rel="alternate"/><published>2022-02-03T00:00:00+01:00</published><updated>2022-02-03T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-02-03:/en/support/videos/using-the-debugger.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/debuggerweb.html#sec_DebuggerWeb" title="Tutorial chapter"&gt;Tutorial chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>Dos and Don’ts when Working with QF-Test as a Team</title><link href="https://www.qftest.com/en/support/videos/dos-and-donts-when-working-with-qf-test-as-a-team.html" rel="alternate"/><published>2022-01-26T00:00:00+01:00</published><updated>2022-01-26T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2022-01-26:/en/support/videos/dos-and-donts-when-working-with-qf-test-as-a-team.html</id><summary type="html">&lt;p&gt;A special webinar about version management (GIT, SVN), Importing, QF-Test Projects, and more.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A special webinar about version management (GIT, SVN), Importing, QF-Test Projects, and more.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/qfs/webinars/-/tree/main/dosAndDonts-working-in-a-team"&gt;Presentation and Testsuite&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Components</title><link href="https://www.qftest.com/en/support/videos/components.html" rel="alternate"/><published>2021-12-29T00:00:00+01:00</published><updated>2021-12-29T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-12-29:/en/support/videos/components.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/componentsweb.html#sec_ComplexComponentsWeb" title="Tutorial chapter"&gt;Tutorial chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>Control structures</title><link href="https://www.qftest.com/en/support/videos/control-structures.html" rel="alternate"/><published>2021-12-29T00:00:00+01:00</published><updated>2021-12-29T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-12-29:/en/support/videos/control-structures.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/controlsweb.html#sec_controlstructuresweb" title="Tutorial chapter"&gt;Tutorial chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>Creating your own test suite</title><link href="https://www.qftest.com/en/support/videos/creating-your-own-test-suite.html" rel="alternate"/><published>2021-12-29T00:00:00+01:00</published><updated>2021-12-29T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-12-29:/en/support/videos/creating-your-own-test-suite.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/webtestsuite.html#sec_webtestsuite" title="Tutorial chapter"&gt;Tutorial chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>It’s time to start your own Application</title><link href="https://www.qftest.com/en/support/videos/its-time-to-start-your-own-application.html" rel="alternate"/><published>2021-12-29T00:00:00+01:00</published><updated>2021-12-29T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-12-29:/en/support/videos/its-time-to-start-your-own-application.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/ownappweb.html#sec_ownappweb" title="Tutorial chapter"&gt;Tutorial chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>The Standard Library</title><link href="https://www.qftest.com/en/support/videos/the-standard-library.html" rel="alternate"/><published>2021-12-29T00:00:00+01:00</published><updated>2021-12-29T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-12-29:/en/support/videos/the-standard-library.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/stdlibweb.html#sec_StandardLibraryWeb"&gt;Tutorial chapter&lt;/a&gt;
&lt;a href="/doc/manual/en/user_stdlib.html"&gt;Manual chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>Variables and Procedure Parameters</title><link href="https://www.qftest.com/en/support/videos/variables-and-procedure-parameters.html" rel="alternate"/><published>2021-12-29T00:00:00+01:00</published><updated>2021-12-29T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-12-29:/en/support/videos/variables-and-procedure-parameters.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/variablestackweb.html#sec_variablestackweb" title="Tutorial chapter"&gt;Tutorial chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>Working with a sample test suite</title><link href="https://www.qftest.com/en/support/videos/working-with-a-sample-test-suite.html" rel="alternate"/><published>2021-12-29T00:00:00+01:00</published><updated>2021-12-29T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-12-29:/en/support/videos/working-with-a-sample-test-suite.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/webdemo.html#sec_webdemo" title="Tutorial chpater"&gt;Tutorial chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>Writing a Procedure</title><link href="https://www.qftest.com/en/support/videos/writing-a-procedure.html" rel="alternate"/><published>2021-12-29T00:00:00+01:00</published><updated>2021-12-29T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-12-29:/en/support/videos/writing-a-procedure.html</id><content type="html">&lt;p&gt;&lt;a href="https://www.qftest.com/doc/tutorial/en/firstprocweb.html#sec_FirstProcedureWeb" title="Tutorial chapter"&gt;Tutorial chapter&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="tutorialvideos"/></entry><entry><title>Everything in flux – Continuous Integration on the Example of Jenkins</title><link href="https://www.qftest.com/en/support/videos/continuous-integration-on-the-example-of-jenkins.html" rel="alternate"/><published>2021-10-12T00:00:00+02:00</published><updated>2021-10-12T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-10-12:/en/support/videos/continuous-integration-on-the-example-of-jenkins.html</id><summary type="html">&lt;p&gt;Using QF-Test with Continuous Integration Tools on the Example of Jenkins.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Using QF-Test with Continuous Integration Tools on the Example of Jenkins.&lt;/p&gt;
&lt;p&gt;&lt;a href="/en/blog/article/using-qf-test-in-continuous-integration-systems.html"&gt;Further information&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/qfs/webinars/-/blob/main/continous_integration_en.pdf"&gt;Presentation&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>CDP-Driver for Web Performance Gain</title><link href="https://www.qftest.com/en/support/videos/cdp-driver-for-web-performance-gain.html" rel="alternate"/><published>2021-07-20T00:00:00+02:00</published><updated>2021-07-20T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-07-20:/en/support/videos/cdp-driver-for-web-performance-gain.html</id><summary type="html">&lt;p&gt;A special webinar about the new CDP Driver connection mode for web applications.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A special webinar about the new CDP Driver connection mode for web applications.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/tech_webconnectionmode.html"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>QF-Test Version 5.3 – CDP-Driver and New Icons</title><link href="https://www.qftest.com/en/support/videos/qf-test-version-53-cdp-driver-and-new-icons.html" rel="alternate"/><published>2021-05-20T00:00:00+02:00</published><updated>2021-05-20T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-05-20:/en/support/videos/qf-test-version-53-cdp-driver-and-new-icons.html</id><summary type="html">&lt;p&gt;Highlights QF-Test version 5.3&lt;/p&gt;</summary><content type="html">&lt;p&gt;Highlights QF-Test version 5.3&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved web performance through browser connection mode CDP-Driver (Chrome DevTools Protocol)&lt;/li&gt;
&lt;li&gt;More modern QF-Test interface&lt;/li&gt;
&lt;li&gt;Update of Jython integration to fully support international character sets&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>Pixel picking – Image Testing with QF-Test</title><link href="https://www.qftest.com/en/support/videos/image-testing-with-qf-test.html" rel="alternate"/><published>2021-05-14T00:00:00+02:00</published><updated>2021-05-14T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-05-14:/en/support/videos/image-testing-with-qf-test.html</id><summary type="html">&lt;p&gt;Intelligent Image Comparison with QF‑Test&lt;/p&gt;</summary><content type="html">&lt;p&gt;Intelligent Image Comparison with QF‑Test&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/tech_imagealgorithmdetails.html" title="Testing PDF Documents (Manual)"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Quick run through QF-Test</title><link href="https://www.qftest.com/en/support/videos/quick-run-through-qf-test.html" rel="alternate"/><published>2021-05-06T00:00:00+02:00</published><updated>2021-05-06T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-05-06:/en/support/videos/quick-run-through-qf-test.html</id><summary type="html">&lt;p&gt;The most important features of QF-Test summarized.&lt;/p&gt;</summary><content type="html">&lt;p&gt;The most important features of QF-Test summarized.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction: Supported technologies&lt;/li&gt;
&lt;li&gt;Tree structure, variables, capture &amp;amp; replay&lt;/li&gt;
&lt;li&gt;Documentation: Tutorial, manual, (starter)videos&lt;/li&gt;
&lt;li&gt;Test execution and reports, Connection to build tools: Jenkins&lt;/li&gt;
&lt;li&gt;Scripting: Jython, Groovy, JavaScript&lt;/li&gt;
&lt;li&gt;Component recognition&lt;/li&gt;
&lt;li&gt;Further features&lt;/li&gt;
&lt;li&gt;Help from QFS: blog, training and support&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="startervideos"/></entry><entry><title>PDF Testing with QF-Test</title><link href="https://www.qftest.com/en/support/videos/special-webinar-pdf-testing-with-qf-test.html" rel="alternate"/><published>2021-02-25T00:00:00+01:00</published><updated>2021-02-25T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2021-02-25:/en/support/videos/special-webinar-pdf-testing-with-qf-test.html</id><summary type="html">&lt;p&gt;Often PDF documents are the final result of a business process that you can check easily with QF-Test, too.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Often PDF documents are the final result of a business process that you can check easily with QF-Test, too.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/pdf-testing.html#sec_pdf" title="Testing PDF Documents (Manual)"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="technologyvideos"/><category term="specialwebinars"/></entry><entry><title>Uniting two worlds – Integrated testing of Webswing applications with QF-Test</title><link href="https://www.qftest.com/en/support/videos/integrated-testing-of-webswing-applications-with-qf-test-special-webinar.html" rel="alternate"/><published>2020-11-27T00:00:00+01:00</published><updated>2020-11-27T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2020-11-27:/en/support/videos/integrated-testing-of-webswing-applications-with-qf-test-special-webinar.html</id><summary type="html">&lt;p&gt;Integrated testing of Webswing applications with QF-Test - Uniting two worlds - Webswing brings Java into the browser, QF-Test ensures the quality by interacting with both simultaneously.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Integrated testing of Webswing applications with QF-Test - Uniting two worlds - Webswing brings Java into the browser, QF-Test ensures the quality by interacting with both simultaneously.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Webswing brings Java into the browser&lt;/li&gt;
&lt;li&gt;QF-Test ensures the quality by interacting with both simultaneously&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="/en/product/qf-test/java-testing/webswing-testing-with-qf-test.html" title="Webswing Testing with QF-Test"&gt;QF-Test and Webswing&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="specialwebinars"/></entry><entry><title>Find the keys – UI test automation needs robust component recognition</title><link href="https://www.qftest.com/en/support/videos/component-recognition-special-webinar.html" rel="alternate"/><published>2020-10-06T00:00:00+02:00</published><updated>2020-10-06T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2020-10-06:/en/support/videos/component-recognition-special-webinar.html</id><summary type="html">&lt;p&gt;Component recognition in QF-Test is quite flexible. In addition to standard controls like buttons or checkboxes it also supports complex components (dynamic trees, tables etc.). This webinar shows the basics of this algorithm and configuration options for Java, Web and Windows applications. We will explain how to achieve robust component …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Component recognition in QF-Test is quite flexible. In addition to standard controls like buttons or checkboxes it also supports complex components (dynamic trees, tables etc.). This webinar shows the basics of this algorithm and configuration options for Java, Web and Windows applications. We will explain how to achieve robust component recognition.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/bp_componentrecognition.html#sec_bpComponentRecognition" title="How to achieve robust component recognition? (Manual)"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="featurevideos"/><category term="specialwebinars"/></entry><entry><title>QF-Test and 3rd-party tools</title><link href="https://www.qftest.com/en/support/videos/qf-test-and-3rd-party-tools.html" rel="alternate"/><published>2020-07-28T00:00:00+02:00</published><updated>2020-07-28T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2020-07-28:/en/support/videos/qf-test-and-3rd-party-tools.html</id><summary type="html">&lt;p&gt;This video is about the integration of QF‑Test in 3rd-party tools (Continuous integration, Test management, developer tools etc.) as well as triggering test execution and controlling reports.&lt;/p&gt;</summary><content type="html">&lt;p&gt;This video is about the integration of QF‑Test in 3rd-party tools (Continuous integration, Test management, developer tools etc.) as well as triggering test execution and controlling reports.&lt;/p&gt;
&lt;p&gt;&lt;a href="/en/product/faq/can-qf-test-be-integrated-with-other-tools.html"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="featurevideos"/></entry><entry><title>QF-Test Version 5.1 – Embedded browsers</title><link href="https://www.qftest.com/en/support/videos/qf-test-version-51-embedded-browsers.html" rel="alternate"/><published>2020-07-08T00:00:00+02:00</published><updated>2020-07-08T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2020-07-08:/en/support/videos/qf-test-version-51-embedded-browsers.html</id><summary type="html">&lt;p&gt;The medium upgrade QF-Test 5.1 focuses on bringing support for embedded browsers &amp;ndash; JxBrowser (including version 7), SWT Browser and JavaFX WebView, up to par with that for &amp;#8220;normal&amp;#8221; browsers. It also comes with support for Java 15, native Electron dialogs and customizable HTML reports. The internal JRE provided with …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The medium upgrade QF-Test 5.1 focuses on bringing support for embedded browsers &amp;ndash; JxBrowser (including version 7), SWT Browser and JavaFX WebView, up to par with that for &amp;#8220;normal&amp;#8221; browsers. It also comes with support for Java 15, native Electron dialogs and customizable HTML reports. The internal JRE provided with QF-Test has been updated to Zulu OpenJDK 8_252.&lt;/p&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>QF-Test for UI-based Load Tests</title><link href="https://www.qftest.com/en/support/videos/qf-test-for-ui-based-load-tests.html" rel="alternate"/><published>2020-06-29T00:00:00+02:00</published><updated>2020-06-29T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2020-06-29:/en/support/videos/qf-test-for-ui-based-load-tests.html</id><summary type="html">&lt;p&gt;This video shows you how you can create system load via the UI with the QF-Test Demo test suite for monitoring and measuring real end-to-end times as well as user acceptance times and ressources needed.&lt;/p&gt;</summary><content type="html">&lt;p&gt;This video shows you how you can create system load via the UI with the QF-Test Demo test suite for monitoring and measuring real end-to-end times as well as user acceptance times and ressources needed.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/user_loadtest.html" title="Performing UI-based load tests (Manual)"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="featurevideos"/></entry><entry><title>Testing native Windows applications with QF-Test</title><link href="https://www.qftest.com/en/support/videos/testing-native-windows-applications-with-qf-test.html" rel="alternate"/><published>2020-05-04T00:00:00+02:00</published><updated>2020-05-04T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2020-05-04:/en/support/videos/testing-native-windows-applications-with-qf-test.html</id><summary type="html">&lt;p&gt;There are no changes to the familiar QF-Test workflow and you can connect to your application using window titles.&lt;/p&gt;</summary><content type="html">&lt;p&gt;There are no changes to the familiar QF-Test workflow and you can connect to your application using window titles.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Classic Win32 applications&lt;/li&gt;
&lt;li&gt;.NET applications (often developed in C#) based on Windows Presentation Foundation (WPF) or Windows Forms&lt;/li&gt;
&lt;li&gt;Windows Apps / Universal Windows Platform (UWP) applications using XAML controls&lt;/li&gt;
&lt;li&gt;Modern C++ applications (for example Qt applications)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="/en/product/qf-test/windows-testing.html"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="technologyvideos"/></entry><entry><title>QF-Test Version 5.0 – Testing Windows applications</title><link href="https://www.qftest.com/en/support/videos/qf-test-version-50-testing-windows-applications.html" rel="alternate"/><published>2020-02-06T00:00:00+01:00</published><updated>2020-02-06T00:00:00+01:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2020-02-06:/en/support/videos/qf-test-version-50-testing-windows-applications.html</id><summary type="html">&lt;p&gt;There are no changes to the familiar QF-Test workflow in testing Windows desktop applications and you can connect to your application using window titles.&lt;/p&gt;</summary><content type="html">&lt;p&gt;There are no changes to the familiar QF-Test workflow in testing Windows desktop applications and you can connect to your application using window titles.&lt;/p&gt;
&lt;h3&gt;Highlights QF-Test Version 5.0&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;New Engine for &lt;a href="https://www.qftest.com/doc/manual/en/user_wintesting.html" title="Testing native Windows applications"&gt;Windows applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.qftest.com/doc/manual/en/user_gui.html#usec_gui_suite"&gt;Modernized User Interface&lt;/a&gt; of QF‑Test&lt;/li&gt;
&lt;li&gt;Tests with &lt;a href="https://www.qftest.com/doc/manual/en/user_installation.html#usec_techversions" title="Supported technology versions"&gt;Java 14&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Test-suites with comments &lt;a href="https://www.qftest.com/doc/manual/en/miscnodes.html#step_CommentStep"&gt;Comment node&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="videos"/><category term="releasevideos"/></entry><entry><title>Variables in QF-Test</title><link href="https://www.qftest.com/en/support/videos/variables-in-qf-test.html" rel="alternate"/><published>2019-04-08T00:00:00+02:00</published><updated>2019-04-08T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2019-04-08:/en/support/videos/variables-in-qf-test.html</id><summary type="html">&lt;p&gt;What are variables in QF-Test for? Reading of test data, retreating test data during the test-run, reusing of a check for a better test flow for more flexible and maintainable tests.&lt;/p&gt;</summary><content type="html">&lt;p&gt;What are variables in QF-Test for? Reading of test data, retreating test data during the test-run, reusing of a check for a better test flow for more flexible and maintainable tests.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/user_variables.html#usec_variables" title="Variables in QF-Test (Manual)"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="featurevideos"/></entry><entry><title>QF-Test Jenkins Plugin</title><link href="https://www.qftest.com/en/support/videos/qf-test-jenkins-plugin.html" rel="alternate"/><published>2015-10-05T00:00:00+02:00</published><updated>2015-10-05T00:00:00+02:00</updated><author><name>Quality First Software</name></author><id>tag:www.qftest.com,2015-10-05:/en/support/videos/qf-test-jenkins-plugin.html</id><summary type="html">&lt;p&gt;&lt;a href="https://www.jenkins.io/"&gt;Jenkins&lt;/a&gt; is a continuous integration build tool. Therefore it is meant to control and monitor the build process within a software project. One important step in this build process is automated testing for example UI tests with QF-Test.&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://www.jenkins.io/"&gt;Jenkins&lt;/a&gt; is a continuous integration build tool. Therefore it is meant to control and monitor the build process within a software project. One important step in this build process is automated testing for example UI tests with QF-Test.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.qftest.com/doc/manual/en/user_jenkins.html#usec_jenkins" title="Jenkins plug-in (Manual)"&gt;Further information&lt;/a&gt;&lt;/p&gt;</content><category term="videos"/><category term="featurevideos"/></entry></feed>