{"id":29024,"date":"2021-06-01T20:06:00","date_gmt":"2021-06-01T20:06:00","guid":{"rendered":"https:\/\/app14743.cloudwayssites.com\/?p=29024"},"modified":"2022-03-22T08:59:16","modified_gmt":"2022-03-22T15:59:16","slug":"automating-functional-end-to-end-tests-cross-platform","status":"publish","type":"post","link":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/","title":{"rendered":"Automating Functional \/ End-2-End Tests Across Multiple Platforms"},"content":{"rendered":"\n<p>This post talks about an approach to Functional (end-to-end) Test Automation that works for a product available on multiple platforms.&nbsp;<\/p>\n\n\n\n<p>It shares details on the thought process &amp; criteria involved in creating a solution that includes how to write the tests, and run it across the multiple platforms without any code change.<\/p>\n\n\n\n<p>Lastly, the open-sourced solution also has examples on how to implement a test that orchestrates the simulation between multiple devices \/ browsers to simulate multiple users interacting with each other as part of the same test.<\/p>\n\n\n\n<p>We will cover the following topics.<\/p>\n\n\n\n<ul><li><a href=\"#h-background\">Background<\/a><\/li><li><a href=\"#h-case-study\">Case Study<\/a><\/li><li><a href=\"#h-test-automation-approach\">Test Automation Approach<\/a><\/li><li><a href=\"#h-test-automation-implementation\">Test Automation Implementation<\/a><ul><li><a href=\"#h-tech-stack\">Tech Stack<\/a><\/li><li><a href=\"#h-test-intent-specification\">Test Intent Specification<\/a><ul><li><a href=\"#h-multi-user-scenarios\">Multi-User Scenarios<\/a><\/li><\/ul><\/li><li><a href=\"#h-configurable-framework\">Configurable Framework<\/a><\/li><li><a href=\"#h-teswiz-framework-architecture\">teswiz Framework Architecture<\/a><\/li><li><a href=\"#h-visual-testing-contrast-advisor\">Visual Testing &amp; Contrast Advisor<\/a><\/li><li><a href=\"#h-reporting\">Reporting<\/a><\/li><\/ul><\/li><li><a href=\"#h-how-can-you-get-started\">How Can You Get Started?<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-background\">Background<\/h2>\n\n\n\n<p>How many times do we see products available only on a single platform? For example, Android app only, or iOS app only?<\/p>\n\n\n\n<p>Organisations typically start building the product on a particular platform, but then they do expand to other platforms as well.&nbsp;<\/p>\n\n\n\n<p>Once the product is available on multiple platforms, do they differ in their functionality? There definitely would be some UX differences, and in some cases, the way to accomplish the functionality would be different, but the business objectives and features would still be similar across both platforms. Also, one platform may be ahead of the other in terms of feature parity.&nbsp;<\/p>\n\n\n\n<p>The above aspects of product development are not new.<\/p>\n\n\n\n<p><strong><em>The interesting question is &#8211; how do you build your Functional (End-2-End \/ UI \/ System) Test Automation for such products?<\/em><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-case-study\">Case Study<\/h2>\n\n\n\n<p>To answer this question, let\u2019s take an example of any video conferencing application &#8211; something that we would all be familiar with in these times. We will refer to this application as \u201c<em>MySocialConnect<\/em>\u201d for the remainder of this post.<\/p>\n\n\n\n<p>MySocialConnect is available on the following platforms:<\/p>\n\n\n\n<ul><li>All modern browsers (Chrome \/ Firefox \/ Edge \/ Safari) available on laptop \/ desktop computers as well as on mobile devices<\/li><li>Android app via Google\u2019s PlayStore<\/li><li>iOS app via Apple\u2019s App Store<\/li><\/ul>\n\n\n\n<p>In terms of functionality, the majority of the functionality is the same across all these platforms. Example:<\/p>\n\n\n\n<ul><li>Signup \/ Login<\/li><li>Start an instant call<\/li><li>Schedule a call<\/li><li>Invite registered users to join an on-going call<\/li><li>Invite non-registered users can join a call<\/li><li>Share screen<\/li><li>Video on-off<\/li><li>Audio on-off<\/li><li>And so on\u2026<\/li><\/ul>\n\n\n\n<p>There are also some functionality differences that would exist. Example:<\/p>\n\n\n\n<ul><li>Safe driving mode is available only in Android and iOS apps<\/li><li>Flip video camera is available only in Android and iOS apps<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-test-automation-approach\">Test Automation Approach<\/h2>\n\n\n\n<p><strong><em>So, repeating the big question for MySocialConnect is &#8211; how do you build your Functional (End-2-End \/ UI \/ System) Test Automation for such products?<\/em><\/strong><\/p>\n\n\n\n<p>I would approach Functional automation of MySocialConnect as follows:<\/p>\n\n\n\n<ol><li>The test should be specified only once. The implementation details should figure out how to get the execution happening across any of the supported platforms<\/li><li>For the common functionalities, we should implement the business logic only once<\/li><li>There should be a way to address differences in business functionality across platforms<\/li><li>The value of the automation for MySocialConnect is to simulate \u201creal calls\u201d &#8211; i.e. more than one user in the call &#8211; and interacting with each other<\/li><\/ol>\n\n\n\n<p>In addition, I need the following capabilities in my automation:<\/p>\n\n\n\n<ul><li>Rich reports<ul><li>With on-demand screenshots attached in the report<\/li><li>Details of the devices \/ browsers where the test&nbsp;<\/li><li>Understand trends of test execution results<\/li><li>Test Failure analysis capabilities<\/li><\/ul><\/li><\/ul>\n\n\n\n<ul><li>Support parallel \/ distributed execution of tests to get faster feedback<\/li><li>Visual Testing support using <a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-testing\/\">Applitools Visual AI<\/a><ul><li>To reduce the number of validations I need to write (less code)<\/li><li>Increase coverage (functional and UI \/ UX)<\/li><li>Contrast Advisor to ensure my product meets the WCAG 2.0 \/ 2.1 guidelines for Accessibility<\/li><\/ul><\/li><li>Ability to run on local machines or in the CI<\/li><li>Ability to run the full suite or a subset of tests, on demand, and without any code change<\/li><li>Ability to run tests across any environment<\/li><li>Ability to easily specify test data for each supported environment&nbsp;<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-test-automation-implementation\">Test Automation Implementation<\/h2>\n\n\n\n<p>To help implement the criteria mentioned above, I built (and open-sourced on github) my automation framework &#8211; <a href=\"https:\/\/github.com\/znsio\/teswiz\">teswiz<\/a>. The implementation is based on the discussion and guidelines in <a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-mobile-test-automation-best-practices\/\">[Visual] Mobile Test Automation Best Practices<\/a> and <a href=\"https:\/\/www.infoq.com\/articles\/test-automation-ai-ml\">Test Automation in the World of AI &amp; ML<\/a>.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-tech-stack\">Tech Stack<\/h3>\n\n\n\n<p>After a lot of consideration, I chose the following tech stack and toolset to implement my automated tests in <a href=\"https:\/\/github.com\/znsio\/teswiz\">teswiz<\/a>.<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/cucumber.io\">cucumber-jvm<\/a> &#8211; specify the test in simple, common business language<\/li><li><a href=\"https:\/\/github.com\/AppiumTestDistribution\/AppiumTestDistribution\">AppiumTestDistribution<\/a> &#8211; manages Android and iOS devices, and Appium<\/li><li><a href=\"https:\/\/appium.io\">Appium<\/a><\/li><li><a href=\"https:\/\/selenium.dev\">Selenium WebDriver<\/a><\/li><li><a href=\"https:\/\/reportportal.io\">reportportal.io<\/a><\/li><li><a href=\"https:\/\/app14743.cloudwayssites.com\">Applitools Visual AI<\/a><\/li><li><a href=\"https:\/\/gradle.org\/\">gradle<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-test-intent-specification\">Test Intent Specification<\/h3>\n\n\n\n<p>Using Cucumber, the tests are specified with the following criteria:<\/p>\n\n\n\n<ul><li>The test intent should be clear and \u201cspeak\u201d business requirements<\/li><li>The same test should be able to execute against all supported platforms (assuming feature parity)<\/li><li>The clutter of the assertions should not pollute the test intent. That is implementation detail<\/li><\/ul>\n\n\n\n<p>Based on these criteria, here is a simple example of how the test can be written.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/THov4godVcJ7AQ6EAYvK7n8IWaEDDwKvPd6n0ehibrlcvzIoKEGD9juyWAPbJTwjItky1BIhwNu8OoykWXO9tZDrZUQ14zDUrpNBIYopJE0h5HPAItLF_9UXPo0VPKuNxnXy0-TH\" alt=\"\"\/><\/figure>\n\n\n\n<p>The tags on the above test indicates that the test is implemented and ready for execution against the Android apk and the web browser.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-multi-user-scenarios\">Multi-User Scenarios<\/h4>\n\n\n\n<p>Given the context of <strong><em>MySocialConnect<\/em><\/strong>, implementing tests that are able to simulate real meeting scenarios would add the most value &#8211; as that is the crux of the product.<\/p>\n\n\n\n<p>Hence, there is support built-in to the teswiz framework to allow implementation of multi-user scenarios. The main criteria for implementing such scenarios are:<\/p>\n\n\n\n<ul><li>One test to orchestrate the simulation of multi-user scenarios<\/li><li>The test step should indicate \u201cwho\u201d is performing the action, and on \u201cwhich\u201d platform<\/li><li>The test framework should be able to manage the interactions for each user on the specified platform.<\/li><\/ul>\n\n\n\n<p>Here is a simple example of how this test can be specified.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/kCNsBJiAh7-j-d_2nt-YoqpHnx3eQpoLHriuujru3ESpV8sOsYEGEi36_Nnraf1IDfraomjdB2dG2yWhnHLAfO8KcnXpS0S9V2vh2Mbs3SYADd3HTWddTTn00lEDh2uM55Sgvv6I\" alt=\"\"\/><\/figure>\n\n\n\n<p>In the above example, there are 2 users &#8211; \u201cI\u201d and \u201cyou\u201d, each on a different platform &#8211; \u201candroid\u201d and \u201cweb\u201d respectively.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-configurable-framework\">Configurable Framework<\/h3>\n\n\n\n<p>The automated tests are run in different ways &#8211; depending on the context.<\/p>\n\n\n\n<p>Ex: In CI, we may want to run all the tests, for each of the supported platforms<\/p>\n\n\n\n<p>However, on local machines, the QA \/ SDET \/ Developers may want to run only specific subset of the tests &#8211; be it for debugging, or verifying the new test implementation.<\/p>\n\n\n\n<p>Also, there may be cases where you want to run the tests pointing to your application for a different environment.<\/p>\n\n\n\n<p>The teswiz framework supports all these configurations, which can be controlled from the command-line. This prevents having to make any code \/ configuration file changes to run a specific subset type of tests.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-teswiz-framework-architecture\">teswiz Framework Architecture<\/h3>\n\n\n\n<p>This is the high-level architecture of the teswiz framework.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/unified-e2e-FrameworkArchitecture.jpg\" alt=\"\" class=\"wp-image-29033\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/unified-e2e-FrameworkArchitecture.jpg 1600w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/unified-e2e-FrameworkArchitecture-300x169.jpg 300w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/unified-e2e-FrameworkArchitecture-1024x576.jpg 1024w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/unified-e2e-FrameworkArchitecture-768x432.jpg 768w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/unified-e2e-FrameworkArchitecture-1536x864.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-visual-testing-contrast-advisor\">Visual Testing &amp; Contrast Advisor<\/h3>\n\n\n\n<p>Based on the data from the study done on the \u201c<a href=\"https:\/\/app14743.cloudwayssites.com\/impact-of-visual-ai\/\">Impact of Visual AI on Test Automation<\/a>,\u201d Applitools Visual AI helps automate your <a href=\"https:\/\/app14743.cloudwayssites.com\/functional-testing\/\">Functional Tests<\/a> faster, while making the execution more stable. Along with this, you will get increased test coverage and will be able to find significantly more functional and visual issues compared to the traditional approach.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"864\" src=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Impact-of-Visual-AI-on-Test-Automation.jpg\" alt=\"\" class=\"wp-image-29029\" srcset=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Impact-of-Visual-AI-on-Test-Automation.jpg 1600w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Impact-of-Visual-AI-on-Test-Automation-300x162.jpg 300w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Impact-of-Visual-AI-on-Test-Automation-1024x553.jpg 1024w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Impact-of-Visual-AI-on-Test-Automation-768x415.jpg 768w, https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Impact-of-Visual-AI-on-Test-Automation-1536x829.jpg 1536w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><\/figure>\n\n\n\n<p>You can also scale your Test Automation execution seamlessly with the <a href=\"https:\/\/app14743.cloudwayssites.com\/product-ultrafast-test-cloud\/\">Applitools UltraFast Test Cloud<\/a> and use the <a href=\"https:\/\/app14743.cloudwayssites.com\/contrast-advisor\/\">Contrast Advisor<\/a> capability to ensure the application-under-test meets the accessibility guidelines of the WCAG 2.0 \/ 2.1 standards very early in the development stage.<\/p>\n\n\n\n<p>Read this blog post about \u201c<a href=\"https:\/\/app14743.cloudwayssites.com\/blog\/visual-ai-hype-or-reality\/\">Visual Testing &#8211; Hype or Reality?<\/a>\u201d to see some real data of how you can reduce the effort, while increasing the test coverage from our implementation significantly by using Applitools Visual AI.<\/p>\n\n\n\n<p>Hence it was a no-brainer to integrate Applitools Visual AI in the teswiz framework to support adding visual assertions to your implementation simply by providing the APPLITOOLS_API_KEY. Advanced configurations to override the defaults for Applitools can be done via the applitools_config.json file.&nbsp;<\/p>\n\n\n\n<p>This integration works for all the supported browsers of WebDriver and all platforms supported by Appium.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-reporting\">Reporting<\/h3>\n\n\n\n<p>It is very important to have good and rich reports of your test execution. These reports not only make it valuable to pinpoint the reasons of the failing test, but also should be able to give an understanding of the trend of execution and quality of the product under test.&nbsp;<\/p>\n\n\n\n<p>I have used <a href=\"https:\/\/reportportal.io\">ReportPortal.io<\/a> as my reporting tool &#8211; it is extremely easy to set up and use and allows me to also add screenshots, log files and other information that may seem important along with the test execution to make root cause analysis easy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-can-you-get-started\">How Can You Get Started?<\/h2>\n\n\n\n<p>I have open-sourced this teswiz framework so you do not need to reinvent the wheel. See this page to get started &#8211; <a href=\"https:\/\/github.com\/znsio\/teswiz#what-is-this-repository-about\">https:\/\/github.com\/znsio\/teswiz#what-is-this-repository-about<\/a><\/p>\n\n\n\n<p>Feel free to raise issues \/ PRs against the project for adding more capabilities that will benefit all.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post talks about an approach to Functional (end-to-end) Test Automation that works for a product available on multiple platforms.&nbsp; It shares details on the thought process &amp; criteria involved&#8230;<\/p>\n","protected":false},"author":37,"featured_media":29040,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[10004],"tags":[10050,10215,16665,10254,10061,10152],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.5 (Yoast SEO v24.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Automating Functional \/ End-2-End Tests Across Multiple Platforms - AI-Powered End-to-End Testing | Applitools<\/title>\n<meta name=\"description\" content=\"This post talks about an approach to Functional (end-2-end) Test Automation that works for a product available on multiple platforms.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automating Functional \/ End-2-End Tests Across Multiple Platforms\" \/>\n<meta property=\"og:description\" content=\"This post talks about an approach to Functional (end-to-end) Test Automation that works for a product available on multiple platforms.&nbsp; It shares\" \/>\n<meta property=\"og:url\" content=\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/\" \/>\n<meta property=\"og:site_name\" content=\"AI-Powered End-to-End Testing | Applitools\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-01T20:06:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-22T15:59:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"831\" \/>\n\t<meta property=\"og:image:height\" content=\"542\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Anand Bagmar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Anand Bagmar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/\"},\"author\":{\"name\":\"Anand Bagmar\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/fc39e08e8c24a4efcf2445d087febd1d\"},\"headline\":\"Automating Functional \/ End-2-End Tests Across Multiple Platforms\",\"datePublished\":\"2021-06-01T20:06:00+00:00\",\"dateModified\":\"2022-03-22T15:59:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/\"},\"wordCount\":1470,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg\",\"keywords\":[\"Cross-browser Testing\",\"Cross-device Testing\",\"Cross-platform Testing\",\"End-to-End Testing\",\"Functional Testing\",\"Test Automation\"],\"articleSection\":[\"Advanced Topics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/\",\"name\":\"Automating Functional \/ End-2-End Tests Across Multiple Platforms - AI-Powered End-to-End Testing | Applitools\",\"isPartOf\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg\",\"datePublished\":\"2021-06-01T20:06:00+00:00\",\"dateModified\":\"2022-03-22T15:59:16+00:00\",\"description\":\"This post talks about an approach to Functional (end-2-end) Test Automation that works for a product available on multiple platforms.\",\"breadcrumb\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#primaryimage\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg\",\"width\":831,\"height\":542},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advanced Topics\",\"item\":\"https:\/\/app14743.cloudwayssites.com\/blog\/category\/advanced-topics\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Automating Functional \/ End-2-End Tests Across Multiple Platforms\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#website\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"name\":\"Applitools Visual AI\",\"description\":\"Applitools delivers full end-to-end test automation with AI infused at every step.\",\"publisher\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#organization\",\"name\":\"Applitools\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"contentUrl\":\"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png\",\"width\":156,\"height\":28,\"caption\":\"Applitools\"},\"image\":{\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/fc39e08e8c24a4efcf2445d087febd1d\",\"name\":\"Anand Bagmar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6d6fe58f00f499285458d74a1b3e4a1a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6d6fe58f00f499285458d74a1b3e4a1a?s=96&d=mm&r=g\",\"caption\":\"Anand Bagmar\"},\"url\":\"https:\/\/app14743.cloudwayssites.com\/blog\/author\/anandbagmar\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Automating Functional \/ End-2-End Tests Across Multiple Platforms - AI-Powered End-to-End Testing | Applitools","description":"This post talks about an approach to Functional (end-2-end) Test Automation that works for a product available on multiple platforms.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/","og_locale":"en_US","og_type":"article","og_title":"Automating Functional \/ End-2-End Tests Across Multiple Platforms","og_description":"This post talks about an approach to Functional (end-to-end) Test Automation that works for a product available on multiple platforms.&nbsp; It shares","og_url":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/","og_site_name":"AI-Powered End-to-End Testing | Applitools","article_published_time":"2021-06-01T20:06:00+00:00","article_modified_time":"2022-03-22T15:59:16+00:00","og_image":[{"width":831,"height":542,"url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg","type":"image\/jpeg"}],"author":"Anand Bagmar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Anand Bagmar","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#article","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/"},"author":{"name":"Anand Bagmar","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/fc39e08e8c24a4efcf2445d087febd1d"},"headline":"Automating Functional \/ End-2-End Tests Across Multiple Platforms","datePublished":"2021-06-01T20:06:00+00:00","dateModified":"2022-03-22T15:59:16+00:00","mainEntityOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/"},"wordCount":1470,"commentCount":0,"publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg","keywords":["Cross-browser Testing","Cross-device Testing","Cross-platform Testing","End-to-End Testing","Functional Testing","Test Automation"],"articleSection":["Advanced Topics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/","url":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/","name":"Automating Functional \/ End-2-End Tests Across Multiple Platforms - AI-Powered End-to-End Testing | Applitools","isPartOf":{"@id":"https:\/\/app14743.cloudwayssites.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#primaryimage"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#primaryimage"},"thumbnailUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg","datePublished":"2021-06-01T20:06:00+00:00","dateModified":"2022-03-22T15:59:16+00:00","description":"This post talks about an approach to Functional (end-2-end) Test Automation that works for a product available on multiple platforms.","breadcrumb":{"@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#primaryimage","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2021\/06\/Automating-Functional-End-2-End-Tests-Across-Multiple-Platforms_831x542.jpg","width":831,"height":542},{"@type":"BreadcrumbList","@id":"https:\/\/app14743.cloudwayssites.com\/blog\/automating-functional-end-to-end-tests-cross-platform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/app14743.cloudwayssites.com\/"},{"@type":"ListItem","position":2,"name":"Advanced Topics","item":"https:\/\/app14743.cloudwayssites.com\/blog\/category\/advanced-topics\/"},{"@type":"ListItem","position":3,"name":"Automating Functional \/ End-2-End Tests Across Multiple Platforms"}]},{"@type":"WebSite","@id":"https:\/\/app14743.cloudwayssites.com\/#website","url":"https:\/\/app14743.cloudwayssites.com\/","name":"Applitools Visual AI","description":"Applitools delivers full end-to-end test automation with AI infused at every step.","publisher":{"@id":"https:\/\/app14743.cloudwayssites.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/app14743.cloudwayssites.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/app14743.cloudwayssites.com\/#organization","name":"Applitools","url":"https:\/\/app14743.cloudwayssites.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/","url":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","contentUrl":"https:\/\/app14743.cloudwayssites.com\/wp-content\/uploads\/2020\/03\/applitools.png","width":156,"height":28,"caption":"Applitools"},"image":{"@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/fc39e08e8c24a4efcf2445d087febd1d","name":"Anand Bagmar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/app14743.cloudwayssites.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6d6fe58f00f499285458d74a1b3e4a1a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6d6fe58f00f499285458d74a1b3e4a1a?s=96&d=mm&r=g","caption":"Anand Bagmar"},"url":"https:\/\/app14743.cloudwayssites.com\/blog\/author\/anandbagmar\/"}]}},"_links":{"self":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/29024"}],"collection":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/comments?post=29024"}],"version-history":[{"count":0,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/posts\/29024\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media\/29040"}],"wp:attachment":[{"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/media?parent=29024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/categories?post=29024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app14743.cloudwayssites.com\/wp-json\/wp\/v2\/tags?post=29024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}