1
0
mirror of https://github.com/maximebf/php-debugbar.git synced 2025-06-12 17:11:00 +02:00
Files
php-debugbar/tests/DebugBar/Tests/Browser/DebugbarTest.php
Barry vd. Heuvel ae1f47ca11 Dark Theme + Theme variables + UI tweaks (#703)
* Add option to set theme

* Replace colors with variables

* Use mask for icons

* Fix borders

* Use better variables

* Remove theme

* Add github dark

* Fix select

* Tweak open handler

* Fix inputs

* Fix toolbar

* Fix labels

* Add theme switcher

* Use :after for icons

* Slight tweak to base css

* Tweak restore btn

* Use font variables, tweak timeline

* TWeak openhandler

* Tweak query hover

* Remove openhandler padding

* Fix dataset switcher

* Tweak toolbar

* Move settings, simplify storage

* Add floating position and autoshow to settings

* Tweak constructor

* Add test

* Add hide empty tabs option

* Tweak loading

* Fix test

* Breathe a little

* Add screenshots to tests, test light/dark

* Run screenshot only on 8.4

* Tweak folder

* Tweak

* Rename var

* Twaek hover

* TWeak sql

* Tweak accent

* Fix overly fanatic rename

* Tweak to header
2025-01-26 15:41:20 +01:00

132 lines
4.9 KiB
PHP

<?php
namespace DebugBar\Tests\Browser;
use Facebook\WebDriver\WebDriverDimension;
use Facebook\WebDriver\WebDriverElement;
class DebugbarTest extends AbstractBrowserTest
{
public function testDebugbarTab(): void
{
$client = static::createPantherClient();
$size = new WebDriverDimension(1920, 800);
$client->manage()->window()->setSize($size);
$crawler = $client->request('GET', '/demo/');
// Wait for Debugbar to load
$crawler = $client->waitFor('.phpdebugbar-body');
usleep(1000);
if (!$this->isTabActive($crawler, 'messages')) {
$client->click($this->getTabLink($crawler, 'messages'));
}
$crawler = $client->waitForVisibility('.phpdebugbar-panel[data-collector=messages] .phpdebugbar-widgets-list');
$messages = $crawler->filter('.phpdebugbar-panel[data-collector=messages] .phpdebugbar-widgets-value')
->each(function(WebDriverElement $node){
return $node->getText();
});
$this->assertEquals('hello', $messages[0]);
$this->assertCount(4, $messages);
// Close it again
$client->click($this->getTabLink($crawler, 'messages'));
$client->waitForInvisibility('.phpdebugbar-panel[data-collector=messages] .phpdebugbar-widgets-list');
$client->takeScreenshot(__DIR__ .'/../../../screenshots/minimized.png');
}
public function testDebugbarLightMode(): void
{
$client = static::createPantherClient();
$size = new WebDriverDimension(1920, 800);
$client->manage()->window()->setSize($size);
$crawler = $client->request('GET', '/demo/?theme=light');
// Wait for Debugbar to load
$crawler = $client->waitFor('.phpdebugbar-body');
usleep(1000);
if (!$this->isTabActive($crawler, 'messages')) {
$client->click($this->getTabLink($crawler, 'messages'));
}
$client->takeScreenshot(__DIR__ .'/../../../screenshots/light.png');
}
public function testDebugbarDarkMode(): void
{
$client = static::createPantherClient();
$size = new WebDriverDimension(1920, 800);
$client->manage()->window()->setSize($size);
$crawler = $client->request('GET', '/demo/?theme=dark');
// Wait for Debugbar to load
$crawler = $client->waitFor('.phpdebugbar-body');
usleep(1000);
if (!$this->isTabActive($crawler, 'messages')) {
$client->click($this->getTabLink($crawler, 'messages'));
}
$client->takeScreenshot(__DIR__ .'/../../../screenshots/dark.png');
}
public function testDebugbarAjax(): void
{
$client = static::createPantherClient();
$size = new WebDriverDimension(1920, 800);
$client->manage()->window()->setSize($size);
$crawler = $client->request('GET', '/demo/');
// Wait for Debugbar to load
$crawler = $client->waitFor('.phpdebugbar-body');
usleep(1000);
if (!$this->isTabActive($crawler, 'messages')) {
$client->click($this->getTabLink($crawler, 'messages'));
}
$crawler = $client->waitForVisibility('.phpdebugbar-widgets-messages .phpdebugbar-widgets-list');
$crawler->selectLink('load ajax content')->click();
$client->waitForElementToContain('.phpdebugbar-panel[data-collector=messages]', 'hello from ajax');
$client->waitForElementToContain('.phpdebugbar-datasets-switcher', 'ajax.php');
$messages = $crawler->filter('.phpdebugbar-panel[data-collector=messages] .phpdebugbar-widgets-value')
->each(function(WebDriverElement $node){
return $node->getText();
});
$this->assertEquals('hello from ajax', $messages[0]);
$crawler->selectLink('load ajax content with exception')->click();
$client->click($this->getTabLink($crawler, 'exceptions'));
$client->waitForElementToContain('.phpdebugbar-datasets-switcher', 'ajax_exception.php');
$client->waitForElementToContain('.phpdebugbar-panel[data-collector=exceptions] .phpdebugbar-widgets-message', 'Something failed!');
// Open network tab
$client->click($this->getTabLink($crawler, '__datasets'));
$client->waitForVisibility('.phpdebugbar-panel[data-collector=__datasets] .phpdebugbar-widgets-table-row');
$requests = $crawler->filter('.phpdebugbar-panel[data-collector=__datasets] .phpdebugbar-widgets-table-row')
->each(function(WebDriverElement $node){
return $node->getText();
});
$this->assertStringContainsString('GET /demo/', $requests[0]);
$this->assertStringContainsString('GET /demo/ajax.php (ajax)', $requests[1]);
$this->assertStringContainsString('GET /demo/ajax_exception.php (ajax)', $requests[2]);
$client->takeScreenshot(__DIR__ .'/../../../screenshots/ajax.png');
}
}