This blog post describes how to perform basic web application testing to identify and fix compatibility issues.  These procedures are designed for non-experts and not to require deep expertise in web application development.  The target platform is assumed to be Internet Explorer 8 running on Windows 7 with standard user rights.  Some of the issues covered below assume that the target platform has the US Government Configuration Baseline (USGCB) applied.

The test procedure is simply to log on to a Windows 7 computer, browse to a site to be tested, interact with the site and verify whether it behaves according to its specification.  If the site appears to work correctly, good!  Move on to the next one!  If the site does not work as expected, review the list of issues below for matching symptoms.

Each issue listed includes a description, symptoms, workarounds during test/triage, and potential solutions, in the table format shown below.  Review this example table first to understand the meaning of each of the table fields.

Issue Title

Description

A description of the underlying cause of the issue.

Symptoms

One or more symptoms that may appear if this issue is occurring.

Workarounds during test/triage

Temporary workarounds that can be used during testing.  The purposes of these workarounds are: 1) to verify the root cause; 2) to temporarily get around the problem so that other features of the app can be tested.  Note that it is only to be used during testing, not in production.

Potential solutions

Solutions that may be used in production.

 

A list of references follows the Issues section.  The references explain Internet Explorer compatibility issues, such as the !DOCTYPE element that describes what version of web standards the site was designed for.

Issues

Missing ActiveX

Description

ActiveX required by web app isn’t present, and cannot be installed via a standard user’s browser.

Symptoms

Square with red X in upper left;

Page content not fully shown, not active, nothing the user can do;

ActiveX prompts.

Workarounds during test/triage

Log in as an administrator (or launch IE elevated) and install the ActiveX).  This may require removing policies blocking ActiveX installation.

Install the ActiveX through means other than with the browser (e.g., a standalone installer, or copy the control to the computer and run regsvr32 on it.)

Potential solutions

Pre-install into the image;

Deploy with app deployment solution (e.g., SCCM);

ActiveX Installer Service

 

Protected Mode

Description

Web app fails when run in IE Protected Mode

Symptoms

Failure of ActiveX or Java while in the Internet zone

Workarounds during test/triage

Ensure that the site is in Intranet (for internal apps) or Trusted Sites (for external apps).  How to:  if policy allows, use the IE security zone dialog (not allowed in USGCB configuration); otherwise, use Site To Zone Assignment List in Group Policy.

Potential solutions

Ensure that the site is in Intranet (for internal apps) or Trusted Sites (for external apps).  Site To Zone Assignment List in Group Policy.

 

Rendering issues

Description

Layout of web page is incorrect; looked good in earlier versions

Symptoms

Layout is incorrect

Workarounds during test/triage

Click the Compatibility button to render in IE7 compatible mode.  If that doesn’t work, press F12 to display Developer Tools and then Alt+Q to render in Quirks mode (if not already in Quirks).  If that doesn’t work, look for conditional comments in the source (including in the CSS).

Potential solutions

Remove !DOCTYPE element and/or add X-UA-Compatible meta-tag or header to pages; update the content to be compliant with web standards as supported by the chosen rendering engine

 

Incorrect Version Checks in Script

Description

Application targets a specific version of Internet Explorer, and fails when it encounters a newer version number

Symptoms

“Unsupported version” error message;

page interactivity missing;

page missing styling

Workarounds during test/triage

Compatibility view (when site supports IE7);

User Agent String utility;

manually modifying the page to modify version vectors

Potential solutions

Compatibility view; modifying the web page source.

 

FIPS

Description

Requirement for FIPS crypto causes web app to fail.  FIPS is one of the settings mandated by USGCB.

Symptoms

“Internet Explorer cannot display the webpage” on an HTTPS site.

Verify with wfetch; failure shows “The client and server cannot communicate, because they do not possess a common algorithm”.

(Example site:  https://tmn.sun.com)

Workarounds during test/triage

Turn off FIPS setting, close all browsers, test again.

Potential solutions

Turn off FIPS setting, or get the site owner to upgrade to TLS.

 

SSL2

Description

Web server allows only SSL 2.0, which is disabled by default in IE8.

Symptoms

Failure to connect to an HTTPS site and FIPS not enabled.  Verify connectivity by using wfetch and specifying SSL 2.0.

Workarounds during test/triage

Enable SSL 2.0 (Advanced page) and turn off FIPS crypto.

Potential solutions

Get the site to upgrade to a modern protocol.

 

Blocked Java

Description

Java Permissions setting prevents Java from running in the web page.

Symptoms

Gold bar, “An add-on for this website failed to run. Check the security settings in Internet Options for potential conflicts.”

Workarounds during test/triage

Ensure that the site is in the Intranet (for internal) or Trusted Sites  (for external) zones, and ensure that the correct Java Permissions setting (“High safety”) is applied to that zone.

Potential solutions

Ensure that the site is in the Intranet (for internal) or Trusted Sites  (for external) zones, and ensure that the correct Java Permissions setting (“High safety”) is applied to that zone.

 

Java Version incompatibilities

Description

Java app developers write the app to depend on a specific version of Java.

Symptoms

“Unsupported version” error messages;

Incorrect behavior (which can vary based on the changes between Java versions);

Assertions from the developers that a specific JRE is required

Workarounds during test/triage

Install “required” version of the JRE (note that there are versions of 1.4, 5.0 and 6.0 that are compatible with Windows 7, but only the 6.0 line is currently supported)

Potential solutions

Update the Java app not to depend on a specific Java version, and teach the Java devs to write forward-compatible software.

 

JInitiator

Description

Java app uses JInitiator, which is no longer supported and which doesn’t work well on Windows 7.

Symptoms

App requires JInitiator

Workarounds during test/triage

None

Potential solutions

According to Oracle, the latest Sun JRE obviates the need for JInitiator.  Oracle recommends migrating JInitiator clients to Sun JRE.

 

Bugs in mobile code (e.g., ActiveX/Java assumes it has admin rights; using non-existent legacy paths)

Description

ActiveX or Java app is coded with hardcoded dependencies on legacy behavior, such as the web browser having full admin rights, or expecting certain folder names on the browser’s host system.

Symptoms

ActiveX or Java runs incorrectly

Workarounds during test/triage

Run browser with admin rights (note that for testing purposes the computer should be reimaged afterwards)

Potential solutions

Update the mobile code and/or the web application to remove the legacy dependency

 

IE Compatibility References:

IECTT, Event 1049 - Standards Mode:
http://msdn.microsoft.com/en-us/library/dd565650(v=VS.85).aspx

IE=EmulateIE7
http://blogs.msdn.com/b/ie/archive/2008/06/10/introducing-ie-emulateie7.aspx

KB 968499, “Advanced solutions: Some Web sites may not be displayed correctly or work correctly in Windows Internet Explorer 8” describes some Group Policy settings to control IE7 compatibility view
http://support.microsoft.com/kb/968499

IE’s Compatibility Features for Site Developers
http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for-site-developers.aspx

How IE8 Determines Document Mode
http://blogs.msdn.com/b/ie/archive/2010/03/02/how-ie8-determines-document-mode.aspx

Testing Browser and Document Compatibility Modes with the Developer Tools
http://msdn.microsoft.com/en-us/library/dd565624(v=VS.85).aspx

Defining Document Compatibility
http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#DCModes

!DOCTYPE documentation
http://msdn.microsoft.com/en-us/library/ms535242(VS.85).aspx

Http-equiv documentation
http://msdn.microsoft.com/en-us/library/ms533876(v=VS.85).aspx

Conditional comments documentation
http://msdn.microsoft.com/en-us/library/ms537512(v=VS.85).aspx

Developer Tools User Interface Reference
http://msdn.microsoft.com/en-us/library/dd565626(VS.85).aspx

Quirks mode (Wikipedia)
http://en.wikipedia.org/wiki/Quirks_mode

Chris Jackson blogs frequently about application compatibility; these articles cover IE8 compatibility:
http://blogs.msdn.com/b/cjacks/archive/tags/internet+explorer+8/