Status Update
Comments
jo...@google.com <jo...@google.com> #3
Thanks for the report!
pa...@google.com <pa...@google.com> #4
The release notes documentation has been edited to clarify this change in behavior for line height.
To support non-standard text sizes, we encourage users to follow the Material design system and use a different style = LocalTextStyle.current.copy(lineHeight = TextUnit.Unspecified)
, or create a custom Typography
entirely.
jo...@google.com <jo...@google.com> #5
je...@google.com <je...@google.com> #6
In my case, I have multiple font sizes in the same Text
(using SpanStyle
in AnnotatedString
). There are legitimate reasons for this. For example, when combining Chinese and English (phonetic) together (for language-learning purposes).
je...@google.com <je...@google.com> #7
Current thoughts are to split the ComposeTestRule
interface and add fun createComposeRuleNoLauncher
. Roughly something like this:
// commonMain
interface ComposeTestRule {
// same as now, but without `fun setContent`
}
// commonMain
interface ComposeContentTestRule : ComposeTestRule {
fun setContent(content: @Composable () -> Unit)
}
// androidMain
class AndroidComposeTestRule : ComposeContentTestRule
// commonMain
expect fun createComposeRule() : ComposeContentTestRule
// androidMain
actual fun createComposeRule() = createAndroidComposeRule()
// androidMain
fun createAndroidComposeRule() : AndroidComposeTestRule
// androidMain
fun createComposeRuleNoLauncher() : ComposeTestRule = AndroidComposeTestRule(activityRule = null)
A few things still have to be worked out, but the main bit I wanted to share is the new factory method and the interface split.
Things still to be worked out:
- Will we keep supporting AndroidComposeTestRule with a generic activityRule + activityProvider, or do we direct devs to use
createComposeRuleNoLauncher
and do the wiring themselves? - AndroidComposeTestRule constructor to be used by
createComposeRuleNoLauncher
. Depends on answer to 1.
pa...@google.com <pa...@google.com>
ap...@google.com <ap...@google.com> #8
Branch: androidx-main
commit ce81b84e699a64e9538bb57d3dcdf25fdd5151c1
Author: Jelle Fresen <jellefresen@google.com>
Date: Tue Jan 19 18:44:09 2021
Use ComposeTestRule without launching Activity
The factory method createEmptyComposeRule has been added that creates an
AndroidComposeTestRule that does not start any Activity. To make sure
one can't call setContent (which uses the started Activity) on that test
rule, the ComposeTestRule interface has been split into ComposeTestRule
and ComposeContentTestRule, with the latter containing setContent and
the former containing all the other methods. createEmptyComposeRule's
return type is ComposeTestRule, without setContent.
Fixes: 174472899
Test: Added LateActivityLaunchTest
Relnote: "Introduced `ComposeContentTestRule`, which extends
`ComposeTestRule` and defines `setContent`, which has been removed from
`ComposeTestRule`. Added a factory method `createEmptyComposeRule()`
that returns a `ComposeTestRule` and does not launch an Activity for
you. Use this when you want to launch your Activity during your test,
e.g. using `ActivityScenario.launch`"
Change-Id: I9d78283c27d87a3135071884e115bbd814492c47
M compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/FoundationTest.kt
M compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/textfield/TextFieldScrollTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/DrawerScreenshotTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MaterialRippleThemeTest.kt
M compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/MaterialTest.kt
M compose/ui/ui-test-junit4/api/current.txt
M compose/ui/ui-test-junit4/api/public_plus_experimental_current.txt
M compose/ui/ui-test-junit4/api/restricted_current.txt
M compose/ui/ui-test-junit4/src/androidAndroidTest/kotlin/androidx/compose/ui/test/junit4/FirstDrawTest.kt
A compose/ui/ui-test-junit4/src/androidAndroidTest/kotlin/androidx/compose/ui/test/junit4/LateActivityLaunchTest.kt
M compose/ui/ui-test-junit4/src/androidMain/kotlin/androidx/compose/ui/test/junit4/AndroidComposeTestRule.kt
M compose/ui/ui-test-junit4/src/androidMain/kotlin/androidx/compose/ui/test/junit4/StateRestorationTester.kt
M compose/ui/ui-test-junit4/src/desktopMain/kotlin/androidx/compose/ui/test/junit4/DesktopComposeTestRule.kt
M compose/ui/ui-test-junit4/src/jvmMain/kotlin/androidx/compose/ui/test/junit4/ComposeTestRule.kt
M compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/focus/FocusTestUtils.kt
Description
Jetpack Compose release version: Snapshot 6995125 Android Studio Build: n/a
See update to Alpha08 in Crane:https://github.com/android/compose-samples/pull/298/files#diff-b10b1fb51606b96175c832427089cc3f024a536153eab5cdbb95e4a7bb273b7cR60-R74
The
AndroidComposeTestRule
class has been changed in Alpha08, and it now needs anactivityProvider
parameter. That requires quite some boilerplate, asActivityScenarioRule.getActivity()
is private (AndroidComposeTestRule.kt line 311), and so the consumer has to copy that implementation.