[Suggestion] Add end to end automated test repo and modify CI structure

This week we started working on ui for stock management.

Right now, we have:

Unit/integration tests for java code(service)

Contract tests for APIs(cross service)

Jasmine tests for js code(UI)

But what we do not have is:

Tests that runs the system as a whole, that penetrates both UI and APIs.

I would suggest we add a github repo for automated end to end tests. (Maybe cucumber+selenium)

And modify CI structure to incorporate that.

I imagine that CI would look something like this:

This screen shot was taken from a jenkins running on my laptop, with a plugin https://wiki.jenkins-ci.org/display/JENKINS/Delivery+Pipeline+Plugin

This plugin allows us to put more than one up-down stream relations in one page, so that we can view both UI related and API related jobs in one page.

My rough idea is like this:

1 Each service would have a pipeline like the one shown above.

2 Within each pipeline, there are two parts: the UI part and the API part.

2a the UI part starts with code committed to UI repo, ends with reference-ui deployed to test/uat.

2b the API part starts with code committed to service repo, ends with service docker image deployed to test/uat.

3 All the jobs with red text “As is” are the jobs we already have, they don’t have to change.

4 A new job needs to be added for each service: x-e2e(it would only run e2e test related to x service, after code committed to x service repo).

5 Another new job needs to be added and shared by all pipelines: all-e2e(it runs all e2e tests after reference-ui docker image is rebuilt).

Please let me know if you think this makes sense.