Imagine that you have a fairly complex service-oriented architecture made by different components. Components are written in different languages (Java, PHP, Ruby) and communicate with each other in different ways (i.e. UI, REST API, in some cases sharing some DB tables, etc).
I am trying to design an integration testing framework for some end-to-end testing. We already have unit/integration tests for the single components, but we would like to build something that fully tests our deployed system (in a real environment) end-to-end to make sure the functionalities (in terms of expected behaviours of the individual components) are provided correctly and that the architecture is configured correctly as well.
The first problems that I'm facing is that most of our UI is written in PHP and UI integration tests are already written for it with Cucumber and a couple of plugins on top. The testing framework I'm writing (in Java) should trigger these features tests and afterwards check that the behaviour of related components is as expected.
Obviously, I could rewrite the UI tests using a Java-friendly component like Selenium, but it doesn't make sense to duplicate the effort.
Another solution is to run the existing tests with an exec() call within Java, wait that they return, possibly parse the output and proceed with the other actions/checks that need to be done.
Embedding the existing PHP code within Java doesn't seem a viable solution given the way the projects have been written.
None of the solutions described sound convincing to me. Ideally, it would be nice to have some kind of multi-language (and multi-technology) integration framework that can plug-in within the same test suite tests written in different languages and for different environments/components.
Does anybody knows some tool or framework that goes in this direction? If not, what can be a good approach to this kind of problems?