Commit 6f602303 authored by Paul Meyer's avatar Paul Meyer Committed by Commit Bot

[ChromeDriver] Implement GenerateTestReport.

Spec: https://w3c.github.io/reporting/#generate-test-report-command

Change-Id: Ia6932007db49eb11c005752b8eace6d7f1267e4f
Reviewed-on: https://chromium-review.googlesource.com/1221694Reviewed-by: default avatarJohn Chen <johnchen@chromium.org>
Commit-Queue: Paul Meyer <paulmeyer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593576}
parent bb79f418
......@@ -580,3 +580,6 @@ class ChromeDriver(object):
for i in range(len(value)):
typing.append(value[i])
self.ExecuteCommand(Command.SEND_KEYS_TO_ACTIVE_ELEMENT, {'value': typing})
def GenerateTestReport(self, message):
self.ExecuteCommand(Command.GENERATE_TEST_REPORT, {'message': message})
......@@ -171,6 +171,8 @@ class Command(object):
_Method.POST, '/session/:sessionId/chromium/send_command')
SEND_COMMAND_AND_GET_RESULT = (
_Method.POST, '/session/:sessionId/chromium/send_command_and_get_result')
GENERATE_TEST_REPORT = (
_Method.POST, '/session/:sessionId/reporting/generate_test_report')
# Custom Chrome commands.
IS_LOADING = (_Method.GET, '/session/:sessionId/is_loading')
......
......@@ -489,6 +489,11 @@ HttpHandler::HttpHandler(
WrapToCommand("GetLogTypes",
base::Bind(&ExecuteGetAvailableLogTypes))),
// extension commands
CommandMapping(kPost, "session/:sessionId/reporting/generate_test_report",
WrapToCommand("GenerateTestReport",
base::Bind(&ExecuteGenerateTestReport))),
// chromedriver only
CommandMapping(kPost, "session/:sessionId/chromium/launch_app",
WrapToCommand("LaunchApp", base::Bind(&ExecuteLaunchApp))),
......
......@@ -1149,3 +1149,25 @@ Status ExecuteDeleteScreenOrientation(Session* session,
return status;
return Status(kOk);
}
Status ExecuteGenerateTestReport(Session* session,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value) {
WebView* web_view = nullptr;
Status status = session->GetTargetWindow(&web_view);
if (status.IsError())
return status;
std::string message, group;
if (!params.GetString("message", &message))
return Status(kInvalidArgument, "missing parameter 'message'");
if (!params.GetString("group", &group))
group = "default";
base::DictionaryValue body;
body.SetString("message", message);
body.SetString("group", group);
web_view->SendCommandAndGetResult("Page.generateTestReport", body, value);
return Status(kOk);
}
......@@ -195,4 +195,8 @@ Status ExecuteDeleteScreenOrientation(Session* session,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value);
Status ExecuteGenerateTestReport(Session* session,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value);
#endif // CHROME_TEST_CHROMEDRIVER_SESSION_COMMANDS_H_
......@@ -106,9 +106,14 @@ _VERSION_SPECIFIC_FILTER['70'] = [
_VERSION_SPECIFIC_FILTER['69'] = [
# https://bugs.chromium.org/p/chromedriver/issues/detail?id=2515
'HeadlessInvalidCertificateTest.*',
# Feature not yet supported in this version
'ChromeDriverTest.testGenerateTestReport',
]
_VERSION_SPECIFIC_FILTER['68'] = []
_VERSION_SPECIFIC_FILTER['68'] = [
# Feature not yet supported in this version
'ChromeDriverTest.testGenerateTestReport',
]
......@@ -1735,6 +1740,15 @@ class ChromeDriverTest(ChromeDriverBaseTestWithWebServer):
imageGoldenScreenshot= open(filenameOfGoldenScreenshot, 'rb').read()
self.assertEquals(imageGoldenScreenshot, dataActualScreenshot)
def testGenerateTestReport(self):
self._driver.Load(self.GetHttpUrlForFile(
'/chromedriver/reporting_observer.html'))
self._driver.GenerateTestReport('test report message');
report = self._driver.ExecuteScript('return window.result;')
self.assertEquals('test', report['type']);
self.assertEquals('test report message', report['body']['message']);
class ChromeDriverSiteIsolation(ChromeDriverBaseTestWithWebServer):
"""Tests for ChromeDriver with the new Site Isolation Chrome feature.
......
<html>
<script>
window.result = "bad result";
var observer = new ReportingObserver(function(reports) {
window.result = reports[0];
}, {buffered:true});
observer.observe();
</script>
</html>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment