<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();
</script>
</head>
<body>

<input type="password" id="pass" size="10">
<input type="text" id="text" size="11">


<script>

    //description("This test makes sure that a password field and a text field do not have the same traits (because password field has secure text field traits)");

    if (window.accessibilityController) {

        var passfield = accessibilityController.accessibleElementById("pass");
        var textfield = accessibilityController.accessibleElementById("text");
        var succeeded = passfield.traits != textfield.traits;

        //  shouldBe("succeeded", "true");
        var failed = false;
        if (!succeeded) {
            failed = true;
        }

        if (failed)
            alert("Tests failed");
        else
           alert("Tests passed");

    }

    successfullyParsed = true;
</script>


</body>
</html>

