Мы запускаем наши тесты Codeception (как тесты дыма) в нашей производственной среде через Browserstack. Есть ли простой способ идентифицировать Codeception? Через настройку пользовательских заголовков, user-agent или куки?
Причина в том, что мы постоянно проводим A / B-тестирование на нашем сайте и хотим всегда показывать контрольный сегмент Codeception.
Я не могу найти какую-либо документацию по этому поводу.
Возможно, вы можете определить это, посмотрев строку агента пользователя. Например, мы используем 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()
только переключает поддомен без посещения его.
Это зависит от того, как вы используете это. Вы, вероятно, говорите о проведении приемочного теста, хотя эту концепцию можно использовать для любых действий, которые управляют взаимодействием браузера от первого лица. Так что вы можете сделать что-то вроде:
$I->amOnPage('/homepage');
$I->loginAsAdmin();
Таким образом, в зависимости от того, что вы делаете, вы можете идентифицировать Codeception с помощью любых обычных действий входа в систему, которые вы выполняли. Например, если вы тестировали WordPress, вы можете создать имя пользователя «CodeceptTester» и просто наблюдать за этим логином. Трудно установить фактические заголовки. Вы можете сделать это с PHPbrowser, но не с Selenium. На самом деле, я уверен, что вы не можете установить заголовки Selenium с помощью Codeception, но для браузеров есть плагины, которые могут это делать. Вы можете сделать это с PhantomJS, но я не знаю как.
Это то, что я в итоге сделал. В accept.test.yml я использовал браузер chrome (для меня это не имело значения), переписал user-agent с помощью args и искал это в моей среде prod.
capabilities:
chromeOptions:
args: ["--user-agent=SmokeTesting"]