Framework Selection

Hello There,

I need a suggestion on approach for testing a Web, Desktop and Mobile Native app automation testing.
Web Application is built in React JS
Mobile and Desktop is built in Flutter

Now, my concern is selecting a appropriate framework which caters all these 3 areas.
I need a common solution (if technically possible) which can help me to reuse my test scripts.
My team uses Cypress for Web Automation. Earlier we were on Selenium but to keep things simple and in sync with the dev team, we switched to Cypress for web testing. However, Cypress doesnt support native mobile app testing.
If i want to opt for Selenium webdriver + appium solution, then it will be hard time for me to switch back to Selenium .

Please suggest me a robust solution which is scalable and maintainable

1 Like

appropriate framework which caters all these 3 areas … which can help me to reuse my test script

You may want to take a look at Dave Farley’s DSL Architecture.

The proposal is for you to describe the scenarios in the DSL using the domain language, agnostic to implementation details, and interact with the product indirectly, through a protocol driver interface.

Then for each product, you can implement a different protocol driver, to satisfy the implementation details requirements.

@rightsaidjames also shared the following in :speech_balloon: Quick Question.

Originally sent in πŸ’¬ Quick Question
rightsaidjames

@aj07 If Cypress is working well for you, and the three different platforms share the same UI and/or backend, can you keep most of your existing tests in Cypress but also write some integration/regression tests to cover the platform-specific functionality?

I don't think there is any non-Selenium solution that will offer the ease of use of Cypress whilst being compatible with all of those platforms, so really it's a choice between maintaining separate test suites for different platforms OR choosing a 'default' platform where most UI tests are running, then focus on testing lower down the stack to ensure coverage across all platforms.

Playwright has experimental Android support (Android | Playwright) but they don't yet have iOS support, and I couldn't find anything relevant about testing Flutter via Playwright.

And it seems like the norm for Flutter apps is to use their built-in tooling:

2 Likes

Hi @aj07 there is simple out-of-the-box DSL-like solution that would work out of the box: testrigor.com it supports both ReactJS and Flutter out of the box, more over if you migrate to Angular+ReactNative all of your tests will continue to function. Disclaimer: I’m a testRigor co-founder

1 Like

Thank you for sharing your thoughts. I am having a look at this architecture and planning to come up with some scenarios and present it to the stakeholders,

1 Like

Thanks for sharing.
Does testRigor support Unity packages for 2D and 3D structures? because we have to test 3D models in our app as well as in desktop app.
If yes, do you have any reference which i can look at?

1 Like

There are several frameworks available that can cater to all three areas of testing, including Web, Desktop, and Mobile Native app automation testing. Some popular options include:

Appium: Appium is an open-source mobile testing framework that supports both iOS and Android platforms. It supports automation for Native, Hybrid, and Mobile Web applications.

Detox: Detox is a gray box end-to-end testing and automation framework that supports both iOS and Android platforms. It can be used for testing Native, Hybrid, and Mobile Web applications.

TestProject: TestProject is a free end-to-end test automation platform for web, mobile, and desktop applications. It provides a common framework for testing all three platforms and allows you to create and run tests on any browser, device, or operating system.

Xamarin.UITest: Xamarin.UITest is an open-source mobile testing framework that supports both iOS and Android platforms. It can be used for testing Native and Hybrid applications.

Cypress: Cypress is a popular testing framework for web applications built on React JS. It offers a simple and easy-to-use testing framework that supports end-to-end testing for web applications.

Considering your team already uses Cypress for web automation, you can integrate Appium for mobile automation testing. Appium provides a common API for both Android and iOS platforms, making it easier to reuse the same test scripts across different platforms. Moreover, since you have experience with Selenium, you can leverage that knowledge for Appium automation testing.