for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Zenstruck\Browser\Test;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Zenstruck\Browser\KernelBrowser;
trait HasKernelBrowser
{
protected function browser(): KernelBrowser
if (!$this instanceof KernelTestCase) {
throw new \RuntimeException(\sprintf('The "%s" method can only be used on TestCases that extend "%s".', __METHOD__, KernelTestCase::class));
}
$browser = KernelBrowser::create(function() {
$class = $_SERVER['KERNEL_BROWSER_CLASS'] ?? KernelBrowser::class;
if (!\is_a($class, KernelBrowser::class, true)) {
throw new \RuntimeException(\sprintf('"KERNEL_BROWSER_CLASS" env variable must reference a class that extends %s.', KernelBrowser::class));
if ($this instanceof WebTestCase) {
static::ensureKernelShutdown();
return new $class(static::createClient());
// reboot kernel before starting browser
static::bootKernel();
if (!static::$container->has('test.client')) {
throw new \RuntimeException('The Symfony test client is not enabled.');
return new $class(static::$container->get('test.client'));
});
BrowserExtension::registerBrowser($browser);
return $browser
->setSourceDir($_SERVER['BROWSER_SOURCE_DIR'] ?? './var/browser/source')
;