google / google/webcrypto.dart

Improve CI reliability and efficiency

Open
#255 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Dart
Stars
116
Forks
110
Avg merge
6d 8h
Merged PRs (30d)
9

Description

CI is unreliable: tests fail randomly. Multiple issues:

- Tests run 2-3 times per job (VM twice, Chrome twice)
- Separate coverage jobs duplicate all test runs
- macOS times out after 15 minutes
- Mobile emulators are flaky

We plan to ship it in two parts:

Structural Cleanup:
- [x] Add concurrency group (cancel superseded runs)
- [x] Remove macos-14 (duplicate of macos-15)
- [x] Merge linux-coverage and windows-coverage into main jobs
- [x] Fix redundant test runs (VM/Chrome now run once per job)
- [ ] ~~Make iOS/Android non-blocking (continue-on-error: true)~~

Emulator Reliability:
The goal is to make mobile tests deterministic by enabling retries and improving infrastructure.

Android

- [ ] ~~Downgrade API 36 to 34 (36 has a known emulator issue; need to evaluate if it was upgraded for a specific reason)~~
- [ ] Cache AVD snapshots (actions/cache@v4)
- [x] Add headless flags: -no-window -gpu swiftshader_indirect -noaudio
- [x] Add 3-attempt retry loop

iOS
- [ ] Add 2-attempt retry wrapper (nick-fields/retry@v3)

Future Discussion:

- [ ] Debug macOS WASM hang (causes 15min timeout)
- [ ] Evaluate if Firefox is needed on all platforms
- [ ] Consider Linux-only coverage

Open for opinions

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.