Hi together,

since we have many different components, it is always difficult to keep them up 
to date and to test when something changes.
Therefore I started to implement an E2E test framework with the help of Cypress 
to test a StreamPipes instance when it was started.

The code is currently in a separate branch [1]. I created a new folder in the 
ui, called cypress [2], containing all the test code.
I also added a short README.

The main idea is to test the workflows of the application as well as the 
adapters and processing elements.

I created some example adapter tests [3], both for specific and generic 
adapters. 
For them, it must be ensured that we have access to the corresponding data 
source and that this contains some sample data.
This will not work for all the adapters, but should be feasible for most of 
them. (e.g. for Kafka we can create a pipeline containing a Kafka sink and then 
read the data with the adapter).
It would be great if we had some simulators for the PLCs, because then we can 
include tests for them as well. Does anyone have an idea how to do that?

Additionally, I added two examples to test processing elements [4].
For a test definition, two csv files must be added to [5]. One contains the 
input data set and one contains the expected result.
For the test a data set adapter is started, then a pipeline is build with the 
processing element and the data lake sink is used to store the data.
Once the data is processed the result is exported from the data lake and 
compared to the file ‘expected.csv’.
Currently the configuration for the processor test must be set in a typescript 
file, but for the future I plan to add a configuration file. Then we only 
require the files with the test data and the configuration.

This is the first time I am implementing such a framework. So if any of you has 
more experience and ideas how we can improve it, please let me know.

[1] https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380 
<https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380>
[2] 
https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380/ui/cypress 
<https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380/ui/cypress>
[3] 
https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380/ui/cypress/integration/adapter
 
<https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380/ui/cypress/integration/adapter>
[4] 
https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380/ui/cypress/integration/pipelineElement
 
<https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380/ui/cypress/integration/pipelineElement>
[5] 
https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380/ui/cypress/fixtures/pipelineElement
 
<https://github.com/apache/incubator-streampipes/tree/STREAMPIPES-380/ui/cypress/fixtures/pipelineElement>



Reply via email to