Skip to main content

Run \Drupal\Tests\BrowserTestBase with SQLite

Published on

As part of the push to deprecate SimpleTest and use PHPUnit as the test runner in Drupal 8, there is the \Drupal\Tests\BrowserTestBase class. The BrowserTestBase provides a Mink runner that tests web pages in Drupal. Unlike kernel tests, which require a database and can be run via PHPUnit as well, browser tests use your default database connection. I prefer to run my tests with SQLite as I do not need to have my Docker containers running.

The simplest solution I have found, thus far, is to check the HTTP_USER_AGRENT

if ($_SERVER['HTTP_USER_AGENT'] == 'Drupal command line') {
    $databases['default']['default'] = array(
      'driver' => 'sqlite',
      'database' => '/tmp/test.sqlite',
      'namespace' => 'Drupal\\Core\\Database\\Driver\\sqlite',
    );
}

With this, and running php -S localhost:8080 I'm able to write my Drupal Commerce browser tests without having my normal Docker containers running.