test: harnais Compose sur la JVM, et deux comportements du glisser-déposer - #12
Merged
Conversation
…poser `createComposeRule()` tourne sous Robolectric : une PlaylistDetailScreen se compose et se pilote sans appareil. Les artefacts nécessaires étaient déjà au catalogue, mais déclarés en `androidTest` — un source set qui n'a jamais existé dans ce dépôt. Ils passent en `testImplementation` ; les dépendances d'instrumentation qui les accompagnaient (Espresso, androidx.test.ext) sont retirées, faute de code à exécuter. Couvre les deux comportements du glisser-déposer qui n'existent que dans la composition, et que `DragStateTest` ne pouvait pas atteindre : - les actions d'accessibilité « Monter » et « Descendre », seul accès au déplacement pour TalkBack et le clavier — présence aux bords de la liste, ordre transmis, enchaînement de deux déplacements ; - la restauration de l'ordre affiché quand l'écriture échoue. Vérifiée en neutralisant le rappel dans l'écran : ce test seul tombe. Les lignes et leurs actions sont relues depuis l'arbre de sémantique plutôt que par des marqueurs posés dans l'écran — c'est ce que voit le système d'accessibilité, et c'est justement l'objet du test. Claude-Session: https://claude.ai/code/session_01F89rkrDB9TxcwHbfgNoyY1
📝 WalkthroughWalkthroughLe projet configure les tests Compose sur JVM avec Robolectric. Il ajoute une couverture de ChangesTests Robolectric de
Estimated code review effort: 2 (Simple) | ~15 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Owner
Author
|
@coderabbitai review |
✅ Action performedReview finished.
|
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.
Pourquoi
Le dépôt affirmait ne pas pouvoir tester l'UI faute d'appareil. C'est faux :
createComposeRule()tourne sous Robolectric, sur la JVM. Les artefactsui-test-junit4etui-test-manifestétaient déjà au catalogue, mais déclarés enandroidTest— un source set qui n'a jamais existé dans ce dépôt, donc jamais compilé.Deux comportements livrés par la PR #9 n'étaient couverts par rien : ils n'existent que dans la composition, hors de portée de
DragStateTestqui ne teste que l'arithmétique du geste.Ce que ça change
Build.
ui-test-junit4et le BOM passent entestImplementation. Les dépendances d'instrumentation qui les accompagnaient — Espresso,androidx.test.ext:junit— sont retirées, ainsi que leurs entrées de catalogue devenues orphelines : il n'y a aucun code d'instrumentation à exécuter.Tests.
PlaylistDetailScreenTest, 6 cas :Les lignes et leurs actions sont relues depuis l'arbre de sémantique plutôt que par des
testTagposés dans l'écran : c'est ce que voit le système d'accessibilité, et c'est justement l'objet du test. Aucun code de production n'est modifié.Deux détails qui ont coûté un aller-retour
L'écran par défaut de Robolectric est trop court : l'en-tête et sa pochette le remplissent, et la
LazyColumnne compose alors qu'une partie des lignes — celles qui manquent sont absentes de l'arbre, pas seulement invisibles. D'où le@Config(qualifiers = "w411dp-h2000dp-xhdpi").Le geste au doigt lui-même reste hors d'atteinte ; c'est pour ça que son calcul avait été extrait dans
DragState.Validation
./gradlew testDebugUnitTest assembleDebug→ BUILD SUCCESSFUL, 81 tests, 0 échec, aucun avertissement.Le test de restauration a été validé par retrait du correctif : en remplaçant le rappel
onFailuredemoveTopar un bloc vide, ce test seul tombe.Toujours pas d'essai sur appareil réel.
Summary by CodeRabbit
Documentation
Tests