From 79596054146aef814737ab8604a8aaa2fd4ad027 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 24 Sep 2026 10:01:52 -0400 Subject: [PATCH 1/3] test(android): pin the Robolectric SDK once in robolectric.properties A test class missing the per-class `@Config(sdk = [28])` defaults to compileSdk 36, which needs Java 21, so it passes locally and fails on CI. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../src/test/java/org/wordpress/gutenberg/GutenbergViewTest.kt | 2 -- .../org/wordpress/gutenberg/GutenbergViewUploadServerTest.kt | 2 +- .../java/org/wordpress/gutenberg/inserter/SvgIconCacheTest.kt | 2 -- .../java/org/wordpress/gutenberg/views/EditorErrorViewTest.kt | 2 -- android/Gutenberg/src/test/resources/robolectric.properties | 2 ++ 5 files changed, 3 insertions(+), 7 deletions(-) create mode 100644 android/Gutenberg/src/test/resources/robolectric.properties diff --git a/android/Gutenberg/src/test/java/org/wordpress/gutenberg/GutenbergViewTest.kt b/android/Gutenberg/src/test/java/org/wordpress/gutenberg/GutenbergViewTest.kt index f4c283653..2e2a6999d 100644 --- a/android/Gutenberg/src/test/java/org/wordpress/gutenberg/GutenbergViewTest.kt +++ b/android/Gutenberg/src/test/java/org/wordpress/gutenberg/GutenbergViewTest.kt @@ -21,7 +21,6 @@ import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment import org.robolectric.Shadows.shadowOf import org.robolectric.shadows.ShadowDialog -import org.robolectric.annotation.Config import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue @@ -31,7 +30,6 @@ import org.wordpress.gutenberg.model.EditorConfiguration import org.wordpress.gutenberg.model.EditorDependencies @RunWith(RobolectricTestRunner::class) -@Config(sdk = [28]) class GutenbergViewTest { @Mock private lateinit var mockWebView: WebView diff --git a/android/Gutenberg/src/test/java/org/wordpress/gutenberg/GutenbergViewUploadServerTest.kt b/android/Gutenberg/src/test/java/org/wordpress/gutenberg/GutenbergViewUploadServerTest.kt index a83cfe5f5..293c08778 100644 --- a/android/Gutenberg/src/test/java/org/wordpress/gutenberg/GutenbergViewUploadServerTest.kt +++ b/android/Gutenberg/src/test/java/org/wordpress/gutenberg/GutenbergViewUploadServerTest.kt @@ -17,7 +17,7 @@ import org.wordpress.gutenberg.model.EditorConfiguration import org.wordpress.gutenberg.model.EditorDependencies @RunWith(RobolectricTestRunner::class) -@Config(sdk = [28], manifest = Config.NONE) +@Config(manifest = Config.NONE) class GutenbergViewUploadServerTest { private val testScope = TestScope() diff --git a/android/Gutenberg/src/test/java/org/wordpress/gutenberg/inserter/SvgIconCacheTest.kt b/android/Gutenberg/src/test/java/org/wordpress/gutenberg/inserter/SvgIconCacheTest.kt index 9f0b56dcc..dc09102cd 100644 --- a/android/Gutenberg/src/test/java/org/wordpress/gutenberg/inserter/SvgIconCacheTest.kt +++ b/android/Gutenberg/src/test/java/org/wordpress/gutenberg/inserter/SvgIconCacheTest.kt @@ -8,14 +8,12 @@ import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config /** * Robolectric is required because [parseSvgColor] delegates to [Color.parseColor] * for named colours and the resulting ARGB ints are produced via [Color.argb]. */ @RunWith(RobolectricTestRunner::class) -@Config(sdk = [28]) class SvgIconCacheTest { // -- parseSvgColor ---------------------------------------------------- diff --git a/android/Gutenberg/src/test/java/org/wordpress/gutenberg/views/EditorErrorViewTest.kt b/android/Gutenberg/src/test/java/org/wordpress/gutenberg/views/EditorErrorViewTest.kt index 14c9394c9..373636883 100644 --- a/android/Gutenberg/src/test/java/org/wordpress/gutenberg/views/EditorErrorViewTest.kt +++ b/android/Gutenberg/src/test/java/org/wordpress/gutenberg/views/EditorErrorViewTest.kt @@ -14,11 +14,9 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment -import org.robolectric.annotation.Config import org.wordpress.gutenberg.R @RunWith(RobolectricTestRunner::class) -@Config(sdk = [28]) class EditorErrorViewTest { @Test diff --git a/android/Gutenberg/src/test/resources/robolectric.properties b/android/Gutenberg/src/test/resources/robolectric.properties new file mode 100644 index 000000000..b398972fe --- /dev/null +++ b/android/Gutenberg/src/test/resources/robolectric.properties @@ -0,0 +1,2 @@ +# Robolectric otherwise defaults to compileSdk, which requires a newer JVM than CI runs. +sdk=28 From 3d0ce914e1171db0c9e89652372cfdb6bc780329 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 24 Sep 2026 10:30:44 -0400 Subject: [PATCH 2/3] test(android): run Robolectric tests against SDK 35 SDK 28 was an arbitrary default. 35 is the newest SDK CI's JVM can run and covers code gated on newer APIs, closer to WordPress-Android's target of 36. Co-Authored-By: Claude Opus 5.5 (1M context) --- android/Gutenberg/src/test/resources/robolectric.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/Gutenberg/src/test/resources/robolectric.properties b/android/Gutenberg/src/test/resources/robolectric.properties index b398972fe..d2f71f081 100644 --- a/android/Gutenberg/src/test/resources/robolectric.properties +++ b/android/Gutenberg/src/test/resources/robolectric.properties @@ -1,2 +1,2 @@ # Robolectric otherwise defaults to compileSdk, which requires a newer JVM than CI runs. -sdk=28 +sdk=35 From d9e9454fbeca317005a736b6e250abf9dd89b9e8 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 24 Sep 2026 12:26:52 -0400 Subject: [PATCH 3/3] docs(android): correct where Robolectric's default SDK comes from Robolectric reads the manifest's targetSdk, not compileSdk; both are 36 today, which hid the difference. Co-Authored-By: Claude Opus 5.5 (1M context) --- android/Gutenberg/src/test/resources/robolectric.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/Gutenberg/src/test/resources/robolectric.properties b/android/Gutenberg/src/test/resources/robolectric.properties index d2f71f081..2855c2546 100644 --- a/android/Gutenberg/src/test/resources/robolectric.properties +++ b/android/Gutenberg/src/test/resources/robolectric.properties @@ -1,2 +1,2 @@ -# Robolectric otherwise defaults to compileSdk, which requires a newer JVM than CI runs. +# Robolectric otherwise defaults to the manifest's targetSdk, which requires a newer JVM than CI runs. sdk=35