Fixes the flaky UncompletedCoroutinesError in AnkiDroidJsAPITest specifically on Windows CI runners.#20442
Closed
Mahakbajpai wants to merge 1 commit intoankidroid:mainfrom
Closed
Fixes the flaky UncompletedCoroutinesError in AnkiDroidJsAPITest specifically on Windows CI runners.#20442Mahakbajpai wants to merge 1 commit intoankidroid:mainfrom
Mahakbajpai wants to merge 1 commit intoankidroid:mainfrom
Conversation
Member
|
The test shouldn't take a minute to execute. We should understand why it took so long. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Purpose / Description
Fixes flaky Windows CI tests in AnkiDroidJsAPITest caused by a 60-second coroutine timeout. Robolectric execution on Windows runners occasionally experiences synchronization overhead that exceeds the default runTest limit.
Fixes
Approach
Instead of a global timeout increase, I have applied a targeted timeout specifically to the ankiGetNoteTagsTest function using runTest(timeout = 2.minutes) (or the specific syntax required by the library version). This addresses the environmental slowness on Windows without masking potential performance regressions in other parts of the test suite.
How Has This Been Tested?
Ran the specific test locally to ensure the syntax is correct and the test passes:
./gradlew :AnkiDroid:testPlayDebugUnitTest --tests "com.ichi2.anki.AnkiDroidJsAPITest"
Learning (optional, can help others)
Found that while runTest has a 60s default, Robolectric on Windows can be significantly slower than on Linux/macOS. By using a targeted timeout instead of a global one in AnkiTest.kt, we maintain the project's performance standards while ensuring CI stability.
Checklist
[x] You have a descriptive commit message with a short title (first line, max 50 chars).
[x] You have commented your code, particularly in hard-to-understand areas
[x] You have performed a self-review of your own code
[ ] UI changes: include screenshots of all affected screens (in particular showing any new or changed strings)
[ ] UI Changes: You have tested your change using the Google Accessibility Scanner