@@ -55,7 +55,6 @@ trait PantherTestCaseTrait
55
55
'router ' => '' ,
56
56
'external_base_uri ' => null ,
57
57
'readinessPath ' => '' ,
58
- 'browser ' => PantherTestCase::CHROME ,
59
58
'env ' => [],
60
59
];
61
60
@@ -100,7 +99,7 @@ public static function startWebServer(array $options = []): void
100
99
return ;
101
100
}
102
101
103
- if ($ externalBaseUri = $ options ['external_base_uri ' ] ?? $ _SERVER ['PANTHER_EXTERNAL_BASE_URI ' ] ?? self :: $ defaultOptions [ ' external_base_uri ' ] ) {
102
+ if ($ externalBaseUri = $ options ['external_base_uri ' ] ?? self :: $ defaultOptions [ ' external_base_uri ' ] ?? $ _SERVER ['PANTHER_EXTERNAL_BASE_URI ' ] ?? $ _SERVER [ ' SYMFONY_PROJECT_DEFAULT_ROUTE_URL ' ] ?? null ) {
104
103
self ::$ baseUri = $ externalBaseUri ;
105
104
106
105
return ;
@@ -161,7 +160,7 @@ public function takeScreenshotIfTestFailed(): void
161
160
*/
162
161
protected static function createPantherClient (array $ options = [], array $ kernelOptions = [], array $ managerOptions = []): PantherClient
163
162
{
164
- $ browser = ($ options ['browser ' ] ?? self ::$ defaultOptions ['browser ' ] ?? PantherTestCase:: CHROME );
163
+ $ browser = ($ options ['browser ' ] ?? self ::$ defaultOptions ['browser ' ] ?? null );
165
164
$ callGetClient = method_exists (self ::class, 'getClient ' ) && (new \ReflectionMethod (self ::class, 'getClient ' ))->isStatic ();
166
165
if (null !== self ::$ pantherClient ) {
167
166
$ browserManager = self ::$ pantherClient ->getBrowserManager ();
@@ -178,10 +177,21 @@ protected static function createPantherClient(array $options = [], array $kernel
178
177
179
178
self ::startWebServer ($ options );
180
179
181
- if (PantherTestCase::CHROME === $ browser ) {
182
- self ::$ pantherClients [0 ] = self ::$ pantherClient = Client::createChromeClient (null , null , $ managerOptions , self ::$ baseUri );
183
- } else {
180
+ if (PantherTestCase::FIREFOX === $ browser ) {
184
181
self ::$ pantherClients [0 ] = self ::$ pantherClient = Client::createFirefoxClient (null , null , $ managerOptions , self ::$ baseUri );
182
+ } else {
183
+ try {
184
+ self ::$ pantherClients [0 ] = self ::$ pantherClient = Client::createChromeClient (null , null , $ managerOptions , self ::$ baseUri );
185
+ } catch (\RuntimeException $ e ) {
186
+ if (PantherTestCase::CHROME === $ browser ) {
187
+ throw $ e ;
188
+ }
189
+ self ::$ pantherClients [0 ] = self ::$ pantherClient = Client::createFirefoxClient (null , null , $ managerOptions , self ::$ baseUri );
190
+ }
191
+
192
+ if (null === $ browser ) {
193
+ self ::$ defaultOptions ['browser ' ] = self ::$ pantherClient ->getBrowserManager () instanceof ChromeManager ? PantherTestCase::CHROME : PantherTestCase::FIREFOX ;
194
+ }
185
195
}
186
196
187
197
if (is_a (self ::class, KernelTestCase::class, true )) {
0 commit comments