在多个Web域上运行Laravel Dusk

时间:2017-12-05 11:37:22

标签: php laravel laravel-dusk

我有多个网站。

  1. en.web-site.com/pages/faqs
  2. fr.web-site.com/pages/faqs
  3. ar.web-site.com/pages/faqs
  4. br.web-site.com/pages/faqs
  5. ...另外30个具有相同URI结构的网站
  6. 我想在每个网站上运行浏览器测试。

    我已经更新了所有网站的常见问题页面上的电子邮件,我想测试是否所有网站都有更改。

    <?php
    
    namespace Tests\Browser;
    
    use Tests\DuskTestCase;
    use Laravel\Dusk\Browser;
    
    class UpdatedEmailTest extends DuskTestCase
    {
        public function testUpdatedEmail()
        {
            $this->browse(function (Browser $browser) {
                $browser->visit('/pages/faqs')
                    ->assertPathIs('/pages/faqs')
                    ->assertSee('new_email@sample.com')
                    ->assertDontSee('old_email@sample.com');
            });
        }
    }
    

    此测试绝对可以在我的任何网站上正常运行,但每次运行时我都必须编辑.env文件。

    我能做些什么才能让我在所有这些网站上进行测试而无需编辑.env文件?

1 个答案:

答案 0 :(得分:0)

要实现这一目标,您可能需要在所有30多个网站域上进行循环。

public function testUpdatedEmail()
{
    $websites = .... //array with full urls and emails

    foreach ($websites as $website)

      $this->browse(function (Browser $browser) use ($website) {
          $browser->visit($website["url"])
            ->assertPathIs(parse_url($website["url"], PHP_URL_PATH))
            ->assertSee($website["new_email"])
            ->assertDontSee($website["old_email"]);
    });
}

请参阅Browers.php https://github.com/laravel/dusk/blob/bcb05e6fe29817bbf04574f68996312a296bb366/src/Browser.php#L119