<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../utils.js"></script>
<script>

'use strict';

target_test((target, test) => {
    target.addEventListener("pointerdown", event => {
        assert_equals(event.pointerId, 1, "The pointer's identifier is 1.");
        assert_equals(event.pointerType, "mouse", "The pointer type is 'mouse'.");
        assert_true(event.isPrimary, "The pointer is the primary pointer.");
        assert_true(event.isTrusted, "The event is trusted.");
        test.done();
    });

    eventSender.mouseMoveTo(50, 50);
    eventSender.mouseDown();
}, `Testing the basic properties of a pointer event triggered by a mouse.`);

</script>
</body>
</html>