why My Lead OPA test add Lead fails

When you perform OPA test for my lead application, test case “add Lead” via this url:
It will fail:

why My Lead OPA test add Lead fails

The reason could be analyzed via the below picture:

why My Lead OPA test add Lead fails

Our OPA test code calls fireLiveChange function.
The live change event handling written in My lead application code is called, which performs oModel.read to read possible values for “f”. Since we pass “true” to read API, this read is done asynchronously, that is, the execution flow directly returns to our OPA code.
Our OPA test code calls oInput.getSuggestionItems. Unfortunately Items is now still initial, since the asynchronous OData call does not finish yet in timeslot t1.
items[0].getText causes the failure of OPA test.
Till timeslot t2, OData request is done and success handling is called, to fill the SuggestionItems aggregation. t2 > t1, it is too late now.
For detail screenshot of the above five steps, please refer to picture below.

why My Lead OPA test add Lead fails

Screenshot for step1

why My Lead OPA test add Lead fails

Screenshot for step2

why My Lead OPA test add Lead fails

Screenshot for step3

why My Lead OPA test add Lead fails

Screenshot for step5

Solution

We would like to achieve the following call sequences:

why My Lead OPA test add Lead fails

As suggested by Diablo, we could try “wait for aggregation” concept and API to fulfill it:
http://veui5infra.dhcp.wdf.sap.corp:8080/sapui5-sdk-dist/docs/api/symbols/sap.ui.test.matchers.html
To be updated soon.

I have added the new matcher mentioned in wiki and now OPA test of add Lead test succeeds.

why My Lead OPA test add Lead fails

why My Lead OPA test add Lead fails

To summarize,
The newly added matcher will lead to an endless loop by a periodical check with polling interval 400 milliseconds by default, as a result the asynchronously executed OData request has enough time to finish.
In the end we have the following expected time sequence chart.

why My Lead OPA test add Lead fails

If you would like to debug matcher logic, please set breakpoint on line below.

why My Lead OPA test add Lead fails

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
why My Lead OPA test add Lead fails