Acid testing the Nintendo DS Browser

I recently noticed that Wikipedia page for the web browsers for Nintendo DS and DSi contains a table listing the performance of different Nintendo console web browsers in standards compliance tests like Acid or HTML5test. At the time, the table had no information about the original DS Browser's performance. As I've been working with it on another project recently, I decided to try running the tests myself.

By default the browser uses a mode it calls SSR or small screen rendering mode, which transforms the layout of the page to a single column. It is similar to the single-column mode of Opera Mini and in the end result the usual view on modern web browsers. This increases usability of web sites with a lot of text on them but a lot, but since it is much more brute-force than modern implementations of the same idea, it essentially obliterates any layouting.

Acid 1
mangled by the SSR mode.

The other rendering mode in the browser is the overview mode, which uses one screen to show the whole web page rendered as if on a desktop viewport and the other to display a magnified region of it. Since this keeps the layouting, I ran all the tests in this mode.

Acid 1
displaying correctly.

As far as I can tell Acid 1 displays correctly. The radio button edges are a bit ragged, but I think that is just what they look like in the overview mode. This is not too surprising, since the browser is based on Opera, which at the time was known for its good standards compliance.

Acid 2 test
entry screen. There are two unexpected blocks of colour under the banner, and
you can see a scroll bar.

Acid 2 uses an entry screen before taking you to the actual test itself. Both the entry screen and the actual test are located on the same page, and which one is being displayed depends on the URL fragment. In addition to the more obvious problem of the two unexpected blocks of colour, the rendering of the entry page also shows a scroll bar which should be hidden.

Main Acid 2
face, which shows a little garbled.

The actual test has some issues. The face is cut in two, there are unexpected colour bands around the eyes, and some errant red blocks both in the face and outside of it. I did not use Opera at this time, but I remember Firefox 2 which is roughly contemporaneous to have produced a face which was garbled in similar ways, though even more so than we see here.

Acid 2 face's
nose turning blue.

The nose on the Acid 2 face is supposed to turn blue if you mouseover. Tapping the stylus on the screen shows that this does indeed work.

Acid 3 test
with explanation text mislayouted and an error message about Javascript needing
to be enabled.

Acid 3 is a complete failure. It throws an error about scripts not being enabled, which is somewhat suprising to me, as scripts cannot even be turned off in the DS Browser. I guess the Javascript engine used in the browser is too old to be able to handle the scripts used by Acid 3.

I also considered the possibility that some resources might have failed to load since they required HTTPS, and the DS Browser can only do SSL 3.0 and TLS 1.0, both of which are outdated and turned off of most modern deployments. However, Acid 3 is hosted on Dreamhost which is the bane of my existence when using HTTPS-only mode in Firefox, due to not exposing (most?) of their websites over HTTPS, and instead only serving an error page. As Acid 3 is still possible to use on modern browsers (though interestingly they no longer get 100%!), this suggests no HTTPS requests are made. I could also not find any external scripts being referenced in the source code of Acid 3.

Dialog
asking whether I want to connect to a website with unknown root certificate.

HTML5Test seems to use external resources that must be accessed over HTTPS. I loaded the page itself over plain HTTP, but after a few seconds of chugging along I got this dialog box. I clicked that I do want to connect in the hopes that the server supported TLS 1.0.

Javascript alert with the text 'Could not submit results:'

However, it appears that HTML5Test either cannot run on the DS Browser at all, or it depends on resources that could not be loaded.

In summary:

Acid 1 Success
Acid 2 Failure
Acid 3 0%
HTML5Test 0