BaselineProfileGenerator.kt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package io.legado.baselineprofile
  2. import androidx.benchmark.macro.junit4.BaselineProfileRule
  3. import androidx.test.ext.junit.runners.AndroidJUnit4
  4. import androidx.test.filters.LargeTest
  5. import androidx.test.platform.app.InstrumentationRegistry
  6. import androidx.test.uiautomator.By
  7. import androidx.test.uiautomator.Direction
  8. import androidx.test.uiautomator.Until
  9. import org.junit.Rule
  10. import org.junit.Test
  11. import org.junit.runner.RunWith
  12. /**
  13. * This test class generates a basic startup baseline profile for the target package.
  14. **/
  15. @RunWith(AndroidJUnit4::class)
  16. @LargeTest
  17. class BaselineProfileGenerator {
  18. @get:Rule
  19. val rule = BaselineProfileRule()
  20. @Test
  21. fun generate() {
  22. val packageName = InstrumentationRegistry.getArguments().getString("targetAppId")
  23. ?: "io.legado.app"
  24. rule.collect(
  25. packageName = packageName,
  26. includeInStartupProfile = true
  27. ) {
  28. pressHome()
  29. startActivityAndWait()
  30. val bookshelfSelector = By.desc("bookshelf_list")
  31. device.wait(Until.hasObject(bookshelfSelector), 10000)
  32. device.waitForIdle()
  33. Thread.sleep(2000)
  34. val screenWidth = device.displayWidth
  35. val screenHeight = device.displayHeight
  36. val startX = screenWidth / 2
  37. val startY = (screenHeight * 0.75).toInt()
  38. val endY = (screenHeight * 0.25).toInt()
  39. repeat(3) {
  40. device.swipe(startX, startY, startX, endY, 25)
  41. Thread.sleep(1000)
  42. }
  43. repeat(2) {
  44. device.swipe(startX, endY, startX, startY, 10)
  45. Thread.sleep(1000)
  46. }
  47. // "nav_my"
  48. /* val tabs = listOf("nav_explore", "nav_rss", "nav_bookshelf")
  49. for (tabDesc in tabs) {
  50. val tab = device.wait(Until.findObject(By.desc(tabDesc)), 5000)
  51. if (tab != null) {
  52. val bounds = tab.visibleBounds
  53. device.click(bounds.centerX(), bounds.centerY())
  54. Thread.sleep(3000)
  55. }
  56. }*/
  57. }
  58. }
  59. }