Cross-Browser Testing Blog

Opera 56 Released

The new Opera 56 has arrived with major innovations regarding multitasking. It is based on Chromium 69. Also, we already installed it on our cross-browser testing platform, so that you can see how your web apps would look in it.

Cross-browser testing in Opera 55

Try Opera 56 in Browserling now!

New Features in Opera 56

Volume control in the video pop-up window

In 2016 Opera has announced the feature that lets you watch videos easily, while simultaneously do something else, by embedding the videos in a pop-up window. What Opera 56 adds now is a volume control integrated in the pop-up window for easier, hence faster access.

Opera 56 Volume Control

Scrolling to the top of the page by clicking the active tab is now configurable

..or should we say - turn offable. Many users requested that the feature has to be configurable. Now you can decide whether clicking on the active tab will scroll to the top of the page. Clicking again would scroll to the previous position as you know. To turn this feature on or off go to Settings > Advanced > Browser > User Interface, you won't miss to see it.

New zoom level indicator

Easier bug reporting

Now you can report any issues with the browser by going to O Menu > Help. There you will find the report an issue section. Clicking on it will redirect you to Opera's bug report wizard.

Nicer About page

About pages always somehow make an impression. Opera team already seems to know this and as per Opera 56, the About page has been nicely redesigned. If you wish to check for an available update to your Opera browser, go to Update and Recovery… in the O Menu for Windows and Linux and Opera in the toolbar for Mac.

Opera 56 about dialog

Categories in Settings page

Opera 56 separates the settings into four categories:

  1. Basic
  2. Privacy and security
  3. Features
  4. Browser

That way you can navigate to the options you look for easier than before.

New Developer Features in Opera 56

CSS changes in Opera 56

Conic gradients

The web already has linear gradients where the colour depends on the distance to a line, and radial gradients where the colour depends on the distance to a point. Now it also gets conic gradients where the colour depends on the angular distance to a line through the new conic-gradient function.

Logical margin, paddings and border properties

Blink, the Chromium/Opera browser engine, has gotten some new CSS properties that adapt to text direction. So padding-inline-start will apply to either left or right depending on what side you start reading. Other examples of newly added properties are border-block-end-color, margin-inline-start and padding-inline-end.

Scroll Snap

CSS Scroll Snap allows the page author to determine what is suitable places in a document to snap to. This could be used to avoid cutting off content or to align content that is as large as the viewport correctly. This is a common problem in a tile based user interface.

Previously this problem has been solved through JavaScript but doing it in CSS allows a much smoother user experience.

Display cutouts

“Cutouts” is an area on a mobile phone where only part of the screen is available to the web page, like the notch at the top of some phones. With the display cutout support, it becomes possible to layout content around the cutout in an adaptive way. In CSS the necessary data can be extracted from the env function.

Grid Layout

The interpretation of height percentages for row tracks and gutters will change to be compliant with the specification in the next release, but already in Opera 56 you will see warnings if you are using height calculations that might change.

Media changes in Opera 56


OffscreenCanvas is a canvas intended to be used in workers. Sometimes painting requires heavy calculation more suitable for a webworker and then OffsceenCanvases will come in handy. They have almost the same API as ordinary canvases so moving code to a worker should be easy.

stalled removed from HTMLMediaElements

There used to be an event stalled that fired for Media Source Extension (MSE) players if no data had been added for 3 seconds. This was not useful since the media player can be fine receiving data less often depending on buffer sizes and transfer chunk sizes. The event has now been removed.

EME (Encrypted Media Extensions)

It is now possible for a web developer to query the browser about what encryption schemes it supports through EME. This is useful because there is no general agreement across all platforms about what encryption schemes should be supported.

DOM Changes in Opera 56

Element.toggleAttribute() added

With Element.toggleAttribute an attribute can be removed if it exists or added if it does not. This is especially useful for boolean attributes such as disabled or readonly. Example:

// Switch disabled mode of "the button".
var theButton = document.getElementById("the-button");

document.createTouchList() removed

The official way to create Touch objects is through the Touch() constructor so document.createTouchList() had no use and is now removed.


Through the ReportingObserver API it becomes possible to collect information such as deprecation warnings and manually (through scripts) handle them. For instance by sending them to a server.

JavaScript Array.prototype.flat() / flatMap()

V8, the JavaScript engine, now has support for flat() andflatMap() on arrays, allowing code to easily expand sub-arrays in place.

Keyboard Map API

The Keyboard Map API allows web applications to get a descriptive string for different keyboard keys. This can be of use when telling a user what key to press, in for instance a game.

Network Info API / HTTP Client Hints

Approximate network information is now available through both JavaScript and HTTP Client Hints. More details can be found on the Chromium feature status page.

Web Locks API

Web Locks allows better synchronization between tabs that share the same resource, something that has become more important as more APIs are asynchronous. This is most useful when storage resources such as IndexedDB and WebSQL are used in a non-atomic way, but can be used for any purpose.

Happy cross-browser testing in Opera 56!

▶ Read the full post
Firefox 62 Released

Mozilla has a new release for us - Firefox 62 with a whole lot of new features and fixes. We just added it in our cross-browser testing platform. If you don't have Firefox 62 installed you can easily try it out on our machines and you can test your web apps in it as well.

Firefox 62 About Dialog

Try Firefox 62 in Browserling now!

New features in Firefox 62

  • Firefox Home (the default New Tab) now allows users to display up to 4 rows of top sites, Pocket stories, and highlights.
  • “Reopen in Container” tab menu option appears for users with Containers that lets them choose to reopen a tab in a different container.
  • In advance of removing all trust for Symantec-issued certificates in Firefox 63, a preference was added that allows users to distrust certificates issued by Symantec.
  • Added FreeBSD support for WebAuthn.
  • Improved graphics rendering for Windows users without accelerated hardware using Parallel-Off-Main-Thread Painting.
  • Support for CSS Shapes, allowing for richer web page layouts. This goes hand in hand with a brand new Shape Path Editor in the CSS inspector.
  • CSS Variable Fonts (OpenType Font Variations) support, which makes it possible to create beautiful typography with a single font file.
  • Updates for enterprise environments: AutoConfig is sandboxed to the documented API by default.
  • Added Canadian English (en-CA) locale.
  • Removed the description field for bookmarks.
  • Dark theme is automatically enabled in macOS 10.14 dark mode.
  • Changed the default setting to Enforce (3) for the security.pki.name_matching_mode preference.
  • Adobe Flash applets now run in a more secure mode using process sandboxing on macOS.
  • Users disconnecting from Sync are now offered the option to wipe their Firefox profile data (including bookmarks, passwords, history, cookies, and site data) from their desktop computer.
  • Changed how WebRTC handles screen sharing: When screen-sharing a window, the window will be brought to front.
  • Three-pane Inspector in Developer Tools separates the rules into its own panel.
  • Changes affecting developers.

For Android:

  • Improved scrolling performance.
  • Faster page load times over WiFi connections by loading from the network cache if disk cache is slow.
  • “Product and feature tips” toggle in Notifications settings, allowing for more control over which notifications are shown.
  • WebRTC video sessions between Firefox for Android and Safari browsers works again.

Changes in Firefox 62

  • Removed the description field for bookmarks. Users who have stored descriptions using the field may wish to export these descriptions as html or json files, as they will be removed in a future release.
  • Dark theme is automatically enabled in macOS 10.14 dark mode
  • Changed the default setting to Enforce (3) for the security.pki.name_matching_mode preference
  • Adobe Flash applets now run in a more secure mode using process sandboxing on macOS. Learn how this may affect features here.
  • Users disconnecting from Sync are now offered the option to wipe their Firefox profile data (including bookmarks, passwords, history, cookies, and site data) from their desktop computer
  • Changed how WebRTC handles screen sharing: When screen-sharing a window, the window will be brought to front

Unresolved issues in Firefox 62

  • Unvisited bookmarks will not be autofilled in the address bar
  • File management can fail on macOS Mojave (10.14)

Developer Tools Changes in Firefox 62

  • The Shape Path Editor is now available by default.
  • You can now split the Rules view out into its own pane, separate from the other tabs on the CSS pane.
  • The Grid inspector has updated features, and all new documentation.
  • You now have four options for the location of the Developer Tools. In addition to the default location on the bottom of the window, you can choose to locate the tools on either the left or right sides of the main window or in a separate window.
  • The Accessibility Inspector has had a couple of minor updates - it no longer exposes the help property, which isn't properly implemented in Gecko and the keyboardShortcut property now correctly exposes any keyboard shortcut available to activate the currently inspected node.
  • A close button has been added to the split console toolbar.
  • If the option to "Select an iframe as the currently targeted document" is checked, the icon will appear in the toolbar while the Settings tab is displayed, even if the current page doesn't include any iframes.
  • The Network Monitor's Cookies tab now shows the cookie samesite attribute.
  • Responsive design mode now works inside container tabs.
  • When CORS errors occur and are reported on the console, Firefox now provides a link to the corresponding page in our CORS error documentation.
  • You can create a screenshot of the current page (with an optional filename) from the Console tab using the :screenshot command.
  • The Developer Toolbar/GCLI (accessed with Shift + F2) has been removed from Firefox. Both the Developer Toolbar UI and the GCLI upstream library have become unmaintained, some of its features are broken (some ever since e10s), it is blocking the unsafeSetInnerHTMLwork, usage numbers are very low, alternatives exist for the most used commands.

CSS Changes in Firefox 62

  • :-moz-selection has been unprefixed to ::selection.
  • x is now supported as a unit for the <resolution> ) type.
  • shape-margin, shape-outside , and shape-image-threshold are now enabled by default.
  • Removed all XUL display values with the exception of -moz-box and -moz-inline-boxhave been removed from non-XUL documents.

Javascript Changes in Firefox 62

  • The WebAssembly.Global() constructor is now supported, along with global variables in WebAssembly.
  • The Array.prototype.flat() and Array.prototype.flatMap() methods are now enabled by defaul.
  • The import.meta property has been implemented to expose context-specific metadata to a JavaScript module.
  • JavaScript string literals may now directly contain the U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR characters. As a consequence, JSON syntax is now a subset of JavaScript literal syntax.
  • For out-of-bounds typed array indexes, Reflect.defineProperty() and Reflect.set() will now return false instead of true .
  • Removed DOMPoint and DOMPointReadOnly constructors no longer support an input parameter of type DOMPointInit; the values of the properties must be specified using the x, y, z, and w parameters.
  • Removed URL.createObjectURL() method no longer supports creating object URLs to represent a MediaStream. This capability has been obsolete for some time now, since you can now simply set HTMLMediaElement.srcObject to the MediaStream directly.

APIs Changes in Firefox 62

New APIs:

  • The Speech Synthesis API (Text-to-Speech) is now enabled by default on Firefox for Android.

DOM Updates:

  • The DOMPointReadOnly interface now supports the static function DOMPointReadOnly.fromPoint(), which creates a new point object from a dictionary that's compatible with DOMPointInit, which includes any DOMPoint object. This function is also available on DOMPoint.
  • For compatibility purposes, the Event.srcElement property is now supported. It is an alias for
  • Navigator.registerProtocolHandler() now must only be called from a secure context.
  • The Navigator.registerContentHandler() method has been disabled by default in preparation for being removed entirely, as it's been obsolete for some time.
  • The DataTransfer() constructor has been implemented.
  • Document.domain can no longer return null. If the domain cannot be identified, then domain returns an empty string instead of null.
  • Added the Console.timeLog() method to display the current value of a console timer while continuing to track the time.
  • Added Console.countReset() to reset a console counter value.

Media, Web Audio, and WebRTC Updates:

  • The "media.autoplay.enabled" preference now controls automatic playback of both audio and video media, instead of just video media.
  • The ChannelSplitterNode has been fixed to correctly default to having 6 channels with the channelInterpretation set to "discrete" and the channelCountMode set to "explicit", as per the specification.

API Removals:

  • The userproximity and deviceproximity events have been disabled by default behind the device.sensors.proximity.enabled preference.
  • The devicelight event has been disabled by default behind the device.sensors.ambientLight.enabled preference.
  • The DOMSubtreeModified and DOMAttrModified mutation events are no longer thrown when the style attribute is changed via the CSSOM.
  • Support for CSSStyleDeclaration.getPropertyCSSValue() has been removed.
  • Support for CSSValue, CSSPrimitiveValue, and CSSValueList has been removed.
  • window.getComputedStyle() no longer returns null when called on a Windowwhich has no presentation.

HTTP Changes in Firefox 62

  • The deprecated CSP referrer directive has been removed. Please use the Referrer-Policy header instead.

WebDriver conformance (Marionette)

New features

  • Command "WebDriver:ElementSendKeys" has been made WebDriver conforming for file uploads.
  • User prompts as raised by "beforeunload" events are automatically dismissed for "WebDriver:Get", "WebDriver:Back", "WebDriver:Forward", "WebDriver:Refresh", and "WebDriver:Close" commands.
  • "WebDriver:PerformActions" for Ctrl + Click synthesizes a contextmenuevent.
  • Removed obsolete endpoints including "getWindowPosition", "setWindowPosition", "getWindowSize", and "setWindowSize".
  • WebDriver commands which return success with data "null" now return an empty dictionary.
  • "WebDriver:ExecuteScript" caused cyclic reference error for WebElement collections.
  • Dispatching a "pointerMove" or "pause" action primitive could cause a hang, and the command to never send a reply.

Add-on Developers Changes in Firefox 62

  • Added the webRequest.getSecurityInfo() API to examine details of TLS connections.
  • Added the browserSettings.newTabPosition to customize where new tabs open.
  • windowTypes has been deprecated in windows.get(), windows.getCurrent(), and windows.getLastFocused().
  • It's now possible to modify a browser action on a per-window basis.

Manifest changes:

  • New open_at_install property of the sidebar_action manifest key enables extensions to control whether their sidebars should open automatically on install or not.
  • Changes to the browser_style property of various manifest keys:
    • In page_action and browser_action it defaults to false.
    • In sidebar_action and options_ui it defaults to true.

Theme changes:

  • New tab_background_separator property of the theme manifest key enables extensions to change the color of the tab separator.


  • Support for unpacked sideloaded extensions has been removed.
  • The warning about browser_style displayed when temporarily loading an extension for testing is no longer displayed.

Security vulnerabilities fixed in Firefox 62

  • CVE-2018-12377: Use-after-free in refresh driver timers.
  • CVE-2018-12378: Use-after-free in IndexedDB.
  • CVE-2018-12379: Out-of-bounds write with malicious MAR file.
  • CVE-2017-16541: Proxy bypass using automount and autofs.
  • CVE-2018-12381: Dragging and dropping Outlook email message results in page navigation.
  • CVE-2018-12382: Addressbar spoofing with javascript URI on Firefox for Android.
  • CVE-2018-12383: Setting a master password post-Firefox 58 does not delete unencrypted previously stored passwords.
  • CVE-2018-12375: Memory safety bugs fixed in Firefox 62.
  • CVE-2018-12376: Memory safety bugs fixed in Firefox 62 and Firefox ESR 60.2.

Have fun cross-browser testing your apps in Firefox 62 and Browserling!

▶ Read the full post
Chrome 69 Released

We are happy to announce that Chrome 69 was released today. At Browserling we immediately installed it, got familiar with its features in-depth, and launched it on our cross-browser testing platform so that you can try it too and test your webapps in it!

Chrome 59 Version

Try it yourself right away!

What's new in Chrome 69?

The most notable features are as follows:

  • A new browser interface.
  • CSS Scroll Snap allows you to create smooth, slick, scroll experiences.
  • Display Cutouts lets you use the full area of the screen, including any space behind the display cutout, sometimes called a notch.
  • The Web Locks API allows you to asynchronously acquire a lock, hold it while work is performed, then release it.
  • From the CSS4 spec, you can now create color transitions around the circumference of a circle, using conic gradients.
  • New toggleAttribute() method on elements toggles the existence of an attribute, similar to classList.toggle().
  • JavaScript arrays are getting two new methods: flat() and flatMap().
  • OffscreenCanvas moves work off the main thread in a worker, helping to eliminate performance bottlenecks.
  • A number of fixes and improvements.

For Android:

  • Secure and easy mobile payments via 3rd party payment apps.
  • Password generation now works on more sites.

For iOS:

  • New bottom toolbar: easier to reach frequently used functions, like Back, Search, tabs, and the menu.
  • New tab grid: see bigger previews of your tabs, including tabs open on other devices.
  • Features like Bookmarks and Reading Lists are now easily accessible on the New Tab Page.
  • Press firmly on the app icon to see shortcuts (3D Touch).
  • Credit cards you enter on your device are now securely synced to Google Pay for use on other devices (if enabled).

New browser interface

You can easily spot Chrome 69 by its new and completely renovated material design theme - No sharp edges.

Windows10 chrome 69 design

Backgrounds on the new blank page tab

Another cool thing about the design is the option to change the background of a new tab. To set a custom background, click the gear icon at the bottom right corner of the new tab page. Select “Chrome Backgrounds” to choose one of Google’s backgrounds, or click “Upload an Image” to put any background image you like there. This is an example:

example background

Quick-access shortcuts

In the new blank tab page you can now also see a shortcuts bar, which is more or less just a quick-access bookmarks bar. Chrome’s New Tab page previously had a “most visited” section below the search box, showing you the web pages you most frequently visited. That’s now replaced by the quick access shortcuts bar.

shortcuts bar

Better password manager

Passwords. Sounds important, doesn't it? Google did a wonderful job at improving the password manager even more. Now it is equipped with a fully-functional integrated password generator tool. Just right-click a password field and select “Generate Password.” Google has also improved the autofill feature.

Improved "Omnibox"

For chrome, the address bar is not just an address bar. And since version 69, the address bar - "Omnibox" got significantly improved as well. Many answers to searches now instantly appear in the Omnibox as you start typing, just as they do when searching on Google’s website. Want to see it in action? Type for example: "weather Norway" or "5 cm in inch" or "6 ^ 3". And it gets smarter every day. Furthermore, it can suggest you to switch to already existing tab instead of running the same one again.

chrome omnibar

Developer features and updates in Chrome 69

  • Add RTCRtpParameters.headerExtensions - This change adds support for the RTCRtpParameters.headerExtensions dictionary entry which is returned by RTCRtpSender.getParameters(). This is a read-only field that allows inspection of the parameters that are set on a PeerConnection after negotiation.
  • Array.prototype.{flat,flatMap} - JavaScript arrays are getting two new methods. Array.prototype.flat() returns a new array with all sub-array elements concatenated into it recursively up to the specified depth. The sub-array elements become members of the new array. Array.prototype.flatMap() first maps each element using a mapping function, then flattens the result into a new array. This method is functionally equivalent to a map followed by a flatten of depth 1.
  • CSS Scroll Snap Points - The CSS scroll snap specification introduces snap points as a way to "enforce the scroll offsets that a scroll container's visual viewport may end at after a scrolling operation has completed". Scroll snapping applies to both user scroll operations such as touch, wheel scrolling, or scrollbar dragging, and programmatic scroll operations such as Element.scrollTo(). This improves the user experience by allowing scrollable zones to easily stop at predefined points.
  • CSS conic-gradient - Support was added for CSS conic (angular/sweep) gradients. Conic gradients allow color transitions around a center rather than radiating from it. This allows, for example, a web developer to create a hue wheel using only two CSS properties.
  • CSS logical flow relative margins, paddings and borders - Chrome now implements logical margin, padding, and border CSS properties using standard names, specifically margin-{block,inline}-{start,end}, padding-{block,inline}-{start,end} and border-{block,inline}-{start,end}-{width,style,color}. These capabilities were previously supported through -webkit prefixes and non-standard names. Shorthand properties are only added for border-{block,inline}-{start,end}.
  • Cookie Store API - The Cookie Store API exposes HTTP cookies to service workers and offers an asynchronous alternative to document.cookie.
  • Deprecation Reports - A new feature of the Reporting API gives developers more insight into the functioning of their code on client machines. Deprecation reports allow deprecation warnings, currently only available in developer tool consoles, to be sent to the back end, or captured in callbacks using ReportingObserver.
  • Display cutout and CSS env() support - Display cutouts are now supported in Chrome through CSS environment variables and the viewport-fit meta tag. This allows developers to take advantage of the entire screen on devices that have a display cutout.
  • EME Extension: HDCP Policy Check - This feature provides applications the ability to query whether a certain HDCP policy can be enforced so that playback can be started at the optimum resolution for the best user experience.
  • EME: Query what encryption schemes are supported - A new method will allow applications to query whether a specific encryption scheme is supported by Encrypted Media Extensions (EME).
  • ES Modules for dedicated workers ('module' type option) - JavaScript will support modules in dedicated workers. Using a new value for the constructor's type attribute, worker scripts are loaded as ES6 modules and the import statement is available on worker contexts. With this feature, web developers can more easily write programs in a composable way and share them among a page and workers.
  • Element.toggleAttribute - A new method named Element.toggleAttribute() allows toggling the existence of an element’s attribute in a way similar to Element.classList.toggle. An optional force parameter forces toggling the attribute even if it doesn't exist. This makes managing boolean attributes much simpler as the interface doesn't use strings as does Element.setAttribute().
  • Feature Policy: JavaScript API - Expose JavaScript API for feature policy. document.policy.allowedFeatures() // what are the allowed features in this document document.policy.allowsFeature('geolocation', <origin>?) // is geolocation allowed in this document/origin? document.policy.getAllowlistForFeature('geolocation') // what origins are allowed to use geolocation?
  • Fetch API: Request.isHistoryNavigation - Add a boolean property to request objects to indicate whether the particular request is a history navigation. This allows a service worker to know whether a request was due to a back/forward navigation. An example of how this might be used is that a service worker could respond to such a navigation with a cached response.
  • Keyboard Map - This API returns a map which translates from KeyboardEvent.code values into strings that can be shown to the user to identify each key. This is not possible with existing web platform APIs because the value that should be shown to the user depends on the keyboard layouts that the user has installed and activated.
  • Network Error Logging - This feature defines a mechanism that enables developers to declare a network error reporting policy for a web application via the NEL header. A user agent can use this policy to report encountered network errors that prevented it from successfully fetching requested resources. This is done through the common Reporting API.
  • OffscreenCanvas - OffscreenCanvas is a new interface that allows canvas rendering contexts (2D and WebGL) to be used in Workers. Making canvas rendering contexts available to workers increases parallelism in web applications, leading to improved performance on multi-core systems. As part of the required tooling for this to work, this also launches DedicatedWorker.requestAnimationFrame(), allowing animation-like events to be triggered the same on dedicated workers as they are in Window.
  • RTCRtpSender / RTCRtpReceiver.getCapabilities() - The getCapabilities() method returns the most optimistic view of the capabilities of the system for sending media of the given kind. It does not reserve any resources, ports, or other state but is meant to provide a way to discover the types of capabilities of the browser including which codecs or RTP extensions may be supported.
  • Remove 'stalled' events for HTMLMediaElements using MediaSourceExtensions - The HTMLMediaElement.stalled event fires when media download has failed to progress for at least 3 seconds. In Media Source Extensions, the web app manages the download and the media element is not aware of its progress. Since some apps append media data in chunks larger than 3 seconds, stalled was being fired at inappropriate times. To solve this, stalled has been removed for Media Source Extensions.
  • Remove document.createTouchList - The document.createTouchList() method is being removed because the Touch() constructor has been supported since Chrome 48.
  • Remove extra form data , if "value" attribute is present with non-empty value for - As per spec, the constructed "form data set" should not include the value of the image button
  • Reporting API - The Reporting API defines a generic reporting framework which allows web developers to associate a set of named reporting endpoints with an origin. Various platform features (like Content Security Policy, Network Error Reporting, and others) will use these endpoints to deliver feature-specific reports in a consistent manner.
  • ReportingObserver - A new feature of the Reporting API gives developers more insight into the functioning of their code on client machines. The ReportingObserver API allows JavaScript to capture reports in callback, which can be used to save custom reporting data to page analytics.
  • ServiceWorkerRegistration.update() resolves with a registration. - ServiceWorkerRegistration.update() previously resolved with undefined. Now it resolves to the registration object as required by the specification.
  • Support for CTAP2 FIDO devices via the Web Authentication API - This feature adds support for CTAP2 devices, which provide advanced security capabilities such as biometric authentication and resident keys (keys stored on the device). The WebAuthentication API formerly only supported Universal 2nd Factor (U2F, also known as CTAP1 ) devices at the transport layer. This change doesn't alter the API surface itself but enables richer device interactions via the existing Web Authentication API.
  • Three new network quality client hints - Support for the “rtt”, “downlink”, and “ect” client hint values and HTTP request headers have been added to Chrome to convey Chrome’s network connection speed to servers. These network quality hints provide the same values as existing Network Information APIs navigator.connection.rtt, navigator.connection.downlink, and navigator.connection.effectiveType.
  • Web Locks API - This API allows scripts running in one tab to asynchronously acquire a lock, hold it while work is performed, then release it. While held, no other script in the origin can acquire the same lock. A lock represents some potentially shared resource, identified by a name chosen by the web app. For example, if a web app running in multiple tabs wants to ensure that only one tab is syncing to the network, each tab could try to acquire a "my_net_sync" lock, but only one tab will succeed.
  • WebRTC RTCRtpTransceiver in Unified Plan - When spec-complaint SDP format "Unified Plan" is used, RTCRtpTransceiver describes each sender-receiver pair that is added to the RTCPeerConnection. This represents the components used to send and receive media. Exposing the transceiver gives the application the ability to receive media early and provides more control over the generated SDP. APIs that are shipping include RTCRtpTransceiver, RTCPeerConnection.addTransceiver() and RTCPeerConnection.getTransceivers().
  • WebSocket: permit connection reuse for auth - When receiving a 401 HTTP response during the WebSocket handshake, Chrome will attempt to continue authentication on the same socket. Windows HTTP authentication usually requires a single connection to be reused for authentication to succeed. Until now, Chrome has always closed the connection on a 401 status response, so Windows authentication has not worked. Windows authentication support is mostly useful in enterprise environments where single-sign-on is used.
  • performance.memory improvements - The performance.memory property is a non-standard API, seeing significant usage from some of our partners. With this change, if the renderer is locked to a site reported values will not contain coarse quantization and delay. This will allow developers to detect performance regressions from user data more easily because the memory measurements will be more accurate and can be taken more frequently.
  • service worker: Don't expose the API to insecure contexts. - Because of a technical limitation, navigator.serviceWorker was previously exposed on insecure contexts and threw a Security Error when used. After this change, navigator.serviceWorker will return undefined. This aligns with the specification.
  • window.confirm() will not activate parent page - If a document in a background tab calls window.confirm() then the call to confirm() will return immediately with false, and no dialog will be shown to the user. If the tab is active, then the call will show a dialog. Specifically, this removes the ability to use window.confirm() to bring a tab to the front against the user’s will.

Bug fixes

High-threat bug fixes:

  • CVE-2018-16065: Out of bounds write in V8. Reported by Brendon Tiszka on 2018-07-26
  • CVE-2018-16066: Out of bounds read in Blink. Reported by cloudfuzzer on 2018-05-29
  • CVE-2018-17457: Use after free in WebAudio. Reported by Zhe Jin(金哲),Luyao Liu(刘路遥) from Chengdu Security Response Center of Qihoo 360 Technology Co. Ltd on 2018-05-31
  • CVE-2018-16067: Out of bounds read in WebAudio. Reported by Zhe Jin(金哲),Luyao Liu(刘路遥) from Chengdu Security Response Center of Qihoo 360 Technology Co. Ltd on 2018-07-05
  • CVE-2018-16068: Out of bounds write in Mojo. Reported by Mark Brand of Google Project Zero on 2018-08-23
  • CVE-2018-16069:Out of bounds read in SwiftShader. Reported by Mark Brand of Google Project Zero on 2018-05-31
  • CVE-2018-16070: Integer overflow in Skia. Reported by Ivan Fratric of Google Project Zero on 2018-06-01
  • CVE-2018-16071: Use after free in WebRTC. Reported by Natalie Silvanovich of Google Project Zero on 2018-06-21

Medium-threat bug fixes:

  • CVE-2018-16072: Cross origin pixel leak in Chrome's interaction with Android's MediaPlayer. Reported by Jun Kokatsu (@shhnjk) on 2018-07-17
  • CVE-2018-16073: Site Isolation bypass after tab restore. Reported by Jun Kokatsu (@shhnjk) on 2018-07-12
  • CVE-2018-16074: Site Isolation bypass using Blob URLS. Reported by Jun Kokatsu (@shhnjk) on 2018-07-13
  • Out of bounds read in Little-CMS. Reported by Quang Nguyễn (@quangnh89) of Viettel Cyber Security on 2018-07-18
  • CVE-2018-16075: Local file access in Blink. Reported by Pepe Vila (@cgvwzq) on 2017-11-27
  • CVE-2018-16076: Out of bounds read in PDFium. Reported by Aleksandar Nikolic of Cisco Talos on 2018-07-25
  • CVE-2018-16077: Content security policy bypass in Blink. Reported by Manuel Caballero on 2014-05-27
  • CVE-2018-16078: Credit card information leak in Autofill. Reported by Cailan Sacks on 2018-06-28
  • CVE-2018-16079: URL spoof in permission dialogs. Reported by Markus Vervier and Michele Orrù (antisnatchor) on 2017-05-17
  • CVE-2018-16080: URL spoof in full screen mode. Reported by Khalil Zhani on 2018-06-29
  • CVE-2018-16081: Local file access in DevTools. Reported by Jann Horn of Google Project Zero on 2016-11-17
  • CVE-2018-16082: Stack buffer overflow in SwiftShader. Reported by Omair on 2018-06-11
  • CVE-2018-16083: Out of bounds read in WebRTC. Reported by Natalie Silvanovich of Google Project Zero on 2018-06-26
  • Cross origin read. Reported by Luan Herrera (@lbherrera_) on 2018-05-31

Low-threat bug fixes:

  • CVE-2018-16084: User confirmation bypass in external protocol handling. Reported by Jun Kokatsu (@shhnjk) on 2018-07-18
  • CVE-2018-16086: Script injection in New Tab Page. Reported by Alexander Shutov (Dark Reader extension) on 2018-05-18
  • CVE-2018-16085: Use after free in Memory Instrumentation. Reported by Roman Kuksin of Yandex on 2018-06-26
  • CVE-2018-16087: Multiple download restriction bypass.
  • CVE-2018-16088: User gesture requirement bypass.



If you want to take a rest from all the work and maybe have some fun while your internet connection is down, then you can play the Chrome’s dinosaur game. This is an Easter egg, and it appears when you don’t have an Internet connection. On the “No internet” page that features a dinosaur icon, press the Spacebar (or tap on mobile) to begin the game, which is also edited in Chrome 69.

dino game

▶ Read the full post
Chrome 68 Released

Today Chrome version 68 was released and we rushed to install this fresh new version on our cloud servers. We at Browserling think that time is of the essence and we always make sure that new versions are installed as soon as they become public.

Chrome 68 Version

Try it yourself right away!

What's new in Chrome 68?

The most notable features are as follows:

  • HTTP sites marked as "not secure".
  • The Page Lifecycle API tells you when your tab has been suspended or restored.
  • The Payment Handler API makes it possible for web-based payment apps to support the Payment Request experience.
  • Content embedded in an iframe requires a user gesture to navigate the top-level browsing context to a different origin.
  • Since Chrome 1, the CSS cursor values for grab and grabbing have been prefixed; standard, un-prefixed values now supported.
  • A number of other fixes and improvements.

For Android:

  • Fix for an Autofill issue.
  • The Add to Home Screen behavior on Android is changing to give you more control.

For iOS:

  • Improved downloading from websites. Downloading now works while the app is in the background. You can also continue browsing in the same tab while your file downloads.
  • Improvements to Forms Autofill.
  • Improved handling of links to the App Store.

Changes to the "Add to Home Screen"

If your site meets the "add to home screen criteria", Chrome will no longer show the add to home screen banner. Instead, you’re in control over when and how to prompt the user.

Page Lifecycle API

A large number of tabs running usually leads to critical resources (such as memory, CPU, battery and network) being oversubscribed, which on the other hand leads to a bad user experience. It is no myth that if your site is running in the background, the system may suspend it to conserve these resources and with the new Page Lifecycle API, you can now listen for, and respond to those events.

Payment Handler API

The Payment Request API is an open, standards-based way to accept payments. It can collect payment credentials as well as shipping and contact information from the payer through a quick and easy user interface.

HTTP sites marked as "not secure"

Google chrome complementary tightens security by recommending sites to adopt HTTPS encryption. Since Chrome 68, sites that are still based on solely HTTP will be marked as "Not secure".

Chrome 68 not secure and secure

Developer features and updates in Chrome 68

  • Accept two values in the overflow shorthand - The overflow shorthand will accept two values making it possible to set overflow-x and overflow-y to different values. If two values are specified, the first is overflow-x and the second is overflow-y. This property previously only accepted one value, meaning that a developer who wanted to set them to different values was forced to write longhand statements for both. Changing the shorthand reduces complexity by allowing developers to specify both in a single statement.
  • Block tab-under navigations - A tab-under is when a page both opens a popup to some destination (usually where the user wants to go) AND navigates the opener page to some third party content (usually an advertisement). Chrome will block these navigations and show native UI to the user so they can follow the redirect just in case.
  • CSS position values with 3 parts - The object-position and perspective-origin properties should not accept 3 part values like "top right 20%". This also applies for positions in basic shapes and gradients. Valid position values always have 1, 2 or 4 parts. Deprecation of 3-part values is occurred in Chrome 66, and removal occurred in Chrome 68.
  • Deprecate and Remove: negative brightness values in filter - For compliance with specification, filter's brightness() function no longer accepts negative values.
  • Feature Policy: Image Compression - Allows developers to selectively enable and disable the use of images with large byte-per-pixel ratio (compression ratio) through the Feature-Policy HTTP header or the <iframe> 'allow' attribute. This provides more control over minimizing image file size, on a per-origin basis. Use this policy to optimize image loading experience. The identifier for the feature in policies is 'image-compression'. By default, 'image-compression' is allowed in all frames.
  • Feature Policy: Legacy Image Format - Allows developers to selectively enable and disable the use of images with legacy image formats through the Feature-Policy HTTP header or the <iframe> 'allow' attribute. This provides more control over images using legacy formats, on a per-origin basis. Use this policy to improve image loading performance. The identifier for the feature in policies is 'legacy-image-formats'. By default, 'legacy-image-formats' is allowed in all frames.
  • Feature Policy: Maximum Image Downscaling - Allows developers to selectively enable and disable the use of images whose sizes that are much bigger than the containers' through the Feature-Policy HTTP header or the <iframe> 'allow' attribute. This provides more control over images with unnecessarily large intrinsic size, on a per-origin basis. Use this policy to improve image loading performance. The identifier for the feature in policies is 'maximum-downscaling-image'. By default, 'maximum-downscaling-image' is allowed in all frames.
  • Feature Policy: animations - Allows developers to selectively disable the use of certain CSS animations through the Feature-Policy HTTP header or the <iframe> "allow" attribute. Slow and inefficient CSS animations add delays to paint/draw intervals. With the use of this policy-controlled feature, a developer may restrict the use of certain animations on their own web page or certain third party origins in embedded contents.
  • Fetch API: Credentials mode default to "same-origin" - A Request object’s credentials mode defaults to “omit” in Chrome right now. A spec change recently changed the default to “same-origin”, thus providing credentials to same-origin requests instead of omitting them.
  • GamePad API vibration extension - Update the Standard Gamepad spec to include a rumble-style haptic feedback device and extend the Gamepad API to support vibration effects.
  • Gamepad polling at 250Hz - Chrome's gamepad polling behavior adds approximately 8 ms of avoidable latency due to the lack of synchronization between the internal polling loop and requestAnimationFrame, where gamepad state is typically used. Increasing the internal polling rate to 250 Hz reduces the added latency to approximately 2 ms when the application also increases its polling rate.
  • High Resolution Time Stamp for Gamepad - Change Gamepad.timestamp to use a DOMHighResTimeStamp, a high resolution monotonic time with microsecond resolution. Timestamps are measured as offsets from the navigationStart attribute of the PerformanceTiming interface.
  • Improve Cache Management for Service Worker Scripts - The HTTP cache will be ignored when requesting updates to the service worker. Requests for importScripts will still go through the HTTP cache. But this is just the default. A new registration option, ServiceWorkerRegistration.updateViaCache is available that offers control over this behavior.
  • Keyboard Lock - While in fullscreen, this API allows apps to receive keys that are normally handled by the system or the browser like Cmd/Alt-Tab, or Esc. Users can escape keyboard lock (and fullscreen) by holding the Esc key for two seconds.
  • Make PointerEvent.fromElement and PointerEvent.toElement null - PointerEvents won't report non-standard and inconsistent values for fromElement and toElement fields. Instead, they will always report null (like Edge and Firefox). In MouseEvents (from which PointerEvents inherit these fields), .fromElement and .toElement are non-standard, and have been inconsistent among major browsers for many years. Moreover, we have standard and consistent alternatives already: .target and .relatedTarget. Recently the PointerEvents spec has been updated accordingly.
  • Page Lifecycle API - With large numbers of web apps (and tabs) running, critical resources such as memory, CPU, battery, network etc easily get oversubscribed, leading to a bad end user experience. Web lifecycle is a proposal to enable system initiated Tab Discarding and CPU Stopping -- to effectively manage resources for optimal user experience. See explainer.
  • Payment Handler API - The API helps to develop new payment apps in web standard ways (e.g. service worker). If using them, payment app providers can provide simplified payment methods and user experiences.
  • RTCRtpSender: get/setParameters() - The get/setParameters() methods return or update the RTCRtpSender object's current parameters for how the RTCRtpSender.track property is encoded and transmitted to a remote RTCRtpReceiver. These methods enable you to change encoding parameters for WebRTC streams such as the maximum transmission bitrate without doing any SDP munging or renegotiation.
  • Remove Document#selectedStylesheetSet/preferredStylesheetSet - The Document.selectedStylesheetSet/preferredStylesheetSet attributes will be removed because they are non-standard and only implemented by Chrome and WebKit. The standard versions of these attributes were removed from the spec in 2016.
  • Remove document.createTouch - Remove document.createTouch Using new Touch({...}) has been supported in Chrome since M48.
  • Require user gesture for framebusting in cross-origin iframes - Summary Content in an <iframe> can generally navigate the top level browsing context unless explicitly forbidden by the sandbox attribute (sometimes called 'framebusting'). Restrict this ability to content that is processing a user gesture, unless it is same-origin to the parent. Motivation Framebusting was originally used by content that wanted to prevent being placed in an <iframe> but it's being abused. There are other, more specific tools to accomplish the original use case.
  • Support 'x' as a resolution unit - CSS Values and Units Module Level 4 defines a new resolution unit called 'dot per pixel' for support of high-resolution displays. This change adds 'x' as a synonym for the existing abbreviation, 'dppx'.
  • Unified touch adjustment - Touch adjustment will adjust the TouchEvent and the corresponding PointerEvent target to a best target within the touch area. TouchEvent coordinates will not be changed.
  • Unprefix CSS "grab" and "grabbing" Values for Cursor Property - These values change the mouse cursor to an open hand or closed hand to indicate that something can be grabbed or is currently grabbed. Prefixed versions of these properties have been supported since Chrome 1, with Windows support added in Chrome 22. With this change Chrome will support the standard, unprefixed versions of these values.
  • User activation through long-press gesture - The long-press gesture should be considered a user activation because it indicates user's interaction with the page. This would allow a web app to call restricted APIs like navigator.vibrate() on long-press to match native behavior.
  • WEBGL_compressed_texture_atc - This extension provided the AMD_compressed_ATC_texture formats to the web. Hardware support has dwindled to near-zero, so the extension has been deprecated/rejected by the WebGL Working Group. Support for this extension has always been small (as it is hardware-dependent), so no existing applications should be relying on its presence.
  • WebAudio: Add User Selectable Automation Rate for AudioParams - Gives each AudioParam a new attribute, automationRate that allows the user to select whether the AudioParam is either "a-rate" or "k-rate". Most but not all AudioParams allow changing the rate (as given in the spec). For example, BiquadFilterNode with default "a-rate" automation is very expensive to compute due to the complex relationship between the parameters and the filter coefficients. If this fast automation is not needed (the most typical case), the parameters can be set to "k-rate".
  • customElements.upgrade() - This function upgrades undefined custom elements explicitly. If a custom element is created with the innerHTML setter and its parent node is not connected to a document, the custom element is not upgraded until it's connected. Upgrading such elements explicitly allows developers to handle them in a single way regardless of connectedness.

Bug fixes

High-threat bug fixes:

  • CVE-2018-6153: Stack buffer overflow in Skia. Reported by Zhen Zhou of NSFOCUS Security Team on 2018-06-07
  • CVE-2018-6154: Heap buffer overflow in WebGL. Reported by Omair on 2018-06-01
  • CVE-2018-6155: Use after free in WebRTC. Reported by Natalie Silvanovich of Google Project Zero on 2018-05-11
  • CVE-2018-6156: Heap buffer overflow in WebRTC. Reported by Natalie Silvanovich of Google Project Zero on 2018-05-10
  • CVE-2018-6157: Type confusion in WebRTC. Reported by Natalie Silvanovich of Google Project Zero on 2018-05-07

Medium-threat bug fixes:

  • CVE-2018-6158: Use after free in Blink. Reported by Zhe Jin(金哲),Luyao Liu(刘路遥) from Chengdu Security Response Center of Qihoo 360 Technology Co. Ltd on 2018-05-09
  • CVE-2018-6159: Same origin policy bypass in ServiceWorker. Reported by Jun Kokatsu (@shhnjk) on 2018-04-26
  • CVE-2018-6160: URL spoof in Chrome on iOS. Reported by evi1m0 of Bilibili Security Team on 2018-05-04
  • CVE-2018-6161: Same origin policy bypass in WebAudio. Reported by Jun Kokatsu (@shhnjk) on 2018-03-27
  • CVE-2018-6162: Heap buffer overflow in WebGL. Reported by Omair on 2018-01-21
  • CVE-2018-6163: URL spoof in Omnibox. Reported by Khalil Zhani on 2018-06-04
  • CVE-2018-6164: Same origin policy bypass in ServiceWorker. Reported by Jun Kokatsu (@shhnjk) on 2018-06-01
  • CVE-2018-6165: URL spoof in Omnibox. Reported by evi1m0 of Bilibili Security Team on 2018-05-30
  • CVE-2018-6166: URL spoof in Omnibox. Reported by Lnyas Zhang on 2018-04-21
  • CVE-2018-6167: URL spoof in Omnibox. Reported by Lnyas Zhang on 2018-04-15
  • CVE-2018-6168: CORS bypass in Blink. Reported by Gunes Acar and Danny Y. Huang of Princeton University, Frank Li of UC Berkeley on 2018-04-03
  • CVE-2018-6169: Permissions bypass in extension installation . Reported by Sam P on 2014-07-16
  • CVE-2018-6170: Type confusion in PDFium. Reported by Anonymous on 2018-07-10
  • CVE-2018-6171: Use after free in WebBluetooth. Reported by on 2018-06-12
  • CVE-2018-6172: URL spoof in Omnibox. Reported by Khalil Zhani on 2018-05-28
  • CVE-2018-6173: URL spoof in Omnibox. Reported by Khalil Zhani on 2018-04-25
  • CVE-2018-6174: Integer overflow in SwiftShader. Reported by Mark Brand of Google Project Zero on 2018-04-20
  • CVE-2018-6175: URL spoof in Omnibox. Reported by Khalil Zhani on 2018-03-26
  • CVE-2018-6176: Local user privilege escalation in Extensions. Reported by Jann Horn of Google Project Zero on 2016-11-18

Low-threat bug fixes:

  • CVE-2018-6177: Cross origin information leak in Blink. Reported by Ron Masas (Imperva) on 2018-03-27
  • CVE-2018-6178: UI spoof in Extensions. Reported by Khalil Zhani on 2018-03-19
  • CVE-2018-6179: Local file information leak in Extensions. Reported by Anonymous on 2018-02-26
  • CVE-2018-6044: Request privilege escalation in Extensions . Reported by Rob Wu on 2017-12-23
  • CVE-2018-4117: Cross origin information leak in Blink. Reported by AhsanEjaz - @AhsanEjazA on 2017-12-03


Have a wonderful time tinkering with Chrime 68 and Browserling!

▶ Read the full post
Opera 54 Released

Opera 54 (which is based on Chromium 67) was just released for Windows, Linux and Mac. But that's not all. We launched it on our cross-browser testing platform as well. Let's have a quick overview of what Opera 54 can offer to users and developers.

Cross-browser testing in Opera 54

Try Opera 54 in Browserling!

New Features in Opera 54

  • News on Speed Dial

Fifty news articles will be shown just below the Speed Dial folders. Clicking on an article will open the story as expected. Furthermore, you are able to read the news in your preferred language. You can filter the content in multiple categories and much more.

Opera 54 news

  • Recovery / Update section

With the present improvements of Opera, recovering has been made easier to access. This is achieved by virtue of the Update and Recovery menu page, which can be accessed by clicking on the O Menu button (for Windows / Linux users) or by clicking Opera in the menu bar (for Mac users).

Opera 54 update and recovery via O Button

Then you will see this option:

Opera 54 update and recovery option

You can see the current version of your browser under Update. Just click the Check for update button in this menu and Opera will scan for a new version of the browser and if there is, an Update button will appear.

Opera 54 Update button

Also you can click the Recover... button to choose a reset option and have your web browser reseted by settings or by data and settings both.

New Developer Features in Opera 54

  • Generic Sensors - Sensor data is used in many native applications to enable experiences like immersive gaming, fitness tracking, and augmented or virtual reality. This data is now available to web applications using the Generic Sensor API.
  • SVG2 requires <foreignObject> to be a stacking context.
  • DOMTokenList.replace() now returns a boolean value indicating if the replacement was successful or not.
  • Custom Elements can now extend HTML elements to inherit the semantics of native, built-in elements.
  • Mouse events (mousedown, auxclick, mouseup) will now be dispatched for back and forward buttons on mice with more than four buttons.
  • JavaScript now supports a numeric primitive for arbitrary precision integers.
  • Formatting contexts will now behave exactly like floats do when they are positioned.
  • Client Hints enable origins to receive device-specific preferences in the HTTP request headers.
  • Stream API support has been extended with TransformStream. Transform streams enable transforming data in stream form.
  • The <slot> element can now participate in a flat layout tree, with UA style display: contents.

Deprecations and Interoperability Improvements

  • HTTP-Based Public Key Pinning is deprecated.
  • AppCache deprecated in Non-secure Contexts.
  • Two Webkit-prefixed CSS properties were been removed in this release - -webkit-box-flex-group and -webkit-box-lines. Percent (%) values are no longer accepted by the -webkit-line-clamp property.

Happy cross-browser testing with Opera 54!

▶ Read the full post
Firefox 61 Released (June 26, 2018)
Chrome 67 Released (May 31, 2018)
Opera 53 Released (May 10, 2018)
Firefox 60 Released (May 9, 2018)
Chrome 66 Released (April 17, 2018)
Opera 52 Released (March 14, 2018)
Firefox 59 Released (March 13, 2018)
Chrome 65 Released (March 6, 2018)
Opera 51 Released (February 7, 2018)
Chrome 64 Released (January 24, 2018)
Firefox 58 Released (January 23, 2018)
Opera 50 Released (January 4, 2018)
Happy browserful Holidays! (December 23, 2017)
Chrome 63 Released (December 6, 2017)
Firefox 57 Released (November 14, 2017)
Astronomy (New comic) (November 5, 2017)
Chrome 62 Released (October 19, 2017)
Firefox 56 Released (September 28, 2017)
Chrome 61 Released (September 5, 2017)
Firefox 55 Released (August 8, 2017)
Chrome 60 Released (July 25, 2017)
There Are 225 Developer Tools Now! (June 25, 2017)
Opera 46 Released (June 23, 2017)
Firefox 54 Released (June 13, 2017)
Chrome 59 Released (June 5, 2017)
Front End vs Back End (Comic) (April 25, 2017)
Chrome 58 Added to Browser Cloud (April 20, 2017)
Firefox 53 Added to Browser Cloud (April 19, 2017)
Opera 44 Released and Deployed to Browserling (March 22, 2017)
Chrome 57 Released and available for testing (March 13, 2017)
New Feature: Quick access to latest browsers (March 10, 2017)
Firefox 52 is now available for cross-browser testing (March 7, 2017)
Chrome is a Hungry Browser (Browser comic) (March 3, 2017)
Android 7.1 Added to Browserling for Mobile Testing (March 2, 2017)
Grace Hopper (Computer Scientist Comic) (February 24, 2017)
LISP Winners (Programming comic) (February 16, 2017)
Announcing a new comic series about famous computer scientists (February 10, 2017)
Opera 43 is now available for cross-browser testing (February 7, 2017)
New comic - Programmer (February 2, 2017)
New comic - Two Floats Walk in a Bar (January 26, 2017)
Firefox 51 Cross-Browser Testing Available (January 25, 2017)
Chrome 56 Browser Testing Available (January 25, 2017)
New cartoon - Nordic Programmer (January 17, 2017)
New cartoon - Titanic and Iceberg CSS Pun (January 10, 2017)
Partying with Browsers is a Bad Idea (January 3, 2017)
Happy Holidays! (December 25, 2016)
Opera 42 is now available for online browser testing (December 13, 2016)
New comic - Hide and Seek (December 3, 2016)
Chrome 55 is now available for cross-browser testing (December 1, 2016)
New comic - Browser Wars (November 26, 2016)
New comic - Jon Maddog Hall (November 18, 2016)
Firefox 50 Testing Now Available (November 15, 2016)
New comic - Adobe Love Story (November 11, 2016)
New comic - ASCII/ANSI (November 4, 2016)
New comic - DOM and jQuery (October 28, 2016)
Opera 41 available for browser testing (October 26, 2016)
New cartoon - Euler's Number (October 21, 2016)
New cartoon - Hammer (October 14, 2016)
Chrome 54 released and deployed to browser testing cloud (October 12, 2016)
New cartoon - Bytes (October 6, 2016)
Android Nougat added to mobile browser testing cloud (October 3, 2016)
New cartoon - Peter375 (September 29, 2016)
New cartoon - Lego (September 21, 2016)
Opera 40 released and added to our testing cloud (September 20, 2016)
Firefox 49 is now available for cross-browser testing (September 20, 2016)
New cartoon - Opera (September 15, 2016)
New cartoon - Mendeleev CSS Joke (September 9, 2016)
New cartoon - Threads (September 2, 2016)
Edge 38 (aka Edge 14) released and added to our browser cloud (September 1, 2016)
Chrome 53 Available For Testing (August 31, 2016)
Happy 25th Birthday, Linux! (August 25, 2016)
New cartoon - CSS Ghost (August 18, 2016)
New cartoon - Browserling CEO (August 12, 2016)
New cartoon - Fortran (August 5, 2016)
Opera 39 released and added to browser testing cloud (August 2, 2016)
Firefox 48 released and added to browser testing cloud (August 2, 2016)
New cartoon - Big Bang (July 27, 2016)
New cartoon - Mermaid (July 21, 2016)
Chrome 52 Released and Deployed to our Browser Cloud (July 20, 2016)
New cartoon - Internet Explorer (July 14, 2016)
New cartoon - Ninja (July 7, 2016)
We've added a bunch more programmer tools! (July 1, 2016)
New cartoon - Home Sweet Home (June 30, 2016)
New cartoon - Brexit (June 23, 2016)
New cartoon - Pisa Tower (June 17, 2016)
New cartoon - Attack Vectors (June 11, 2016)
Opera 38 installed and ready for browser testing (June 8, 2016)
Firefox 47 Released (and available for web testing) (June 7, 2016)
New cartoon - Refreshments (June 4, 2016)
New cartoon - Binary (May 28, 2016)
Chrome 51 Available For Cloud Testing (May 25, 2016)
New cartoon - Titanic (May 21, 2016)
New cartoon - Home Sweet Home (May 13, 2016)
New cartoon - Computer Chips (May 6, 2016)
Opera 37 released and added to our browser-testing cloud (May 4, 2016)
New cartoon - Cold Computer (April 29, 2016)
Firefox 46 available for testing (April 26, 2016)
New cartoon - The Terminator (April 22, 2016)
New cartoon - Bitmask (April 14, 2016)
Chrome 50 is now available for web testing (April 13, 2016)
New cartoon - Dinosaurs (April 8, 2016)
New cartoon - Home Sweet Home (April 1, 2016)
New cartoon - Twins (March 24, 2016)
New cartoon - 1023MB (March 18, 2016)
Opera 36 released and deployed to our browser cloud (March 15, 2016)
Announcing Browserling's Safari Extension! (March 14, 2016)
New cartoon - Keyboard (March 9, 2016)
Firefox 45 Released and Ready for Testing (March 8, 2016)
Chrome 49 added to our cloud (March 2, 2016)
New cartoon - 4:04 AM (March 2, 2016)
Android 6.0 Marshmallow Now Available! (February 25, 2016)
New cartoon - Hobbit (February 24, 2016)
New cartoon - Java (February 17, 2016)
New cartoon - Home IPv6 (February 10, 2016)
New cartoon - SQL Query (February 3, 2016)
Opera 35 Now Available For Web Testing (February 2, 2016)
New cartoon - Computer Virus (January 27, 2016)
Firefox 44 is now available for testing (January 26, 2016)
Chrome 48 Released Today (and available for testing) (January 20, 2016)
New cartoon - Dates (January 20, 2016)
New cartoon - VIM (January 14, 2016)
We've added 7 more programming tools! (January 7, 2016)
New cartoon - Table Layout (January 6, 2016)
New cartoon - Glasses (January 1, 2016)
We've added 6 more web developer tools! (December 28, 2015)
Merry Christmas & Happy New Year from Browserling! (December 25, 2015)
New cartoon - Incognito (December 23, 2015)
New cartoon - Spaghetti (December 18, 2015)
We've added even more webdev tools! (December 17, 2015)
Firefox 43 Released! (December 15, 2015)
We've added more webdev tools! (December 10, 2015)
New cartoon - Full Stack (December 9, 2015)
Opera 34 added to our browser cloud (December 8, 2015)
Chrome 47 Added to Browserling (December 5, 2015)
New cartoon - Shopping (December 2, 2015)
Announcing Browserling's Web Developer Tools! (December 1, 2015)
New cartoon - Newspaper (November 25, 2015)
We added a new cartoon to our web comic - Home (November 18, 2015)
New web cartoon - SEO Expert (November 11, 2015)
Announcing Browserling's Firefox Extension! (November 5, 2015)
New web cartoon - Bathroom (November 5, 2015)
Firefox 42 Installed In Our Browser Testing Cloud (November 3, 2015)
Announcing Browserling's Opera Addon! (October 30, 2015)
New cartoon - Browser History (October 28, 2015)
Opera 33 available for cross-browser testing (October 27, 2015)
New cartoon - Cookie Monster (October 21, 2015)
Chrome 46 Added to Browserling (October 15, 2015)
New cartoon - Java Cafe (October 14, 2015)
A new webdev cartoon: Internet Explorer (October 5, 2015)
A new webdev cartoon: Hotel (September 30, 2015)
A new webdev cartoon: Bar (September 29, 2015)
Announcing Browserling's Webcomic! (September 28, 2015)
Mozilla Firefox 41 Released and Added to Browserling (September 22, 2015)
More Web Developer Jokes (September 17, 2015)
Opera 32 Released and Added to Browserling (September 15, 2015)
Web Developer Jokes (September 7, 2015)
Chrome 45 Released and Added to Browserling (September 1, 2015)
Browserling now has bookmarklets! (August 28, 2015)
Mozilla Firefox 40 Released and Added to Browserling (August 11, 2015)
Opera 31 Released and Added to Browserling (August 6, 2015)
Announcing Browserling's Chrome Extension! (August 5, 2015)
Browser sharing URL scheme now includes OS platform (July 30, 2015)
Announcing quick /b/ (browse) URLs (July 25, 2015)
Bug Hunter now has Imgur support (July 24, 2015)
Chrome 44 Released and Added to Browserling (July 21, 2015)
Announcing Browserling's Bug Hunter! (July 9, 2015)
Mozilla Firefox 39 Released and Added to Browserling (July 2, 2015)
Live API now supports Windows 8.1 (June 26, 2015)
Browserling now has Windows 8.1 support (June 16, 2015)
Opera 30 Released and Added to Browserling (June 10, 2015)
Live API now supports multiple OS platforms (June 9, 2015)
Browserling now supports multiple operating systems (June 5, 2015)
Chrome 43 Added to Browserling (May 20, 2015)
Firefox 38 Added to Browserling (May 12, 2015)
Live API now supports right click and middle click (wheel click) (May 8, 2015)
Introducing short URLs (May 7, 2015)
Right Click and Wheel Click Now Work in Browserling (May 5, 2015)
New Feature - Browser Sharing through Tools (May 1, 2015)
Opera 29 Added to Browserling (April 29, 2015)
Announcing Browserling's Live API (April 20, 2015)
Google Chrome 42 Added to Browserling (April 14, 2015)
Fog Creek Software Interview with Browserling's Co-Founder and CEO (April 6, 2015)
Firefox 37 Added to Browserling (March 31, 2015)
New Feature - Basic Screenshots (March 26, 2015)
New Feature - On-Screen Keyboard (March 25, 2015)
Android 5.1 Lollipop Added! (March 20, 2015)
Opera 28 Added to Browserling (March 10, 2015)
Google Chrome 41 Added to Browserling (March 4, 2015)
Firefox 36 Added to Browserling (February 25, 2015)
Local Cross-Browser Testing Tutorial for Linux and Mac (February 18, 2015)
Local Cross-Browser Testing Tutorial for Windows (February 14, 2015)
New Security Feature - Login Rate Limiting (February 7, 2015)
Opera 27 Added to Browserling (January 28, 2015)
Chrome 40 Added to Browserling (January 27, 2015)
Firefox 35 Now Available (January 13, 2015)
Android 4.4 KitKat Added! (December 29, 2014)
Browserling's now much faster - We've upgraded servers to SSDs and 2xRAM and 2xCPU (December 7, 2014)
Opera 26 Added to Browserling (December 3, 2014)
Firefox 34 Now Available (December 1, 2014)
We've added Android 5.0 Lollipop to Browserling (November 25, 2014)
Chrome 39 Added to Browserling (November 18, 2014)
New Pricing Signup Form (November 5, 2014)
Opera 25 Added to Browserling (October 15, 2014)
Firefox 33 Added (October 13, 2014)
Chrome 38 Now Available (October 8, 2014)
Browser Sharing URL Scheme (September 20, 2014)
Opera 24 Now Available (September 4, 2014)
Firefox 32 Added to Browserling (September 3, 2014)
Chrome 37 Added to Browserling (August 26, 2014)
Opera 23 Now Available (July 25, 2014)
Firefox 31 Now Available at Browserling (July 24, 2014)
Chrome 36 Added to Browserling (July 16, 2014)
We just added Firefox 30 to Browserling (June 11, 2014)
Opera 22 Now Available (June 3, 2014)
Chrome 35 Now Available (May 20, 2014)
Opera 21 Added to Browserling (May 6, 2014)
Firefox 29 Added for Testing (April 29, 2014)
Chrome 34 Added to Browserling (April 10, 2014)
Firefox 28 Added for Browser Testing (March 18, 2014)
Opera 20 Added to Browserling (March 5, 2014)
Chrome 33 Added to Browserling (February 21, 2014)
Firefox 27 Added for Cloud Testing (February 4, 2014)
Internet Explorer 11 Added to Browserling (January 30, 2014)
Opera 19 Released (January 29, 2014)
Chrome 32 Added to Browserling (January 14, 2014)
Firefox 26 Added to Browserling (December 10, 2013)
Opera 18 Added to Browser Cloud (November 19, 2013)
Chrome 31 Just Added! (November 12, 2013)
Mozilla Firefox 25 Released (October 29, 2013)
Opera 17 Released and Added to Our Testing Cloud (October 8, 2013)
Chrome 30 Now Available (October 2, 2013)
Firefox 24 Released (September 17, 2013)
Opera 16 Added to Browser Testing Cloud (August 27, 2013)
Chrome 29 Added for Web Testing (August 20, 2013)
Firefox 23 Released (August 6, 2013)
Chrome 28 Added to Cloud Testing Platform (July 9, 2013)
Opera 15 Released (Opera Switches to Chrome!) (July 2, 2013)
Chrome 27 Available for Browser Testing (May 21, 2013)
Chrome 26 Added to Browserling (March 26, 2013)
Google Chrome 25 Released (February 21, 2013)
Chrome 24 Released (January 10, 2013)
We just added Internet Explorer 10 (December 11, 2012)
Chrome 23 Released (November 6, 2012)
We have a blog! (December 1, 2010)