Travis + Selenium + PHPUnit + Slack에서 수행하는 폼 모니터링 테스트
개요
가끔씩입니다만, 자사 사이트의 폼이 움직이지 않게 되어, 「폼을 송신할 수 없게 되어 있어」라고 연락을 받는 일이 있습니다. 모르는 사이에 폼이 움직이지 않게 되어 있는 기회 손실은 상당히 많기 때문에, 폼 사활 감시와 같은 것이 할 수 없는가 생각해 보았습니다.
그 결과 Travis + Selenium + PHPUnit에서 travis-form-test 이라는 테스트 도구를 만들어 보았습니다.
.travis.yml 설정
.travis.yml
language: php
php:
- 5.5
env:
global:
secure: "T9nks1QOei/XWIGqTeMdjTXiwFrWif07SrFY0X50Wp3QHWTp9EMvJn03T3K7j6oT2IAjIuNoQuPQtKdFTyc8JppUK4wWKdPI99TXBb2KpqTeBdi7DIdncY3epFZ+i0OI/xQ1r71tx7J/Ftuty2ZaQQl0IxCRpB0W0JxqTmpPU6PIi5rFxFIHrZbqAzUBYVZV1sxJ4Ti1LkR3/HRtdYUaWLd+Rn2l6aPl/l+aCBel3OwupDyNCcqAwDrdbYv52t61K3jd05WNysPiESrspEqwVgkOFGszyBMdJWOPBZAhl+HwpdXPvo0kAgA2hb0YS37HH/pJEeb6zo/s4kMriu2EtVUxBOGJyPdi7Zuj8g+qfPZ4P/7U0UGBOZ8tVZeWQAL0zU9EH+QLgoqiIhnGUu0wLYVUcdPWqcUNTc/sLYP9LqQ+xfB5/JwtxgUk3I6gv94+rZdeIZKpXuM/4l5s3DYra7Pn0ukXJgbTtmoUPkfR8quqQPOFXoAw6sDyWEYDzn2G5DZIIrHfU6xZsfEIq9+OSPUTjrsZ2JMsuJOeus23+JuqN6DEOD1z72tcowdSsP8X4/2npsocP7dB6V2QgPcBT+Jk2T3r3X2so+82uaL7vfDrsqIM2Lq0VDkE71FmmDhxjT/HmjTjeBpF1G4r7PyATVaYR0XHB2yDnLHhIH6BptI="
before_install:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- wget http://selenium-release.storage.googleapis.com/2.46/selenium-server-standalone-2.46.0.jar
- java -jar selenium-server-standalone-2.46.0.jar > /tmp/selenium.log 2> /tmp/selenium.error
&
before_script:
- composer self-update
- composer install
script:
- "./vendor/bin/phpunit webtest"
notifications:
slack:
secure: lI0LOq0KBIzj5fH8isDYKQ1GSMojSkic82VwODdCQ2caxgvcU7vRJr4IH9hhIrHZNiz9F8d8uWGUI8IxV/OjMwdXrrNprzbCLaL8Lp2pPD+USwHtkL/CIKLL56taBPcH5U7+PfwfjRk89kdKL9V0ucoIT4GU8R/yfDsiFziIv4MIhRZNYwLLBqhTk0ygkaUVu8BUooj3rXwej3D/NjpO2IP8FmGJdMxooXtCwAkMN6pQzpcAKJCGwivn5o/k8bGM7UmQWOA4VjmWWjv+v+oZRn7fclP2AZWjFopVELJ0MnReY6QG8jYXcpUHuQYyASNsggK8/iLiIN8yZ9O/+4uRFsSHo+vPNOH4DwuwrooJbCoq6uaS+aHjldpfz0z/8J1lmpxeVldMXsRJX1Pg454+9MNarjiuQ7av0oX2JbyWqJK8av+jYhw1qWvNH82g2gwFqftr61NGHzIoYSEO8RHIbT1PD9mS7+BlS9ZGExWPcrfSf4cb39Q1FdXzUlW/OrRV1U9qfZA8XOcAHfAXbnWxQZvV+BlNDYqVdBVhRbhxU2MRZjXtJFQ88rFK+Dsa4gbP7dJ/fwviqORp0YtRQTkTzJ9iCB5p29NE+idEuclx2V8QWc0A4uDgvpUgp5QpMdjLa4us2CU9QZQNjJiPNl8VuOVwSJFFVn/ONK0rMAmjabk=
Travis에서는 Firefox를 사용할 수 있습니다. 그래서 Firefox를 사용하는 전제로 Selenium Server의 독립 실행 형 버전을 before_install로 설치하고 시작합니다.
Selenium Server를 시작하여 composer에서 PHPUnit을 설치하고 마지막으로 테스트를 실행합니다. 결과는 Slack에게 알리는 흐름입니다.
덧붙여 env.global에 secure의 값을 설치하고 있습니다만, 이것은 폼에의 URL입니다.
이 회사 내부의 테스트 환경에서 실시했기 때문에 URL을 공개할 수 없기 때문에 이렇게 하고 있습니다.
특히 공개된 사이트의 폼으로 실시하는 경우는 암호화하지 않아도 좋다고 생각합니다.
composer 설정
composer.json
{
"require-dev": {
"phpunit/phpunit": "4.7.*"
, "phpunit/phpunit-selenium": ">=1.2"
}
}
이런 느낌으로 설정하면 PHPUnit으로 Selenium을 움직이기 위한 라이브러리를 한 세트 설치해 줍니다
PHPUnit
webtest.php
<?php
class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
protected function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl(getenv('SITE_URL'));
}
public function testForm()
{
$this->url(getenv('FORM_URL'));
$this->byName('your-name')->value('horike');
$this->byName('your-email')->value('[email protected]');
$this->byName('your-subject')->value('subject');
$this->byName('your-message')->value('message');
$this->byclassName('wpcf7-form')->submit();
$this->waitUntil(function($testCase) {
$str = $testCase->byclassName('screen-reader-response')->text();
if ( !empty($str) ) {
return true;
}
}, 3000);
$this->assertEquals('あなたのメッセージは送信されました。ありがとうございました。', $this->byclassName('screen-reader-response')->text());
}
}
테스트 대상 사이트의 Contact Form 7 양식이 설치된 페이지 헤 액세스.
양식에 값을 입력하고 제출합니다. 결과, "당신의 메시지가 전송되었습니다. 감사합니다."라는 메시지가 표시되면 테스트 통과라는 흐름입니다.
요약
이 테스트를 Travis상에서 움직이면, 이런 식으로 Slack에 폼의 테스트 결과를 통지해 줍니다.
다음은 테스트 실행시의 Travis 결과입니다.
h tps://t 등ゔぃs-해. 오 rg / 호리케 37 / t 라 ぃ
이것을 travis의 커맨드 라인 툴 등으로 정기적으로 자동 실행시켜 주면, 눈치채지 못하는 동안 폼이 움직이지 않게 되어 있는 것도 막을 것 같습니다.
그럼 좋은 Travis 생활을!
Reference
이 문제에 관하여(Travis + Selenium + PHPUnit + Slack에서 수행하는 폼 모니터링 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/horike37/items/653726f253aca8498ece텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)