SlideShare a Scribd company logo
1 of 18
Copyright © 2015 Yuta Ohashi All Rights Reserved.
Laravelアプリケーションを
Seleniumでテストしてみた
Laravel Meetup Tokyo vol.6
2015.06.12
Yuta Ohashi
2Copyright © 2014 rocros All Rights Reserved.
Selenium?
3Copyright © 2014 rocros All Rights Reserved.
Seleniumっていろいろある?
Selenium RC
Selenium IDE
Selenium WebDriver
…etc
4Copyright © 2014 rocros All Rights Reserved.
Seleniumっていろいろある?
Selenium RC
Selenium IDE
Selenium WebDriver
…etc
5Copyright © 2014 rocros All Rights Reserved.
サンプルデモ
6Copyright © 2014 rocros All Rights Reserved.
https://github.com/blue-goheimochi/laravel-selenium-server
7Copyright © 2014 rocros All Rights Reserved.
やったこと
8Copyright © 2014 rocros All Rights Reserved.
やったこと
PHPUnit経由でSelenium Serverから
FireFoxを実行しブラウザテスト
• PHPUnitを実行
↓
• Selenium Server から FireFox 起動
↓
• Laravelアプリケーションにアクセス
↓
• 結果を表示
9Copyright © 2014 rocros All Rights Reserved.
やったこと詳細
composer.jsonの修正
テストの作成
サーバー環境構築
10Copyright © 2014 rocros All Rights Reserved.
composer.jsonの修正
"require-dev": {
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1“,
"phpunit/phpunit-selenium": ">=1.3.1“
},
“phpunit/phpunit-selenium”: “>=1.3.1“ を追加。
11Copyright © 2014 rocros All Rights Reserved.
テストの作成
<?php
class ExampleSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase {
public $captureSSPath = "/vagrant/src";
protected function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl('http://192.168.33.6/');
}
public function testShowTopPage()
{
$this->url("/");
$this->writeScreenShot( 'top' );
}
public function writeScreenShot( $imgName ) ・・・・・・・・・続く
PHPUnit_Extensions_Selenium2TestCaseを継承した
テストを作成
12Copyright © 2014 rocros All Rights Reserved.
サーバー環境構築
必要なものをインストール&実行
• FireFox
• Xvfb
• Selenium Server
13Copyright © 2014 rocros All Rights Reserved.
PHPUnitを実行!
14Copyright © 2014 rocros All Rights Reserved.
実行結果
top.jpg
15Copyright © 2014 rocros All Rights Reserved.
できること
Seleniumを使ったテストでできること
• DOMで呼び出し(id,class,xpath)してブラウザテスト
• テストデータとかjsonとかで読み込んで使う
• (エラー時に)スクリーンショット撮れる
などなど・・・
実は自分はテストデータ作成とかで使っている。。
Laravelはぶっちゃけ関係ない・・・
16Copyright © 2014 rocros All Rights Reserved.
Laravelはぶっちゃけ関係ない・・・
<?php
class ExampleSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase {
public $captureSSPath = "/vagrant/src";
protected function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl('http://192.168.33.6/');
}
public function testShowTopPage()
{
$this->url("/");
$this->writeScreenShot( 'top' );
}
public function writeScreenShot( $imgName ) ・・・・・・・・・続く
URLの指定を変えればテスト対象も替わる
17Copyright © 2014 rocros All Rights Reserved.
なので・・・
E2Eからテストをはじめてみてもよいかも!
既存のWebアプリケーションあるけどUnitテストそろえるのつらいな・・・
とかそういう状況であればSeleniumを使ったE2Eのテストからはじめてみるのも
いいのかなぁ・・・
とか思っていて、実際にそういう方向から個人的には攻めたりもしています。
18Copyright © 2014 rocros All Rights Reserved.
ご静聴ありがとうございました

More Related Content

What's hot

Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurbSidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Koichiro Sumi
 

What's hot (20)

新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
Kafka・Storm・ZooKeeperの認証と認可について #kafkajpKafka・Storm・ZooKeeperの認証と認可について #kafkajp
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
 
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJJIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
脆弱性スキャナVuls(入門編)
脆弱性スキャナVuls(入門編)脆弱性スキャナVuls(入門編)
脆弱性スキャナVuls(入門編)
 
Raspberry Piで始める自宅サーバー超入門
Raspberry Piで始める自宅サーバー超入門Raspberry Piで始める自宅サーバー超入門
Raspberry Piで始める自宅サーバー超入門
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
[Glitch版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
[Glitch版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ[Glitch版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
[Glitch版] 0から始めようWebAR/VR入門ハンズオン with 織りなすラボ
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
15分で分かる NoOps
15分で分かる NoOps15分で分かる NoOps
15分で分かる NoOps
 
Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
脆弱性スキャナVuls(応用編)
脆弱性スキャナVuls(応用編)脆弱性スキャナVuls(応用編)
脆弱性スキャナVuls(応用編)
 
HoloLens2とMeta QuestではじめるWebXR
HoloLens2とMeta QuestではじめるWebXRHoloLens2とMeta QuestではじめるWebXR
HoloLens2とMeta QuestではじめるWebXR
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurbSidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb
 

Viewers also liked

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 
今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
 

Viewers also liked (20)

3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
 
簡単便利!Laravel Homestead
簡単便利!Laravel Homestead簡単便利!Laravel Homestead
簡単便利!Laravel Homestead
 
いまさらComposer
いまさらComposerいまさらComposer
いまさらComposer
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
 
魔法少女 Laravel 2014
魔法少女 Laravel 2014魔法少女 Laravel 2014
魔法少女 Laravel 2014
 
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
Test-driven Development with Drupal and Codeception (DrupalCamp Brighton)
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
 
Express yourself
Express yourselfExpress yourself
Express yourself
 
Laravel の学び方と得られる学び
Laravel の学び方と得られる学びLaravel の学び方と得られる学び
Laravel の学び方と得られる学び
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室
 
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
 
PHP meets NodeJS
PHP meets NodeJSPHP meets NodeJS
PHP meets NodeJS
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravel
 
Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
 
Node.js入門
Node.js入門Node.js入門
Node.js入門
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
 

Similar to LaravelアプリケーションをSeleniumでテストしてみた

サルから進化(?) Selenium WebDriverの 自動実行プログラム
サルから進化(?)Selenium WebDriverの自動実行プログラムサルから進化(?)Selenium WebDriverの自動実行プログラム
サルから進化(?) Selenium WebDriverの 自動実行プログラム
洋史 東平
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
Yusuke Ando
 

Similar to LaravelアプリケーションをSeleniumでテストしてみた (20)

海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primer
 
Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf
 
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Serviceメルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
 
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
 
サルから進化(?) Selenium WebDriverの 自動実行プログラム
サルから進化(?)Selenium WebDriverの自動実行プログラムサルから進化(?)Selenium WebDriverの自動実行プログラム
サルから進化(?) Selenium WebDriverの 自動実行プログラム
 
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたSelenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
 
[Japan Selenium User Community in Remote] Intro
[Japan Selenium User Community in Remote] Intro[Japan Selenium User Community in Remote] Intro
[Japan Selenium User Community in Remote] Intro
 
Visual Studio Onlineで実践するDevOps手法
Visual Studio Onlineで実践するDevOps手法Visual Studio Onlineで実践するDevOps手法
Visual Studio Onlineで実践するDevOps手法
 
Selenium2(web driver)
Selenium2(web driver)Selenium2(web driver)
Selenium2(web driver)
 
SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告
 
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
 
宣伝:SeleniumConf Tokyo 2019やりますよ!
宣伝:SeleniumConf Tokyo 2019やりますよ!宣伝:SeleniumConf Tokyo 2019やりますよ!
宣伝:SeleniumConf Tokyo 2019やりますよ!
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテスト
 
OSC福岡 20111203
OSC福岡 20111203OSC福岡 20111203
OSC福岡 20111203
 
Openshift 20191121
Openshift 20191121Openshift 20191121
Openshift 20191121
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
Selenium入門
Selenium入門Selenium入門
Selenium入門
 

More from Yuta Ohashi

三項演算子を見ると「ウッ」てなる人のはなし
三項演算子を見ると「ウッ」てなる人のはなし三項演算子を見ると「ウッ」てなる人のはなし
三項演算子を見ると「ウッ」てなる人のはなし
Yuta Ohashi
 
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのことLaravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Yuta Ohashi
 
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとりVue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Yuta Ohashi
 
Laravelで式年遷宮中の現場で うまくいってること・ うまくいっていないこと
Laravelで式年遷宮中の現場でうまくいってること・うまくいっていないことLaravelで式年遷宮中の現場でうまくいってること・うまくいっていないこと
Laravelで式年遷宮中の現場で うまくいってること・ うまくいっていないこと
Yuta Ohashi
 
「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後
Yuta Ohashi
 
Dockerをすこーしさわってみる
DockerをすこーしさわってみるDockerをすこーしさわってみる
Dockerをすこーしさわってみる
Yuta Ohashi
 
5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker
Yuta Ohashi
 

More from Yuta Ohashi (18)

三項演算子を見ると「ウッ」てなる人のはなし
三項演算子を見ると「ウッ」てなる人のはなし三項演算子を見ると「ウッ」てなる人のはなし
三項演算子を見ると「ウッ」てなる人のはなし
 
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合うレガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う
 
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのことLaravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
 
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとりVue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
Vue.jsでFormをAtomic Designしてみた時のコンポーネント間のデータのやりとり
 
Laravelで式年遷宮中の現場で うまくいってること・ うまくいっていないこと
Laravelで式年遷宮中の現場でうまくいってること・うまくいっていないことLaravelで式年遷宮中の現場でうまくいってること・うまくいっていないこと
Laravelで式年遷宮中の現場で うまくいってること・ うまくいっていないこと
 
GoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングするGoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングする
 
初心者がGoでCLIツール作ってみて学んだこと
初心者がGoでCLIツール作ってみて学んだこと初心者がGoでCLIツール作ってみて学んだこと
初心者がGoでCLIツール作ってみて学んだこと
 
今日からGoをはじめる人に伝えたい$GOPATHではまった話
今日からGoをはじめる人に伝えたい$GOPATHではまった話今日からGoをはじめる人に伝えたい$GOPATHではまった話
今日からGoをはじめる人に伝えたい$GOPATHではまった話
 
「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後
 
無知の表明でチームをビルドする
無知の表明でチームをビルドする無知の表明でチームをビルドする
無知の表明でチームをビルドする
 
許可を求めるな謝罪せよ?
許可を求めるな謝罪せよ?許可を求めるな謝罪せよ?
許可を求めるな謝罪せよ?
 
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめたLaravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめた
 
2016年恥ずかしいふりかえり
2016年恥ずかしいふりかえり2016年恥ずかしいふりかえり
2016年恥ずかしいふりかえり
 
My開発環境の話
My開発環境の話My開発環境の話
My開発環境の話
 
テストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったことテストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったこと
 
Dockerをすこーしさわってみる
DockerをすこーしさわってみるDockerをすこーしさわってみる
Dockerをすこーしさわってみる
 
5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker
 
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
 

LaravelアプリケーションをSeleniumでテストしてみた

  • 1. Copyright © 2015 Yuta Ohashi All Rights Reserved. Laravelアプリケーションを Seleniumでテストしてみた Laravel Meetup Tokyo vol.6 2015.06.12 Yuta Ohashi
  • 2. 2Copyright © 2014 rocros All Rights Reserved. Selenium?
  • 3. 3Copyright © 2014 rocros All Rights Reserved. Seleniumっていろいろある? Selenium RC Selenium IDE Selenium WebDriver …etc
  • 4. 4Copyright © 2014 rocros All Rights Reserved. Seleniumっていろいろある? Selenium RC Selenium IDE Selenium WebDriver …etc
  • 5. 5Copyright © 2014 rocros All Rights Reserved. サンプルデモ
  • 6. 6Copyright © 2014 rocros All Rights Reserved. https://github.com/blue-goheimochi/laravel-selenium-server
  • 7. 7Copyright © 2014 rocros All Rights Reserved. やったこと
  • 8. 8Copyright © 2014 rocros All Rights Reserved. やったこと PHPUnit経由でSelenium Serverから FireFoxを実行しブラウザテスト • PHPUnitを実行 ↓ • Selenium Server から FireFox 起動 ↓ • Laravelアプリケーションにアクセス ↓ • 結果を表示
  • 9. 9Copyright © 2014 rocros All Rights Reserved. やったこと詳細 composer.jsonの修正 テストの作成 サーバー環境構築
  • 10. 10Copyright © 2014 rocros All Rights Reserved. composer.jsonの修正 "require-dev": { "phpunit/phpunit": "~4.0", "phpspec/phpspec": "~2.1“, "phpunit/phpunit-selenium": ">=1.3.1“ }, “phpunit/phpunit-selenium”: “>=1.3.1“ を追加。
  • 11. 11Copyright © 2014 rocros All Rights Reserved. テストの作成 <?php class ExampleSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase { public $captureSSPath = "/vagrant/src"; protected function setUp() { $this->setBrowser('firefox'); $this->setBrowserUrl('http://192.168.33.6/'); } public function testShowTopPage() { $this->url("/"); $this->writeScreenShot( 'top' ); } public function writeScreenShot( $imgName ) ・・・・・・・・・続く PHPUnit_Extensions_Selenium2TestCaseを継承した テストを作成
  • 12. 12Copyright © 2014 rocros All Rights Reserved. サーバー環境構築 必要なものをインストール&実行 • FireFox • Xvfb • Selenium Server
  • 13. 13Copyright © 2014 rocros All Rights Reserved. PHPUnitを実行!
  • 14. 14Copyright © 2014 rocros All Rights Reserved. 実行結果 top.jpg
  • 15. 15Copyright © 2014 rocros All Rights Reserved. できること Seleniumを使ったテストでできること • DOMで呼び出し(id,class,xpath)してブラウザテスト • テストデータとかjsonとかで読み込んで使う • (エラー時に)スクリーンショット撮れる などなど・・・ 実は自分はテストデータ作成とかで使っている。。 Laravelはぶっちゃけ関係ない・・・
  • 16. 16Copyright © 2014 rocros All Rights Reserved. Laravelはぶっちゃけ関係ない・・・ <?php class ExampleSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase { public $captureSSPath = "/vagrant/src"; protected function setUp() { $this->setBrowser('firefox'); $this->setBrowserUrl('http://192.168.33.6/'); } public function testShowTopPage() { $this->url("/"); $this->writeScreenShot( 'top' ); } public function writeScreenShot( $imgName ) ・・・・・・・・・続く URLの指定を変えればテスト対象も替わる
  • 17. 17Copyright © 2014 rocros All Rights Reserved. なので・・・ E2Eからテストをはじめてみてもよいかも! 既存のWebアプリケーションあるけどUnitテストそろえるのつらいな・・・ とかそういう状況であればSeleniumを使ったE2Eのテストからはじめてみるのも いいのかなぁ・・・ とか思っていて、実際にそういう方向から個人的には攻めたりもしています。
  • 18. 18Copyright © 2014 rocros All Rights Reserved. ご静聴ありがとうございました