Karma "Disconnected, because no message in 10000 ms." in CI
There is a transient error occurring in the karma
build step in CI and it seems to relate to socket timeouts:
https://gitlab.com/gitlab-org/gitlab-ce/builds/18831905
START:
webpack: wait until bundle finished:
webpack: Compiled successfully.
16 06 2017 12:09:51.772:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/
16 06 2017 12:09:51.780:INFO [launcher]: Launching browser ChromeHeadlessCustom with unlimited concurrency
16 06 2017 12:09:51.800:INFO [launcher]: Starting browser Chrome
16 06 2017 12:09:54.180:INFO [Chrome]: Connected on socket 9fnAfCs0h1n2cM_3AAAA with id 56828663
16 06 2017 12:10:04.186:WARN [Chrome]: Disconnected (1 times), because no message in 10000 ms.
Chrome ERROR
Disconnected, because no message in 10000 ms.
Chrome ERROR
Disconnected, because no message in 10000 ms.
Finished in 10.009 secs / 0 secs @ 12:10:04 GMT+0000 (UTC)
error Command failed with exit code 1.
This issue is not specific to the migration to headless Chrome. It was often seen with PhantomJS as well: https://gitlab.com/gitlab-org/gitlab-ee/builds/18685727 https://gitlab.com/gitlab-org/gitlab-ce/builds/18716001
The culprit appears to be jasmine-core
library, and there is a lengthy issue thread on github pointing out some potential workarounds:
https://github.com/jasmine/jasmine/issues/1327
Here's how angular addressed this problem: https://github.com/angular/angular/pull/17498
TL;DR we should increase the browserNoActivityTimeout
value and we should sprinkle in some async timeouts into our tests with beforeEach
in order to free up the main thread to communicate with the Karma socket.