Laravel×Docker×Dusk×Selenium에서 테스트 실행
소개
인턴 현장에서 Laravel을 사용하고 있으며 테스트 환경을 구축했습니다.
테스트 툴로서 Dusk를 사용해, selenium과의 제휴라고 하는 구성을 취해, 도입으로 몇번이나 마주했으므로 자신 메모로서 남기고 싶습니다.
Dusk는?
- 문서
Laravel이 표준으로 준비하고 있는 브라우저의 자동 조작에 의한 테스트 API.
테스트하는 동안 브라우저가 마음대로 움직이는 것을 바라 보면서 한가롭게 할 수 있습니다 (웃음)
Dusk는 "$php artisan dusk:install"에서 명령 설치 후 바로 사용할 수 있습니다.
그러나 이번에는 현장의 의향으로 기본 ChromeDriver를 사용하는 대신 selenium을 사용하게 되었습니다.
목표
--개발 환경---
docker 환경에서 Dusk × selenium에서 테스트를 실행하는 것을 목표로합니다.
개발 환경에서 docker를 사용하고 있었으므로 selenum 용 컨테이너를 준비하는 곳에서 시작했습니다.
이하, 순서대로 정리합니다.
1.selenium 컨테이너 준비
selenium 용 컨테이너를 정의하려면 docker-compose.yml에 다음을 추가하십시오.
docker-compose.yml
selenium:
image: selenium/standalone-chrome-debug
ports:
- 4444:4444
- 5900:5900
container_name: selenium-container
depends_on:
- nginx
privileged: true
포트를 2개 개방하고 있습니다만,
4444 ⇨ 셀레늄 서버 포트
5900 ⇨ VNC 포트
입니다.
[참고] VNC 정보
2. 컨테이너 시작
terminal
$ docker-compose up
...
Creating mysql-container ... done
Creating phpmyadmin-container ... done
Creating php-fpm-container ... done
Creating nginx-container ... done
Creating selenium-container ... done
셀레늄 컨테이너가 무사히 일어났습니다.
php-fpm 컨테이너에 들어갑니다.
terminal
$ docker exec -it php-fpm-container bash
3.Dusk 설치
거의 공식 인용 입니다.
다음 명령은 컨테이너에서 수행하십시오!
terminal(컨테이너 내)
# 共存パッケージのインストール
$ composer require --dev laravel/dusk
# dusk install
$ php artisan dusk:install
docker를 시작하면 셀레늄 포트와 VNC 포트가 열립니다.
4.selenium 연결(:4444)
기본 ChromeDrive 대신 selenium을 사용하는 경우 tests/DuskTestCase.php를 다시 작성해야 합니다.
DuskTastCase.php
#driverメソッドを以下に書き換え
protected function driver()
{
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', DesiredCapabilities::chrome()
);
}
여기서 docker-compose.yml에 정의한 4444port가 등장합니다!
5.VNC 연결(:5900)
이번에는 VNC에 연결합니다.
mac의 finder에서 localhost:5900에 연결합니다.
↓docker가 기동하고 있으면 이런 느낌으로 selenum의 화면이 표시되었습니다!!
6. 테스트 실행
아래의 간단한 로그인 테스트를 실행해 보았습니다.
LoginTest.php
<?php
namespace Tests\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class LoginTest extends DuskTestCase
{
/**
* A Dusk test example.
*
* @return void
*/
public function test_02_PassReset(){
// login test
$this->browse(function (Browser $browser) {
// ページ"/login"で文字列"LARAVEL"を確認
$browser->visit('login')
->assertSee('LARAVEL');
});
}
}
여기 테스트를 실행.
↑테스트 실행시의 캡쳐입니다. 제대로 테스트 브라우저가 움직이고/login에 액세스 할 수 있습니다!
terminal
$ php artisan dusk
PHPUnit 8.5.8 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 4.4 seconds, Memory: 18.00 MB
OK (2 tests, 2 assertions)
테스트 결과도 ◎였습니다!!!
요약
브라우저 테스트 자체가 처음이었기 때문에 단순히 재미있었습니다!
시간이 있으면 selenum 관련으로 스크래핑 등에 도전하고 싶다! ! !
※오류나 질문등 있으시면 코멘트 받을 수 있으면 다행입니다.
Reference
이 문제에 관하여(Laravel×Docker×Dusk×Selenium에서 테스트 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mox692/items/533e4d10bef49f126ff9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)