2525
2626class DesiredCapabilities implements WebDriverCapabilities
2727{
28- /**
29- * @var array
30- */
28+ /** @var array */
3129 private $ capabilities ;
3230
31+ /** @var array */
32+ private static $ ossToW3c = [
33+ WebDriverCapabilityType::PLATFORM => 'platformName ' ,
34+ WebDriverCapabilityType::VERSION => 'browserVersion ' ,
35+ WebDriverCapabilityType::ACCEPT_SSL_CERTS => 'acceptInsecureCerts ' ,
36+ ChromeOptions::CAPABILITY => ChromeOptions::CAPABILITY_W3C ,
37+ ];
38+
3339 public function __construct (array $ capabilities = [])
3440 {
3541 $ this ->capabilities = $ capabilities ;
3642 }
3743
44+ public static function createFromW3cCapabilities (array $ capabilities = [])
45+ {
46+ $ w3cToOss = array_flip (static ::$ ossToW3c );
47+
48+ foreach ($ w3cToOss as $ w3cCapability => $ ossCapability ) {
49+ // Copy W3C capabilities to OSS ones
50+ if (array_key_exists ($ w3cCapability , $ capabilities )) {
51+ $ capabilities [$ ossCapability ] = $ capabilities [$ w3cCapability ];
52+ }
53+ }
54+
55+ return new self ($ capabilities );
56+ }
57+
3858 /**
3959 * @return string The name of the browser.
4060 */
@@ -183,13 +203,6 @@ public function toArray()
183203 */
184204 public function toW3cCompatibleArray ()
185205 {
186- $ ossToW3c = [
187- WebDriverCapabilityType::PLATFORM => 'platformName ' ,
188- WebDriverCapabilityType::VERSION => 'browserVersion ' ,
189- WebDriverCapabilityType::ACCEPT_SSL_CERTS => 'acceptInsecureCerts ' ,
190- ChromeOptions::CAPABILITY => ChromeOptions::CAPABILITY_W3C ,
191- ];
192-
193206 $ allowedW3cCapabilities = [
194207 'browserName ' ,
195208 'browserVersion ' ,
@@ -212,12 +225,12 @@ public function toW3cCompatibleArray()
212225 $ w3cCapabilities [$ capabilityKey ] = $ capabilityValue ;
213226 }
214227
215- // Convert capabilitites with changed name
216- if (array_key_exists ($ capabilityKey , $ ossToW3c )) {
217- if ($ capabilityKey === ' platform ' ) {
218- $ w3cCapabilities [$ ossToW3c [$ capabilityKey ]] = mb_strtolower ($ capabilityValue );
228+ // Convert capabilities with changed name
229+ if (array_key_exists ($ capabilityKey , static :: $ ossToW3c )) {
230+ if ($ capabilityKey === WebDriverCapabilityType:: PLATFORM ) {
231+ $ w3cCapabilities [static :: $ ossToW3c [$ capabilityKey ]] = mb_strtolower ($ capabilityValue );
219232 } else {
220- $ w3cCapabilities [$ ossToW3c [$ capabilityKey ]] = $ capabilityValue ;
233+ $ w3cCapabilities [static :: $ ossToW3c [$ capabilityKey ]] = $ capabilityValue ;
221234 }
222235 }
223236
0 commit comments