| <!DOCTYPE html> | 
 | <meta charset="utf-8" /> | 
 | <title>Reporting: Generate Test Report</title> | 
 | <link rel="author" title="Paul Meyer" href="paulmeyer@chromium.org"> | 
 | <script src="/resources/testharness.js"></script> | 
 | <script src="/resources/testharnessreport.js"></script> | 
 | <script src="/resources/testdriver.js"></script> | 
 | <script src="/resources/testdriver-vendor.js"></script> | 
 | <script> | 
 |   // Test that the "generate_test_report" API works. | 
 |   async_test(function(test) { | 
 |     var observer = new ReportingObserver(function(reports) { | 
 |       test.step(function() { | 
 |         assert_equals(reports.length, 1); | 
 |         // Ensure that the contents of the report are valid. | 
 |         assert_equals(reports[0].type, "test"); | 
 |         assert_true(reports[0].url.endsWith("reporting/generateTestReport.html")); | 
 |         assert_equals(reports[0].body.message, "Test message."); | 
 |         // Ensure that the toJSON() call of the report are valid. | 
 |         const reportJSON = reports[0].toJSON(); | 
 |         assert_equals(reports[0].type, reportJSON.type); | 
 |         assert_equals(reports[0].url, reportJSON.url); | 
 |         assert_equals(reports[0].body.message, reportJSON.body.message); | 
 |         // Ensure that report can be successfully JSON serialized. | 
 |         assert_equals(JSON.stringify(reports[0]), JSON.stringify(reportJSON)); | 
 |       }); | 
 |       test.done(); | 
 |     }); | 
 |     observer.observe(); | 
 |  | 
 |     // This should result in a "test" type report being generated and observed. | 
 |     test_driver.generate_test_report("Test message.") | 
 |       .catch(test.unreached_func('generate test report failed')); | 
 |   }, "Generate Test Report"); | 
 | </script> |