This site is in read only mode. Please continue to browse, but replying, likes, and other actions are disabled for now.
1 / 7
Aug 2014

Appium connects to the browser using the remote debugging protocol. As a
result, no other client can take up the connection. Is there a way in
appium to get the timeline? I see that no rest call defined it.
ChromeDriver implements a logType=performance to get the timeline data.
Does it make sense for appium to support similar functionality?

  • created

    Aug '14
  • last reply

    Oct '15
  • 6

    replies

  • 1.7k

    views

  • 2

    users

  • 2

    likes

  • 1

    link

I am working on creating a pull request for this. The idea is to reuse the webkit remote debug interface that appium already uses. When the desiredCapabilities has {loggingPreferences : {performance: 'ALL'} }, Timeline.start shall be called in the remote debugging.

We would then listen to eventRecorded event and save the events in a buffer.

Everytime the user calls getLog('performance'), the buffer is returned and flushed.
This is how ChromeDriver's log('performance') is implemented.

The only problem I see with this approach is an overflow of buffer, bu we could restrict the count of events in the buffer.

Here is my first attempt at it. I am able to get timeline events. Now I need to send them whenever the logs are asked for, and flush the data.

github.com/axemclion/appium/commit/perf

Would love any comments on this code. Would this break anything ?

Here is what the code does basically

  1. Check if I need to start perf Logging
  2. Wait till a context is set. When context is set, start timeline and listen to timeline events
  3. Store all timeline events, and send it back when asked for.

This pull request has now been accepted. Performance logs for iOS can be started using loggingPrefs:{performance:'ALL'} capability

1 year later

@axemclion,

I was wondering whether I can configure browser-perf tool to my existing iOS tests(Appium+Java).
When I start browser-perf with appium it launches the app, and it relaunches the app when I run my java tests ... please let me know whether I can run my Java tests and browser-perf together and run the tests to get the metrics.

Thanks,
Amarnath Rayudu

Browser-perf only measures the performance of webviews. You can use the tool with Java, but I would suggest simply fetching the performance log using Java instead and manipulating it.