-
Notifications
You must be signed in to change notification settings - Fork 58
CancelErrors on Chrome/Android #95
Comments
I suspect this is related to dojo/loader#39, though it needs more digging. |
Based on what @vansimke said in dojo/loader#39, I don't think this is related to that. But what he said is probably related to this. |
Added comment that was mistakenly added to dojo/loader#39: I've played around with this and I think this may be related to a performance issue in CI. If I set the timeout for the .get() test to 60 seconds and the others to 30 seconds, then all the tests pass in Chrome and Android. Not sure if that is an acceptable solution though since this means that these tests are going to be prone to fail at seemingly random intervals. |
Wow, 60 seconds. That seems crazy, especially when I think the other browsers complete that just fine. I haven't looked at the timing on the other browsers, but I bet it is a lot less than 30-60 seconds. It seems like something else is causing a problem right? |
I would expect so. Chrome is fine with 30 and 10 (didn't play to see how low I could go, but 10s failed with I'm going to dig into the guts of the tests next and see if there is something odd going on in there. I can't imagine what though. |
I wonder if we're clogging the browser's request pipeline? Maybe we're making too many HTTP requests as part of running the suite and it is just taking time for them to clean themselves up. |
The resources allocated for cloud testing can be extremely limited, making timing-sensitive tests very unreliable. I think our best bet is to give tests very generous timeouts, but have them resolve themselves asap when the test conditions are met. |
I think that I might be on to something. When I run the full suite, the Android browser takes 45+ seconds to return, but running only the tests/unit/request.ts tests brings it down to less than 2s. I'm pretty sure the tests are fighting with Intern for network resources. |
@jason0x43 any thoughts on this? I know we had challenges with IE9 and reordered the way we return the results, but now it seems like on other large test suites we are having something similar and have reliably triggered it now on both Chrome and Android. Maybe something @jacobroufa and @vansimke could work on together? |
@vansimke is likely correct that the browser's request pipeline is being saturated. The WebDriver reporter in intern master significantly improves the situation by buffering messages and sending them using a single active connection at a time. This appeared to improve the stability of the core tests in several runs I made this weekend. At least, I got significantly fewer failures with intern master than with 3.0.6. In 3.0.6 you can set Assuming network contention really is the issue, it may be useful for Intern to provide a method allowing network-sensitive tests to clear out the lifecycle message queue before the test starts. Even though the above two changes (using intern master and using |
Setting I'm going to keep working with this to see if we can improve the stability without compromising the execution time, but for now, I would recommend setting the |
@vansimke I wouldn't be opposed either to trying out |
@kitsonk That is what I'm experimenting with now. I'll update this issue when I get results. |
sinon does not do well in certain async situations which was the root cause to this. |
There are several tests appear to fail predictably on CI for Chrome/Android:
The text was updated successfully, but these errors were encountered: