Apple a annoncé le support de WebDriver dans Safari 10.0, ainsi que de l'inspecteur Web, et d'un nouveau profileur JavaScript.
Safari est le dernier navigateur majeur à soutenir l'outil d'automatisation des tests d'applications Web, alors que Microsoft annonçait en 2015 le support de WebDriver dans son navigateur Edge.
Dans sa mise à jour Quoi de neuf dans Safari, Apple annonce que l'inclusion de safari driver
fournira "un ensemble d'interfaces pour manipuler les éléments du DOM et contrôler le comportement du navigateur" et que les développeurs devraient permettre Automatisation à Distance dans le menu Développer avant de lancer le serveur en utilisant /usr/bin/safaridriver
.
David Burns, directeur de l'ingénierie chez Mozilla en bloguant sur Le testeur automatisé explique l'importance du safari driver
sur Selenium. Burns utilise l'exemple récent de Firefox 47, en précisant : "Dans Firefox 47, Sélénium provoquait des crashs au démarrage de Firefox. L'implémentation Mozilla du WebDriver, appelé Marionette et GeckoDriver, n'aurait jamais créer ce problème, car des tests en échec et des accidents comme celui-ci conduiraient à des retours en arrière de patchs et jamais à une livraison aux utilisateurs finaux".
L'Inspecteur Web offre de nouvelles fonctionnalités dans Safari 10 comme de nouveaux graphiques temporels pour aider les développeurs web à visualiser l'utilisation de la mémoire de l'application et à tracer des instantanés d'allocation du tas au fil de l'eau, permettant aux développeurs d'identifier les domaines d'amélioration pour des performances optimales de gestion de la mémoire.
Apple promet également de délivrer "une performance rapide" avec son nouveau profileur JavaScript, en échantillonnant le code exécuté à une résolution élevée pendant la désactivation des outils de débogage.
A noter dans la version 10.0, le "support complet" pour ES6 dans OSX et iOS, apportant les Proper Tail Calls (PTC) à Safari. Michael Saboff, un ingénieur logiciel chez Apple qui travaille sur WebKit, précise l'importance d'ECMAScript 6 dans l'article ECMAScript 6 Proper Tail Calls in WebKit :
Cette fonctionnalité a été ajoutée pour faciliter les modèles de programmation récursive, aussi bien la récursivité directe que l'indirecte. Divers autres modèles de conception peuvent également bénéficier des PTC, comme du code enveloppant certaines fonctionnalités qui renvoie directement le résultat de ce qu'il enveloppe. Grâce à l'utilisation des PTC, la quantité de mémoire nécessaire pour exécuter du code est réduite. Dans un code fondamentalement récursif, les PTC font la différence entre le bon fonctionnement du code et une exception de débordement de pile.