packsuco/dusk-time-travel

用于时间旅行功能的黄昏浏览器扩展包

0.0.2 2020-12-24 23:22 UTC

This package is auto-updated.

Last update: 2024-09-27 07:09:44 UTC


README



用于时间旅行功能的黄昏浏览器扩展包

Latest Version on Packagist Tests Total Downloads

此包满足了修改请求时间的黄昏测试用例的需求。由于它还不够成熟,可能不会按预期工作,因此欢迎所有PR。但我认为理解这个包的功能很容易。

安装

您可以通过composer安装此包

composer require paksuco/dusk-time-travel

安装包后,需要执行一个关键步骤,以便浏览器拥有时间旅行方法,您需要从Paksuco/DuskTimeTravel/Browser类扩展您的浏览器类,而不是使用库存的Laravel/Dusk/Browser。此类充当您的测试用例与Laravel Dusk浏览器之间的中间人。

为此,将以下代码添加到您的DuskTestCase.php文件中

    use \Paksuco\DuskTimeTravel\Browser as TimeTravelBrowser;

    class DuskTestCase extends BaseTestCase {

        protected function newBrowser($driver)
        {
            return new TimeTravelBrowser($driver);
        }

    }

用法

由于您已更改浏览器类,因此您现在可以访问两个新的Dusk浏览器方法:travelTo($time)travelBack。正如您可以从名称中轻松理解,第一个方法穿越时间,使用Illuminate/Support/Carbon实例作为时间输入,第二个将其带回来。

注意:由于它使用cookie将修改后的时间传递给浏览器,因此只有下一个请求会受到更改时间的影响,当前页面不会有日期修改。

例如

// test case
$this->browse(function ($browser) {

    // on the homepage, you will see today's date as the current date.
    $browser->visit("home")
        ->travelTo(Carbon::tomorrow());

    // but, like this, you'll see tomorrows date as the current date
    $browser->travelTo(Carbon::tomorrow())
        ->visit("home");


    // an example use case, do something in yesterdays date and expect it to see today.
    $browser->travelTo(Carbon::yesterday())->visit($itemDetailsPage)
        ->doStuffInYesterdaysDate()
        ->travelBack()->visit($itemDetailsPage)
        ->assertSee(Carbon::yesterday());
});

这两个方法都会使用明天的日期作为下一个请求(AJAX或重定向,无关紧要)。

在您重新创建实例后,或者使用travelBack手动将日期重置为当前日期后,服务器使用的日期将恢复正常。

测试

包含一个测试用例,但由于它是Dusk扩展,测试是在安装了Dusk的Laravel实例上运行的。您可以像.github/workflows/run-tests.yml工作流程那样测试此插件。

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请查看我们的安全策略了解如何报告安全漏洞。

致谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。