Note sources of nondeterminism

Brian Burg edited this page Oct 25, 2013 · 5 revisions

Here's a comprehensive list of sources of nondeterminism in the WebKit engine/Safari browser that have been discovered. They are roughly ordered by type.

In general, sources of nondeterminism are addressed by Timelapse developers on an as-needed basis. If the particular source of nondeterminism is not encountered on the current "goal" webpage, then it will probably not be addressed. Consequently, sources of nondeterminism that we do handle (those which are not in bold face) have been manually verified.

NB. We have not assigned levels of importance for unaddressed nondeterminism, as it varies considerably by use case. Many of the device-oriented DOM events listed below are not widely used outside of Chrome OS and Firefox OS.


  • Nondeterminism that is not yet handled by Timelapse is in bold.
  • Nondeterminism that is an artifact of WebKit's implementation and may not apply to other platforms is italicized.

Nondeterministic APIs


  • new Date()
  • Math.random()


  • document.cookie
  • document.lastModified
  • document.referrer
  • window.applicationCache (and the entire Application Cache API)
  • window.history (and the History API; see Issue #395)`
  • window.innerHeight
  • window.innerWidth
  • window.localStorage (and the entire LocalStorage/SessionStorage API)
  • window.navigator (and the entire Navigator API)
  • window.outerHeight
  • window.outerWidth
  • window.performance (and the Navigation Timing API)
  • window.screen (and the Screen API)
  • window.screenX
  • window.screenY
  • window.screenLeft
  • window.screenTop
  • window.screen
  • window.alert()
  • window.confirm()
  • window.find()
  • window.print()
  • Plugins and their events (Flash, Java, Shockwave, etc)

Scheduling nondeterminism

  • Ordering of resource load callbacks (ReceivedResponse, ReceivedData, Failed, Finished, etc)
  • Scheduling of timer callbacks
  • Scheduling of asynchronous DOM event dispatches
  • Scheduling of page navigation actions (See Issue #387
  • Timing and frequency of requestAnimationFrame.

Event nondeterminism

Other nondeterminism

  • Page resizing (comes from the embedding application)
  • Running pending scripts on a timer delay
  • Asynchronous and/or threaded HTML parsing
  • Dispatching fake mouse move events
  • Disk and memory cache of resources
  • Initial focused/unfocused window state
  • Initial window dimensions