Skip to content

Commit 3014d58

Browse files
authored
Updates for w3c compatability (#5)
1 parent e76435d commit 3014d58

File tree

2 files changed

+37
-9
lines changed

2 files changed

+37
-9
lines changed

lib/WebDriver/Service/CurlService.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ public function __construct($defaultOptions = array())
4141
public function execute($requestMethod, $url, $parameters = null, $extraOptions = array())
4242
{
4343
$customHeaders = array(
44-
'Content-Type: application/json;charset=UTF-8',
45-
'Accept: application/json;charset=UTF-8',
44+
'Content-Type: application/json;charset=utf-8',
45+
'Accept: application/json',
4646
);
4747

4848
$curl = curl_init($url);
@@ -56,7 +56,8 @@ public function execute($requestMethod, $url, $parameters = null, $extraOptions
5656
if ($parameters && is_array($parameters)) {
5757
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($parameters));
5858
} else {
59-
$customHeaders[] = 'Content-Length: 0';
59+
curl_setopt($curl, CURLOPT_POSTFIELDS, "{}");
60+
$customHeaders[] = 'Content-Length: 2';
6061

6162
// Suppress "Transfer-Encoding: chunked" header automatically added by cURL that
6263
// causes a 400 bad request (bad content-length).
@@ -78,7 +79,8 @@ public function execute($requestMethod, $url, $parameters = null, $extraOptions
7879
if ($parameters && is_array($parameters)) {
7980
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($parameters));
8081
} else {
81-
$customHeaders[] = 'Content-Length: 0';
82+
curl_setopt($curl, CURLOPT_POSTFIELDS, "{}");
83+
$customHeaders[] = 'Content-Length: 2';
8284

8385
// Suppress "Transfer-Encoding: chunked" header automatically added by cURL that
8486
// causes a 400 bad request (bad content-length).

lib/WebDriver/WebDriver.php

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,41 @@ protected function methods()
3838
/**
3939
* {@inheritdoc}
4040
*/
41-
public function session($browserName = Browser::FIREFOX, $desiredCapabilities = null, $requiredCapabilities = null)
41+
public function session($browserName = Browser::FIREFOX, $desiredCapabilities = array(), $requiredCapabilities = array())
4242
{
43-
// default to W3C WebDriver API
43+
// Filter capabilities.
44+
$filterCapabilites = function($key) {
45+
// See https://github.com/jlipps/simple-wd-spec#capabilities
46+
if (str_contains($key, ':')) {
47+
return true;
48+
}
49+
50+
return in_array($key, [
51+
'browserName',
52+
'browserVersion',
53+
'platformName',
54+
'acceptInsecureCerts',
55+
'pageLoadStrategy',
56+
'proxy',
57+
'setWindowRect',
58+
'timeouts',
59+
'timeouts',
60+
]);
61+
};
62+
63+
$w3c_mode = true;
64+
if (isset($desiredCapabilities['w3c']) && $desiredCapabilities['w3c'] === false) {
65+
$w3c_mode = false;
66+
}
67+
68+
if ($w3c_mode) {
69+
$requiredCapabilities = array_filter($requiredCapabilities, $filterCapabilites, ARRAY_FILTER_USE_KEY);
70+
$desiredCapabilities = array_filter($desiredCapabilities, $filterCapabilites, ARRAY_FILTER_USE_KEY);
71+
}
72+
4473
$firstMatch = $desiredCapabilities ?: array();
4574
$firstMatch['browserName'] = $browserName;
46-
4775
$parameters = array('capabilities' => array('firstMatch' => [$firstMatch]));
48-
4976
if (is_array($requiredCapabilities) && count($requiredCapabilities)) {
5077
$parameters['capabilities']['alwaysMatch'] = $requiredCapabilities;
5178
}
@@ -77,7 +104,6 @@ public function session($browserName = Browser::FIREFOX, $desiredCapabilities =
77104
}
78105

79106
$this->capabilities = isset($result['value']['capabilities']) ? $result['value']['capabilities'] : null;
80-
81107
$session = new Session($result['sessionUrl'], $this->capabilities);
82108

83109
return $session;

0 commit comments

Comments
 (0)