How to set up browsers in VM's for testing purposes - cross-browser

You Need Various Browsers
So, you need to test
your web stuff
with various browsers.
Some of these browsers
may be unavailable
on the OS
in which you develop.
Microsoft browsers (Internet Explorer)
are only available for Windows.
Further,
each Windows installation
can have only a single
Microsoft browser.
Also, Safari is only available in OS X.
The Obvious Solution: Virtualization
The obvious solution is
hardware virtualization.
The idea is to host
virtual machines
in your development system,
in which you'll be free to install
the operating system
and browser combination
that you require for testing.
So, How?
How do I do that?

Safari: Only on OS X
The latest version of
Safari
is available only for
recent versions
of OS X.
running of OS X in virtualization
is supported only on
Apple hardware.
For further details, read:
VirtualBox's documentation on OS X guests
VMware's "Virtualizing Apple Mac OS X (1000131)".

Manually
You can
create VM's
and install
the OS/browser
combinations
that you require.
I recommend VirtualBox.
Advantages of Manual
You do not have to
discard
the changes in the VM
after each use session.
And, unlike with ievms,
you do not have to
reinstall from scratch
every time the license expires.
Apart from saving time,
this means that
you can configure/customize
the operating system and browser
and install additional software
according to your requirements and preferences.
The Disadvantage
Valid licenses for the
software involved
may be required by law.
Tips
The same version of browser
may behave differently
on different versions of Windows.
Provide enough memory to your VM's.
I recommend at least 1GB, per VM.
To be sure,
check how much memory is free
during a typical testing session.
If you wish to test on
multiple versions
of Internet Explorer,
see you install from
Windows installation media
that includes the version of Internet Explorer
that you require
and not a newer one.
Virtualization software
(like VirtualBox)
have powerful snapshot features.
Take snapshots after you make configuration
changes or install software or updates.
In case something goes bad,
you would be able to easily revert.
Clone the VM instead of
installing the same version of Windows
on multiple VM's.
After you install Windows on one VM,
clone it into a linked clone
(this is VirtualBox terminology)
and then simply upgrade Internet Explorer.
Choose to reinitialize the MAC addresses when you clone
(VirtualBox asks about this).
Make sure that the
browser will remain the same version
by turning off automatic updates
or choosing to ignore
the specific browser updates.
Disable System Restore.
Disable the screensaver.
Install the VirtualBox Guest Additions
and upgrade them each time you upgrade VirtualBox.
Configure your web browser
(home page, new tab page,
automatic form filling,
disable "accelerators", etc.).

ievms
An easy and popular way
for developers to
get some VM's with
Microsoft browsers
up and running
is ievms.
Time and Storage Saving Tip Regarding ievms
To save time and storage,
intall only those browsers that you intend to use.

Related

Emulate an older version of chrome within the dev tools

I need to emulate an older version of chrome. I want to avoid the solution where I have to uninstall the current version and install the desired one each time I need to test my app. I came across this article but it doesn't quite answer my question. Thank you!
It's not possible to emulate older versions of Chrome from within DevTools, as is possible in IE. It's not very reliable to emulate them anyway. I've used IE 8 emulator in the past, and on occasion it has provided different results from the version I installed on an XP VM.
In theory, it should be possible to install multiple Chrome instances side-by-side because the installation directory is OS user based. However, I don't think the installations are fully isolated from one another. At least in Windows, the application would likely write to the same registry keys. In OSX, you might be alright, provided you modify the user directory path.
An alternative solution would be trying the portable versions of Chrome that appear over the Internet, usually illegally. Everything is self contained in a directory, but it will likely perform differently from normal installations. Check out PortableApps.
I think the best solution would be to set up some VMs for the different environments and browsers you want to test with. You can manually set up these, using VirtualBox or similar. Many hosted providers will allow you to spin up fresh VMs with automated tasks to install applications and services. You have to pay for these though.
If you just need to check what server returns for old browsers (not full emulation), you can set User-Agent in Network Conditions (for now, chrome 67).
Just for completeness, here is a link (September 2021) that provides historical snapshots of the 'chromium' browser, sorted per operating system and per 'position'. I needed this when I had to test on an 8-year old version of Chrome(~ium)
https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html
The URL looks legit (googleapis.com) to me, but please check for yourself before downloading. At your own risk.
Updated on 21/03/2019
I have found the following link which contains links to previous Google Chrome Versions (32bit, 64bit and Linux).
https://www.slimjet.com/chrome/google-chrome-old-version.php
Old post
Just found out that different versions of Google Chrome can be installed.
You will have to uninstall your existing version.
Download the package from here - https://www.chromium.org/getting-involved/dev-channel
Follow the instructions and install.
Hope this helps someone. The downside is you have to uninstall your current version.
Cheers!
Today you can run Windows Sandbox to avoid installing malicious programs. (Windows Professional or Enterprise Edition is required).
more info:
Windows Sandbox Doc
While I don't have a way to emulate a different version, I did find a way to have a current and an old version installed at the same time. For the 'current' version I installed Chrome Beta. Then I set the regular version of Chrome to the older version I needed.
Google's docs didn't put all the information in one place, so here are the steps for a normal Chrome user in Windows 10:
Download the Google Update policy template (alternatively Chrome Enterprise also contains the files you'll need) and unzip it.
Copy the .admx and .adml files into %systemroot%/PolicyDefinitions (.admx files go there and .adml in the language subfolder (en-US) as found in the zip you downloaded)
Open Group Policy editor and the required settings now exist
In Computer Configuration->Administrative Templates->Google->Google Update->Applications->Google Chrome,
set Rollback to target version to enabled
set the Target version prefix override to enabled and your desired version
(e.g. 86. for version 86)
Finally open Chrome, go to Settings->About and let it check for updates. Chrome will automatically download the target version and prompt you to restart.
Do note that this deletes local user profiles and recreates them from remote including redownloading browser extensions, so use with caution. Remember to go back to the normal version of Chrome by unsetting the Group Policy settings and letting Chrome update itself when you're done.

Why can't Windows XP handle newer SSL certificate versions?

As I understand, as Windows XP support was officially dropped, the newest versions of SSL certificates used in certain websites cannot be accessed by Chrome and IE on WinXP due to incompatibility. However, Firefox apparently still does support Windows XP and can access those websites freely.
I don't quite understand how the SSL certificates compatibility works, how is it possible that on Chrome and IE it requires you to switch to a new OS altogether but that's not needed when just using a different browser? Why can't a simple community developer just create a "patch" for Chrome and IE if Firefox can support them? What's the connection between the browser and the OS? Where do I draw the line?
OK, so looking at the example of mpql.net, we start with the SSL Labs analysis.
The problem appears to be that the server only supports elliptic curve cryptography (the various TLS_ECDHE_xxx suites) and, according to the MSDN articles Secure Sockets Layer Protocol and TLS Cipher Suites, Windows XP doesn't include any of the elliptic curve protocols. This is not related to the certificates per se, but to the way the web server is configured.
Firefox still works because it uses its own cryptographic library rather than using the SSL support built into Windows. Of course, if you were using a version of Firefox as old as Windows XP is, it probably wouldn't work either. :-)
Solution for this problem in XP is installing KB3055973-v3 that adds support for TLS 128-bit & 256-bit Advanced Encryption Standard (AES) cipher suites.
Google for this solution and beware it is natively for English OS version, otherwise you need to modify the installation files.
Note that I installed "Windows Embedded POSReady 2009" before.
certain websites cannot be accessed by Chrome and IE on WinXP due to incompatibility. However, Firefox apparently still does support Windows XP and can access those websites freely.
Chrome and IE use the CA store of windows while Firefox uses it's own independent store.
Why can't a simple community developer just create a "patch" for Chrome and IE if Firefox can support them?
It might be that some developer can do it, but why should somebody invest its time to support an OS which is dead and insecure just to support browsers which are no longer supported (Chrome will drop support end of 2015). If you feel this needs to be done anyway just do it. Otherwise, drop XP or at least use Firefox with it.
Although I cant say im 100% correct I believe ssl has everything to do with the browser and not much to do with the actual operating system. So I ran into an issue where the very opposite from what you are asking. A client was on a windows 7 machine and needed to access time warner business email through chrome but couldn't because of a SSL issue. The problem was that Chrome dropped support for the older version of SSL and so her options where use IE or Firefox or downgrade and hope chrome doesn't force its self to update. Microsoft is wanting users to upgrade so of course they are not going to keep IE up to date and google isn't going to support an outdated operating system. Firefox is open source so it makes sense that people would keep the browser compatible with as many devices as possible. Hope this helps.

How to remove soaleplus.exe from Chrome?

I have tried removing it from the extensions section in Chrome settings, but it reappears every time I reopen Chrome. My computer runs on Windows 7 Ultimate
As you haven't specified, I assume, you are using Windows OS. It is a potential malware. You have to uninstall the program explicitly from control panel and then restart chrome. It should work. If it doesn't work, then you might have to scan your system by some good anti-virus like kaspersky or avast.
You should download Microsoft Security Essentials (or another similar anti-virus program) I've used MSE in the past and it works well (without noticeably slowing down your system) there are no up-sells with it either (like you'll get w McAfee or Norton antivirus).
Just go to Google, search Microsoft Security Essentials. Then download and install the latest version (for Windows 7 32-bit)
It's free and should get rid of this program (looks like Malware to me).
Here's a link: http://windows.microsoft.com/en-ca/windows/security-essentials-all-versions

Size of smallest PC/Mac executable?

In TideKit:
How large is the smallest offline executable you can create for Windows respectively Mac including running HTML content in a web view? Other solutions like NodeWebKit include a portable Chromium, which makes the minimum package at least 25 MB.
What does the legacy support look like for Windows respectively Mac. What OS versions does it support for offline executables using web view for running HTML content?
Tidekit offers options to build and package apps that affect the size of the runtime. First, TideKit will bundle only what it needs to keep the size of the runtime as small as possible. Builds allow you to optimize based on the requirements of your application, the platforms you wish to support, or to prioritize for things such as App Store compliance. Besides your code and our runtime, the resources you include contribute to the total size.
Packaging can involve bundling the runtime in the app or packaging
the app with an installer that will only download a runtime when is
not available on the host. Our runtimes are dynamic. The lightest
scenario is network packaging with an installer that is
auto-generated for you. Hello World can be bytes + the installer
size. So perhaps 1 - 2 MB. In this scenario the host is checked for
a runtime. If one is found, it will be checked for requirements of
the app. If it has what it needs, there is nothing more. If the
runtime on the host needs something it does not have, it will fetch
it during the install. If there is no runtime, it is fetched during the install.
Bundle installs include the runtime within the app and will make for larger apps. That size will depend on what you are using. Application bundles could be as low as 15MB range for size. We'll be able to provide more specifics as we reach our release.
TideKit supports the following OS's on the desktop but supports web and mobile OS's so you can develop your app once and deploy for mobile, web, and desktop.
Windows XP
Windows Vista
Windows 7
Windows 8
OSX 10.6 Snow Leopard
OSX 10.7 Lion
OSX 10.8 Mountain Lion
OSX 10.9 Mavericks
Ubuntu 12.04
Ubuntu 12.11
Ubuntu 13.04

Open Source Application Server Solution

A project with the following technologies and components has surfaced: to up a Web stack solution initially composed with Ubuntu, JDK, JBoss, Spring MVC 3.0+, and MySQL.
In planning this project, I have been struggling to find answers to the following questions for first steps, best practices, and sequence:
1) Does the JDK (and JBoss) need to be installed as ‘root’? (I have seen articles that mention it is not a good idea to operate in root unless absolutely necessary due to the fatal consequences.)
2) Does Ubuntu need to be installed as a Server in order to accomplish all this, or can it also be installed as a Desktop? I have not been able to determine if having a JBoss and MySQL need to be installed on top of Linux as a server.
3) Does Maven need to be used within Spring STS in order to get JBoss, and MySQL (and in the future Hibernate) to work successfully together?
4) My intent is to install in this order: a) Ubuntu -> b) Java -> c) JBoss -> d) Spring STS -> and e) MySQL. Are there any blatant conflicts in this sequence?
JBoss will require Java (recommend Java 7) before it will do anything. I don't think it really "installs" per-say, but rather just unpacks to some directory (even if you install from the package manager, it just really extracts itself). I question your need for Spring since JBoss and Java EE in general really does everything Spring does, and better now-a-days. Unless you have a specific requirement for Spring, I'd question this extra dependency.
For linux - in a high level, any OS can be a "server", all it needs is to be capable of serving things (web pages, ssh connections, etc). In M$ world, different "levels" of the OS have been specially designed based on anticipated task/workload. So for example, while Windows 7 can indeed run as a server, it was not designed for it and therefore may not be optimized or include helper utilities and tools to make life easier as a sys admin of the system. Windows Server on the other hand does include all the "normal" server tools and lots of goodies to make maintaining and setting the server up easier.
In linux land, this is no such thing. Linux is the kernel that talks back and forth with the bare metal, etc... and Distro makers will take that and build an OS around the kernel, basically just attaching any packages they feel their distro needs... such as wget, or cat, or any other standard userland apps, plus some non-standard such as mysql or java or whatever they want.
Now, some distributions of linux will tailor themselves at being "server" ready, while others will tailor themselves at being a desktop OS. The difference? It's really just whatever default packages the distribution maker decides to include or not. For example, the overwhelming majority of linux servers are run completely headless, and therefore there is absolutely no reason to have X11 and a huge bloated GUI environment installed and/or running on that system... it's pointless. Also, an "average joe" user does not need MySQL installed by default on his desktop system since it would only bloat his system and he likely won't ever use it.
So basically it comes down to default installed packages.
Some linux server distros take this further and exercise extreme caution when making updates, patches, or new releases in the name of stability and security, while on the other hand most desktop distros are more haphazard with their updates since if it breaks a home users web browser, it's probably not a huge deal... but if a server update breaks the webserver application stack, now that's a serious problem.
So you'll find server OS's like CentOS (based on upstream RHEL) are extremely slow to bring in the "latest and greatest" features that desktop OS's get early on. Their goal is high security and long term stability.
Now, for Ubuntu. While I certainty know a lot of folks run Ubuntu as their server OS choice (partly due to Amazon choosing Ubuntu as the default linux VM for their ECS cloud), but I'd really question this. Ubuntu is not focused on being a server. It's focused on being a great all-around desktop oriented OS. Yes the LTS version is meant for long term stability, but it's based out of a desktop OS, so it's still not the focus.
IMHO, I'd go with CentOS because it's free and completely binary compatible version of RHEL - and RHEL is the de-facto standard for enterprise-grade linux servers. Be aware though, the RHEL way of doing things is a bit different than the debian way -- so there is no apt-get, you must use yum install instead. Startup scripts are different and some ways of doing things are different, but really, once you know linux, you know linux.
EDIT: Also check into Jenkins - its a free opensource continuous integration system that runs on JBoss or Tomcat or any other container, and can automagically pull your code from a repo (github, git, svn, etc) and compile/package it then push it to live deployment. You setup your ANT or Maven build scripts, and it can kick off on a schedule or however you configure it.
EDIT EDIT: I'd also recommend using OpenJDK -- as it's likely included in your package manager (for just about every disto) and will be more updated than the oracle version if it's in your package manager too. I've found most "server" distros will have OpenJDK 7 while only having Oracle java 6 in their package managers. Also, installing it via the package manager will enable you to keep it updated a ton easier.
Installed as root, why not? Run as root, probably not a good idea.
If you want a desktop, install a desktop distrib. If you want a server, install a server distrib. This doesn't change what can and can't be run in the OS. It only changes what is installed by default.
Maven is a build tool. JBoss doesn't care how you build your app. All it cares about is if the application you deploy is a valid Java EE application.
No. You need an OS, so Ubuntu must come first. JBoss and (AFAIK) Spring STS need a JRE to run, as they're Java applications, so Java should be installed before them. MySQL is independent of JBoss, STS and Java, so you can install it whenever you want.
Note that if you're struggling just with this installation part, be prepared to suffer with the rest. Building a Java EE webapp is not a piece of cake, and you should probably find some experienced developer to help you, as it seems you're only beginning with Java.