Giter Site home page Giter Site logo

axemclion / browser-perf Goto Github PK

View Code? Open in Web Editor NEW
936.0 38.0 68.0 464 KB

Performance Metrics for Web Browsers

License: BSD 2-Clause "Simplified" License

JavaScript 100.00%
browser-perf performance-metrics metrics wiki-page javascript perfmatters web-performance performance

browser-perf's People

Contributors

adri avatar axemclion avatar blackrabbit99 avatar brandonaaron avatar cabbiepete avatar hypery2k avatar matiassingers avatar netroy avatar verespej avatar vio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

browser-perf's Issues

Testing on real device (iOS - iPad) - SafariLauncher always opens apple.com

Hey,
I would like to test my web application on iPad - real device not simulator.
I followed instructions on appium.io.

  • I created valid provisioning profile for iOS
  • installed ideviceinstaller
  • SafariLauncher is built and successfuly deployed to the device
  • SafariLauncher always opens default homepage (http://apple.com)? It doesn't matter what url I pass to the browser-perf command, it always open apple.com...
  • browser-perf never ends...

Before running browser-perf:

ios-webkit-debug-proxy is launched

./bin/ios-webkit-debug-proxy-launcher.js -c <myudid>:27753 -d

appium is launched

 node lib/server/main.js -U <myudid>

Safari on the device is opened.
Safari has enabled Web inspector and in iOS - Settings - Developer - Enable UI Automation is turned on.

Trying to run browser-perf (config based on ios-safari-appiun.config.json)

 browser-perf --config-file=configs/ipad.config.json 192.168.1.4:8000/admin/dashboard

I see that safarilauncher opens default starting page in Safari on iPad instead a page provided in command.

Logs of browser-perf

$ browser-perf --config-file=configs/ipad.config.json 192.168.1.4:8000/admin/dashboard --verbose
index: Selenium is on %s localhost
Metrics: Initializing Metrics
Probes: Registering probe RafBenchmarkingProbe
Probes: Registering probe NavTimingProbe
Probes: Registering probe ChromeTimelineProbe
Probes: Registering probe SafariTimelineProbe
Probes: Registering probe ChromeTracingProbe
AndroidTracingProbe: Initialize
Probes: Registering probe AndroidTracingProbe
Probes: Registering probe ChromeTimelineProbe
Probes: Registering probe SafariTimelineProbe
Probes: setup
Probes: ChromeTimelineProbe setup called
Probes: SafariTimelineProbe setup called
Probes: ChromeTracingProbe setup called
Probes: AndroidTracingProbe setup called
index:  >  CALL init({"platformName":"iOS","platformVersion":"8.1.2","browserName":"Sa 

Logs of appium

info: --> POST /wd/hub/session {"desiredCapabilities":{"platformName":"iOS","platformVersion":"8.1.2","browserName":"Safari","deviceName":"Milosz's iPad","loggingPrefs":{"performance":"ALL"},"chromeOptions":{"args":["--disable-popup-blocking","--enable-gpu-benchmarking","--enable-thread-composting"]}}}
info: Client User-Agent string: undefined
info: [debug] The following desired capabilities were provided, but not recognized by appium. They will be passed on to any other services running on this server. : chromeOptions
info: [debug] Configuring Safari session
info: [debug] Using local .zip from command line: /Users/hinok/Desktop/Dev/appium/build/SafariLauncher/SafariLauncher.zip
info: [debug] Copying local zip to tmp dir
info: [debug] /Users/hinok/Desktop/Dev/appium/build/SafariLauncher/SafariLauncher.zip copied to /var/folders/qs/4zns5pb173v5yyy8hr_1grs40000gn/T/11512-14258-1wl6mpw/appium-app.zip
info: [debug] Unzipping /var/folders/qs/4zns5pb173v5yyy8hr_1grs40000gn/T/11512-14258-1wl6mpw/appium-app.zip
info: [debug] Testing zip archive: /var/folders/qs/4zns5pb173v5yyy8hr_1grs40000gn/T/11512-14258-1wl6mpw/appium-app.zip
info: [debug] Zip archive tested clean
info: [debug] Unzip successful
info: [debug] Using locally extracted app: /var/folders/qs/4zns5pb173v5yyy8hr_1grs40000gn/T/11512-14258-1wl6mpw/submodules/SafariLauncher/build/Release-iphoneos/SafariLauncher.app
info: [debug] Creating new appium session af59255b-3234-425a-a1b8-aa7316491d96
info: [debug] Removing any remaining instruments sockets
info: [debug] Cleaned up instruments socket /tmp/instruments_sock
info: [debug] Setting Xcode folder
info: [debug] Setting Xcode version
info: [debug] Setting iOS SDK Version
info: [debug] Getting sdk version from xcrun with a timeout
info: [debug] iOS SDK Version set to 8.1
info: [debug] Not checking whether simulator is available since we're on a real device
info: [debug] Detecting automation tracetemplate
info: [debug] Not auto-detecting udid, running on sim
info: [debug] Could not parse plist file (as binary) at /var/folders/qs/4zns5pb173v5yyy8hr_1grs40000gn/T/11512-14258-1wl6mpw/submodules/SafariLauncher/build/Release-iphoneos/SafariLauncher.app/en.lproj/Localizable.strings
info: Will try to parse the plist file as XML
info: [debug] Could not parse plist file (as XML) at /var/folders/qs/4zns5pb173v5yyy8hr_1grs40000gn/T/11512-14258-1wl6mpw/submodules/SafariLauncher/build/Release-iphoneos/SafariLauncher.app/en.lproj/Localizable.strings
warn: Could not parse app Localizable.strings assuming it doesn't exist
info: [debug] Getting bundle ID from app
info: [debug] Parsed app Info.plist (as binary)
info: [debug] Creating instruments
info: On some xcode 6 platforms, instruments-without-delay does not work. If you experience this, you will need to re-run appium with the --native-instruments-lib flag
info: [debug] Preparing uiauto bootstrap
info: [debug] Dynamic bootstrap dir: /Users/hinok/Library/Application Support/appium/bootstrap
info: [debug] Dynamic env: {"nodePath":"/usr/local/bin/node","commandProxyClientPath":"/Users/hinok/Desktop/Dev/appium/node_modules/appium-uiauto/bin/command-proxy-client.js","instrumentsSock":"/tmp/instruments_sock","interKeyDelay":null,"justLoopInfinitely":false,"autoAcceptAlerts":false,"autoDismissAlerts":false,"sendKeyStrategy":"grouped"}
...o: [debug] Dynamic bootstrap code: // This file is automatically generated. Do not manually modify!
info: [debug] Dynamic bootstrap path: /Users/hinok/Library/Application Support/appium/bootstrap/bootstrap-20992c5174a34647.js
info: [debug] Reusing dynamic bootstrap: /Users/hinok/Library/Application Support/appium/bootstrap/bootstrap-20992c5174a34647.js
info: [debug] Getting device string from opts: {"forceIphone":false,"forceIpad":false,"xcodeVersion":"6.1.1","iOSSDKVersion":"8.1","deviceName":"Milosz's iPad","platformVersion":"8.1.2"}
info: [debug] fixDevice is on
info: [debug] Final device string is: 'Milosz's iPad (8.1.2 Simulator)'
info: [debug] Not setting device type since we're on a real device
info: [debug] Checking whether we need to set app preferences
info: [debug] Not setting iOS and app preferences since we're on a real device
info: [debug] Running ios sim reset flow
info: [debug] Killing the simulator process
info: [debug] Killall iOS Simulator
info: [debug] Killing any other simulator daemons
info: [debug] On a real device; cannot clean device state
info: [debug] Not setting locale because we're using a real device
info: [debug] No iOS / app preferences to set
info: [debug] Starting iOS device log capture via deviceconsole
info: [debug] Not pre-launching simulator
info: [debug] Checking app install status using: /Users/hinok/Desktop/Dev/appium/build/fruitstrap/fruitstrap isInstalled --id <myudid> --bundle com.bytearc.SafariLauncher
info: [debug] Starting command proxy.
info: [debug] Instruments socket server started at /tmp/instruments_sock
info: [debug] Starting instruments
info: [debug] Instruments is at: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments
info: Launching instruments
info: [debug] Attempting to run app on real device with UDID <myudid>
info: [debug] Spawning instruments with command: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate -D /tmp/appium-instruments/instrumentscli0.trace -w <myudid> com.bytearc.SafariLauncher -e UIASCRIPT "/Users/hinok/Library/Application Support/appium/bootstrap/bootstrap-20992c5174a34647.js" -e UIARESULTSPATH /tmp/appium-instruments
info: [debug] And extra without-delay env: {}
info: [debug] And launch timeouts (in ms): {"global":90000}
info: [debug] [INST STDERR] 2015-02-02 19:03:45.521 instruments[14372:84246] WebKit Threading Violation - initial use of WebKit from a secondary thread.
info: Instruments is ready to receive commands
info: [debug] Instruments launched. Starting poll loop for new commands.
info: [debug] Setting bootstrap config keys/values
info: [debug] Pushing command to appium work queue: "target = $.target();\nau = $;\n$.isVerbose = true;\n"
info: [debug] Socket data received (2 bytes)
info: [debug] Socket data being routed.
info: [debug] Sending command to instruments: target = $.target();
au = $;
$.isVerbose = true;

info: [debug] [INST] 2015-02-02 18:03:48 +0000 Debug: evaluation finished
info: [debug] [INST] 2015-02-02 18:03:48 +0000 Debug: responding with:
info: [debug] [INST] 2015-02-02 18:03:48 +0000 Debug: Running system command #1: /usr/local/bin/node /Users/hinok/Desktop/Dev/appium/node_modules/appium-uiauto/bin/command-proxy-client.js /tmp/instruments_sock 2,{"status":0,"value":true}...
info: [debug] Socket data received (27 bytes)
info: [debug] Socket data being routed.
info: [debug] Got result from instruments: {"status":0,"value":true}
info: [debug] Setting initial orientation to PORTRAIT
info: [debug] Pushing command to appium work queue: "au.setScreenOrientation('PORTRAIT')"
info: [debug] Sending command to instruments: au.setScreenOrientation('PORTRAIT')
info: [debug] [INST] 2015-02-02 18:03:49 +0000 Debug: Got new command 1 from instruments: au.setScreenOrientation('PORTRAIT')
info: [debug] [INST] 2015-02-02 18:03:49 +0000 Debug: evaluating au.setScreenOrientation('PORTRAIT')
info: [debug] [INST] 2015-02-02 18:03:49 +0000 Debug: target.setDeviceOrientation("1")
info: [debug] [INST] 2015-02-02 18:03:50 +0000 Debug: evaluation finished
info: [debug] [INST] 2015-02-02 18:03:50 +0000 Debug: responding with:
info: [debug] [INST] 2015-02-02 18:03:50 +0000 Debug: Running system command #2: /usr/local/bin/node /Users/hinok/Desktop/Dev/appium/node_modules/appium-uiauto/bin/command-proxy-client.js /tmp/instruments_sock 2,{"status":0,"value":"PORTRAIT"}...
info: [debug] Socket data received (33 bytes)
info: [debug] Socket data being routed.
info: [debug] Got result from instruments: {"status":0,"value":"PORTRAIT"}
info: [debug] Waiting for app source to contain elements
info: [debug] Pushing command to appium work queue: "au.mainApp().getTreeForXML()"
info: [debug] Sending command to instruments: au.mainApp().getTreeForXML()
info: [debug] [INST] 2015-02-02 18:03:51 +0000 Debug: Got new command 2 from instruments: au.mainApp().getTreeForXML()
info: [debug] [INST] 2015-02-02 18:03:51 +0000 Debug: evaluating au.mainApp().getTreeForXML()
info: [debug] [INST] 2015-02-02 18:03:52 +0000 Debug: evaluation finished
info: [debug] [INST] 2015-02-02 18:03:52 +0000 Debug: responding with:id":true,"visible":false,"hint":null,"path":"/0/0","x":0,"y":0,"width":768,"height":1024},">":[]}},{"UIAWindow":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1","x":0,"y":0,"width":768,"height":1024},">":[{"UIAButton":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":false,"valid":true,"visible":false,"hint":null,"path":"/0/1/0","x":0,"y":0,"width":768,"height":97},">":[]}},{"UIAButton":{"@":{"name":"URL","label":"Address","value":"‎apple.com","dom":null,"enabled":true,"valid":true,"visible":true,"hint":"Edits the URL","path":"/0/1/1","x":180,"y":24.5,"width":408,"height":29},">":[{"UIAElement":{"@":{"name":"URL","label":"‎apple.com","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":"Edits the URL","path":"/0/1/1/0","x":182,"y":24.5,"width":404,"height":29},">":[]}},{"UIAButton":{"@":{"name":"ReloadButton","label":"reload","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/1/1","x":559,"y":24.5,"width":29,"height":29},">":[]}}]}},{"UIAToolbar":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/2","x":0,"y":24.5,"width":768,"height":29},">":[{"UIAImage":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/2/0","x":0,"y":24.5,"width":768,"height":29},">":[]}},{"UIAButton":{"@":{"name":"Back","label":"Back","value":null,"dom":null,"enabled":false,"valid":true,"visible":true,"hint":null,"path":"/0/1/2/1","x":13.5,"y":19.5,"width":42,"height":40},">":[]}},{"UIAButton":{"@":{"name":"Forward","label":"Forward","value":null,"dom":null,"enabled":false,"valid":true,"visible":true,"hint":null,"path":"/0/1/2/2","x":67,"y":19.5,"width":42,"height":40},">":[]}},{"UIAButton":{"@":{"name":"Show Bookmarks","label":"Show Bookmarks","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/2/3","x":111.5,"y":20,"width":57,"height":40},">":[]}},{"UIAButton":{"@":{"name":"Share","label":"Share","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/2/4","x":602.5,"y":18,"width":51,"height":40},">":[]}},{"UIAButton":{"@":{"name":"New tab","label":"New tab","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/2/5","x":655,"y":19,"width":53,"height":40},">":[]}},{"UIAButton":{"@":{"name":"Pages","label":"Pages","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/2/6","x":707.5,"y":19,"width":57,"height":40},">":[]}}]}},{"UIAScrollView":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/3","x":0,"y":20,"width":768,"height":1004},">":[{"UIAScrollView":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/3/0","x":0,"y":0,"width":768,"height":1024},">":[{"UIAWebView":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/3/0/0","x":0,"y":96.5,"width":768,"height":1147},">":[{"UIALink":{"@":{"name":"Apple","label":"Apple","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/0","x":10,"y":95,"width":44,"height":20},">":[{"UIALink":{"@":{"name":"Apple","label":"Apple","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/0/0","x":10,"y":95,"width":44,"height":20},">":[{"UIALink":{"@":{"name":"Apple","label":"Apple","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/0/0/0","x":10,"y":95,"width":44,"height":20},">":[{"UIAStaticText":{"@":{"name":"Apple","label":"Apple","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/0/0/0/0","x":10,"y":95,"width":44,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"Store","label":"Store","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/1","x":68,"y":95,"width":39,"height":20},">":[{"UIALink":{"@":{"name":"Store","label":"Store","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/1/0","x":68,"y":95,"width":39,"height":20},">":[{"UIALink":{"@":{"name":"Store","label":"Store","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/1/0/0","x":68,"y":95,"width":39,"height":20},">":[{"UIAStaticText":{"@":{"name":"Store","label":"Store","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/1/0/0/0","x":68,"y":95,"width":39,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"Mac","label":"Mac","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/2","x":145,"y":95,"width":32,"height":20},">":[{"UIALink":{"@":{"name":"Mac","label":"Mac","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/2/0","x":145,"y":95,"width":32,"height":20},">":[{"UIALink":{"@":{"name":"Mac","label":"Mac","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/2/0/0","x":145,"y":95,"width":32,"height":20},">":[{"UIAStaticText":{"@":{"name":"Mac","label":"Mac","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/2/0/0/0","x":145,"y":95,"width":32,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"iPhone","label":"iPhone","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/3","x":218,"y":95,"width":52,"height":20},">":[{"UIALink":{"@":{"name":"iPhone","label":"iPhone","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/3/0","x":218,"y":95,"width":52,"height":20},">":[{"UIALink":{"@":{"name":"iPhone","label":"iPhone","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/3/0/0","x":218,"y":95,"width":52,"height":20},">":[{"UIAStaticText":{"@":{"name":"iPhone","label":"iPhone","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/3/0/0/0","x":218,"y":95,"width":52,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"Watch","label":"Watch","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/4","x":310,"y":95,"width":47,"height":20},">":[{"UIALink":{"@":{"name":"Watch","label":"Watch","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/4/0","x":310,"y":95,"width":47,"height":20},">":[{"UIALink":{"@":{"name":"Watch","label":"Watch","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/4/0/0","x":310,"y":95,"width":47,"height":20},">":[{"UIAStaticText":{"@":{"name":"Watch","label":"Watch","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/4/0/0/0","x":310,"y":95,"width":47,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"iPad","label":"iPad","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/5","x":396,"y":95,"width":32,"height":20},">":[{"UIALink":{"@":{"name":"iPad","label":"iPad","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/5/0","x":396,"y":95,"width":32,"height":20},">":[{"UIALink":{"@":{"name":"iPad","label":"iPad","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/5/0/0","x":396,"y":95,"width":32,"height":20},">":[{"UIAStaticText":{"@":{"name":"iPad","label":"iPad","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/5/0/0/0","x":396,"y":95,"width":32,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"iPod","label":"iPod","value":"","dom":{"id":""
info: [debug] [INST] },"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/6","x":469,"y":95,"width":33,"height":20},">":[{"UIALink":{"@":{"name":"iPod","label":"iPod","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/6/0","x":469,"y":95,"width":33,"height":20},">":[{"UIALink":{"@":{"name":"iPod","label":"iPod","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/6/0/0","x":469,"y":95,"width":33,"height":20},">":[{"UIAStaticText":{"@":{"name":"iPod","label":"iPod","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/6/0/0/0","x":469,"y":95,"width":33,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"iTunes","label":"iTunes","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/7","x":541,"y":95,"width":48,"height":20},">":[{"UIALink":{"@":{"name":"iTunes","label":"iTunes","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/7/0","x":541,"y":95,"width":48,"height":20},">":[{"UIALink":{"@":{"name":"iTunes","label":"iTunes","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/7/0/0","x":541,"y":95,"width":48,"height":20},">":[{"UIAStaticText":{"@":{"name":"iTunes","label":"iTunes","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/7/0/0/0","x":541,"y":95,"width":48,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"Support","label":"Support","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/8","x":630,"y":95,"width":61,"height":20},">":[{"UIALink":{"@":{"name":"Support","label":"Support","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/8/0","x":630,"y":95,"width":61,"height":20},">":[{"UIALink":{"@":{"name":"Support","label":"Support","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/8/0/0","x":630,"y":95,"width":61,"height":20},">":[{"UIAStaticText":{"@":{"name":"Support","label":"Support","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/8/0/0/0","x":630,"y":95,"width":61,"height":20},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":"Search apple.com","label":"Search apple.com","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/9","x":729,"y":95,"width":77,"height":38},">":[{"UIALink":{"@":{"name":"Search apple.com","label":"Search apple.com","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/9/0","x":729,"y":95,"width":77,"height":38},">":[{"UIAStaticText":{"@":{"name":"Search apple.com","label":"Search apple.com","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/9/0/0","x":729,"y":95,"width":77,"height":38},">":[]}}]}}]}},{"UIALink":{"@":{"name":"Start something new. When you start with amazing products, you can create amazing things.","label":"Start something new. When you start with amazing products, you can create amazing things.","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/10","x":0,"y":142,"width":768,"height":585},">":[{"UIALink":{"@":{"name":"Start something new.","label":"Start something new.","value":"1","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/0","x":126,"y":240,"width":516,"height":70},">":[{"UIAStaticText":{"@":{"name":"Start something new.","label":"Start something new.","value":"1","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/0/0","x":126,"y":240,"width":516,"height":70},">":[]}}]}},{"UIALink":{"@":{"name":"When you start with amazing products, you can create amazing things.","label":"When you start with amazing products, you can create amazing things.","value":"2","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/1","x":124,"y":312,"width":520,"height":23},">":[{"UIAStaticText":{"@":{"name":"When you start with amazing products, you can create amazing things.","label":"When you start with amazing products, you can create amazing things.","value":"2","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/1/0","x":124,"y":312,"width":520,"height":23},">":[]}}]}},{"UIALink":{"@":{"name":"View the gallery, ","label":"View the gallery, ","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/2","x":316,"y":337,"width":137,"height":29},">":[{"UIALink":{"@":{"name":"View the gallery, ","label":"View the gallery, ","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/2/0","x":316,"y":337,"width":137,"height":29},">":[{"UIAStaticText":{"@":{"name":"View the gallery","label":"View the gallery","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/2/0/0","x":316,"y":340,"width":125,"height":23},">":[]}},{"UIALink":{"@":{"name":"","label":"","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/2/0/1","x":446,"y":338,"width":6,"height":25},">":[{"UIAStaticText":{"@":{"name":"","label":"","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":true,"hint":"","path":"/0/1/3/0/0/10/2/0/1/0","x":446,"y":338,"width":6,"height":25},">":[]}}]}}]}}]}},{"UIALink":{"@":{"name":null,"label":null,"value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/10/3","x":0,"y":365,"width":768,"height":250},">":[]}}]}},{"UIALink":{"@":{"name":"iPad Air 2 Watch the film “Change” >","label":"iPad Air 2 Watch the film “Change” >","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/11","x":0,"y":96,"width":0,"height":1},">":[{"UIAStaticText":{"@":{"name":"iPad Air 2 Watch the film “Change” >","label":"iPad Air 2 Watch the film “Change” >","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/11/0","x":0,"y":96,"width":0,"height":1},">":[]}}]}},{"UIALink":{"@":{"name":"iPhone 6 Bigger than bigger","label":"iPhone 6 Bigger than bigger","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/12","x":0,"y":96,"width":0,"height":1},">":[{"UIAStaticText":{"@":{"name":"iPhone 6 Bigger than bigger","label":"iPhone 6 Bigger than bigger","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/12/0","x":0,"y":96,"width":0,"height":1},">":[]}}]}},{"UIALink":{"@":{"name":"Apple Watch Our most personal device yet.","label":"Apple Watch Our most personal device yet.","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/13","x":0,"y":96,"width":0,"height":1},">":[{"UIAStaticText":{"@":{"name":"Apple Watch Our most personal device yet.","label":"Apple Watch Our most personal device yet.","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/13/0","x":0,"y":96,"width":0,"height":1},">":[]}}]}},{"UIALink":{"@":{"name":"iMac with Retina 5K Display","label":"iMac with Retina 5K Display","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/14","x":0,"y":96,"width":0,"height":1},">":[{"UIAStaticText":{"@":{"name":"iMac with Retina 5K Display","label":"iMac with Retina 5K Display","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/14/0","x":0,"y":96,"width":0,"height":1},">":[]}}]}},{"UIAStaticText":{"@":{"name":"Shop the","label":"Shop the","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/15","x":22,"y":1157,"width":48,"height":14},">":[]}},{"UIALink":{
info: [debug] [INST] "@":{"name":"Apple Online Store","label":"Apple Online Store","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/16","x":69,"y":1157,"width":93,"height":14},">":[{"UIAStaticText":{"@":{"name":"Apple Online Store","label":"Apple Online Store","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/16/0","x":69,"y":1157,"width":93,"height":14},">":[]}}]}},{"UIAStaticText":{"@":{"name":"(","label":"(","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/17","x":161,"y":1157,"width":7,"height":14},">":[]}},{"UIALink":{"@":{"name":"1-800-MY-APPLE","label":"1-800-MY-APPLE","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/18","x":167,"y":1157,"width":82,"height":14},">":[{"UIAStaticText":{"@":{"name":"1-800-MY-APPLE","label":"1-800-MY-APPLE","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/18/0","x":167,"y":1157,"width":82,"height":14},">":[]}}]}},{"UIAStaticText":{"@":{"name":"),","label":"),","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/19","x":248,"y":1157,"width":7,"height":14},">":[]}},{"UIAStaticText":{"@":{"name":"visit an","label":"visit an","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/20","x":254,"y":1157,"width":41,"height":14},">":[]}},{"UIALink":{"@":{"name":"Apple Retail Store","label":"Apple Retail Store","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/21","x":294,"y":1157,"width":88,"height":14},">":[{"UIAStaticText":{"@":{"name":"Apple Retail Store","label":"Apple Retail Store","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/21/0","x":294,"y":1157,"width":88,"height":14},">":[]}}]}},{"UIAStaticText":{"@":{"name":", or find a","label":", or find a","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/22","x":381,"y":1157,"width":49,"height":14},">":[]}},{"UIALink":{"@":{"name":"reseller","label":"reseller","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/23","x":429,"y":1157,"width":36,"height":14},">":[{"UIAStaticText":{"@":{"name":"reseller","label":"reseller","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/23/0","x":429,"y":1157,"width":36,"height":14},">":[]}}]}},{"UIAStaticText":{"@":{"name":".","label":".","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/24","x":464,"y":1157,"width":4,"height":14},">":[]}},{"UIALink":{"@":{"name":"Apple Info","label":"Apple Info","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/25","x":22,"y":1180,"width":51,"height":14},">":[{"UIAStaticText":{"@":{"name":"Apple Info","label":"Apple Info","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/25/0","x":22,"y":1180,"width":51,"height":14},">":[]}}]}},{"UIALink":{"@":{"name":"Site Map","label":"Site Map","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/26","x":86,"y":1180,"width":44,"height":14},">":[{"UIAStaticText":{"@":{"name":"Site Map","label":"Site Map","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/26/0","x":86,"y":1180,"width":44,"height":14},">":[]}}]}},{"UIALink":{"@":{"name":"Hot News","label":"Hot News","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/27","x":142,"y":1180,"width":49,"height":14},">":[{"UIAStaticText":{"@":{"name":"Hot News","label":"Hot News","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/27/0","x":142,"y":1180,"width":49,"height":14},">":[]}}]}},{"UIALink":{"@":{"name":"RSS Feeds","label":"RSS Feeds","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/28","x":204,"y":1180,"width":50,"height":14},">":[{"UIAStaticText":{"@":{"name":"RSS Feeds","label":"RSS Feeds","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/28/0","x":204,"y":1180,"width":50,"height":14},">":[]}}]}},{"UIALink":{"@":{"name":"Jobs","label":"Jobs","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/29","x":266,"y":1180,"width":23,"height":14},">":[{"UIAStaticText":{"@":{"name":"Jobs","label":"Jobs","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/29/0","x":266,"y":1180,"width":23,"height":14},">":[]}}]}},{"UIALink":{"@":{"name":"Contact Us","label":"Contact Us","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/30","x":302,"y":1180,"width":54,"height":14},">":[{"UIAStaticText":{"@":{"name":"Contact Us","label":"Contact Us","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/30/0","x":302,"y":1180,"width":54,"height":14},">":[]}}]}},{"UIALink":{"@":{"name":"Choose your country or region","label":"Choose your country or region","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/31","x":370,"y":1177,"width":17,"height":17},">":[{"UIAImage":{"@":{"name":"Choose your country or region","label":"Choose your country or region","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/31/0","x":370,"y":1177,"width":17,"height":17},">":[]}}]}},{"UIAStaticText":{"@":{"name":"Copyright © 2015 Apple Inc. All rights reserved.","label":"Copyright © 2015 Apple Inc. All rights reserved.","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/32","x":22,"y":1203,"width":228,"height":14},">":[]}},{"UIALink":{"@":{"name":"Terms of Use","label":"Terms of Use","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/33","x":258,"y":1203,"width":63,"height":14},">":[{"UIAStaticText":{"@":{"name":"Terms of Use","label":"Terms of Use","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/33/0","x":258,"y":1203,"width":63,"height":14},">":[]}}]}},{"UIALink":{"@":{"name":"Updated Privacy Policy","label":"Updated Privacy Policy","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/34","x":334,"y":1203,"width":112,"height":14},">":[{"UIAStaticText":{"@":{"name":"Updated Privacy Policy","label":"Updated Privacy Policy","value":"","dom":{"id":""},"enabled":true,"valid":true,"visible":false,"hint":"","path":"/0/1/3/0/0/34/0","x":334,"y":1203,"width":112,"height":14},">":[]}}]}}]}},{"UIAImage":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":false,"hint":null,"path":"/0/1/3/0/1","x":765.5,"y":1049.5,"width":2.5,"height":7},">":[]}},{"UIAImage":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":false,"hint":null,"path":"/0/1/3/0/2","x":761,"y":1118,"width":7,"height":2.5},">":[]}}]}},{"UIAImage":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":false,"hint":null,"path":"/0/1/3/1","x":761,"y":1021.5,"width":7,"height":2.5},">":[]}}]}},{"UIAStaticText":{"@":{"name":"Apple - iPhone, Tab","label":"Apple - iPhone, Tab","value":"Apple - iPhone, Tab","dom":null,"enabled":true,"valid":true,"visible":true,"hint":"Double tap and hold, then move left or right to re-order.","path":"/0/1/4","x":0,"y":64,"width":384,"height":32.5},">":[]}},{"UIAStaticText":{"@":{"name":"Apple - iPhone","label":"Apple - iPhone","value":"Apple - iPhone","dom":null,"enabled":true,"valid":true,"visible":false,"hint":null,"path":"/0/1/5","x":150,"y":73,"width":84,"height":14.5},">":[]}},{
info: [debug] [INST] "UIAScrollView":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/6","x":0,"y":64,"width":768,"height":32.5},">":[{"UIAImage":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":false,"hint":null,"path":"/0/1/6/0","x":765.5,"y":28,"width":2.5,"height":36},">":[]}}]}},{"UIAStaticText":{"@":{"name":"Apple, Tab","label":"Apple, Tab","value":"Apple, Tab","dom":null,"enabled":true,"valid":true,"visible":true,"hint":"Double tap and hold, then move left or right to re-order.","path":"/0/1/7","x":411,"y":64,"width":357,"height":32.5},">":[]}},{"UIAStaticText":{"@":{"name":"Apple","label":"Apple","value":"Apple","dom":null,"enabled":true,"valid":true,"visible":false,"hint":null,"path":"/0/1/8","x":559.5,"y":73,"width":33,"height":14.5},">":[]}},{"UIAButton":{"@":{"name":"Close Tab","label":"Close Tab","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/1/9","x":384,"y":64,"width":27,"height":32.5},">":[]}},{"UIAStaticText":{"@":{"name":"Apple - iPhone, Tab","label":"Apple - iPhone, Tab","value":"Apple - iPhone, Tab","dom":null,"enabled":true,"valid":true,"visible":false,"hint":"Double tap and hold, then move left or right to re-order.","path":"/0/1/10","x":0,"y":64,"width":384,"height":32.5},">":[]}},{"UIAStaticText":{"@":{"name":"Apple - iPhone","label":"Apple - iPhone","value":"Apple - iPhone","dom":null,"enabled":true,"valid":true,"visible":false,"hint":null,"path":"/0/1/11","x":150,"y":73,"width":84,"height":14.5},">":[]}}]}},{"UIAWindow":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":false,"hint":null,"path":"/0/2","x":0,"y":0,"width":768,"height":1024},">":[]}},{"UIAWindow":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/3","x":0,"y":0,"width":768,"height":1024},">":[{"UIAStatusBar":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0/3/0","x":0,"y":0,"width":768,"height":20},">":[{"UIAElement":{"@":{"name":"iPad","label":"iPad","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":"Swipe down with three fingers to reveal the notification center., Swipe up with three fingers to reveal the control center, Double-tap to scroll to top","path":"/0/3/0/0","x":6,"y":0,"width":25,"height":20},">":[]}},{"UIAElement":{"@":{"name":"3 of 3 Wi-Fi bars","label":"3 of 3 Wi-Fi bars","value":"krzychu kadetem tera","dom":null,"enabled":true,"valid":true,"visible":true,"hint":"Swipe down with three fingers to reveal the notification center., Swipe up with three fingers to reveal the control center, Double-tap to scroll to top","path":"/0/3/0/1","x":36,"y":0,"width":13,"height":20},">":[]}},{"UIAElement":{"@":{"name":"19:03","label":"19:03","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":"Swipe down with three fingers to reveal the notification center., Swipe up with three fingers to reveal the control center, Double-tap to scroll to top","path":"/0/3/0/2","x":369,"y":0,"width":30,"height":20},">":[]}},{"UIAElement":{"@":{"name":"100% battery power, On AC Power","label":"100% battery power, On AC Power","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":"Swipe down with three fingers to reveal the notification center., Swipe up with three fingers to reveal the control center, Double-tap to scroll to top","path":"/0/3/0/3","x":696,"y":0,"width":67,"height":20},">":[]}}]}}]}}]}}}
info: [debug] [INST] 2015-02-02 18:03:52 +0000 Debug: Running system command #3: /usr/local/bin/node /Users/hinok/Desktop/Dev/appium/node_modules/appium-uiauto/bin/command-proxy-client.js /tmp/instruments_sock 2,{"status":0,"value":{"UIAApplication":{"@":{"name":"Safari","label":"Safari","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0","...
info: [debug] Socket data received (8188 bytes)
info: [debug] Socket data received (8106 bytes)
info: [debug] Socket data received (8190 bytes)
info: [debug] Socket data received (3875 bytes)
info: [debug] Socket data being routed.
info: [debug] Got result from instruments: {"status":0,"value":{"UIAApplication":{"@":{"name":"Safari","label":"Safari","value":null,"dom":null,"enabled":true,"valid":true,"visible":true,"hint":null,"path":"/0","x":0,"y":20,"width":768,"height":1004},">":[{"UIAWindow":{"@":{"name":null,"label":null,"value":null,"dom":null,"enabled":true,"val
info: [debug] Navigating to most recently opened webview
info: [debug] [REMOTE] Getting WebKitRemoteDebugger pageArray
info: [debug] Picking webview WEBVIEW_1
info: [debug] Attempting to set context to 'WEBVIEW_1'
info: [debug] [REMOTE] Debugger web socket connected to url [ws://localhost:27753/devtools/page/1]
info: [debug] Starting performance log on 1
info: [debug] Starting to capture timeline logs
info: [debug] [REMOTE] Starting to record the timeline
info: [debug] [REMOTE] Remote debugger data sent [{"method":"Timeline.start","params":{"objectGroup":"console","includeCommandLineAPI":true,"doNotPauseOnExceptionsAndMuteConsole":true},"id":1}...]
Debugger web socket received data :  {"method":"Timeline.recordingStarted"}
info: [debug] [REMOTE] Debugger got a message for 'Timeline.recordingStarted' and have no handler, doing nothing.
Debugger web socket received data :  {"result":{},"id":1}
info: [debug] [REMOTE] Debugger got a message for 'Timeline.start' and have no handler, doing nothing.
Debugger web socket received data :  {"method":"Timeline.eventRecorded","params":{"record":{"startTime":1422900248908.915,"frameId":"0.1","data":{"timerId":5},"children":[{"startTime":1422900248908.9604,"frameId":"0.1","data":{"scriptName":"undefined","scriptLine":1,"profile":{"rootNodes":[{"id":12970251,"calls":[{"startTime":1422900248.909204,"totalTime":0.003640890121459961}],"functionName":"(anonymous function)","children":[{"id":15250026,"calls":[{"startTime":1422900248.909707,"totalTime":0.003134012222290039}],"functionName":"(anonymous function)","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":977,"columnNumber":120,"children":[{"id":7361310,"calls":[{"startTime":1422900248.909735,"totalTime":0.0030989646911621094}],"functionName":"showNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":665,"columnNumber":25,"children":[{"id":3040487,"calls":[{"startTime":1422900248.909965,"totalTime":0.0006868839263916016}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900248.910372,"totalTime":0.0002760887145996094}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900248.910531,"totalTime":0.00002002716064453125},{"startTime":1422900248.910555,"totalTime":0.0000040531158447265625}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900248.910561,"totalTime":0.00008392333984375}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":9265625,"calls":[{"startTime":1422900248.910655,"totalTime":0.0003299713134765625}],"functionName":"getNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":661,"columnNumber":37,"children":[{"id":12803190,"calls":[{"startTime":1422900248.910829,"totalTime":0.00004887580871582031}],"functionName":"getSelectedIndex","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":664,"columnNumber":65},{"id":15114518,"calls":[{"startTime":1422900248.910881,"totalTime":0.00004887580871582031}],"functionName":"isEndless","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":45},{"id":1567471,"calls":[{"startTime":1422900248.910934,"totalTime":0.00004696846008300781}],"functionName":"numKeyframes","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":660,"columnNumber":28}]},{"id":4294787,"calls":[{"startTime":1422900248.910988,"totalTime":0.00023698806762695313}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900248.911163,"totalTime":0.000008821487426757813}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900248.911173,"totalTime":0.00005078315734863281}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":1983879,"calls":[{"startTime":1422900248.911229,"totalTime":0.0016040802001953125}],"functionName":"show","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":95,"children":[{"id":3040487,"calls":[{"startTime":1422900248.911794,"totalTime":0.00003314018249511719}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900248.911798,"totalTime":0.000027894973754882813}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900248.911805,"totalTime":0.000008106231689453125},{"startTime":1422900248.911815,"totalTime":0.0000030994415283203125}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900248.911819,"totalTime":0.0000050067901611328125}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":11039771,"calls":[{"startTime":1422900248.91184,"totalTime":0.00017905235290527344}],"functionName":"create","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":892,"columnNumber":84,"children":[{"id":8646418,"calls":[{"startTime":1422900248.911925,"totalTime":0.00009298324584960938}],"functionName":"n","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":879,"columnNumber":65}]},{"id":4294787,"calls":[{"startTime":1422900248.912022,"totalTime":0.000016927719116210938}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900248.91203,"totalTime":0.0000030994415283203125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900248.912034,"totalTime":0.0000040531158447265625}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":10145964,"calls":[{"startTime":1422900248.912043,"totalTime":0.00009679794311523438}],"functionName":"isLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":676,"columnNumber":24,"children":[{"id":15957860,"calls":[{"startTime":1422900248.912097,"totalTime":0.000041961669921875}],"functionName":"getLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":675,"columnNumber":96}]},{"id":13328983,"calls":[{"startTime":1422900248.912149,"totalTime":0.0006811618804931641}],"functionName":"m","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":179,"columnNumber":133,"children":[{"id":11026160,"calls":[{"startTime":1422900248.912286,"totalTime":0.00000286102294921875}],"functionName":"slice"},{"id":1932237,"calls":[{"startTime":1422900248.912291,"totalTime":0.0005190372467041016}],"functionName":"resolve","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":169,"columnNumber":91,"children":[{"id":11281676,"calls":[{"startTime":1422900248.912416,"totalTime":0.00038909912109375}],"functionName":"c","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":157,"columnNumber":78}]},{"id":4294787,"calls":[{"startTime":1422900248.912813,"totalTime":0.000015974044799804688}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900248.91282,"totalTime":0.00000286102294921875}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900248.912824,"totalTime":0.0000040531158447265625}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]}]}]}]}]}]}],"idleTime":0.000049114227294921875}},"children":[],"endTime":1422900248913.1462,"type":"FunctionCall"}],"endTime":1422900248913.161,"type":"TimerFire"}}}
info: [debug] Flushing Timeline events
Debugger web socket received data :  {"method":"Timeline.eventRecorded","params":{"record":{"startTime":1422900258914.086,"frameId":"0.1","data":{"timerId":5},"children":[{"startTime":1422900258914.1174,"frameId":"0.1","data":{"scriptName":"undefined","scriptLine":1,"profile":{"rootNodes":[{"id":12970251,"calls":[{"startTime":1422900258.914321,"totalTime":0.0002911090850830078}],"functionName":"(anonymous function)","children":[{"id":15250026,"calls":[{"startTime":1422900258.91433,"totalTime":0.0002779960632324219}],"functionName":"(anonymous function)","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":977,"columnNumber":120,"children":[{"id":7361310,"calls":[{"startTime":1422900258.914348,"totalTime":0.0002582073211669922}],"functionName":"showNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":665,"columnNumber":25,"children":[{"id":3040487,"calls":[{"startTime":1422900258.914356,"totalTime":0.00006794929504394531}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900258.914362,"totalTime":0.00006008148193359375}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900258.914377,"totalTime":0.0000209808349609375},{"startTime":1422900258.914402,"totalTime":0.0000040531158447265625}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900258.914408,"totalTime":0.000013113021850585938}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":9265625,"calls":[{"startTime":1422900258.914428,"totalTime":0.00002288818359375}],"functionName":"getNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":661,"columnNumber":37,"children":[{"id":12803190,"calls":[{"startTime":1422900258.914432,"totalTime":0.00000286102294921875}],"functionName":"getSelectedIndex","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":664,"columnNumber":65},{"id":15114518,"calls":[{"startTime":1422900258.914439,"totalTime":0.0000021457672119140625}],"functionName":"isEndless","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":45},{"id":1567471,"calls":[{"startTime":1422900258.914445,"totalTime":0.0000030994415283203125}],"functionName":"numKeyframes","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":660,"columnNumber":28}]},{"id":4294787,"calls":[{"startTime":1422900258.914454,"totalTime":0.000031948089599609375}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900258.914465,"totalTime":0.000008106231689453125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900258.914474,"totalTime":0.000010967254638671875}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":1983879,"calls":[{"startTime":1422900258.91449,"totalTime":0.00011396408081054688}],"functionName":"show","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":95,"children":[{"id":3040487,"calls":[{"startTime":1422900258.914493,"totalTime":0.00002002716064453125}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900258.914495,"totalTime":0.000016927719116210938}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900258.914498,"totalTime":0.000003814697265625},{"startTime":1422900258.914504,"totalTime":0.0000019073486328125}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900258.914508,"totalTime":0.00000286102294921875}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":11039771,"calls":[{"startTime":1422900258.914518,"totalTime":0.000010967254638671875}],"functionName":"create","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":892,"columnNumber":84,"children":[{"id":8646418,"calls":[{"startTime":1422900258.914523,"totalTime":0.0000050067901611328125}],"functionName":"n","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":879,"columnNumber":65}]},{"id":4294787,"calls":[{"startTime":1422900258.914532,"totalTime":0.000010967254638671875}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900258.914535,"totalTime":0.00000286102294921875}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900258.914539,"totalTime":0.00000286102294921875}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":10145964,"calls":[{"startTime":1422900258.914547,"totalTime":0.0000059604644775390625}],"functionName":"isLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":676,"columnNumber":24,"children":[{"id":15957860,"calls":[{"startTime":1422900258.91455,"totalTime":0.00000286102294921875}],"functionName":"getLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":675,"columnNumber":96}]},{"id":13328983,"calls":[{"startTime":1422900258.914559,"totalTime":0.00004410743713378906}],"functionName":"m","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":179,"columnNumber":133,"children":[{"id":11026160,"calls":[{"startTime":1422900258.914564,"totalTime":0.0000030994415283203125}],"functionName":"slice"},{"id":1932237,"calls":[{"startTime":1422900258.914568,"totalTime":0.0000209808349609375}],"functionName":"resolve","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":169,"columnNumber":91,"children":[{"id":11281676,"calls":[{"startTime":1422900258.914579,"totalTime":0.000007152557373046875}],"functionName":"c","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":157,"columnNumber":78}]},{"id":4294787,"calls":[{"startTime":1422900258.914591,"totalTime":0.000010967254638671875}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900258.914595,"totalTime":0.0000021457672119140625}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900258.914598,"totalTime":0.0000030994415283203125}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]}]}]}]}]}]}],"idleTime":0.00003170967102050781}},"children":[],"endTime":1422900258914.877,"type":"FunctionCall"}],"endTime":1422900258914.89,"type":"TimerFire"}}}
Debugger web socket received data :  {"method":"Timeline.eventRecorded","params":{"record":{"startTime":1422900268919.2268,"frameId":"0.1","data":{"timerId":5},"children":[{"startTime":1422900268919.2593,"frameId":"0.1","data":{"scriptName":"undefined","scriptLine":1,"profile":{"rootNodes":[{"id":12970251,"calls":[{"startTime":1422900268.919464,"totalTime":0.00029277801513671875}],"functionName":"(anonymous function)","children":[{"id":15250026,"calls":[{"startTime":1422900268.919472,"totalTime":0.0002810955047607422}],"functionName":"(anonymous function)","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":977,"columnNumber":120,"children":[{"id":7361310,"calls":[{"startTime":1422900268.91949,"totalTime":0.0002608299255371094}],"functionName":"showNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":665,"columnNumber":25,"children":[{"id":3040487,"calls":[{"startTime":1422900268.919499,"totalTime":0.00006818771362304688}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900268.919505,"totalTime":0.00006008148193359375}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900268.919519,"totalTime":0.00002193450927734375},{"startTime":1422900268.919544,"totalTime":0.0000050067901611328125}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900268.91955,"totalTime":0.000014066696166992188}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":9265625,"calls":[{"startTime":1422900268.919571,"totalTime":0.000024080276489257813}],"functionName":"getNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":661,"columnNumber":37,"children":[{"id":12803190,"calls":[{"startTime":1422900268.919576,"totalTime":0.0000030994415283203125}],"functionName":"getSelectedIndex","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":664,"columnNumber":65},{"id":15114518,"calls":[{"startTime":1422900268.919583,"totalTime":0.0000019073486328125}],"functionName":"isEndless","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":45},{"id":1567471,"calls":[{"startTime":1422900268.919589,"totalTime":0.0000019073486328125}],"functionName":"numKeyframes","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":660,"columnNumber":28}]},{"id":4294787,"calls":[{"startTime":1422900268.919598,"totalTime":0.000031948089599609375}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900268.919609,"totalTime":0.0000069141387939453125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900268.919617,"totalTime":0.000010967254638671875}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":1983879,"calls":[{"startTime":1422900268.919634,"totalTime":0.00011587142944335938}],"functionName":"show","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":95,"children":[{"id":3040487,"calls":[{"startTime":1422900268.919638,"totalTime":0.00002002716064453125}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900268.91964,"totalTime":0.000016927719116210938}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900268.919643,"totalTime":0.0000040531158447265625},{"startTime":1422900268.919649,"totalTime":0.0000030994415283203125}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900268.919653,"totalTime":0.0000030994415283203125}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":11039771,"calls":[{"startTime":1422900268.919663,"totalTime":0.000010967254638671875}],"functionName":"create","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":892,"columnNumber":84,"children":[{"id":8646418,"calls":[{"startTime":1422900268.919668,"totalTime":0.0000050067901611328125}],"functionName":"n","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":879,"columnNumber":65}]},{"id":4294787,"calls":[{"startTime":1422900268.919676,"totalTime":0.000011920928955078125}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900268.91968,"totalTime":0.00000286102294921875}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900268.919684,"totalTime":0.0000030994415283203125}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":10145964,"calls":[{"startTime":1422900268.919692,"totalTime":0.0000059604644775390625}],"functionName":"isLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":676,"columnNumber":24,"children":[{"id":15957860,"calls":[{"startTime":1422900268.919695,"totalTime":0.0000021457672119140625}],"functionName":"getLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":675,"columnNumber":96}]},{"id":13328983,"calls":[{"startTime":1422900268.919705,"totalTime":0.00004315376281738281}],"functionName":"m","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":179,"columnNumber":133,"children":[{"id":11026160,"calls":[{"startTime":1422900268.91971,"totalTime":0.0000021457672119140625}],"functionName":"slice"},{"id":1932237,"calls":[{"startTime":1422900268.919713,"totalTime":0.0000209808349609375}],"functionName":"resolve","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":169,"columnNumber":91,"children":[{"id":11281676,"calls":[{"startTime":1422900268.919724,"totalTime":0.000008106231689453125}],"functionName":"c","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":157,"columnNumber":78}]},{"id":4294787,"calls":[{"startTime":1422900268.919736,"totalTime":0.000011205673217773438}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900268.91974,"totalTime":0.0000021457672119140625}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900268.919743,"totalTime":0.00000286102294921875}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]}]}]}]}]}]}],"idleTime":0.00003218650817871094}},"children":[],"endTime":1422900268920.0244,"type":"FunctionCall"}],"endTime":1422900268920.0369,"type":"TimerFire"}}}
Debugger web socket received data :  {"method":"Timeline.eventRecorded","params":{"record":{"startTime":1422900278924.4292,"frameId":"0.1","data":{"timerId":5},"children":[{"startTime":1422900278924.4617,"frameId":"0.1","data":{"scriptName":"undefined","scriptLine":1,"profile":{"rootNodes":[{"id":12970251,"calls":[{"startTime":1422900278.924666,"totalTime":0.00029015541076660156}],"functionName":"(anonymous function)","children":[{"id":15250026,"calls":[{"startTime":1422900278.924675,"totalTime":0.0002779960632324219}],"functionName":"(anonymous function)","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":977,"columnNumber":120,"children":[{"id":7361310,"calls":[{"startTime":1422900278.924692,"totalTime":0.0002579689025878906}],"functionName":"showNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":665,"columnNumber":25,"children":[{"id":3040487,"calls":[{"startTime":1422900278.9247,"totalTime":0.00006794929504394531}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900278.924706,"totalTime":0.00006008148193359375}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900278.924721,"totalTime":0.0000209808349609375},{"startTime":1422900278.924746,"totalTime":0.0000040531158447265625}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900278.924752,"totalTime":0.000013113021850585938}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":9265625,"calls":[{"startTime":1422900278.924772,"totalTime":0.00002288818359375}],"functionName":"getNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":661,"columnNumber":37,"children":[{"id":12803190,"calls":[{"startTime":1422900278.924777,"totalTime":0.00000286102294921875}],"functionName":"getSelectedIndex","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":664,"columnNumber":65},{"id":15114518,"calls":[{"startTime":1422900278.924783,"totalTime":0.0000019073486328125}],"functionName":"isEndless","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":45},{"id":1567471,"calls":[{"startTime":1422900278.924789,"totalTime":0.0000021457672119140625}],"functionName":"numKeyframes","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":660,"columnNumber":28}]},{"id":4294787,"calls":[{"startTime":1422900278.924799,"totalTime":0.000030994415283203125}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900278.924809,"totalTime":0.000008106231689453125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900278.924818,"totalTime":0.000010967254638671875}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":1983879,"calls":[{"startTime":1422900278.924834,"totalTime":0.00011491775512695313}],"functionName":"show","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":95,"children":[{"id":3040487,"calls":[{"startTime":1422900278.924837,"totalTime":0.00002193450927734375}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900278.924839,"totalTime":0.000017881393432617188}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900278.924843,"totalTime":0.000003814697265625},{"startTime":1422900278.924848,"totalTime":0.000003814697265625}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900278.924853,"totalTime":0.00000286102294921875}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":11039771,"calls":[{"startTime":1422900278.924864,"totalTime":0.000010967254638671875}],"functionName":"create","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":892,"columnNumber":84,"children":[{"id":8646418,"calls":[{"startTime":1422900278.924868,"totalTime":0.0000059604644775390625}],"functionName":"n","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":879,"columnNumber":65}]},{"id":4294787,"calls":[{"startTime":1422900278.924877,"totalTime":0.000010013580322265625}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900278.924881,"totalTime":0.0000019073486328125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900278.924884,"totalTime":0.0000019073486328125}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":10145964,"calls":[{"startTime":1422900278.924892,"totalTime":0.0000059604644775390625}],"functionName":"isLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":676,"columnNumber":24,"children":[{"id":15957860,"calls":[{"startTime":1422900278.924895,"totalTime":0.0000019073486328125}],"functionName":"getLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":675,"columnNumber":96}]},{"id":13328983,"calls":[{"startTime":1422900278.924903,"totalTime":0.00004506111145019531}],"functionName":"m","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":179,"columnNumber":133,"children":[{"id":11026160,"calls":[{"startTime":1422900278.924908,"totalTime":0.0000030994415283203125}],"functionName":"slice"},{"id":1932237,"calls":[{"startTime":1422900278.924912,"totalTime":0.00002193450927734375}],"functionName":"resolve","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":169,"columnNumber":91,"children":[{"id":11281676,"calls":[{"startTime":1422900278.924923,"totalTime":0.000008106231689453125}],"functionName":"c","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":157,"columnNumber":78}]},{"id":4294787,"calls":[{"startTime":1422900278.924936,"totalTime":0.000010967254638671875}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900278.92494,"totalTime":0.0000019073486328125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900278.924943,"totalTime":0.0000030994415283203125}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]}]}]}]}]}]}],"idleTime":0.00003170967102050781}},"children":[],"endTime":1422900278925.2256,"type":"FunctionCall"}],"endTime":1422900278925.2383,"type":"TimerFire"}}}
Debugger web socket received data :  {"method":"Timeline.eventRecorded","params":{"record":{"startTime":1422900288929.5525,"frameId":"0.1","data":{"timerId":5},"children":[{"startTime":1422900288929.5852,"frameId":"0.1","data":{"scriptName":"undefined","scriptLine":1,"profile":{"rootNodes":[{"id":12970251,"calls":[{"startTime":1422900288.929793,"totalTime":0.0002942085266113281}],"functionName":"(anonymous function)","children":[{"id":15250026,"calls":[{"startTime":1422900288.929802,"totalTime":0.0002810955047607422}],"functionName":"(anonymous function)","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":977,"columnNumber":120,"children":[{"id":7361310,"calls":[{"startTime":1422900288.92982,"totalTime":0.0002608299255371094}],"functionName":"showNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":665,"columnNumber":25,"children":[{"id":3040487,"calls":[{"startTime":1422900288.929829,"totalTime":0.00006818771362304688}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900288.929835,"totalTime":0.00005984306335449219}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900288.92985,"totalTime":0.0000209808349609375},{"startTime":1422900288.929875,"totalTime":0.0000040531158447265625}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900288.929881,"totalTime":0.000012874603271484375}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":9265625,"calls":[{"startTime":1422900288.929901,"totalTime":0.000022172927856445313}],"functionName":"getNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":661,"columnNumber":37,"children":[{"id":12803190,"calls":[{"startTime":1422900288.929905,"totalTime":0.0000030994415283203125}],"functionName":"getSelectedIndex","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":664,"columnNumber":65},{"id":15114518,"calls":[{"startTime":1422900288.929912,"totalTime":0.0000019073486328125}],"functionName":"isEndless","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":45},{"id":1567471,"calls":[{"startTime":1422900288.929918,"totalTime":0.0000019073486328125}],"functionName":"numKeyframes","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":660,"columnNumber":28}]},{"id":4294787,"calls":[{"startTime":1422900288.929926,"totalTime":0.00003314018249511719}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900288.929938,"totalTime":0.0000069141387939453125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900288.929947,"totalTime":0.000010013580322265625}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":1983879,"calls":[{"startTime":1422900288.929963,"totalTime":0.00011682510375976563}],"functionName":"show","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":95,"children":[{"id":3040487,"calls":[{"startTime":1422900288.929966,"totalTime":0.00002193450927734375}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900288.929969,"totalTime":0.000017881393432617188}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900288.929973,"totalTime":0.0000040531158447265625},{"startTime":1422900288.929978,"totalTime":0.0000040531158447265625}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900288.929983,"totalTime":0.0000030994415283203125}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":11039771,"calls":[{"startTime":1422900288.929993,"totalTime":0.000010967254638671875}],"functionName":"create","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":892,"columnNumber":84,"children":[{"id":8646418,"calls":[{"startTime":1422900288.929997,"totalTime":0.0000059604644775390625}],"functionName":"n","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":879,"columnNumber":65}]},{"id":4294787,"calls":[{"startTime":1422900288.930006,"totalTime":0.000011920928955078125}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900288.93001,"totalTime":0.00000286102294921875}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900288.930014,"totalTime":0.0000021457672119140625}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":10145964,"calls":[{"startTime":1422900288.930022,"totalTime":0.0000059604644775390625}],"functionName":"isLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":676,"columnNumber":24,"children":[{"id":15957860,"calls":[{"startTime":1422900288.930025,"totalTime":0.0000019073486328125}],"functionName":"getLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":675,"columnNumber":96}]},{"id":13328983,"calls":[{"startTime":1422900288.930034,"totalTime":0.00004506111145019531}],"functionName":"m","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":179,"columnNumber":133,"children":[{"id":11026160,"calls":[{"startTime":1422900288.930039,"totalTime":0.0000021457672119140625}],"functionName":"slice"},{"id":1932237,"calls":[{"startTime":1422900288.930042,"totalTime":0.00002288818359375}],"functionName":"resolve","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":169,"columnNumber":91,"children":[{"id":11281676,"calls":[{"startTime":1422900288.930054,"totalTime":0.000008106231689453125}],"functionName":"c","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":157,"columnNumber":78}]},{"id":4294787,"calls":[{"startTime":1422900288.930067,"totalTime":0.000010967254638671875}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900288.930071,"totalTime":0.0000019073486328125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900288.930074,"totalTime":0.0000030994415283203125}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]}]}]}]}]}]}],"idleTime":0.00003361701965332031}},"children":[],"endTime":1422900288930.358,"type":"FunctionCall"}],"endTime":1422900288930.37,"type":"TimerFire"}}}
Debugger web socket received data :  {"method":"Timeline.eventRecorded","params":{"record":{"startTime":1422900298934.7588,"frameId":"0.1","data":{"timerId":5},"children":[{"startTime":1422900298934.792,"frameId":"0.1","data":{"scriptName":"undefined","scriptLine":1,"profile":{"rootNodes":[{"id":12970251,"calls":[{"startTime":1422900298.934995,"totalTime":0.0002911090850830078}],"functionName":"(anonymous function)","children":[{"id":15250026,"calls":[{"startTime":1422900298.935005,"totalTime":0.0002770423889160156}],"functionName":"(anonymous function)","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":977,"columnNumber":120,"children":[{"id":7361310,"calls":[{"startTime":1422900298.935022,"totalTime":0.0002579689025878906}],"functionName":"showNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":665,"columnNumber":25,"children":[{"id":3040487,"calls":[{"startTime":1422900298.93503,"totalTime":0.00006699562072753906}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900298.935036,"totalTime":0.0000591278076171875}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900298.93505,"totalTime":0.0000209808349609375},{"startTime":1422900298.935074,"totalTime":0.0000050067901611328125}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900298.93508,"totalTime":0.000014066696166992188}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":9265625,"calls":[{"startTime":1422900298.935101,"totalTime":0.000024080276489257813}],"functionName":"getNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":661,"columnNumber":37,"children":[{"id":12803190,"calls":[{"startTime":1422900298.935106,"totalTime":0.00000286102294921875}],"functionName":"getSelectedIndex","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":664,"columnNumber":65},{"id":15114518,"calls":[{"startTime":1422900298.935113,"totalTime":0.0000021457672119140625}],"functionName":"isEndless","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":45},{"id":1567471,"calls":[{"startTime":1422900298.935119,"totalTime":0.0000030994415283203125}],"functionName":"numKeyframes","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":660,"columnNumber":28}]},{"id":4294787,"calls":[{"startTime":1422900298.935129,"totalTime":0.00003218650817871094}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900298.935139,"totalTime":0.000008106231689453125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900298.935149,"totalTime":0.000010013580322265625}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":1983879,"calls":[{"startTime":1422900298.935164,"totalTime":0.00011396408081054688}],"functionName":"show","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":95,"children":[{"id":3040487,"calls":[{"startTime":1422900298.935167,"totalTime":0.00002193450927734375}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900298.93517,"totalTime":0.0000171661376953125}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900298.935173,"totalTime":0.0000040531158447265625},{"startTime":1422900298.935179,"totalTime":0.0000030994415283203125}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900298.935183,"totalTime":0.00000286102294921875}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":11039771,"calls":[{"startTime":1422900298.935193,"totalTime":0.000010967254638671875}],"functionName":"create","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":892,"columnNumber":84,"children":[{"id":8646418,"calls":[{"startTime":1422900298.935197,"totalTime":0.0000059604644775390625}],"functionName":"n","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":879,"columnNumber":65}]},{"id":4294787,"calls":[{"startTime":1422900298.935206,"totalTime":0.000012159347534179688}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900298.93521,"totalTime":0.0000030994415283203125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900298.935214,"totalTime":0.00000286102294921875}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":10145964,"calls":[{"startTime":1422900298.935222,"totalTime":0.000006198883056640625}],"functionName":"isLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":676,"columnNumber":24,"children":[{"id":15957860,"calls":[{"startTime":1422900298.935225,"totalTime":0.0000030994415283203125}],"functionName":"getLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":675,"columnNumber":96}]},{"id":13328983,"calls":[{"startTime":1422900298.935234,"totalTime":0.00004291534423828125}],"functionName":"m","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":179,"columnNumber":133,"children":[{"id":11026160,"calls":[{"startTime":1422900298.935239,"totalTime":0.0000019073486328125}],"functionName":"slice"},{"id":1932237,"calls":[{"startTime":1422900298.935243,"totalTime":0.000021219253540039063}],"functionName":"resolve","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":169,"columnNumber":91,"children":[{"id":11281676,"calls":[{"startTime":1422900298.935254,"totalTime":0.000007867813110351563}],"functionName":"c","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":157,"columnNumber":78}]},{"id":4294787,"calls":[{"startTime":1422900298.935266,"totalTime":0.000010967254638671875}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900298.93527,"totalTime":0.00000095367431640625}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900298.935273,"totalTime":0.0000030994415283203125}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]}]}]}]}]}]}],"idleTime":0.00003170967102050781}},"children":[],"endTime":1422900298935.5532,"type":"FunctionCall"}],"endTime":1422900298935.5657,"type":"TimerFire"}}}
Debugger web socket received data :  {"method":"Timeline.eventRecorded","params":{"record":{"startTime":1422900308938.2883,"frameId":"0.1","data":{"timerId":5},"children":[{"startTime":1422900308938.3188,"frameId":"0.1","data":{"scriptName":"undefined","scriptLine":1,"profile":{"rootNodes":[{"id":12970251,"calls":[{"startTime":1422900308.938524,"totalTime":0.0002899169921875}],"functionName":"(anonymous function)","children":[{"id":15250026,"calls":[{"startTime":1422900308.938533,"totalTime":0.0002770423889160156}],"functionName":"(anonymous function)","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":977,"columnNumber":120,"children":[{"id":7361310,"calls":[{"startTime":1422900308.93855,"totalTime":0.0002570152282714844}],"functionName":"showNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":665,"columnNumber":25,"children":[{"id":3040487,"calls":[{"startTime":1422900308.938559,"totalTime":0.00006794929504394531}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900308.938565,"totalTime":0.00006008148193359375}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900308.938579,"totalTime":0.00002193450927734375},{"startTime":1422900308.938604,"totalTime":0.00000476837158203125}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900308.938611,"totalTime":0.000012874603271484375}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":9265625,"calls":[{"startTime":1422900308.938631,"totalTime":0.00002193450927734375}],"functionName":"getNext","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":661,"columnNumber":37,"children":[{"id":12803190,"calls":[{"startTime":1422900308.938635,"totalTime":0.00000286102294921875}],"functionName":"getSelectedIndex","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":664,"columnNumber":65},{"id":15114518,"calls":[{"startTime":1422900308.938641,"totalTime":0.00000286102294921875}],"functionName":"isEndless","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":45},{"id":1567471,"calls":[{"startTime":1422900308.938647,"totalTime":0.00000286102294921875}],"functionName":"numKeyframes","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":660,"columnNumber":28}]},{"id":4294787,"calls":[{"startTime":1422900308.938657,"totalTime":0.000030994415283203125}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900308.938668,"totalTime":0.0000069141387939453125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900308.938676,"totalTime":0.000010967254638671875}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":1983879,"calls":[{"startTime":1422900308.938692,"totalTime":0.00011396408081054688}],"functionName":"show","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":678,"columnNumber":95,"children":[{"id":3040487,"calls":[{"startTime":1422900308.938695,"totalTime":0.00002002716064453125}],"functionName":"j","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":186,"columnNumber":13,"children":[{"id":8017675,"calls":[{"startTime":1422900308.938697,"totalTime":0.000016927719116210938}],"functionName":"o","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":166,"columnNumber":72,"children":[{"id":9534345,"calls":[{"startTime":1422900308.938701,"totalTime":0.0000030994415283203125},{"startTime":1422900308.938706,"totalTime":0.0000030994415283203125}],"functionName":"bind"},{"id":5642184,"calls":[{"startTime":1422900308.93871,"totalTime":0.0000030994415283203125}],"functionName":"p","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":162,"columnNumber":55}]}]},{"id":11039771,"calls":[{"startTime":1422900308.93872,"totalTime":0.000010967254638671875}],"functionName":"create","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":892,"columnNumber":84,"children":[{"id":8646418,"calls":[{"startTime":1422900308.938725,"totalTime":0.0000050067901611328125}],"functionName":"n","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":879,"columnNumber":65}]},{"id":4294787,"calls":[{"startTime":1422900308.938733,"totalTime":0.000011920928955078125}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900308.938738,"totalTime":0.0000019073486328125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900308.938741,"totalTime":0.0000030994415283203125}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]},{"id":10145964,"calls":[{"startTime":1422900308.93875,"totalTime":0.0000059604644775390625}],"functionName":"isLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":676,"columnNumber":24,"children":[{"id":15957860,"calls":[{"startTime":1422900308.938753,"totalTime":0.0000021457672119140625}],"functionName":"getLocked","url":"http://images.apple.com/v/home/bm/scripts/home.built.js","lineNumber":675,"columnNumber":96}]},{"id":13328983,"calls":[{"startTime":1422900308.938762,"totalTime":0.00004315376281738281}],"functionName":"m","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":179,"columnNumber":133,"children":[{"id":11026160,"calls":[{"startTime":1422900308.938767,"totalTime":0.0000021457672119140625}],"functionName":"slice"},{"id":1932237,"calls":[{"startTime":1422900308.938771,"totalTime":0.00002002716064453125}],"functionName":"resolve","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":169,"columnNumber":91,"children":[{"id":11281676,"calls":[{"startTime":1422900308.938781,"totalTime":0.000007867813110351563}],"functionName":"c","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":157,"columnNumber":78}]},{"id":4294787,"calls":[{"startTime":1422900308.938793,"totalTime":0.000010967254638671875}],"functionName":"l","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":184,"columnNumber":44,"children":[{"id":11026160,"calls":[{"startTime":1422900308.938797,"totalTime":0.0000019073486328125}],"functionName":"slice"},{"id":9528906,"calls":[{"startTime":1422900308.9388,"totalTime":0.00000286102294921875}],"functionName":"promise","url":"http://images.apple.com/v/home/bm/scripts/head.built.js","lineNumber":168,"columnNumber":76}]}]}]}]}]}]}],"idleTime":0.00003409385681152344}},"children":[],"endTime":1422900308939.0867,"type":"FunctionCall"}],"endTime":1422900308939.0989,"type":"TimerFire"}}}

Additional information

  • Yosemite 10.10.2
  • Node 0.10.28
  • appium 1.3.4
  • ios_webkit_debug_proxy 1.4
  • iPad Air (iOS 8.1.2)

I upgraded to browser-perf 1.1.2 - still have the same issue.

I feel that I am so close to run tests on real device but to be honest I don't know what I could do now.

Can't get it to work on Android + Cordova

First of all, great tool! However, I'm stuck.
I'm following (this guide)[https://github.com/axemclion/browser-perf/wiki/Setup-Instructions#testing-mobile-cordova-webviewhybrid-applications] and it does not work.
I've started Chromedriver 2.20 in one console, and running browser-perf in another window. The app is starting, but then stops immediately. In the chromedriver log I see this:

49.607][DEBUG]: Sending adb command: host:transport:emulator-5554|shell:am force-stop nzpost.provoke.mobile
[50.745][DEBUG]: Received adb response:
[50.746][SEVERE]: unknown error: session deleted because error encountered when notifying listeners of 'GetLog' command
from unknown error: unexpected command response
  (Session info: webview=39.0.0.0)
[50.750][DEBUG]: Log type 'driver' lost 1 entries on destruction
[50.752][DEBUG]: Log type 'performance' lost 240 entries on destruction
[50.754][DEBUG]: Log type 'browser' lost 1 entries on destruction

And, in browser-perf the following response:

Error: [log("performance")] Error response status: 13, , UnknownError - An unknown server-side error occurred while processing the command. Selenium error: unknown error: session deleted because error encountered when notifying listeners of 'GetLog' command
from unknown error: unexpected command response

I've also created tests with Protractor, and it works fine with Appium. I've also tried to run Appium (instead of Chromedriver) and change the URL to point to Appium, but that does not seem to work either; I'm not sure what to put in the configuration.

My config file is:

{
  "selenium": "localhost:9515",
  "browsers": [
    {
      "browserName": "android",
      "chromeOptions": {
        "androidActivity": "io.cordova.mobile.MainActivity",
        "androidPackage": "io.cordova.mobile"
      }
    }
  ]
}

Tested on an Android 4.4.4 device, and an Android 5.1.1 emulator.

Please help me out, thanks!

Action never completes with Cordova app running on Android

When running a browser-perf test via the Node API targeting Android hardware, my test action never appears to be fired and the action eventually times out.

Environment:

browser-perf 1.4.5
chromedriver 2.21.371459
adb 1.0.32
PhoneGap CLI 6.2.1
Nexus 5 running Android 5.0.1

To reproduce:

  • clone my test repo: https://github.com/blefebvre/pg-app-perf
  • build the app once, installing it on a connected Android device: phonegap run android --device
  • start chromedriver: ./chromedriver --verbose
  • with the app running on device, kick off the Android scroll test: node tests/android/1-slow-scroll.js

Result:

  • The app will navigate to the 'Scroll Example - slow' page; so the preScript appears to work fine
  • It will then wait at this screen for a few minutes before shutting down the app with the following output in the chromedriver terminal window:
[146.617][INFO]: COMMAND Quit {

}
[146.617][DEBUG]: Sending adb command: host:transport:03f3cc21437ccb7d|shell:am force-stop com.brucelefebvre.PGAppPerf
[147.316][DEBUG]: Received adb response:
[147.316][INFO]: RESPONSE Quit
[147.316][DEBUG]: Log type 'driver' lost 0 entries on destruction
[147.316][DEBUG]: Log type 'performance' lost 0 entries on destruction
[147.316][DEBUG]: Log type 'browser' lost 0 entries on destruction
  • browser-perf calls back with an array for the err object, but it's contents are undefined ([ undefined ]).

Cordova app in iOS Simulator doesn't attach to remote debugger

I followed the instructions specified in the wiki, and used a slightly modified version of the config file supplied by you guys here: ios-hybrid-appium.config.json. My config file looks like this:

{
  "selenium": "http://localhost:4723/wd/hub",
  "browsers": [
    {
      "platformName": "iOS",
      "platformVersion": "8.1",
      "deviceName": "iPhone 6",
      "app": "/Users/matiassingers/projects/testApp/cordova/platforms/ios/build/emulator/testApp.app",
      "bundleId": "com.test.testApp",
      "autoWebview": true,
      "loggingPrefs": {
        "performance": "ALL"
      }
    }
  ]
}

Initially I was having problems with the remote debugger not being able to find a webview in Appium, but I was specifying the wrong bundleId.


This is the output/log from browser-perf and appium:

$ browser-perf --config-file appium.json --verbose
index: Selenium is on %s localhost
Metrics: Initializing Metrics
Probes: Registering probe RafBenchmarkingProbe
Probes: Registering probe NavTimingProbe
Probes: Registering probe ChromeTimelineProbe
Probes: Registering probe SafariTimelineProbe
Probes: Registering probe ChromeTracingProbe
AndroidTracingProbe: Initialize
Probes: Registering probe AndroidTracingProbe
Probes: Registering probe ChromeTimelineProbe
Probes: Registering probe SafariTimelineProbe
Probes: setup
Probes: ChromeTimelineProbe setup called
Probes: SafariTimelineProbe setup called
Probes: ChromeTracingProbe setup called
Probes: AndroidTracingProbe setup called
index:  >  CALL init({"platformName":"iOS","platformVersion":"8.1","deviceName":"iPhon
index:  >  CALL quit()
$ appium
info: [debug] Setting auto webview
info: [debug] Navigating to most recently opened webview
info: [debug] [REMOTE] Debugger socket connected to ::1:27753
info: [debug] [REMOTE] Sending connection key
info: [debug] [REMOTE] Sending _rpc_reportIdentifier: message to remote debugger
info: [debug] [REMOTE] {"__argument":{"WIRConnectionIdentifierKey":"e02a0b38-439c-435f-9f67-e402681af203"},"__selector":"_rpc_reportIdentifier:"}
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] {"__argument":{"WIRSimulatorBuildKey":"12B411","WIRSimulatorProductVersionKey":"8.1","WIRSimulatorNameKey":"iPhone Simulator"},"__selector":"_rpc_reportSetup:"}
info: [debug] [REMOTE] Sim name: iPhone Simulator
info: [debug] [REMOTE] Sim build: 12B411
info: [debug] [REMOTE] {"__argument":{"WIRApplicationDictionaryKey":{"PID:12966":{"WIRApplicationIdentifierKey":"PID:12966","WIRIsApplicationProxyKey":false,"WIRApplicationNameKey":"Astro View Mobile","WIRApplicationBundleIdentifierKey":"com.astro.astroview","WIRIsApplicationActiveKey":1}}},"__selector":"_rpc_reportConnectedApplicationList:"}
info: [debug] Using remote debugger app key: PID:12966
info: [debug] [REMOTE] Selecting app PID:12966
info: [debug] [REMOTE] function () { [native code] }
info: [debug] [REMOTE] Sending _rpc_forwardGetListing: message to remote debugger
info: [debug] [REMOTE] {"__argument":{"WIRConnectionIdentifierKey":"e02a0b38-439c-435f-9f67-e402681af203","WIRApplicationIdentifierKey":"PID:12966"},"__selector":"_rpc_forwardGetListing:"}
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] {"__argument":{"WIRApplicationIdentifierKey":"PID:12966","WIRListingKey":{"1":{"WIRTypeKey":"WIRTypeWeb","WIRTitleKey":"","WIRURLKey":"","WIRPageIdentifierKey":1},"2":{"WIRTypeKey":"WIRTypeWeb","WIRTitleKey":"","WIRURLKey":"","WIRPageIdentifierKey":2}}},"__selector":"_rpc_applicationSentListing:"}
info: [debug] Picking webview WEBVIEW_2
info: [debug] Attempting to set context to 'WEBVIEW_2'
info: [debug] [REMOTE] Selecting page 2 and forwarding socket setup
info: [debug] [REMOTE] Sending _rpc_forwardSocketSetup: message to remote debugger
info: [debug] [REMOTE] {"__argument":{"WIRApplicationIdentifierKey":"PID:12966","WIRConnectionIdentifierKey":"e02a0b38-439c-435f-9f67-e402681af203","WIRSenderKey":"5ab3e9fc-e922-49cc-97aa-5331155eff3b","WIRPageIdentifierKey":2},"__selector":"_rpc_forwardSocketSetup:"}
info: [debug] [REMOTE] Set sender key
info: [debug] [REMOTE] Sending _rpc_forwardSocketData: message to remote debugger
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] {"__argument":{"WIRApplicationIdentifierKey":"PID:12966","WIRListingKey":{"1":{"WIRTypeKey":"WIRTypeWeb","WIRTitleKey":"","WIRURLKey":"","WIRPageIdentifierKey":1},"2":{"WIRTypeKey":"WIRTypeWeb","WIRTitleKey":"","WIRURLKey":"","WIRConnectionIdentifierKey":"e02a0b38-439c-435f-9f67-e402681af203","WIRPageIdentifierKey":2}}},"__selector":"_rpc_applicationSentListing:"}
info: [debug] Remote debugger notified us of a new page listing
info: [debug] We don't appear to have window set yet, ignoring
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] {"__argument":{"WIRApplicationIdentifierKey":"PID:12966","WIRListingKey":{"1":{"WIRTypeKey":"WIRTypeWeb","WIRTitleKey":"","WIRURLKey":"file:///Users/matiassingers/Library/Developer/CoreSimulator/Devices/9538A1EE-7E92-475D-A47E-15C3C4BBDA44/data/Containers/Bundle/Application/4EF121E1-34FE-496E-BF20-A7FDB43674F5/testApp.app/www/index.html","WIRPageIdentifierKey":1}}},"__selector":"_rpc_applicationSentListing:"}

With the last part repeating again and again:

info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] Receiving data from remote debugger
info: [debug] [REMOTE] {"__argument":{"WIRApplicationIdentifierKey":"PID:12966","WIRListingKey":{"1":{"WIRTypeKey":"WIRTypeWeb","WIRTitleKey":"","WIRURLKey":"file:///Users/matiassingers/Library/Developer/CoreSimulator/Devices/9538A1EE-7E92-475D-A47E-15C3C4BBDA44/data/Containers/Bundle/Application/4EF121E1-34FE-496E-BF20-A7FDB43674F5/testApp.app/www/index.html","WIRPageIdentifierKey":1}}},"__selector":"_rpc_applicationSentListing:"}
info: [debug] Remote debugger notified us of a new page listing
info: [debug] We don't appear to have window set yet, ignoring

Is it possible that the wrong WEBVIEW is selected in Appium?
Please let me know if you need any further information.


Version info:

$ node -v
v0.10.33

# This is wrong, I installed the latest version from npm:
# [email protected]
$ browser-perf --version
0.0.1

$ appium --version
1.3.4

OS X: Version 10.10.1 (14B25)
Xcode: Version 6.1.1 (6A2008a)
iOS Simulator: Version 8.1 (550.3)

Enable AndroidTracingProbe to work for Cordova Apps also

Currently, adb only collects data from Chrome using this adb shell am broadcast -a com.android.chrome.GPU_PROFILER_START -e categories "benchmark" -e continuous

This needs to be replaced with adb shell am broadcast -a com.android.org.chromium.action.PROFILE_START.package_name -e categories "benchmark" -e continuous "" to enable data collection from webviews also

Can't start Chrome on Selenium

I get this output in the Selenium logs:

desiredCapabilities: {"loggingPrefs":{"performance":"ALL"},"javascriptEnabled":true,"chromeOptions":{"args":["--disable-popup-
blocking","--disable-popup-blocking","--enable-gpu-benchmarking","--enable-thread-
composting"]},"browserName":"chrome","chrome.switches":["--ignore-certificate-errors","--
start-maximized","-disable-webgl","--blacklist-webgl","--blacklist-accelerated-compositing","--
disable-accelerated-2d-canvas","--disable-accelerated-compositing","--disable-accelerated-
layers","--disable-accelerated-plugins","--disable-accelerated-video","--disable-
accelerated-video-decode","--disable-threaded-compositing","--disable-gpu","--disable-
sync","--remote-debugging-port=9222"],"chrome.binary":"D:\\Program Files\\Chrome 
27\\27.0.1453.116\\chrome.exe"}
=> Could not find default Chrome binary

Chrome on Android tracing not working on windows

Chrome on Android not working on Windows, not picking up tracing statistics.
Caused because how adb shell am broadcast -a com.android.chrome.GPU_PROFILER_START -e categories "benchmark" -e continuous "" is passed to the command line.

Error: No compatible version found: firefox-profile@'axemclion/firefox-profile-js'

Canno install latest version.

...
npm http 304 https://registry.npmjs.org/commander
npm ERR! Error: No compatible version found: firefox-profile@'axemclion/firefox-profile-js'
npm ERR! Valid install targets:
npm ERR! ["0.0.1","0.0.2","0.0.3","0.1.1","0.1.2","0.1.3","0.1.4","0.2.0","0.2.1"]
...

It seems that the firefox-profile-js dependency is unversioned in package.json and npm is probably trying to get the same version as browser-perf (0.0.9) which doesn't exist in firefox-profile-js.

package.json should probably indicate what version to use for the firefox profile dep.

"firefox-profile": "axemclion/[email protected]",

I'm not a node expert, so please correct me if wrong.

Command Not Found?

Following the setup instructions, I get this error:

$ browser-perf https://www.google.com/ --selenium=localhost:4444 --verbose
-bash: browser-perf: command not found

Multiple Selenium addresses?

Is there support for multiple selenium addresses? I run my tests on virtual machines and i would like to have the selenium driver running on those machines. So I tried ['http://192.168.1.126:4444/wd/hub','http://192.168.1.134:4444/wd/hub'] and it gave me this error: TypeError: Cannot read property 'match' of undefined

How to get 'cfg' in preScript function?

Hi,

How can I access to 'cfg' object inside the preScript function ? (https://github.com/axemclion/browser-perf/wiki/Node-Module---API#prescript )

********** Example **********
Here is the simple options object I created.

var options = {
selenium: 'http://localhost:4444/wd/hub',
browsers: ['chrome'],
preScript: function(browser) {
return browser.get(cfg.page).then(function() {
console.log('Find sign in in discover');
return browser.elementByCssSelector('.signin-btn')
}).then(function(el) {
console.log('Clicking sign in');
return el.click();
});
}
}

Use new format of timeline to pick up Timeline events

Chrome 41 has deprecated Timeline and enableTimeline - it now gets the same events in Tracing. This is enabled by using traceCategories: 'blink.console,disabled-by-default-devtools.timeline' in the perfLoggingPrefs capabilities.

The timeline format has also changed.

Issue: The environment you requested was Unavailable

Hi,
I tried to use browser-perf, it successfully launched the hybrid app, but after some time being in idle state, it thrown the error in console as follows,

D:\SeleniumAutomation\Documents\Selenium req jar files\AppiumForWindows-1.2.0.1\Appium>browser-perf --config-file test/configfile1.json
Error: [init({"browserName":"android","chromeOptions":{"androidActivity":"com.csc.chmwardview.chndev.chmWardRound","androidPackage":"com.csc.chmwardview.chndev","perfLoggingPrefs":{"traceCategories":",blink.console,disabled-by-default-devtools.timeline"},"args":["--enable-gpu-benchmarking","--enable-thread-composting"]},"loggingPrefs":{"performance":"ALL"}})] The environment you requested was unavailable.
at D:\SeleniumAutomation\Documents\Selenium req jar files\AppiumForWindows-1.2.0.1\Appium\node_modules\browser-perf\node_modules\wd\lib\webdriver.js:129:15
at Request._callback (D:\SeleniumAutomation\Documents\Selenium req jar files\AppiumForWindows-1.2.0.1\Appium\node_modules\browser-perf\node_modules\wd\lib\http-utils.js:87:7)
at Request.self.callback (D:\SeleniumAutomation\Documents\Selenium req jar files\AppiumForWindows-1.2.0.1\Appium\node_modules\browser-perf\node_modules\wd\node_modules\request\request.js:368:22)
at Request.EventEmitter.emit (events.js:98:17)
at Request. (D:\SeleniumAutomation\Documents\Selenium req jar files\AppiumForWindows-1.2.0.1\Appium\node_modules\browser-perf\node_modules\wd\node_modules\request\request.js:1219:14)
at Request.EventEmitter.emit (events.js:117:20)
at IncomingMessage. (D:\SeleniumAutomation\Documents\Selenium req jar files\AppiumForWindows-1.2.0.1\Appium\node_modules\browser-perf\node_modules\wd\node_modules\request\request.js:1167:12)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)

Please help me resolve this and also my hybrid app has native part, how can I switch to native part
while automating it and I also need to know where does the performance logs gets collected so that I can create custom report.

Thanks

Viewer

Collecting this data is great, but are there ways to view it besides a table?

Unable to set proxy

As I am unable to set the proxy, the requested page is not available. I tried to pass proxy config but it still didn't work. Let me know how it can be resolved. Please find the screenshot below

browser-perf

The environment you requested was unavailable

If the selenium grid is not available you get the following misleading error:

browser-perf https://google.com --verbose
  bp:index Selenium is on localhost +0ms
  bp:metrics Initializing Metrics +3ms
  bp:probes Registering probe +237ms PerfLogProbe
  bp:probes:AndroidTracingProbe Initialize +4ms
  bp:probes Registering probe +0ms AndroidTracingProbe
  bp:probes Registering probe +4ms PerfLogProbe
  bp:probes Registering probe +1ms AndroidTracingProbe
  bp:probes Registering probe +4ms RafBenchmarkingProbe
  bp:probes Registering probe +3ms NavTimingProbe
  bp:probes Registering probe +3ms NetworkResourcesProbe
  bp:metrics TimelineMetrics +2ms setup called
  bp:metrics ChromeTracingMetrics +1ms setup called
  bp:metrics NetworkResources +0ms setup called
  bp:probes setup +1ms
  bp:probes PerfLogProbe +0ms setup called
  bp:probes AndroidTracingProbe +0ms setup called
  bp:probes NetworkResourcesProbe +1ms setup called
  bp:index Stating browser with +1ms {"browserName":"chrome","version":35,"chromeOptions":{"perfLoggingPrefs":{"traceCategories":",blink.console,devtools.timeline,disabled-by-default-devtools.timeline,toplevel,disabled-by-default-devtools.timeline.frame,benchmark"},"args":["--enable-gpu-benchmarking","--enable-thread-composting"]},"loggingPrefs":{"performance":"ALL"}}
  bp:selenium CALL +1ms init({"browserName":"chrome","version":35,"chromeOptions":{"perfLoggin
  bp:selenium CALL +42ms quit()
  bp:selenium RESPONSE +11ms quit()
[ { [Error: [init({"browserName":"chrome","version":35,"chromeOptions":{"perfLoggingPrefs":{"traceCategories":",blink.console,devtools.timeline,disabled-by-default-devtools.timeline,toplevel,disabled-by-default-devtools.timeline.frame,benchmark"},"args":["--enable-gpu-benchmarking","--enable-thread-composting"]},"loggingPrefs":{"performance":"ALL"}})] The environment you requested was unavailable.] data: '' } ]
Error: [init({"browserName":"chrome","version":35,"chromeOptions":{"perfLoggingPrefs":{"traceCategories":",blink.console,devtools.timeline,disabled-by-default-devtools.timeline,toplevel,disabled-by-default-devtools.timeline.frame,benchmark"},"args":["--enable-gpu-benchmarking","--enable-thread-composting"]},"loggingPrefs":{"performance":"ALL"}})] The environment you requested was unavailable.
    at /usr/local/lib/node_modules/browser-perf/node_modules/wd/lib/webdriver.js:129:15
    at Request._callback (/usr/local/lib/node_modules/browser-perf/node_modules/wd/lib/http-utils.js:87:7)
    at Request.self.callback (/usr/local/lib/node_modules/browser-perf/node_modules/wd/node_modules/request/request.js:368:22)
    at emitTwo (events.js:87:13)
    at Request.emit (events.js:172:7)
    at Request.<anonymous> (/usr/local/lib/node_modules/browser-perf/node_modules/wd/node_modules/request/request.js:1219:14)
    at emitOne (events.js:82:20)
    at Request.emit (events.js:169:7)
    at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/browser-perf/node_modules/wd/node_modules/request/request.js:1167:12)
    at emitNone (events.js:72:20)

QUESTION - Automated browser testing on iOS device

Am I able to automate safari performance using 'browser-perf'?
Specifically is it possible to use 'browser-perf' to show the 'DomContentLoadedEvent' and 'CompleteLoad' events multiple times from several sites, i.e. each site would be reloaded 50 times, and each time, record the 'DomContentLoadedEvent' and 'CompleteLoad' events (both kilobytes and time to event).

ECONNREFUSED

Calling any URL like $ browser-perf http://google.com throws errors for me:

[ { [Error: [init({"browserName":"chrome","version":35,"chromeOptions":{"perfLoggingPrefs":{"enableTimeline":true,"traceCategories":"benchmark"},"args":["--added-by-scroll","--enable-gpu-benchmarking","--enable-thread-composting"]},"loggingPrefs":{"performance":"ALL"}})] connect ECONNREFUSED]
    code: 'ECONNREFUSED',
    errno: 'ECONNREFUSED',
    syscall: 'connect' } ]

[ { [Error: [init({"browserName":"firefox","chromeOptions":{"perfLoggingPrefs":{"enableTimeline":true,"traceCategories":"benchmark"}},"loggingPrefs":{"performance":"ALL"}})] connect ECONNREFUSED]
    code: 'ECONNREFUSED',
    errno: 'ECONNREFUSED',
    syscall: 'connect' } ]

I'm using $ node -v #v0.10.35.

1.4.7 Release breaks protractor-perf: browserName undefined

With the latest release of [email protected], protractor-perf now breaks on start:

TypeError: Cannot read property 'browserName' of undefined
    at Object.deepEquals (/Users/{project_path}/node_modules/protractor-perf/node_modules/browser-perf/lib/helpers.js:23:20)
    at AndroidTracingProbe.isEnabled (/Users/{project_path}/node_modules/protractor-perf/node_modules/browser-perf/lib/probes/AndroidTracingProbe.js:24:14)
    at AndroidTracingProbe.start (/Users/{project_path}/node_modules/protractor-perf/node_modules/browser-perf/lib/probes/AndroidTracingProbe.js:48:10)
    at /Users/{project_path}/node_modules/protractor-perf/node_modules/browser-perf/lib/probes/index.js:45:27

This is the commit that introduced browserConfig (which protractor-perf passes as undefined):
c1e6fe3#diff-a0ccdc8e7313c6606025128061a22cc0
Since it is undefined, we cannot access .browserName.

The error is at lib/probes/AndroidTracingProbe.js, lines 46-48.

My suggestions are to either fix what the intention of this check was, or to roll back protractor-perf's package.json dependency on browser-perf to a hard 1.4.6.

env: node\r: No such file or directory

~/Downloads ❯❯❯ sudo npm install -g browser-perf
/Users/frank/.nvm/v0.10.21/bin/browser-perf -> /Users/frank/.nvm/v0.10.21/lib/node_modules/browser-perf/lib/cli.js
[email protected] /Users/frank/.nvm/v0.10.21/lib/node_modules/browser-perf
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected]
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
~/Downloads ❯❯❯ browser-perf http://hi.com --browsers=chrome
env: node\r: No such file or directory

Mac OS 10.9.3

Timeline metrics highly inconsistent

I'm pretty certain this has nothing to do with browser-perf, but I noticed that timeline metrics are very inconsistent. I wonder if anything can be done about that? (aside from running multiple tasks and getting a mean, which is obviously a super long process)

Here's an example of running the same page through browser-perf multiple times:

screen shot 2015-11-11 at 4 08 38 pm

Why are there such deviations? Layout ranges from 123 to 153; Paint from 40 to 44; function calls from ~4000 to ~7000.

Any ideas?

Re-enable RuntimePerfMetrics category

Metrics like average painted area, expensive events, etc were all disabled when timeline events got picked up from tracing, as per this bug.

Renable RuntimeperfMetrics, since the data obtained is very similar.

Browser perf cli/runner

Hi
I have been using your tool for a few days now and am finding it great, If possible i would like to know how to get the same/similar results from the different methods, for example

  1. When i run via the cli i can add the --all argument and get loads of stats, but when i run a default setup (or use metrics: ['TimelineMetrics', 'ChromeTracingMetrics']) in the runner I get a significantly lower number of results, is there a way to add the --all or something equivalent? or at leastsee the larger number of available metrics.
  2. When the results are returned in the cli you have the 'Unit', is this returned from the browser?
  3. There is a source with no entry (Metric = MessageLoop::RunTask_count), are these available in the runner?

I hope that is clear and Many thanks!

James

FYI the metric that is causing me the main issue is ChromeTracingMetrics

No stats when running from Android Chrome using Selenium/Appium/Protractor

When running Browser-Perf on a Android phone - Chrome Browser through a Protractor test (Appium) and I select the metrics: TimelineMetrics and/or ChromeTracingMetrics there is no output. The Chrome browser makes notice of a new profile created and also saves a profile.json file to the downloads directory on the phone. But unfortunately never gives back the data and freezes.

When I use the other metrics "RafRenderingStats","NetworkTimings","NetworkResources" everything works fine and I get the data back.

Looking forward from hearing your solution.

Btw: thank you for such a great tool!

How to use browser-perf / protractor-perf in a single page application

Hi,
What is the best way to use browser-perf/protractor-perf in a single page application? When running a protractor file in a SPA it would be nice to get the loading time without the protractor / webdriver overhead to execute commands. Maybe create a custom probe/metric which injects a window.performance.now() command?

gr. Dennis

Can't read profile data on Android device: Error: ENOENT: no such file or directory, open 'chrome-profile-results-...

Hi!

I'm trying to benchmark a wikipedia page on my android device. When running

browser-perf https://en.m.wikipedia.org/wiki/Barack_Obama --selenium=localhost:9515 --config-file=conf.json

With conf.js being:

{
  "selenium": "http://localhost:9515",
  "browsers": [{
    "browserName": "android"
  }]
}

...having chromedriver running, I get a new browser window that loads the page, I see a toast that notifies of the start of the profile recording, the page scrolls to the bottom, and I see a notification about the profile finished recording.

Then on my local machine I get the following exception:

browser-perf https://en.m.wikipedia.org/wiki/Barack_Obama --selenium=localhost:9515 --config-file=conf.json
[ { Error: ENOENT: no such file or directory, open 'chrome-profile-results-2016-05-20-090003'
      at Error (native)
      at Object.fs.openSync (fs.js:634:18)
      at Object.fs.readFileSync (fs.js:502:33)
      at /usr/local/lib/node_modules/browser-perf/lib/probes/AndroidTracingProbe.js:169:29
      at _fulfilled (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:834:54)
      at self.promiseDispatch.done (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:863:30)
      at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:796:13)
      at /usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:604:44
      at runSingle (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:137:13)
      at flush (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:125:13)
    errno: -2,
    code: 'ENOENT',
    syscall: 'open',
    path: 'chrome-profile-results-2016-05-20-090003' } ]
Error: ENOENT: no such file or directory, open 'chrome-profile-results-2016-05-20-090003'
    at Error (native)
    at Object.fs.openSync (fs.js:634:18)
    at Object.fs.readFileSync (fs.js:502:33)
    at /usr/local/lib/node_modules/browser-perf/lib/probes/AndroidTracingProbe.js:169:29
    at _fulfilled (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:796:13)
    at /usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:604:44
    at runSingle (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:137:13)
    at flush (/usr/local/lib/node_modules/browser-perf/node_modules/q/q.js:125:13)

It doesn't seem like anything went wrong on the device, and from what I see on the code it seems like a problem with adb accessing the device storage.

Any ideas?

Some more detailed info:

  • Nexus 5
  • ChromeDriver 2.21.371459
  • Chrome Mobile 50.0.2661.89
  • Android 6.0.1; Nexus 5 Build/MOB30H

Meet an issue in testing case.

Here is the main js code I used:

var browserPerf = require('browser-perf');
var wd = require('wd');
var options = {
    selenium: 'http://localhost:4444/wd/hub',
    browsers: ['chrome'],
    actions: 'click'
};

var browser = wd.promiseChainRemote();
browserPerf('http://www.google.com', function(err, res){/*callback*/}, options);

Here we define a customized action "click" in the actions which is

require('colors');
var chai = require("chai");
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
chai.should();

var fs = require('fs'),
    wd = require('wd'),
    debug = require('debug');

// enables chai assertion chaining
chaiAsPromised.transferPromiseness = wd.transferPromiseness;

module.exports = function() {
    return function(browser) {
        console.log('start click');
        return browser.elementByCss('#lst-ib').click();
    };
};

While in the execution, the program exits with "undefined" exception. If we set a breakpoint at "console.log('start click')", we can see "browser.elementByCss" is indeed a function object. Anything goes wrong? Thanks a lot.

Document more metrics

I'm seeing more metrics than documented at https://github.com/axemclion/browser-perf/wiki/Metrics. I'm guessing some of them are newer additions in timeline. It would be great to document more of them.

Here's an example output of my script that compares 2 versions of a page:

AnalyzeTask 7.276   7.947
AnalyzeTask_avg 0.01144025157   0.01028072445
AnalyzeTask_count   636 773
AnalyzeTask_max 0.049   0.056
CommitLoad  4.007   3.271
CommitLoad_avg  2.0035  1.6355
CommitLoad_max  3.91    3.174
CompositeLayers 2.615   3.676
CompositeLayers_avg 0.1136956522    0.114875
CompositeLayers_count   23  32
CompositeLayers_max 0.221   0.32
EvaluateScript  143.619 121.553
EvaluateScript_avg  28.7238 24.3106
EvaluateScript_max  79.913  69.156
EventDispatch   63.364  62.588
EventDispatch_avg   0.7634216867    0.857369863
EventDispatch_count 83  73
EventDispatch_max   59.494  60.078
FireAnimationFrame  0.424   0.315
FireAnimationFrame_avg  0.1413333333    0.105
FireAnimationFrame_max  0.251   0.171
FunctionCall    506.916 527.214
FunctionCall_avg    0.4791266541    0.4592456446
FunctionCall_count  1058    1148
FunctionCall_max    59.327  59.919
GPUTask 139.391 149.716
GPUTask_avg 0.3948753541    0.182136253
GPUTask_count   353 822
GPUTask_max 10.457  15.316
HitTest 0.286   0.457
HitTest_avg 0.04085714286   0.0457
HitTest_count   7   10
HitTest_max 0.085   0.101
Layout  50.849  44.482
Layout_avg  2.824944444 2.471222222
Layout_max  37.984  33.64
MajorGC 11.956  31.319
MajorGC_avg 2.989   2.237071429
MajorGC_count   4   14
MajorGC_max 7.743   20.833
MinorGC 8.524   13.223
MinorGC_avg 2.131   1.469222222
MinorGC_count   4   9
MinorGC_max 3.708   2.967
NodePerLayout_avg   100.6111111 87.83333333
Paint   5.243   5.792
PaintImage  0.377   0.472
PaintImage_avg  0.006180327869  0.0118
PaintImage_count    61  40
PaintImage_max  0.042   0.159
Paint_avg   0.3495333333    0.2632727273
Paint_count 15  22
Paint_max   1.622   0.983
PaintedArea_avg 1038624 1121241.818
PaintedArea_total   15579360    24667320
ParseAuthorStyleSheet   3.427   3.355
ParseAuthorStyleSheet_avg   0.428375    0.419375
ParseAuthorStyleSheet_max   0.867   0.902
ParseHTML   80.333  79.241
ParseHTML_avg   0.1587608696    0.1566027668
ParseHTML_max   63.228  63.848
RasterTask  389.835 488.388
RasterTask_avg  0.6129481132    0.6318085382
RasterTask_count    636 773
RasterTask_max  9.437   16.62
ScheduleStyleRecalculation  70  45
TimerFire   182.667 220.084
TimerFire_avg   5.074083333 2.418505495
TimerFire_count 36  91
TimerFire_max   45.958  43.714
TimerInstall    207 266
TimerRemove 165 204
UpdateCounters  1053    1153
UpdateLayer 8.146   9.712
UpdateLayerTree 1.812   2.354
UpdateLayerTree_avg 0.04646153846   0.04441509434
UpdateLayerTree_count   39  53
UpdateLayerTree_max 0.2 0.235
UpdateLayer_avg 0.509125    0.4222608696
UpdateLayer_count   16  23
UpdateLayer_max 2.074   1.207
UpdateLayoutTree    11.66   10.434
UpdateLayoutTree_avg    0.1619444444    0.222
UpdateLayoutTree_count  72  47
UpdateLayoutTree_max    4.848   4.57
connectEnd  1446989531957   1446989572366
connectStart    1446989531957   1446989572366
domComplete 1446989532235   1446989572625
domContentLoadedEventEnd    1446989532235   1446989572625
domContentLoadedEventStart  1446989532175   1446989572565
domInteractive  1446989532175   1446989572565
domLoading  1446989531990   1446989572403
domainLookupEnd 1446989531957   1446989572366
domainLookupStart   1446989531957   1446989572366
fetchStart  1446989531957   1446989572366
firstPaint  106.470108  99.68590736
initDomTreeTime 190 166
loadEventEnd    1446989532235   1446989572625
loadEventStart  1446989532235   1446989572625
loadTime    278 259
navigationStart 1446989531957   1446989572365
readyStart  0   1
requestStart    1446989531958   1446989572366
requestTime 27  33
responseEnd 1446989531985   1446989572399
responseStart   1446989531985   1446989572397
unloadEventEnd  1446989531986   1446989572399
unloadEventStart    1446989531986   1446989572399

browser-perf not working (MAC)

Hi,

I just follow the tutorial and get the following error. (https://github.com/axemclion/browser-perf/wiki/Setup-Instructions#testing-desktop-browsers-locally)

I can install the browser-perf successfully. and I also can start Chromedriver with selenium using java -jar selenium-server-standalone-2.40.0.jar -Dwebdriver.chrome.driver=chromedriver.exe without any error. However, when I execute browser-perf http://yoursite.com --verbose on another Tab( not the same Tab I running Chromedriver). I got the following error.

_LOG_*******
$ browser-perf http://yoursite.com --verbose
bp:index Selenium is on localhost +0ms
bp:metrics Initializing Metrics +2ms
bp:probes Registering probe +116ms PerfLogProbe
bp:probes:AndroidTracingProbe Initialize +2ms
bp:probes Registering probe +0ms AndroidTracingProbe
bp:probes Registering probe +2ms PerfLogProbe
bp:probes Registering probe +1ms AndroidTracingProbe
bp:probes Registering probe +1ms RafBenchmarkingProbe
bp:probes Registering probe +1ms NavTimingProbe
bp:probes Registering probe +1ms NetworkResourcesProbe
bp:metrics TimelineMetrics +1ms setup called
bp:metrics ChromeTracingMetrics +1ms setup called
bp:metrics NetworkResources +0ms setup called
bp:probes setup +1ms
bp:probes PerfLogProbe +0ms setup called
bp:probes AndroidTracingProbe +0ms setup called
bp:probes NetworkResourcesProbe +0ms setup called
bp:index Stating browser with +1ms {"browserName":"chrome","version":35,"chromeOptions":{"perfLoggingPrefs":{"traceCategories":",blink.console,devtools.timeline,disabled-by-default-devtools.timeline,toplevel,disabled-by-default-devtools.timeline.frame,benchmark"},"args":["--enable-gpu-benchmarking","--enable-thread-composting"]},"loggingPrefs":{"performance":"ALL"}}
bp:selenium CALL +1ms init({"browserName":"chrome","version":35,"chromeOptions":{"perfLoggin
bp:selenium CALL +41ms quit()
[ { [Error: [init({"browserName":"chrome","version":35,"chromeOptions":{"perfLoggingPrefs":{"traceCategories":",blink.console,devtools.timeline,disabled-by-default-devtools.timeline,toplevel,disabled-by-default-devtools.timeline.frame,benchmark"},"args":["--enable-gpu-benchmarking","--enable-thread-composting"]},"loggingPrefs":{"performance":"ALL"}})] The environment you requested was unavailable.]
data: '{"state":"unhandled error","sessionId":null,"hCode":2103605280,"value":{"localizedMessage":"The driver executable does not exist: /Users/iwis.zhou/Documents/browser-perf/chromedriver.exe","cause":null,"stackTrace":[{"fileName":"Preconditions.java","nativeMethod":false,"methodName":"checkState","className":"com.google.common.base.Preconditions","hCode":-1301733662,"lineNumber":199,"class":"java.lang.StackTraceElement"},{"fileName":"DriverService.java","nativeMethod":false,"methodName":"checkExecutable","className":"org.openqa.selenium.remote.service.DriverService","hCode":152395766,"lineNumber":121,"class":"java.lang.StackTraceElement"},{"fileName":"DriverService.java","nativeMethod":false,"methodName":"findExecutable","className":"org.openqa.selenium.remote.service.DriverService","hCode":-1432293598,"lineNumber":116,"class":"java.lang.StackTraceElement"},{"fileName":"ChromeDriverService.java","nativeMethod":false,"methodName":"access$0","className":"org.openqa.selenium.chrome.ChromeDriverService","hCode":1318714607,"lineNumber":1,"class":"java.lang.StackTraceElement"},{"fileName":"ChromeDriverService.java","nativeMethod":false,"methodName":"findDefaultExecutable","className":"org.openqa.selenium.chrome.ChromeDriverService$Builder","hCode":-1770001534,"lineNumber":137,"class":"java.lang.StackTraceElement"},{"fileName":"DriverService.java","nativeMethod":false,"methodName":"build","className":"org.openqa.selenium.remote.service.DriverService$Builder","hCode":778286186,"lineNumber":296,"class":"java.lang.StackTraceElement"},{"fileName":"ChromeDriverService.java","nativeMethod":false,"methodName":"createDefaultService","className":"org.openqa.selenium.chrome.ChromeDriverService","hCode":-1740331610,"lineNumber":88,"class":"java.lang.StackTraceElement"},{"fileName":"ChromeDriver.java","nativeMethod":false,"methodName":"","className":"org.openqa.selenium.chrome.ChromeDriver","hCode":988971966,"lineNumber":138,"class":"java.lang.StackTraceElement"},{"fileName":"NativeConstructorAccessorImpl.java","nativeMethod":true,"methodName":"newInstance0","className":"sun.reflect.NativeConstructorAccessorImpl","hCode":-917798116,"lineNumber":-2,"class":"java.lang.StackTraceElement"},{"fileName":"NativeConstructorAccessorImpl.java","nativeMethod":false,"methodName":"newInstance","className":"sun.reflect.NativeConstructorAccessorImpl","hCode":-1864225098,"lineNumber":62,"class":"java.lang.StackTraceElement"},{"fileName":"DelegatingConstructorAccessorImpl.java","nativeMethod":false,"methodName":"newInstance","className":"sun.reflect.DelegatingConstructorAccessorImpl","hCode":-2122307259,"lineNumber":45,"class":"java.lang.StackTraceElement"},{"fileName":"Constructor.java","nativeMethod":false,"methodName":"newInstance","className":"java.lang.reflect.Constructor","hCode":-1319859919,"lineNumber":423,"class":"java.lang.StackTraceElement"},{"fileName":"DefaultDriverProvider.java","nativeMethod":false,"methodName":"callConstructor","className":"org.openqa.selenium.remote.server.DefaultDriverProvider","hCode":-2096353668,"lineNumber":103,"class":"java.lang.StackTraceElement"},{"fileName":"DefaultDriverProvider.java","nativeMethod":false,"methodName":"newInstance","className":"org.openqa.selenium.remote.server.DefaultDriverProvider","hCode":1201680335,"lineNumber":97,"class":"java.lang.StackTraceElement"},{"fileName":"DefaultDriverFactory.java","nativeMethod":false,"methodName":"newInstance","className":"org.openqa.selenium.remote.server.DefaultDriverFactory","hCode":-1365021416,"lineNumber":60,"class":"java.lang.StackTraceElement"},{"fileName":"DefaultSession.java","nativeMethod":false,"methodName":"call","className":"org.openqa.selenium.remote.server.DefaultSession$BrowserCreator","hCode":2056168471,"lineNumber":222,"class":"java.lang.StackTraceElement"},{"fileName":"DefaultSession.java","nativeMethod":false,"methodName":"call","className":"org.openqa.selenium.remote.server.DefaultSession$BrowserCreator","hCode":2056168250,"lineNumber":1,"class":"java.lang.StackTraceElement"},{"fileName":"FutureTask.java","nativeMethod":false,"methodName":"run","className":"java.util.concurrent.FutureTask","hCode":-820313554,"lineNumber":266,"class":"java.lang.StackTraceElement"},{"fileName":"DefaultSession.java","nativeMethod":false,"methodName":"run","className":"org.openqa.selenium.remote.server.DefaultSession$1","hCode":-255143467,"lineNumber":176,"class":"java.lang.StackTraceElement"},{"fileName":"ThreadPoolExecutor.java","nativeMethod":false,"methodName":"runWorker","className":"java.util.concurrent.ThreadPoolExecutor","hCode":-1285150184,"lineNumber":1142,"class":"java.lang.StackTraceElement"},{"fileName":"ThreadPoolExecutor.java","nativeMethod":false,"methodName":"run","className":"java.util.concurrent.ThreadPoolExecutor$Worker","hCode":-242190645,"lineNumber":617,"class":"java.lang.StackTraceElement"},{"fileName":"Thread.java","nativeMethod":false,"methodName":"run","className":"java.lang.Thread","hCode":-82946320,"lineNumber":745,"class":"java.lang.StackTraceElement"}],"suppressed":[],"message":"The driver executable does not exist: /Users/iwis.zhou/Documents/browser-perf/chromedriver.exe","hCode":597266499,"class":"java.lang.IllegalStateException","screen":null},"class":"org.openqa.selenium.remote.Response","status":13}' } ]
Error: [init({"browserName":"chrome","version":35,"chromeOptions":{"perfLoggingPrefs":{"traceCategories":",blink.console,devtools.timeline,disabled-by-default-devtools.timeline,toplevel,disabled-by-default-devtools.timeline.frame,benchmark"},"args":["--enable-gpu-benchmarking","--enable-thread-composting"]},"loggingPrefs":{"performance":"ALL"}})] The environment you requested was unavailable.
at /usr/local/lib/node_modules/browser-perf/node_modules/wd/lib/webdriver.js:129:15
at Request._callback (/usr/local/lib/node_modules/browser-perf/node_modules/wd/lib/http-utils.js:87:7)
at Request.self.callback (/usr/local/lib/node_modules/browser-perf/node_modules/wd/node_modules/request/request.js:368:22)
at emitTwo (events.js:87:13)
at Request.emit (events.js:172:7)
at Request. (/usr/local/lib/node_modules/browser-perf/node_modules/wd/node_modules/request/request.js:1219:14)
at emitOne (events.js:82:20)
at Request.emit (events.js:169:7)
at IncomingMessage. (/usr/local/lib/node_modules/browser-perf/node_modules/wd/node_modules/request/request.js:1167:12)
at emitNone (events.js:72:20)

the preScript doesn't work

I use a prescript for user log in and other web actions before the real action starts. Here is the variable options is defined:

var options = {
    selenium: 'http://localhost:4444/wd/hub',
    browsers: ['chrome'],
    preScript: function preScr(browser) {
        return function(browser) {
            console.log('start prescript');
            \\...
              });
        }
    },
    actions: \\..
};

I noticed that the prescript is not executed. By debugging, I found that in lib\index.js, this is the order of the code:

    }).then(function() {
        log('Session is ' + browser.sessionID);
        log('Running Prescript');
        return opts.preScript(browser);
    }).then(function() {
        if (url) {
            return browser.get(url);
        }

this means the browser will open the link after the prescript is executed which is wrong since the prescript needs the linked website to do the actions.

FYI, I switched the order of the above code and confirmed the website is displayed before the preScript(browser). But I see the prescript code is still not called. Is there anything else missing? Thanks a lot.

"window.__RafRecorder" gets undefined if WebDriver is started using 'protractor_webdriver'

Hi axemclion,

Your framework works perfectly if I run "protractor protractor.conf.js" manually. But if I use my grunt test goal with the same protractor.conf.js file that starts WebDriver manager using 'protractor_webdriver' module - it fails the test with the following error:
Fatal error: 11:34:48.145 WARN - Exception thrown
org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'get' of undefined
(Session info: chrome=41.0.2272.101)
(Driver info: chromedriver=2.13.307649 (bf55b442bb6b5c923249dd7870d6a107678bfbb6),platform=Linux 3.16.0-31-generic x86_64) (WARNING: The server did not provide any stacktrace information)
...

Note: grunt test goal works fine if I comment out perfRunner.stop() method

Most likely failing code is here:
return browser.eval('window.__RafRecorder.get()').then(function(res) {
if (Array.isArray(res) && res.length > 0) {
me.emit('data', res);
}
clearTimeout(me.timerHandle);
}, function(err) {
me.emit('error', err);
clearTimeout(me.timerHandle);
});

Grunt logs:

11:34:41.155 INFO - Executing: [implicitly wait: 25000])

11:34:41.162 INFO - Done: [implicitly wait: 25000]

11:34:41.167 INFO - Executing: [get: data:text/html,])

11:34:41.313 INFO - Done: [get: data:text/html,]

11:34:41.328 INFO - Executing: [execute script: window.name = "NG_DEFER_BOOTSTRAP!" + window.name;window.location.replace("http://0.0.0.0:9000/");, []])

11:34:41.779 INFO - Done: [execute script: window.name = "NG_DEFER_BOOTSTRAP!" + window.name;window.location.replace("http://0.0.0.0:9000/");, []]

11:34:41.797 INFO - Executing: [execute script: return window.location.href;, []])

11:34:41.807 INFO - Done: [execute script: return window.location.href;, []]

11:34:41.839 INFO - Executing: [execute async script: try { return (function (attempts, asyncCallback) {
var callback = function(args) {
setTimeout(function() {
asyncCallback(args);
}, 0);
};
var check = function(n) {
try {
if (window.angular && window.angular.resumeBootstrap) {
callback([true, null]);
} else if (n < 1) {
if (window.angular) {
callback([false, 'angular never provided resumeBootstrap']);
} else {
callback([false, 'retries looking for angular exceeded']);
}
} else {
window.setTimeout(function() {check(n - 1);}, 1000);
}
} catch (e) {
callback([false, e]);
}
};
check(attempts);
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [10]])

11:34:41.858 INFO - Done: [execute async script: try { return (function (attempts, asyncCallback) {
var callback = function(args) {
setTimeout(function() {
asyncCallback(args);
}, 0);
};
var check = function(n) {
try {
if (window.angular && window.angular.resumeBootstrap) {
callback([true, null]);
} else if (n < 1) {
if (window.angular) {
callback([false, 'angular never provided resumeBootstrap']);
} else {
callback([false, 'retries looking for angular exceeded']);
}
} else {
window.setTimeout(function() {check(n - 1);}, 1000);
}
} catch (e) {
callback([false, e]);
}
};
check(attempts);
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [10]]

11:34:41.875 INFO - Executing: [execute script: return (function () {
angular.module('protractorBaseModule_', []).
config(['$compileProvider', function($compileProvider) {
if ($compileProvider.debugInfoEnabled) {
$compileProvider.debugInfoEnabled(true);
}
}]);
}).apply(null, arguments);, []])

11:34:41.885 INFO - Done: [execute script: return (function () {
angular.module('protractorBaseModule_', []).
config(['$compileProvider', function($compileProvider) {
if ($compileProvider.debugInfoEnabled) {
$compileProvider.debugInfoEnabled(true);
}
}]);
}).apply(null, arguments);, []]

11:34:41.901 INFO - Executing: [execute script: angular.resumeBootstrap(arguments[0]);, [[protractorBaseModule_]]])

11:34:42.068 INFO - Done: [execute script: angular.resumeBootstrap(arguments[0]);, [[protractorBaseModule_]]]

Performance tracking is enabled

11:34:42.321 INFO - Executing: [execute async script: try { return (function (rootSelector, callback) {
var el = document.querySelector(rootSelector);

try {
if (!window.angular) {
throw new Error('angular could not be found on the window');
}
if (angular.getTestability) {
angular.getTestability(el).whenStable(callback);
} else {
if (!angular.element(el).injector()) {
throw new Error('root element (' + rootSelector + ') has no injector.' +
' this may mean it is not inside ng-app.');
}
angular.element(el).injector().get('$browser').
notifyWhenNoOutstandingRequests(callback);
}
} catch (err) {
callback(err.message);
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [body]])

11:34:42.345 INFO - Done: [execute async script: try { return (function (rootSelector, callback) {
var el = document.querySelector(rootSelector);

try {
if (!window.angular) {
throw new Error('angular could not be found on the window');
}
if (angular.getTestability) {
angular.getTestability(el).whenStable(callback);
} else {
if (!angular.element(el).injector()) {
throw new Error('root element (' + rootSelector + ') has no injector.' +
' this may mean it is not inside ng-app.');
}
angular.element(el).injector().get('$browser').
notifyWhenNoOutstandingRequests(callback);
}
} catch (err) {
callback(err.message);
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [body]]

11:34:42.382 INFO - Executing: [execute script: try { return (function (model, using, rootSelector) {
var root = document.querySelector(rootSelector || 'body');
using = using || document;

if (angular.getTestability) {
return angular.getTestability(root).
findModels(using, model, true);
}
var prefixes = ['ng-', 'ng_', 'data-ng-', 'x-ng-', 'ng:'];
for (var p = 0; p < prefixes.length; ++p) {
var selector = '[' + prefixes[p] + 'model="' + model + '"]';
var elements = using.querySelectorAll(selector);
if (elements.length) {
return elements;
}
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [login.email, null, body]])

11:34:42.404 INFO - Done: [execute script: try { return (function (model, using, rootSelector) {
var root = document.querySelector(rootSelector || 'body');
using = using || document;

if (angular.getTestability) {
return angular.getTestability(root).
findModels(using, model, true);
}
var prefixes = ['ng-', 'ng_', 'data-ng-', 'x-ng-', 'ng:'];
for (var p = 0; p < prefixes.length; ++p) {
var selector = '[' + prefixes[p] + 'model="' + model + '"]';
var elements = using.querySelectorAll(selector);
if (elements.length) {
return elements;
}
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [login.email, null, body]]

11:34:42.444 INFO - Executing: [send keys: 0 [org.openqa.selenium.remote.RemoteWebElement@35b2f0b7 -> unknown locator], [[email protected]]])

11:34:42.646 INFO - Done: [send keys: 0 [org.openqa.selenium.remote.RemoteWebElement@35b2f0b7 -> unknown locator], [[email protected]]]

11:34:42.698 INFO - Executing: [execute async script: try { return (function (rootSelector, callback) {
var el = document.querySelector(rootSelector);

try {
if (!window.angular) {
throw new Error('angular could not be found on the window');
}
if (angular.getTestability) {
angular.getTestability(el).whenStable(callback);
} else {
if (!angular.element(el).injector()) {
throw new Error('root element (' + rootSelector + ') has no injector.' +
' this may mean it is not inside ng-app.');
}
angular.element(el).injector().get('$browser').
notifyWhenNoOutstandingRequests(callback);
}
} catch (err) {
callback(err.message);
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [body]])

11:34:42.714 INFO - Done: [execute async script: try { return (function (rootSelector, callback) {
var el = document.querySelector(rootSelector);

try {
if (!window.angular) {
throw new Error('angular could not be found on the window');
}
if (angular.getTestability) {
angular.getTestability(el).whenStable(callback);
} else {
if (!angular.element(el).injector()) {
throw new Error('root element (' + rootSelector + ') has no injector.' +
' this may mean it is not inside ng-app.');
}
angular.element(el).injector().get('$browser').
notifyWhenNoOutstandingRequests(callback);
}
} catch (err) {
callback(err.message);
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [body]]

11:34:42.738 INFO - Executing: [execute script: try { return (function (model, using, rootSelector) {
var root = document.querySelector(rootSelector || 'body');
using = using || document;

if (angular.getTestability) {
return angular.getTestability(root).
findModels(using, model, true);
}
var prefixes = ['ng-', 'ng_', 'data-ng-', 'x-ng-', 'ng:'];
for (var p = 0; p < prefixes.length; ++p) {
var selector = '[' + prefixes[p] + 'model="' + model + '"]';
var elements = using.querySelectorAll(selector);
if (elements.length) {
return elements;
}
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [login.pswd, null, body]])

11:34:42.752 INFO - Done: [execute script: try { return (function (model, using, rootSelector) {
var root = document.querySelector(rootSelector || 'body');
using = using || document;

if (angular.getTestability) {
return angular.getTestability(root).
findModels(using, model, true);
}
var prefixes = ['ng-', 'ng_', 'data-ng-', 'x-ng-', 'ng:'];
for (var p = 0; p < prefixes.length; ++p) {
var selector = '[' + prefixes[p] + 'model="' + model + '"]';
var elements = using.querySelectorAll(selector);
if (elements.length) {
return elements;
}
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [login.pswd, null, body]]

11:34:42.791 INFO - Executing: [send keys: 1 [org.openqa.selenium.remote.RemoteWebElement@35b2f0b8 -> unknown locator], [asdf]])

11:34:42.882 INFO - Done: [send keys: 1 [org.openqa.selenium.remote.RemoteWebElement@35b2f0b8 -> unknown locator], [asdf]]

11:34:42.939 INFO - Executing: [execute async script: try { return (function (rootSelector, callback) {
var el = document.querySelector(rootSelector);

try {
if (!window.angular) {
throw new Error('angular could not be found on the window');
}
if (angular.getTestability) {
angular.getTestability(el).whenStable(callback);
} else {
if (!angular.element(el).injector()) {
throw new Error('root element (' + rootSelector + ') has no injector.' +
' this may mean it is not inside ng-app.');
}
angular.element(el).injector().get('$browser').
notifyWhenNoOutstandingRequests(callback);
}
} catch (err) {
callback(err.message);
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [body]])

11:34:42.952 INFO - Done: [execute async script: try { return (function (rootSelector, callback) {
var el = document.querySelector(rootSelector);

try {
if (!window.angular) {
throw new Error('angular could not be found on the window');
}
if (angular.getTestability) {
angular.getTestability(el).whenStable(callback);
} else {
if (!angular.element(el).injector()) {
throw new Error('root element (' + rootSelector + ') has no injector.' +
' this may mean it is not inside ng-app.');
}
angular.element(el).injector().get('$browser').
notifyWhenNoOutstandingRequests(callback);
}
} catch (err) {
callback(err.message);
}
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [body]]

11:34:42.976 INFO - Executing: [execute script: try { return (function (cssSelector, searchText, using) {
using = using || document;

var elements = using.querySelectorAll(cssSelector);
var matches = [];
for (var i = 0; i < elements.length; ++i) {
var element = elements[i];
var elementText = element.textContent || element.innerText || '';
if (elementText.indexOf(searchText) > -1) {
matches.push(element);
}
}
return matches;
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [.btn, Sign In, null, body]])

11:34:42.987 INFO - Done: [execute script: try { return (function (cssSelector, searchText, using) {
using = using || document;

var elements = using.querySelectorAll(cssSelector);
var matches = [];
for (var i = 0; i < elements.length; ++i) {
var element = elements[i];
var elementText = element.textContent || element.innerText || '';
if (elementText.indexOf(searchText) > -1) {
matches.push(element);
}
}
return matches;
}).apply(this, arguments); }
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [.btn, Sign In, null, body]]

11:34:43.027 INFO - Executing: [click: 2 [org.openqa.selenium.remote.RemoteWebElement@35b2f0b9 -> unknown locator]])

11:34:43.099 INFO - Done: [click: 2 [org.openqa.selenium.remote.RemoteWebElement@35b2f0b9 -> unknown locator]]

11:34:43.205 INFO - Executing: [execute script: (function(){var getTimeMs=(function(){if(window.performance)
return(performance.now||performance.mozNow||performance.msNow||performance.oNow||performance.webkitNow).bind(window.performance);else
return function(){return new Date().getTime();};})();var requestAnimationFrame=(function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1000/60);};})().bind(window);window.__RafRecorder={frames:[],flush:true,record:function(timeStamp){if(__RafRecorder.flush){__RafRecorder.frames=[];__RafRecorder.flush=false;}
__RafRecorder.frames.push(timeStamp);requestAnimationFrame(__RafRecorder.record);},get:function(){__RafRecorder.flush=true;return __RafRecorder.frames;}};requestAnimationFrame(window.__RafRecorder.record);}());, []])

11:34:43.217 INFO - Done: [execute script: (function(){var getTimeMs=(function(){if(window.performance)
return(performance.now||performance.mozNow||performance.msNow||performance.oNow||performance.webkitNow).bind(window.performance);else
return function(){return new Date().getTime();};})();var requestAnimationFrame=(function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1000/60);};})().bind(window);window.__RafRecorder={frames:[],flush:true,record:function(timeStamp){if(__RafRecorder.flush){__RafRecorder.frames=[];__RafRecorder.flush=false;}
__RafRecorder.frames.push(timeStamp);requestAnimationFrame(__RafRecorder.record);},get:function(){__RafRecorder.flush=true;return __RafRecorder.frames;}};requestAnimationFrame(window.__RafRecorder.record);}());, []]

11:34:43.233 INFO - Executing: [fetching available log types])

11:34:43.246 INFO - Done: [fetching available log types]

11:34:43.256 INFO - Executing: [fetching logs for: performance])

11:34:44.050 INFO - Done: [fetching logs for: performance]

11:34:44.696 INFO - Executing: org.openqa.selenium.remote.server.handler.GetSessionCapabilities@2043fef6)

11:34:44.696 INFO - Done: org.openqa.selenium.remote.server.handler.GetSessionCapabilities@2043fef6

11:34:44.741 INFO - Executing: [find elements: By.selector: input#checkBox_filter_species_273])

11:34:46.399 INFO - Done: [find elements: By.selector: input#checkBox_filter_species_273]

11:34:46.446 INFO - Executing: [execute script: return window.__RafRecorder.get();, []])

11:34:48.145 WARN - Exception thrown
org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'get' of undefined
(Session info: chrome=41.0.2272.101)
(Driver info: chromedriver=2.13.307649 (bf55b442bb6b5c923249dd7870d6a107678bfbb6),platform=Linux 3.16.0-31-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9 milliseconds
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37'
System info: host: 'tira-4', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.0-31-generic', java.version: '1.7.0_75'
Session ID: ec7af94c1904f02b2c8686872355a1f9
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/tmp/.com.google.Chrome.ZjddNC}, rotatable=false, locationContextEnabled=true, mobileEmulationEnabled=false, version=41.0.2272.101, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, webStorageEnabled=true, nativeEvents=true, applicationCacheEnabled=false, takesScreenshot=true}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:508)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101)
at com.sun.proxy.$Proxy1.executeScript(Unknown Source)
at org.openqa.selenium.support.events.EventFiringWebDriver.executeScript(EventFiringWebDriver.java:213)
at org.openqa.selenium.remote.server.handler.ExecuteScript.call(ExecuteScript.java:55)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:168)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

Exception thrown: Going to shut down the Selenium server
Shutting down Selenium server: http://127.0.0.1:4444

11:34:48.150 WARN - Exception: unknown error: Cannot read property 'get' of undefined
(Session info: chrome=41.0.2272.101)
(Driver info: chromedriver=2.13.307649 (bf55b442bb6b5c923249dd7870d6a107678bfbb6),platform=Linux 3.16.0-31-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9 milliseconds
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37'
System info: host: 'tira-4', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.0-31-generic', java.version: '1.7.0_75'
Session ID: ec7af94c1904f02b2c8686872355a1f9
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/tmp/.com.google.Chrome.ZjddNC}, rotatable=false, locationContextEnabled=true, mobileEmulationEnabled=false, version=41.0.2272.101, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, webStorageEnabled=true, nativeEvents=true, applicationCacheEnabled=false, takesScreenshot=true}]

11:34:48.158 INFO - Checking Resource aliases
11:34:48.160 INFO - Command request: shutDownSeleniumServer[, ] on session null
11:34:48.161 INFO - Shutdown command received

Testing on real device (Android - Nexus 7) freezes on com.android.chrome.GPU_PROFILER_STOP

I didn't have this issue in the old version of browser-perf. I cannot run tests with browser-perf 1.1.2 anymore.

Probably related to: axemclion/perfjankie#21 ?

Log

browser-perf --selenium=http://localhost:9515 --browsers=android http://google.com --verbose
  bp:metrics Initializing Metrics +0ms
  bp:probes Registering probe +3ms RafBenchmarkingProbe
  bp:probes Registering probe +2ms NavTimingProbe
  bp:probes Registering probe +2ms PerfLogProbe
  bp:probes Registering probe +2ms PerfLogProbe
  bp:probes:AndroidTracingProbe Initialize +2ms
  bp:probes Registering probe +0ms AndroidTracingProbe
  bp:metrics TimelineMetrics +1ms setup called
  bp:metrics ChromeTracingMetrics +0ms setup called
  bp:probes setup +0ms
  bp:probes PerfLogProbe +0ms setup called
  bp:probes AndroidTracingProbe +1ms setup called
  bp:probes:AndroidTracingProbe Setting up android tracing +0ms
  bp:probes:AndroidTracingProbe $ adb server start +0ms
  bp:probes:AndroidTracingProbe $ adb logcat -c +66ms
  bp:selenium CALL +55ms init({"browserName":"android","chromeOptions":{"androidPackage":"com.a 
  bp:selenium RESPONSE +6s init({"browserName":"android","chromeOptions":{"androidPackage":"com.a "328512e7ff92b889dc2c77c0bee4e3ef",{"acceptSslCerts":true,"application
  bp:selenium CALL +1ms get("http://google.com") 
  bp:selenium RESPONSE +4s get("http://google.com") 
  bp:probes start +1ms
  bp:probes RafBenchmarkingProbe +0ms start called
  bp:selenium CALL +3ms execute("(function(){var getTimeMs=(function(){if(window.performance)\ 
  bp:selenium RESPONSE +185ms execute("(function(){var getTimeMs=(function(){if(window.performance)\ null
  bp:probes PerfLogProbe +1ms start called
  bp:selenium CALL +0ms logTypes() 
  bp:selenium RESPONSE +5ms logTypes() ["performance","browser","driver"]
  bp:probes:PerfLogProbe Supported log types +0ms [ 'performance', 'browser', 'driver' ]
  bp:selenium CALL +3ms log("performance") 
  bp:selenium RESPONSE +114ms log("performance") [{"level":"INFO","message":"{\"message\":{\"method\":\"Tracing.dataCol
  bp:probes AndroidTracingProbe +0ms start called
  bp:selenium CALL +1ms sessionCapabilities() 
  bp:selenium RESPONSE +2ms sessionCapabilities() {"acceptSslCerts":true,"applicationCacheEnabled":false,"browserConnect
  bp:probes:AndroidTracingProbe Starting android tracing +0ms
  bp:probes:AndroidTracingProbe $ adb shell am broadcast -a com.android.chrome.GPU_PROFILER_START -e categories "benchmark" -e continuous "" +0ms
  bp:probes:AndroidTracingProbe W/chromium(25660): [WARNING:tracing_controller_android.cc(43)] Logging performance trace to file +824ms
  bp:actions:scroll Initializing Scroll function +13ms
  bp:selenium CALL +1ms execute("'use strict';(function(){function getBoundingVisibleRect(el){ 
  bp:selenium RESPONSE +87ms execute("'use strict';(function(){function getBoundingVisibleRect(el){ null
  bp:actions:scroll Waiting for Scrolling to finish +0ms
  bp:selenium CALL +0ms waitFor({"asserter":{},"timeout":600000,"pollFreq":2000}) 
  bp:selenium CALL +1ms eval("(window.__scrollActionDone === true)") 
  bp:selenium RESPONSE +22ms eval("(window.__scrollActionDone === true)") false
  bp:selenium CALL +2s eval("(window.__scrollActionDone === true)") 
  bp:selenium RESPONSE +47ms eval("(window.__scrollActionDone === true)") true
  bp:selenium RESPONSE +0ms waitFor({"asserter":{},"timeout":600000,"pollFreq":2000}) true
  bp:probes teardown +1ms
  bp:probes RafBenchmarkingProbe +0ms teardown called
  bp:probes:RafBenchmarkingProbe Clearing timer Interval +0ms
  bp:selenium CALL +0ms eval("window.__RafRecorder.get()") 
  bp:selenium RESPONSE +46ms eval("window.__RafRecorder.get()") [3849.12299999996,3882.59200000175,3898.93100000336,3915.86700000335,3
  bp:probes NavTimingProbe +0ms teardown called
  bp:selenium CALL +2ms execute("(function(){if(typeof window.chrome!=='undefined'){window.web 
  bp:selenium RESPONSE +20ms execute("(function(){if(typeof window.chrome!=='undefined'){window.web null
  bp:selenium CALL +1ms waitFor({"asserter":{},"timeout":600000,"pollFreq":1000}) 
  bp:selenium CALL +0ms eval("(typeof window.__navTimings !== \"undefined\")") 
  bp:selenium RESPONSE +19ms eval("(typeof window.__navTimings !== \"undefined\")") true
  bp:selenium RESPONSE +0ms waitFor({"asserter":{},"timeout":600000,"pollFreq":1000}) true
  bp:selenium CALL +1ms eval("window.__navTimings") 
  bp:selenium RESPONSE +19ms eval("window.__navTimings") {"__firstPaint":1160.84003448486,"connectEnd":1422908695690,"connectSt
  bp:probes PerfLogProbe +0ms teardown called
  bp:selenium CALL +0ms log("performance") 
  bp:selenium RESPONSE +175ms log("performance") [{"level":"INFO","message":"{\"message\":{\"method\":\"Timeline.eventR
  bp:probes:PerfLogProbe Got Performance log results +1ms
  bp:probes AndroidTracingProbe +28ms teardown called
  bp:selenium CALL +0ms sessionCapabilities() 
  bp:selenium RESPONSE +3ms sessionCapabilities() {"acceptSslCerts":true,"applicationCacheEnabled":false,"browserConnect
  bp:probes:AndroidTracingProbe Tearing down android tracing +1ms
  bp:probes:AndroidTracingProbe $ adb shell am broadcast -a com.android.chrome.GPU_PROFILER_STOP +0ms

[ !! AFTER A 1-2 MINUTES !! ]

  bp:selenium CALL +2m quit() 
  bp:selenium RESPONSE +948ms quit() 
[ undefined ]

  • Nexus 7 / Android 5.0.2
  • Chrome installed on Android 40.0.2214.89
  • browser-perf 1.1.2

CEF returns on command "GetLog"

I know this may not be the problem of browser-perf. But just want to confirm that whether we are suppose to use the tool against CEF.

The full error msg is: unknown error: session deleted because error encountered when notifying listeners of 'GetLog' command from unknown error: unexpected command response

Easy digestible results

This is a nice product and I believe you are headed in the good direction, but there are some cases that I would mention, which I have not been able to find.

Is there any plan to use this project in a way that is more along the lines of jsperf. Meaning could this perf library run tests many times to generate an aggregate result, which would output some percentage difference between linked test cases?

It seems that to be useful we need numbers to compare. Should a third party library offer a simple plug and play ability to compare results via CLI? I think so...

A test that runs and has some various perf metrics is nice, but is not usable unless those metrics are compared against either historical application data or other tests that also run during the same testing cycle.

so in summary I am thinking about a library that does the following:

  1. Ability to run 'it' logical blocks many times to generate an aggregate output.
  2. Ability to link tests together to easily compare outputs.
  3. Ability to simply compare against historical local/remote performance data.
  4. Ability to output simple visualizations that compare specified test outputs.

Issues

[ {"message":"[log("performance")] Error response status: 13, , UnknownError - An unknown server-side error occurred while processing the command.","status":13,"cause":{"status":13,"sessionId":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","value":{"message":"Unknown log type: performance"}},"jsonwire-error":{"status":13,"summary":"UnknownError","detail":"An unknown server-side error occurred while processing the command."}} ]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.