Safari 10 Ships WebDriver

| by James Chesters Follow 1 Followers on Jun 23, 2016. Estimated reading time: 1 minute |

Apple has announced support for WebDriver in Safari 10.0, along with Web Inspector, and a new JavaScript profiler.

Safari is the last major browser to support the tool for automating web application testing, with Microsoft announcing in 2015 support for WebDriver in its Edge browser.

In the update What's New in Safari Apple says that the inclusion of safari driver will provide "a set of interfaces to manipulate DOM elements and control the browser’s behavior" and that developers should enable Remote Automation in the Develop menu before launching the server using /usr/bin/safaridriver.

David Burns, the engineer manager at Mozilla blogging on The Automated Tester, explains the importance of safari driver over Selenium. Burns uses the recent example of Firefox 47, saying "In Firefox 47, Selenium caused Firefox to crash on startup. The Mozilla implementation of WebDriver, called Marionette and GeckoDriver, would never have hit this problem because test failures and crashes like this would lead to patches being reverted and never shipped to end users."

Web Inspector features new to Safari 10 include new timelines to help web developers visualise application memory usage, as well as plotting heap allocation snapshots over time, helping developers to identify areas to improve for optimal memory performance.

Apple's also promises to deliver "fast performance" with its new JavaScript sampling profiler by sampling running code at a high resolution while disabling debugging tools.

Also significant in the 10.0 release is "complete support" for ES6 for OSX and iOS, bringing Proper Tail Calls (PTC) to Safari. Michael Saboff, a software engineer at Apple working on WebKit, elaborates on the importance of ECMAScript 6 in the blog post ECMAScript 6 Proper Tail Calls in WebKit saying:

This feature was added to facilitate recursive programming patterns, both for direct and indirect recursion. Various other design patterns can benefit from PTC as well, such as code that wraps some functionality where the wrapping code directly returns the result of what it wraps. Through the use of PTC, the amount of memory needed to run code is reduced. In deeply recursive code, PTC enables code to run that would otherwise throw a stack overflow exception.

Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread


Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you