@@ -54,33 +54,7 @@ public function start(): WebDriver
5454 $ this ->waitUntilReady ($ this ->process , $ url .$ this ->options ['path ' ], 'firefox ' );
5555 }
5656
57- $ firefoxOptions = [];
58- if (isset ($ _SERVER ['PANTHER_FIREFOX_BINARY ' ])) {
59- $ firefoxOptions ['binary ' ] = $ _SERVER ['PANTHER_FIREFOX_BINARY ' ];
60- }
61- if ($ this ->arguments ) {
62- $ firefoxOptions ['args ' ] = $ this ->arguments ;
63- }
64-
65- $ capabilities = DesiredCapabilities::firefox ();
66- $ capabilities ->setCapability ('moz:firefoxOptions ' , $ firefoxOptions );
67-
68- // Prefer reduced motion, see https://developer.mozilla.org/fr/docs/Web/CSS/@media/prefers-reduced-motion
69- /** @var FirefoxOptions|array $firefoxOptions */
70- $ firefoxOptions = $ capabilities ->getCapability ('moz:firefoxOptions ' ) ?? [];
71- $ firefoxOptions = $ firefoxOptions instanceof FirefoxOptions ? $ firefoxOptions ->toArray () : $ firefoxOptions ;
72- if (!filter_var ($ _SERVER ['PANTHER_NO_REDUCED_MOTION ' ] ?? false , \FILTER_VALIDATE_BOOLEAN )) {
73- $ firefoxOptions ['prefs ' ]['ui.prefersReducedMotion ' ] = 1 ;
74- } else {
75- $ firefoxOptions ['prefs ' ]['ui.prefersReducedMotion ' ] = 0 ;
76- }
77- $ capabilities ->setCapability ('moz:firefoxOptions ' , $ firefoxOptions );
78-
79- foreach ($ this ->options ['capabilities ' ] as $ capability => $ value ) {
80- $ capabilities ->setCapability ($ capability , $ value );
81- }
82-
83- return RemoteWebDriver::create ($ url , $ capabilities , $ this ->options ['connection_timeout_in_ms ' ] ?? null , $ this ->options ['request_timeout_in_ms ' ] ?? null );
57+ return RemoteWebDriver::create ($ url , $ this ->buildCapabilities (), $ this ->options ['connection_timeout_in_ms ' ] ?? null , $ this ->options ['request_timeout_in_ms ' ] ?? null );
8458 }
8559
8660 public function quit (): void
@@ -123,6 +97,37 @@ private function getDefaultArguments(): array
12397 return $ args ;
12498 }
12599
100+ private function buildCapabilities (): DesiredCapabilities
101+ {
102+ $ firefoxOptions = [];
103+ if (isset ($ _SERVER ['PANTHER_FIREFOX_BINARY ' ])) {
104+ $ firefoxOptions ['binary ' ] = $ _SERVER ['PANTHER_FIREFOX_BINARY ' ];
105+ }
106+ if ($ this ->arguments ) {
107+ $ firefoxOptions ['args ' ] = $ this ->arguments ;
108+ }
109+
110+ $ capabilities = DesiredCapabilities::firefox ();
111+ $ capabilities ->setCapability ('moz:firefoxOptions ' , $ firefoxOptions );
112+
113+ // Prefer reduced motion, see https://developer.mozilla.org/fr/docs/Web/CSS/@media/prefers-reduced-motion
114+ /** @var FirefoxOptions|array $firefoxOptions */
115+ $ firefoxOptions = $ capabilities ->getCapability ('moz:firefoxOptions ' ) ?? [];
116+ $ firefoxOptions = $ firefoxOptions instanceof FirefoxOptions ? $ firefoxOptions ->toArray () : $ firefoxOptions ;
117+ if (!filter_var ($ _SERVER ['PANTHER_NO_REDUCED_MOTION ' ] ?? false , \FILTER_VALIDATE_BOOLEAN )) {
118+ $ firefoxOptions ['prefs ' ]['ui.prefersReducedMotion ' ] = 1 ;
119+ } else {
120+ $ firefoxOptions ['prefs ' ]['ui.prefersReducedMotion ' ] = 0 ;
121+ }
122+ $ capabilities ->setCapability ('moz:firefoxOptions ' , $ firefoxOptions );
123+
124+ foreach ($ this ->options ['capabilities ' ] as $ capability => $ value ) {
125+ $ capabilities ->setCapability ($ capability , $ value );
126+ }
127+
128+ return $ capabilities ;
129+ }
130+
126131 private function getDefaultOptions (): array
127132 {
128133 return [
0 commit comments