识别生产环境中的Codeception

时间:2017-12-23 18:35:43

标签: php codeception smoke-testing

我们通过Browserstack对我们的生产环境运行我们的Codeception测试(作为冒烟测试)。有没有一种简单的方法来识别Codeception?通过设置自定义标头,用户代理或Cookie?

原因是,我们经常在我们的网站上运行A / B测试,并希望始终将控制段显示为Codeception。

我无法找到任何有关它的文档。

3 个答案:

答案 0 :(得分:0)

这取决于您如何使用它。您可能正在讨论进行验收测试,尽管该概念可用于驱动第一人的浏览器交互的任何操作。所以你可以这样做:

$I->amOnPage('/homepage');
$I->loginAsAdmin();

因此,根据您正在做的事情,您可以通过正在执行的任何正常登录操作来识别Codeception。例如,如果您正在测试WordPress,则可以创建一个用户名" CodeceptTester"并只是注意登录。设置实际标题很难。您可以使用PHPbrowser,但不能使用Selenium。事实上,我非常确定你不能通过Codeception设置Selenium标头,但是有些插件可供浏览器使用。你可以用PhantomJS做,但我不知道如何。

setting request headers in selenium

http://phptest.club/t/useragent-in-codeception/186/3

答案 1 :(得分:0)

也许您可以通过查看用户代理字符串来识别它。例如,我们正在使用Chrome无头(+ WebDriver)并且很好地介绍了自己:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/63.0.3239.84 HeadlessChrome/63.0.3239.84 Safari/537.36

...但是你不能100%确定它是因为理论上,其他人也可以在你的网站上运行它。

或者,您可以在验收测试中覆盖amOnPage()方法,在调用parent::amOnPage()之前设置标题:

public function amOnPage($page)
{
    $this->haveHttpHeader('x-codeception', '1');
    parent::amOnPage($page);
}

也不要忘记覆盖amOnUrl(),因为它会以与amOnPage()相同的方式点击页面,而amOnSubdomain()只会在不访问子网域的情况下切换子域。< / p>

答案 2 :(得分:0)

这就是我最终要做的事情。在acceptance.test.yml中,我使用chrome浏览器(对我来说无关紧要)使用args覆盖用户代理并在我的prod环境中查找。

capabilities:
   chromeOptions:
     args: ["--user-agent=SmokeTesting"]