Improve complete browser book keeping & improve request next module conditions #357
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes two issues:
A browser is considered completed when a
after-tests-complete
ordisconnect
is received. Currently, we keep track of the number of completed browser by incrementing a value. This way of keep track of the completed browsers is prone to issues if duplicate events are fired/received.To help with this, we keep track of the completed browsers with a map using browserId as the key. This allows unique book keeping of each completed browser.
The load-balance functionality uses moduleDone hook from QUnit to request the next test file to load. Since QUnit allows nested modules, it's possible for moduleDone to be called while there are more modules from the test file to be executed. This can cause inefficient load-balancing since a browser in this situation is not free yet.
To help with this, only request the next test file if
this._qunit.config.queue.length
is zero.this._qunit.config.queue
is the queue of tests to be executed. If it is not zero, it means there are still test modules to be ran before the browser is considered free.