|
4 | 4 |
|
5 | 5 | use Illuminate\Routing\Router; |
6 | 6 | use Laravel\Dusk\Browser; |
| 7 | +use Illuminate\Database\Events\QueryExecuted; |
| 8 | +use Illuminate\Database\Connection; |
7 | 9 |
|
8 | 10 | class DebugbarBrowserTest extends BrowserTestCase |
9 | 11 | { |
@@ -65,6 +67,26 @@ protected function addWebRoutes(Router $router) |
65 | 67 | return view('ajax'); |
66 | 68 | } |
67 | 69 | ]); |
| 70 | + |
| 71 | + $router->get('web/query', [ |
| 72 | + 'uses' => function () { |
| 73 | + debugbar()->boot(); |
| 74 | + |
| 75 | + /** @var Connection $connection */ |
| 76 | + $connection = $this->app['db']->connectUsing( |
| 77 | + 'runtime-connection', |
| 78 | + [ |
| 79 | + 'driver' => 'sqlite', |
| 80 | + 'database' => ':memory:', |
| 81 | + ], |
| 82 | + ); |
| 83 | + |
| 84 | + $executedQuery = new QueryExecuted('SELECT * FROM users WHERE username = ?', ['debuguser'], 0, $connection); |
| 85 | + event($executedQuery); |
| 86 | + |
| 87 | + return 'PONG'; |
| 88 | + } |
| 89 | + ]); |
68 | 90 | } |
69 | 91 |
|
70 | 92 | /** |
@@ -138,4 +160,42 @@ public function testItCapturesAjaxRequests() |
138 | 160 | ->assertSee('GET api/ping'); |
139 | 161 | }); |
140 | 162 | } |
| 163 | + |
| 164 | + public function testDatabaseTabIsClickable() |
| 165 | + { |
| 166 | + $this->browse(function (Browser $browser) { |
| 167 | + $browser->visit('web/plain') |
| 168 | + ->waitFor('.phpdebugbar') |
| 169 | + ->assertDontSee('0 statements were executed') |
| 170 | + ->click('.phpdebugbar-tab[data-collector="queries"]') |
| 171 | + ->assertSee('0 statements were executed'); |
| 172 | + }); |
| 173 | + } |
| 174 | + |
| 175 | + public function testDatabaseCollectsQueries() |
| 176 | + { |
| 177 | + if (version_compare($this->app->version(), '10', '<')) { |
| 178 | + $this->markTestSkipped('This test is not compatible with Laravel 9.x and below'); |
| 179 | + } |
| 180 | + |
| 181 | + $this->browse(function (Browser $browser) { |
| 182 | + $browser->visit('web/query') |
| 183 | + ->waitFor('.phpdebugbar') |
| 184 | + ->click('.phpdebugbar-tab-history') |
| 185 | + ->assertSeeIn('.phpdebugbar-tab[data-collector="queries"] .phpdebugbar-badge', 2) |
| 186 | + ->click('.phpdebugbar-tab[data-collector="queries"]') |
| 187 | + ->screenshotElement('.phpdebugbar', 'queries-tab') |
| 188 | + ->waitForText('executed') |
| 189 | + ->assertSee('1 statement was executed') |
| 190 | + ->with('.phpdebugbar-widgets-sqlqueries', function ($queriesPane) { |
| 191 | + $queriesPane->assertSee('SELECT * FROM users') |
| 192 | + ->click('.phpdebugbar-widgets-expandable:nth-child(2)') |
| 193 | + ->assertSee('Bindings') |
| 194 | + ->assertSee('debuguser') |
| 195 | + ->assertSee('Backtrace') |
| 196 | + ->assertSee('LaravelDebugbar.php:'); |
| 197 | + }) |
| 198 | + ->screenshotElement('.phpdebugbar', 'queries-expanded'); |
| 199 | + }); |
| 200 | + } |
141 | 201 | } |
0 commit comments