Cucumber : Integration with two different projects - selenium

We have two different projects, one in JS and the other with Java, you know if a single cucumber layer can help me integrate between two project, let's say that one project (JS) is running some operations (testing) that appear on the web application and the second project (JAVA) is running the actions on a mobile device, so we want to be able to combine the two actions, mobile and web application, appreciate the help or ideas, thanks Eyal

1) Are they different projects or the same project but there are 2 or 3 out of web, ios or android versions?
2) Must you write your automation suite in the same language as the application to install test data or use it on this suite?
If you answered 1) with "different projects" or 2) with "Yes" - then it's not wise to do this.
If you want to write a library of helper functions for cross platform purposes, then you can definitely do that. I'm currently looking into the 3 platforms myself, dividing my library into modules and requiring the one I need at the start of run time.
EDIT
In your case, I would go for writing a Cucumber JVM framework, as Java has more robust libraries for working with Desktop and Android applications than JS, from what I've seen on this site.

Related

Is it possible to manage long-term project for automation testing Win and OSX apps?

My current goal is to define a way, how to implement automation testing for Windows and MacOS desktop apps. I would prefer create a Appium-based project (based on my experience) and just handle my project from two OS's. But it seems irrational somehow, so I want to find (if it exists) some kind of tool which allows to write automation tests for both platforms and run them on one machine (currently on MacBook 2021 M1). Is is possible to find something good with all automation-needed features/actions for a long-term project?

Unit test framework for SDK2 apps

Does anybody have a recommendation for unit testing home grown rally apps?
I've started to look at Jasmine as recommended in the Sencha docs and it looks promising, but I'm a little unsure about how to tie in all the Rally infrastructure, and I'm not a Javascript expert.
If anybody has used Jasmine for this, do you have some examples of how to set up a basic configuration for using Jasmine to test a SDK2 Rally app?
One of the next things I wanted to create in my app building framework was a tie to some testing framework. I was leaning towards Zombie, you may want to check that one out.

How can one easily do black box automated testing across multiple platforms?

I work for a software development company that develops a certain application across multiple platforms: Web App, iOS, Android, Mac and Windows. We are looking for a way to do black box automated testing across all these platforms in an easily maintainable way.
So far it seems that Watir (watir.com) will be the best solution for the Web app (I prefer to use Ruby), while MonkeyTalk (www.gorillalogic.com/ testing-tools/monkeytalk) may be the best for our Mobile platforms (because we can write one set of tests for both platforms at the same time). We still have not been able to find a good solution for our desktop platforms.
We're a startup so we don't have the budget for a proprietary solution and those are looking for open source solutions.
Is there a better way to tackle the situation we're in and are there any better solutions for the various platforms we want to test.
You could use cucumber as the main test framework for all platforms (that would allow you to have the same scenarios and tests across all platforms) and use specific tools to exercise the native applications.
You could use cucumber + selenium web driver for your Web App, calabash for Android and iOS (http://github.com/calabash), frank for Mac apps (https://github.com/moredip/Frank). There is probably something for Windows as well to work with cucumber, but I personally don't know about it.
All of these tools would be free.

How do you manage PhoneGap and webapp Code?

As far as I see every time I make a change, for example the value of a configuration variable, I have to
Make a copy of the change in each project (webapp, Android, IPhone, etc.)
Build each project
Distribute each project (besides the webapp)
I have found PhoneGap build which seems to be a great solution for the mobile part. But it's still beta and it doesn't solve everything. I still have webapp's code, which is not exactly the same.
Do you know techniques, tools or tricks, which help to improve this process?
Thanks in advance.
We are currently developing a web/Android app using PhoneGap and Sencha Touch (iOS is coming soon). So far our approach is as follows:
We have one project per platform plus several additional toolkit projects.
One platform is "primary", web in our case. This is what developers mainly use to develop and test the app. We're using jsTestDriver for testing.
During the build, the app is packaged for web in the first step. We're producing several artifacts here (.war file, tests in a .jar file).
"Secondary" platform projects do not include the source code. It gets unpackaged and copied to the right places when projects are built. This also includes tests from the primary platform.
Platform projects contain some additional code - normally only testing code, app code itself is currently cross-platform (not sure if it will stay this way).
So we're doing it mainly through advanced build scripts. We're using Maven for web and Android. iOS is coming soon (into our work, I mean), so we'll be looking for some sensible build tool there too.
We're building our projects using Hudson continuous integration.
What I have to admit is that this whole environment (multi-project Maven builds, JSTD, multi-node Hudson) is a hell of a setup, took quite an effort to figure it out.

a couple questions about the titanium platform

I have recently been browsing frameworks such as JavaScriptMVC, qooxdoo, Sproutcore and others alike which are using javascript to create desktop-like apps in the browser with minimal, or none css/html (depending on the framework).
What I know of titanium is that it uses html/css for the views, and language of choice (javascript, ruby,python,php) for everything else. Then it gets compiled(?) into a native app.
What are the quirks? if any?
Is it necessary for the user to install some sort of a runtime to execute the compiled app?
I suppose javascript is the prefered language, but how are the other ones handled?
For example, which Ruby interpreter would be included, would I be albe to use the ruby stdlib or external libraries? Would it affect the speed of the app? I.e JS > Ruby in terms of speed.
Since the views are CSS/HTML, would it still be necessary to style the elements, add them effects via JS librarier to achieve a widget-like feeling? Or does it come with some pre-made settings/classes for that?
I am not sure if it applies to the desktop package, but is there some syncing with the appcelerator's server required? What would it be necessary for?
I am sorry if the questions sound stupid, but I didn't even realise there are than many tools until recent. I am ultimately looking for something which is easy to use, has an option to work with a back-end server for data exchange, looks preferably good 'out of the box' or doesnt require that much work to get it themed nicely and works on mobile as well as desktop devices.
With Titanium you build your app out using javascript. Titanium ultimately generates its own XCode project for you that is compiled and deployed to a device.
The user does not require any runtime be installed prior to installing your app.
Unless your building custom modules to hook up your own controls you stick with javascript.
Your javascript calls end up as native controls, early versions required css like styling due to reliance on webkit but this is no longer the case.
There is no IDE but it does come with an app to create Titanium projects, test in emulator, deploy etc. It also talks back to HQ for updates.
In answer to (2), Titanium Mobile is Javascript only, but Desktop also supports Python, Perl and PHP.