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.
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.
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?
It is possible to write end-to-end tests spanning multiple products written in different languages as long as the products provide some kind of proper interface. Ideally this is some messaging interface (e.g. Http REST). I would suggest to use the Wiki interface directly instead of accessing the UI over the browser.
I assume that 'Wiki A' provides such an interface for adding and changing content. Your integration test first of all uses this interface in order to change some data and trigger the whole process. Then you need to make sure that the content change has been processed. You can do that by verifying the change in 'Wiki B'. Also ideally 'Wiki B' offers some kind of interface to get some content, too. So your test should just use the messaging interfaces of 'Wiki A' and 'Wiki B'.
1) Trigger 'Wiki A' change
2) Verify content on 'Wiki B'
Maybe you need to wait some time between step 1 and 2 for the translation and import. You can write these kind of integration tests fully automated with test frameworks like Citrus (http://citrusframework.org)