How I Use VMWare Fusion and Snapshots

Let’s face it, testing multiple browsers on multiple systems isn’t very practical. But it's still a fact of life for the web developer. What I’m about to show you is how I manage testing in multiple browser versions.

About three years ago, I used to do all of my development on a Windows laptop. I had an old Mac G3 tower, an Ubuntu server, and a Windows 2000 server. All of these were separate—and rather ancient and noisy—machines that sat in my office. I would have IE7 and the latest version of Firefox on my machine. I would hop onto my Windows server for IE6 testing, onto my Mac for Safari testing, and ... well, okay, I didn’t test any browser in Ubuntu.

When I got my Mac, I decided to try out VMWare Fusion. There wasn’t anything in particular that drove me to try it over Parallels but it seemed to get mentioned more frequently and so I just went for it.

The Virtual Machines

I started off by installing Windows XP. After which, I installed Ubuntu and more recently, I installed Windows 7 and also the emulator for the soon-to-be-released BlackBerry PlayBook.

VMWare Snapshots

Admittedly, my Ubuntu VM doesn’t get much love. I used it for testing Adobe AIR applications when I was still working on them and also test in Firefox, just in case something interesting comes of it.

I tried to install Windows Vista but it took forever to install and never seemed to work quite right. Thankfully, Windows 7 installed just fine and performs quite well in VMWare.

I was surprised to discover that the emulator for the upcoming BlackBerry PlayBook actually runs in VMWare Fusion. It made it quite easy to set up, although I’m doubtful how often I’ll be loading this one unless I start getting into some development.

Snapshots

Many people I know either use something like IETester in their single VM or install multiple VMs, one for each browser that they wish to test with. In the case of using IETester, there are some known limitations which may impact accurate testing. In the case of multiple VMs, you’ll need to have the hard drive space for multiple operating systems being installed on your system.

I took another route and realized that I could take a Snapshot of a particular point in time and then launch that snapshot whenever I wanted to. By taking a snapshot while the system is running, I can load a snapshot without having to wait for a virtual machine to boot up. It’s already booted. Loading a snapshot just copies the state of the virtual machine back into memory. I’m usually back up and running from a snapshot within 15 seconds.

The amount of space that a snapshot takes on the hard drive is also much smaller than a virtual machine: it’s just the size of memory, which may be between 512MB to 2GB, depending on VM configuration.

VMWare Snapshots

With IE6 on my machine, I took a snapshot. Then I installed IE7 and saved that as a snapshot. Then I installed IE8 and saved that as a snapshot. I used to keep various versions of Safari, Chrome and Firefox in those different VMs but I kept forgetting which snapshot had which alternate browser. So, I’ve started saving the different versions of those browsers as separate snapshots, as well.

This approach has come in quite handy. For example, I needed to test a localized version of Chrome for China. I was able to install and test the browser without worrying about it overwriting or impacting my main configuration. Once I was done with it, I could just delete the snapshot or load another snapshot without saving my current configuration.

Wishes

My biggest wish right now is to be able to install Mac OS X as a virtual machine, too. Unfortunately, Apple’s licensing doesn’t allow it. (Although, there are some hacks on the Internet that can get around that.) I’d love to have copies of 10.4 or 10.5 that I could load up and test.

Anyways, this is how I use VMWare Fusion. How do you handle your cross-browser, cross-platform testing?

Published December 15, 2010
Categorized as Other
Short URL: https://snook.ca/s/988

Conversation

31 Comments · RSS feed
jen said on December 14, 2010

Funny… Femi & I just noticed your screenshots while perusing Flickr, and were discussing our VM situation. Freaky… Thanks for the heads-up.

I installed all browsers into Windows XP - but have been reconsidering it. I hope to get around to doing it over the holiday.

John Faulds said on December 14, 2010

I used to use VirtualBox for running Windows XP and 7 but found that my MacBook Pro would grind to a halt when firing up the Win 7 VM so have gone back to using a networked PC which has XP Mode and Virtual PC 7 installed on it. I can then use CORD to remote access the PC so that I can view both Windows and Mac browsers on the same screen.

Cobey said on December 14, 2010

This is how I operate as well, though using Parallels.

I actually moved on towards using Spoon.net, which had all the browsers as Active-X temp installs (I may be wrong about the Active-X, maybe it was a proprietary plugin). This was crazy helpful and worked really well. Microsoft went after them a month or so ago with legal action, so they pulled all the IEs.

So, back to this solution, the best one for how we have to operate!

Rick Fletcher said on December 14, 2010

I thought about this method, but I'd prefer to keep the various major browser versions at their latest minor versions (applying security fixes and windows updates as they come out). With VMWare, can you switch to an old snapshot and update from FF 2.0 to 2.0.1, for example, while preserving the newer snapshots?

I've always kept a separate VM for each browser, and that uses a huge chunk of my laptop's disk.

Trevor Gerzen said on December 14, 2010

I do it the same exact way for Windows testing except I found myself combining browsers in snapshots like the oldest versions of IE, Safari, Chrome and Firefox in one snapshot then update them all and take another snapshot

Thomas said on December 15, 2010

Same question as rick: can you switch to an old snapshot and update from FF 2.0 to 2.0.1, for example, while preserving the newer snapshots?

BTW, you should do some tests on Linux, especially with Chrome (it has a bunch of bugs specific to that platform) and/or for testing fonts. I guess there is more people using Chrome on Linux than people using Firefox 2.

riddle said on December 15, 2010

I can’t believe you still support IE6.

Dan Brown said on December 15, 2010

The stock fonts in Linux, with Firefox in Mandriva and OpenSuse at least, are wider than their windows counterparts. So that should be a good reason to include it in testing as it can break layout for things like horizontal lists. Ubuntu may use fonts that match better, not used it for a few years.

The main BBC news site for example has its category menus broken over two lines due to this.

Kroc Camen said on December 15, 2010

@Riddle Regardless of whether a developer supports IE6 or not, it is almost certain that someone using it will visit their site, it's always worth checking in IE6 to ensure that content is at least readable, and if the layout is badly broken perhaps use the universal ie6 CSS instead.

---

On topic, I have taken to using IECollection which allows you to install stand-alone versions of IE1-through-8. I do this in an XP VM, and then have a Vista VM to check font-smoothing / unicode and font differences between the OSes.

Jonathan Snook said on December 15, 2010

@Rick and Thomas: Yes, you can load up a snapshot, install any software or updates you want, and then save that as a new snapshot (and you can choose to delete the old snapshot if you wish). This is exactly what I do.

Robert said on December 15, 2010

I've been meaning to write the very same article. Glad someone did! The whole multiple IE thing is a hack, and I'm always worrying if the rendering is true to the original. VMWare Snapshots give you the actual, full version of the browser as it actually works. The only down side is that it takes a bit of time to launch a new snapshot. So, you really want to get all your testing done in one version of IE, then swap to the next. It's slow if your tweak to fix something in IE7 might have an impact on IE8 and you need to jump back and forth to see. But this is the best way to cross-browser test right now on a Mac.

Eric said on December 15, 2010

For IE6 testing, I've been using Windows 7's own built in virtualization for that. I forget the name of it but basically what happens is I'm running Windows 7 virtualized and then Windows XP (with IE6) virtualized inside of that. Kinda nuts, but it works.

Todd Austin said on December 15, 2010

I did a writeup on this as well in June of last year. With VMware fusion, I've been doing the same thing with multiple snapshots of various browser versions on XP for about a year and half now. Though now I'm going to have to install Windows 7 in order to test IE9.

Dana Kashubeck said on December 15, 2010

Brilliant!! I switched from Parallels to VMWare Fusion recently. I was running out of hard drive space for my VMs, so I have them on an external drive. One for IE6, IE7, and IE8. This is a much better way to do things. Thanks for sharing!!

Eric Lightbody said on December 15, 2010

This seems like a beautiful solution to a common problem. How does having multiple snapshots up perform? My aging black Macbook doesn't do well with one vm open; curious how it would handle snapshots.

Jonathan Snook said on December 15, 2010

@Eric: you can only ever load one snapshot at a time... you only ever have one vm open. There's no performance impact to having multiple snapshots.

Mike Champion said on December 15, 2010

Helpful post, thanks. My typical usage now is to use VMWare during initial development for fast iterations on IE8 (in addition to Chrome/FF on Mac), but then to move to using MogoTest (http://mogotest.com) when I want to test the full suite of browsers. Mogotest can test the combination of browsers & platforms faster and more frequently than I ever would manually. It has saved me many hours during development and caught regression bugs later when I introduced a layout bug.

Jekie said on December 16, 2010

I've been running a VM per browser for about a year now, and it kills my laptop performance. I never thought of doing it this way. Thanks for the tip!

Matt Wiebe said on December 16, 2010

Thanks for this Jonathan. Snapshots are one of those things that I know I should be using but have been too lazy/stupid to bother with. That will be remedied shortly.

As for installing Mac OS X in VMWare, you are allowed to install Mac OS X Server edition in a VM, no hacks required.

Iouri Goussev said on December 17, 2010

Oh apple, you are the worse.

Søren Hugger Møller said on December 18, 2010

This is such a fantastic tip! Thank you! I've been using IETester in VMs in Fusion ,and it didn't ever work super well. I've also been using multiple VMs and that's not very pretty either. But using Snapshots, that's just brilliant! Can't believe I didn't realise that before. Thank you, sir. You rock! :)

Masklinn said on December 19, 2010

Unfortunately, Apple’s licensing doesn’t allow it.

That is not entirely correct: Apple changed part of the licensing in Leopard Server and to allow its virtualization, as long as it's on Apple hardware (but since you're running VMWare Fusion I'm assuming you're using Apple hardware).
In fact, you can verify this by opening VMWare Fusion, creating a new VM, Continue Without Disc > Create a custom virtual machine > Operating System [Apple Mac OS X], and it'll provide 4 choices for Server 10.5 and Server 10.6 (in 32 and 64b in each case).
Licensing doesn't allow running non-server and you're supposed to have a full license for each VM (at $500 a pop for 10.6…), so I don't know how VMWare would react if you tried it.

xonecas said on December 20, 2010

I'm lucky enough to have a few systems ranging from xp to 7, a few different macs, and a couple of linux boxes too. I have them all connected using a couple of screens and I use synergy to share the same keyboard, mouse, and clipboard across them.

Jessica said on December 21, 2010

Thanks so much for figuring this out and sharing it! I've had off and on struggles with testing IE on my Mac for a couple years now, and I've developed quite the love/hate relationship with the virtual machine as a result. This seems to work beautifully! You've relieved me from many potential hours of frustration =)

Darren Armstrong said on January 02, 2011

Wow thanks, this is really useful. I've experimented with various browser testing solutions multiple VMs (too much disc space), IEtester (inconsistent), Spoon (IE has been withdrawn) none of them ideal. I can't wait to try your solution using snapshots in VirtualBox.

Juti Noppornpitak said on January 05, 2011

You might want to try VirtualBox. I heard that you could install Mac OS as a virtual PC but you might need lots of RAM to do.

Rich said on January 06, 2011

Is there a practical reason for making seperate snapshots of each of the later Internet Explorers?

I'm thinking of making a W7 VM with IE9 and taking advantage of Microsofts decision to supply compatibility modes for both IE8 and IE7 in it to test for those browsers.

I'll still need an XP VM for IE6 but I can live with that.

Sensitive Designs said on January 12, 2011

Thanks for sharing. I use vmware, ietester, adobe browserlabs but I never checked for any Linux platforms but some clients asks me to do tests in ubuntu firefox and I am really out of solution to fix those bugs :(

Montreal Web Design said on January 15, 2011

I use VirtualBox. It is free, opensource and works just fine.

Mark said on February 07, 2011

I considered snapshots after reading your article... but being able to boot up multiple VMs concurrently and really crank through my testing was just too tempting.

Currently built the first XP VM, and when it was all installed and updated, duplicated the VMs twice (so IE6, 7 & 8)... Being a fairly basic install, it's less than 10 GB.

Randy said on March 24, 2011

Great article, I'm looking to implement a similar setup on my home workstation soon and after reading this, I definitely think I will be going down this snapshot path.

Sorry, comments are closed for this post. If you have any further questions or comments, feel free to send them to me directly.