* Overall build
* Enable nightly builds
* Enable Startup Profile generation for release builds
* Skip BP generation for regular Builds
* Test baseline profiles for all variants
* Cleanup
* Remove stale baseline-prof.txt
* Add generated profiles to .gitignore
* GMD
* Setup GMD in separate step
* Add GMD setup to all workflows
* Lower GMD specs
* Update GMD and Android SDK setup
* Add options test options for GMD startup
* Ensure only one device is used for bp / benchmark
* Apply guidance from issuetracker b/287312019
* Add new metrics for baseline profile measurement
Added custom metrics to better understand how effective a baseline
profile is. These TraceSectionMetrics keep track of JIT compilations
as well as class initializations which should go down when a BP is
properly applied to the app.
* main:
Remove the printModulePaths task and read modules direct from settings
Update pull_request_template.md
Made pull request instructions clearer
Update gradle wrapper
Upgrade AGP to 8.4.0, Android Build Tools to 31.4.0, and Gradle to 8.7.
Regenerate SVG graphs and cleanup/reformat files
Update build.gradle.kts
Remove duplicated AndroidX Work testing dependency
Bump gradle/wrapper-validation-action from 2 to 3
🤖 Updates baselines for Dependency Guard
Bump com.dropbox.dependency-guard from 0.4.3 to 0.5.0
Bump protobuf from 3.25.2 to 4.26.0
Bump app.cash.turbine:turbine from 1.0.0 to 1.1.0
Bump androidxMacroBenchmark from 1.2.2 to 1.2.3
🤖 Updates baselines for Dependency Guard
Unnecessary safe call on a non-null receiver
Bump androidx.activity:activity-compose from 1.8.0 to 1.8.2
Apply suggestions from code review
Move Android instrumented test `ThemeTest` to unit test
Change-Id: Id3283279ca5a9d90c2bbc4740d6c583ba8dded41
* Configure baseline profiles in the baselineProfile lambda
* This is the correct and easiest way to set up baseline profiles correctly.
* See b/313428246 for more context.
* Handle empty topics during baseline profile generation
* Revert to API 33 GMD and fail empty screen tests
* Rename withChildren to noChildren for better legibility
* Remove unused log tags
* Update benchmark and metrics versions
* 🤖 Updates baselines for Dependency Guard
---------
Co-authored-by: Tomáš Mlynarič <mlykotom@google.com>
Co-authored-by: Jaehwa Noh <shwoghk14@gmail.com>
This is a followup cleanup of #1163 that was partially addressed by #1140.
- Remove unused `projects.core.testing` dependencies (or replace with direct dependencies).
- Introduce `androidx.compose.ui.test` bundle.
- Remove `NiaTestRunner` from the default config, forcing consumers to depend on it, even when not used.
* main: (37 commits)
Disable animations of instrumented tests (#1167)
Bump gradle/wrapper-validation-action from 1 to 2
Remove unused release variable. Fixes#1231
Apply Composable Parameter Ordering Guidelines
Remove kotlinx-coroutines-guava dependency from :sync:work
Add explicit guava-android dependency for :sync:work
Extract ScreenshotHelper to separate testing module
Update AGP to 8.3.0
Remove Insert function - Insert is only used in test. - Upsert do same thing as Insert.
🤖 Updates baselines for Dependency Guard
Bump the kotlin-ksp-compose group with 6 updates
🤖 Updates baselines for Dependency Guard
Bump hilt from 2.50 to 2.51
Bump com.google.truth:truth from 1.1.5 to 1.4.2
Move java to kotlin folder.
Remove disk usage testing
Figuring out what is using 66Gb in the runner
Dpm
Improve converting to kotlin timezone
Use trySend multiple times
...
Change-Id: If3f564108d42675ba55ef242f0d06f04aff45c4a
* Remove legacy benchmark build type
Now that we have the baseline profile gradle plugin,
there is no need for a benchmark build type.
The plugin does the setup and configuration and runs against the
correct app flavor.
* Remove explicit benchmark build type from benchmark module
* Remove stale build task exclusions
* Fix tracing import location
FYI @mlykotom
- Reduce the visibility of multiple Hilt `Module`s and implementations of public interfaces
- Correctly configure the visibility of dependencies:
- `api` when it's part of it's public `api`
- `implementation` when it's part of it's internal `implementation`
- Remove unnecessary dependencies in build.gradle.kts files
- Remove unnecessary dependencies provided by plugins
- Remove unnecessary applied plugins (i.e. roborazzi)
- Sort dependencies in `build.gradle.kts`
- Delete unused entries in `libs.versions.toml`
Baseline profile generation is disabled for the PR level Build task. Release tasks require a fresh baseline profile. A new profile is generated using the baseline profile Gradle plugin.
* Prepare for usage of dex layout optimizations which can be actively used once NiA switches to AGP 8.2+.
* Add GMD config to release build
* Switch to macos-latest
* Update names for StartupBenchmark tests to better reflect states
* Stable release and recent GMD device
* Reduce flakiness by adding wait to benchmark
* More convenient waiting for objects
* Rename junit dependency to androidx-junit
* Only run baseline profile benchmarks during GH workflow
* Enable automatic BP generation for only release builds
* Disable BP generation from Build workflow
* Specify modules and skip benchmarking Build workflow
Bug: b/299334172
* Moved protobuf to separate module to avoid having to wire KSP's Plugin with the Protobuf Plugin.
* `@Binds` function cannot be an extension function.
* Commented `kotlin.compiler.execution.strategy=in-process` in CI to circumvent OOMs due to increased metaspace usage.
* Adds screenshot tests using Roborazzi (Robolectric Native Graphics)
- Adds Roborazzi to convention plugins
- Adds Screenshot helper in :core-testing
- Creates screenshot suites for :app and :feature-foryou
* CI and spotless
* Moves :app tests to testDemo and makes NiaAppScreenSizesScreenshotTests prettier
* CI: Moves local tests to their own step
* CI: Adds --rerun to screenshot task
* CI: Moves screenshots before local tests
* CI: Fixes wrong if statement in workflow
* CI WIP: trying to trigger the push step
* CI: Re-enables roborazzi verification
* Fixes flaky screenshot tests by setting LocalInspectionMode on
* CI: screenshot commits now use the original author intead of bot account
* CI: Disables globbing because file_pattern didn't work
* CI: Trying new file pattern for png files
* CI: Adds a check for forks
* 🤖 Updates screenshots
* Code review: toml cleanup, comments
* Use new github.event.pull_request.head.repo.fork
Co-authored-by: Simon Marquis <contact@simon-marquis.fr>
* Uses Robolectric qualifiers to set the dpi, adds section to README
* Spotless
* Delegates creation of repository to Hilt in test
* Revert "Use new github.event.pull_request.head.repo.fork"
* 🤖 Updates screenshots
* Empty commit to trigger GHA on main branch
* Makes time zones deterministic in screenshot tests
* Increases GMD timeout to 90m, but it has to be reduced
---------
Co-authored-by: Simon Marquis <contact@simon-marquis.fr>