Feat test dusk (#1092)

* Test with Dusk

* No UI

* composer fix-style

* Update BrowserTestCase.php

* Update matrix

* Update run-tests.yml

* Update composer.json

* Start with 6.x

Co-authored-by: laravel-debugbar <laravel-debugbar@users.noreply.github.com>
This commit is contained in:
Barry vd. Heuvel 2020-08-20 12:09:26 +02:00 committed by GitHub
parent 4fe9d74eb1
commit 37dc7a30da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 144 additions and 9 deletions

View File

@ -12,11 +12,8 @@ jobs:
strategy:
matrix:
php: [7.4, 7.3, 7.2]
laravel: [7.*, 6.*, 5.5.*]
laravel: [6.*, 7.*]
dependency-version: [prefer-lowest, prefer-stable]
exclude:
- laravel: 5.5.*
php: 7.4
name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }}
@ -33,8 +30,18 @@ jobs:
- name: Install dependencies
run: |
composer require "laravel/framework:${{ matrix.laravel }}" --no-update --no-progress
composer update --${{ matrix.dependency-version }} --prefer-dist --no-suggest --no-progress
composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update
composer update --${{ matrix.dependency-version }} --prefer-dist --no-progress
- name: Update Dusk Chromedriver
run: vendor/bin/dusk-updater detect --auto-update
- name: Execute Unit Tests
run: composer test
- name: Upload Failed Screenshots
uses: actions/upload-artifact@v2-preview
if: failure()
with:
name: screenshots
path: tests/Browser/screenshots/*

1
.gitignore vendored
View File

@ -4,3 +4,4 @@ composer.phar
composer.lock
.DS_Store
.phpunit.result.cache
/tests/Browser

View File

@ -10,7 +10,7 @@
}
],
"require": {
"php": ">=7.0",
"php": ">=7.1",
"maximebf/debugbar": "^1.16.3",
"illuminate/routing": "^5.5|^6|^7",
"illuminate/session": "^5.5|^6|^7",
@ -20,6 +20,8 @@
},
"require-dev": {
"orchestra/testbench": "^3.5.11|^4.0|^5.0",
"orchestra/testbench-dusk": "^3.5.11|^4.0|^5.0",
"orchestra/dusk-updater": "^1",
"phpunit/phpunit": "^6.0|^7.0|^8.5|^9.0",
"squizlabs/php_codesniffer": "^3.5"
},

36
tests/BrowserTestCase.php Normal file
View File

@ -0,0 +1,36 @@
<?php
namespace Barryvdh\Debugbar\Tests;
use Barryvdh\Debugbar\Facade;
use Barryvdh\Debugbar\ServiceProvider;
class BrowserTestCase extends \Orchestra\Testbench\Dusk\TestCase
{
protected static $baseServeHost = '127.0.0.1';
protected static $baseServePort = 9292;
/**
* Get package providers.
*
* @param \Illuminate\Foundation\Application $app
*
* @return array
*/
protected function getPackageProviders($app)
{
return [ServiceProvider::class];
}
/**
* Get package aliases.
*
* @param \Illuminate\Foundation\Application $app
*
* @return array
*/
protected function getPackageAliases($app)
{
return ['Debugbar' => Facade::class];
}
}

View File

@ -0,0 +1,91 @@
<?php
namespace Barryvdh\Debugbar\Tests;
use Illuminate\Routing\Router;
class DebugbarBrowserTest extends BrowserTestCase
{
/**
* Define environment setup.
*
* @param \Illuminate\Foundation\Application $app
*
* @return void
*/
protected function getEnvironmentSetUp($app)
{
$app['env'] = 'local';
// $app['config']->set('app.debug', true);
/** @var Router $router */
$router = $app['router'];
$this->addWebRoutes($router);
$this->addApiRoutes($router);
\Orchestra\Testbench\Dusk\Options::withoutUI();
}
/**
* @param Router $router
*/
protected function addWebRoutes(Router $router)
{
$router->get('web/plain', [
'uses' => function () {
return 'PONG';
}
]);
$router->get('web/html', [
'uses' => function () {
return '<html><head></head><body>HTMLPONG</body></html>';
}
]);
}
/**
* @param Router $router
*/
protected function addApiRoutes(Router $router)
{
$router->get('api/ping', [
'uses' => function () {
return response()->json(['status' => 'pong']);
}
]);
}
public function testItInjectsOnPlainText()
{
$this->browse(function ($browser) {
$browser->visit('web/plain')
->assertSee('PONG')
->waitFor('.phpdebugbar')
->assertSee('GET web/plain');
});
}
public function testItInjectsOnHtml()
{
$this->browse(function ($browser) {
$browser->visit('web/html')
->assertSee('HTMLPONG')
->waitFor('.phpdebugbar')
->assertSee('GET web/html');
});
}
public function testItDoesntInjectOnJson()
{
$this->browse(function ($browser) {
$browser->visit('api/ping')
->assertSee('pong')
->assertSourceMissing('debugbar')
->assertDontSee('GET api/ping');
});
}
}

View File

@ -9,8 +9,6 @@ use Orchestra\Testbench\TestCase as Orchestra;
class TestCase extends Orchestra
{
/** @var \Barryvdh\Debugbar\LaravelDebugbar */
private $debugbar;
/**
* Get package providers.