yaroslawww/laravel-dusk-reporter
Composer 安装命令:
composer require yaroslawww/laravel-dusk-reporter
包简介
Report generator for Laravel Dusk.
README 文档
README
Report will be saved in .md files.
Installation
You can install the package via composer:
composer require --dev yaroslawww/laravel-dusk-reporter
Usage
Purge old data
When testing, the package adds content files, so you need to clear the directories before starting tests again
php artisan dusk-reporter:purge # or php artisan dusk-reporter:purge -y # or php artisan dusk-reporter:purge --path="/my/project/report"
1. Use trait TestWithDuskReport in your dusk test case. This is optional, but it will be easy to rename the file.
//...
use LaravelDuskReporter\TestWithDuskReport;
abstract class DuskTestCase extends BaseTestCase
{
use TestWithDuskReport;
//...
}
2. You can override default configuration
Change store report folder, by default package use "base_path('storage/laravel-dusk-reporter')"
Reporter::$storeBuildAt = app_path('reports/dusk-report');
or
DUSK_REPORT_PATH=reports/browser-tests php artisan dusk --stop-on-failure
Change store screenshots folder, by default package use field "$storeBuildAt"
Reporter::$storeScreenshotAt = app_path('reports/dusk-screenshots');
By default package save link in .md files as relative path, you can change it
Reporter::$screenshotRelativePath = false;
Change element to fit content (by default package use "body" tag)
Reporter::$getBodyElementCallback = function ($browser) {
return $browser->driver->findElement(WebDriverBy::id('someId'));
};
3. Create report
namespace Tests\Browser\CPD\Marketing;
//...
class HomePageTest extends DuskTestCase {
/** @test */
public function open_by_not_logged_user() {
$REPORT = $this->newDuskReportFile()
->h1( 'Home marketing page' )
->h2( 'Initial data' )
->p( "Open page by not logged user" );
$this->browse( function ( Browser $browser ) use ( $REPORT ) {
$browser->visit( new HomePage() )
// ...
->assertPresent( '@header' )
->assertPresent( '@footer' );
$REPORT->screenshot( $browser, ReportScreenshot::RESIZE_COMBINE )
// or
->screenshotWithVisibleScreen( $browser )
// or
->screenshotWithFitScreen( $browser )
// or
->screenshotWithCombineScreen( $browser )
// or
->screenshotWithCombineScreen( $browser, $suffix = 'additional_screen', $newLine = false);
} );
$REPORT->h3('Conclusion')->p('Test passed.');
}
}
4. Create report for one test file
By default, the package is designed to create one report for one test (since the phpunit re-creates the structure for
each test). But you can create one file for multiple tests using method duskReportFile
abstract class Page extends BasePage
{
use HasDuskReporter;
}
namespace Tests\Browser;
use Database\Seeders\DatabaseDuskCPDSeeder;
use Facebook\WebDriver\Exception\WebDriverException;
use Facebook\WebDriver\WebDriverBy;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use LaravelDuskReporter\Reporter;
use Tests\Browser\Pages\Page;
use Tests\DuskTestCase;
class ReportableDuskTestCase extends DuskTestCase
{
use DatabaseMigrations;
protected function setUp(): void
{
parent::setUp();
Page::withDuskReporter( $this->setUpReportFileForClass() );
}
}
namespace Tests\Browser\Marketing;
class HomePageTest extends ReportableDuskTestCase {
$duskReportClassFilePath = 'Marketing';
/** @test */
public function open_by_not_logged_user() {
$this->browse( function ( Browser $browser ) {
$browser->visit( new HomePage() )
->assertPresent( '@header' )
->assertPresent( '@footer' )
->reportUserSeePage()
->reportAppend( function ( $reporter ) {
$reporter->p( 'My additional note.' );
} );
} );
}
public function testPageHasVideo() {
$this->browse( function ( Browser $browser ) {
$browser->visit( new HomePage() )
->assertPresent( '@marketing-video' );
// $browser->reportUserSeePage();
$this->duskReportFile()->h2( "Open page with video" )
->screenshotWithFitScreen( $browser )
->p('Some note');
} );
}
}
5. Disable reporting
Sometimes you need to cancel the creation of a report (for example, you want to make a quick test without generating a
report). Then just add a global variable DUSK_REPORT_DISABLED=1 or add it to .env.dusk.local file. Also package
supports disabling only screenshots DUSK_SCREENSHOTS_DISABLED=1
DUSK_REPORT_DISABLED=1 php artisan dusk tests/Browser/CPD/Marketing/HomePageTest.php --stop-on-failure DUSK_SCREENSHOTS_DISABLED=1 php artisan dusk tests/Browser/CPD/Marketing/HomePageTest.php --stop-on-failure
Frontend generation
In some cases, you will need to show the report in HTML format. Usually it is convenient to use md->html compilers for this. For example, you can use vuepress
# Add vuepress if not exists
yarn add -D vuepress
Then add command to your package.json
# package.json
{
...
"scripts": {
...
"testsPreview:build": "cp -r vendor/yaroslawww/laravel-dusk-reporter/assets/.vuepress storage/laravel-dusk-reporter/ && VUEPRESS_BASE='/laravel-dusk-reporter-html/' VUEPRESS_DEST='public/laravel-dusk-reporter-html' vuepress build storage/laravel-dusk-reporter",
...
},
"devDependencies": {
...
"vuepress": "^1.5.4",
...
},
...
}
Then just run
yarn testsPreview:build
Credits
yaroslawww/laravel-dusk-reporter 适用场景与选型建议
yaroslawww/laravel-dusk-reporter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9.72k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2021 年 04 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「report」 「laravel-dusk-reporter」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 yaroslawww/laravel-dusk-reporter 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 yaroslawww/laravel-dusk-reporter 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 yaroslawww/laravel-dusk-reporter 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Reportico Open Source PHP Report Designer
Allow KoolReport to use twig template engine to render view
Pure PHP library to read JRXML files made with 'JasperSoft Studio' and generate reports in PDF
Sistema AMOS per le segnalazioni
Beautiful HTML output formatter for Rector PHP
Reportable Polymorphic Eloquent Models for Laravel 5
统计信息
- 总下载量: 9.72k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-04-29