I am working on a project in which we keep one wiki platform in sync with the content of other. The way we do this is a document edit on 'Wiki A' kicks of a data flow pipeline that transforms data from format of of 'Wiki A' to format of 'Wiki B' and sends this data to 'Wiki B' for import.
I have 3 components.
- 'Wiki A' which is in PHP
- Translation Service which is a Ruby-on-rails service
- 'Wiki B' which is in Java
I want to build an automated end-to-end testing framework which should ideally be able to test the following: The main need for the testing is my unit tests for each product cannot test the communication between the products and do not test the whole end-to-end data flow.
- Edit a page on 'Wiki A'
- Test that it kicks of the data flow
- Test that the TranslationService transformed the data
- Test that 'Wiki B' imports the transformed data
Based on initial research, my options are a recording tools such as Selenium. Selenium can handle the multiple products I want to test, but from what I have seen the tests are fragile. The other option is some development testing tool like Cucumber/Capybara with which I can write robust tests, but I am not sure how it works in a multiple product architecture, each written in a different language.
Am I looking at it in the correct way? Am I too ambitious to attempt a singular end-to-end testing framework spanning multiple products?