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

ReactとSeleniumの幸せな関係
ReactとSeleniumの幸せな関係ReactとSeleniumの幸せな関係
ReactとSeleniumの幸せな関係Akira Kuratani
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいYutoNishine
 
SIerでもSphinxを使いたい!総括
SIerでもSphinxを使いたい!総括SIerでもSphinxを使いたい!総括
SIerでもSphinxを使いたい!総括kk_Ataka
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例Naoya Kishimoto
 
12 分くらいで知るLuaVM
12 分くらいで知るLuaVM12 分くらいで知るLuaVM
12 分くらいで知るLuaVMYuki Tamura
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonadKouji Matsui
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイドAzure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイドYoichi Kawasaki
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころTakayuki Shimizukawa
 
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集akipii Oga
 
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみるCloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる虎の穴 開発室
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
2D格闘ゲームにおけるユーザビリティとゲームデザインについて2D格闘ゲームにおけるユーザビリティとゲームデザインについて
2D格闘ゲームにおけるユーザビリティとゲームデザインについてKoji Morikawa
 
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページCLARA ONLINE, Inc.
 
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...Kohei Nakamura
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修akkuma
 

What's hot (20)

ReactとSeleniumの幸せな関係
ReactとSeleniumの幸せな関係ReactとSeleniumの幸せな関係
ReactとSeleniumの幸せな関係
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
 
SIerでもSphinxを使いたい!総括
SIerでもSphinxを使いたい!総括SIerでもSphinxを使いたい!総括
SIerでもSphinxを使いたい!総括
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
12 分くらいで知るLuaVM
12 分くらいで知るLuaVM12 分くらいで知るLuaVM
12 分くらいで知るLuaVM
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonad
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみた
 
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイドAzure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
 
エキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころエキスパートPythonプログラミング改訂3版の読みどころ
エキスパートPythonプログラミング改訂3版の読みどころ
 
進化するArt
進化するArt進化するArt
進化するArt
 
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
 
Cloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみるCloud runのオートスケールを検証してみる
Cloud runのオートスケールを検証してみる
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
2D格闘ゲームにおけるユーザビリティとゲームデザインについて2D格闘ゲームにおけるユーザビリティとゲームデザインについて
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
 
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
 
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修
 

Viewers also liked

簡単便利!Laravel Homestead
簡単便利!Laravel Homestead簡単便利!Laravel Homestead
簡単便利!Laravel HomesteadShota Inoue
 
いまさらComposer
いまさらComposerいまさらComposer
いまさらComposerMika Kane
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>LaravelハンズオンセミナーTatsuyoshi Mashiko
 
魔法少女 Laravel 2014
魔法少女 Laravel 2014魔法少女 Laravel 2014
魔法少女 Laravel 2014Kenichi Mukai
 
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)Cogapp
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよMasaru Matsuo
 
Laravel の学び方と得られる学び
Laravel の学び方と得られる学びLaravel の学び方と得られる学び
Laravel の学び方と得られる学びMasaru Matsuo
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室Yusuke Ando
 
第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.5Kenichi Mukai
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDDYuuki Takezawa
 
今日から始めるLaravel
今日から始めるLaravel今日から始めるLaravel
今日から始めるLaravelMasaru Matsuo
 
Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門leverages_event
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~leverages_event
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみたTakeo Noda
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Nobuhiro Nakashima
 

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カンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014Nozomi Ito
 
「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界「Selenium実践入門」で学ぶテスト自動化の世界
「Selenium実践入門」で学ぶテスト自動化の世界Nozomi Ito
 
Selenium IDE for primer
Selenium IDE for primerSelenium IDE for primer
Selenium IDE for primeryasukoS
 
Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf Practical migration from JSP to Thymeleaf
Practical migration from JSP to Thymeleaf Toshiki Iga
 
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Serviceメルカリの開発スピードと品質を支える Selenium on Azure Kubernetes Service
メルカリの開発スピードと品質を支える Selenium on Azure Kubernetes ServiceTadashi Nemoto
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会Yuki Okada
 
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介Yuki Okada
 
サルから進化(?) Selenium WebDriverの 自動実行プログラム
サルから進化(?)Selenium WebDriverの自動実行プログラムサルから進化(?)Selenium WebDriverの自動実行プログラム
サルから進化(?) Selenium WebDriverの 自動実行プログラム 洋史 東平
 
Selenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたSelenium WebDriver,Cypress,TestCafeの違いを調べてみました
Selenium WebDriver,Cypress,TestCafeの違いを調べてみましたMaiKaneko4
 
[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] IntroWoohyeok Kim
 
Visual Studio Onlineで実践するDevOps手法
Visual Studio Onlineで実践するDevOps手法Visual Studio Onlineで実践するDevOps手法
Visual Studio Onlineで実践するDevOps手法Takashi Takebayashi
 
SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告aha_oretama
 
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例Takeshi Kondo
 
宣伝:SeleniumConf Tokyo 2019やりますよ!
宣伝:SeleniumConf Tokyo 2019やりますよ!宣伝:SeleniumConf Tokyo 2019やりますよ!
宣伝:SeleniumConf Tokyo 2019やりますよ!Naruhiko Ogasawara
 
PHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストPHPとTravis CIでブラウザテスト
PHPとTravis CIでブラウザテストYusuke Ando
 
Selenium入門
Selenium入門Selenium入門
Selenium入門onozaty
 

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
 
レガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合うレガシーなWebアプリケーションと向き合う
レガシーなWebアプリケーションと向き合う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
 
GoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングするGoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングするYuta Ohashi
 
初心者がGoでCLIツール作ってみて学んだこと
初心者がGoでCLIツール作ってみて学んだこと初心者がGoでCLIツール作ってみて学んだこと
初心者がGoでCLIツール作ってみて学んだことYuta Ohashi
 
今日からGoをはじめる人に伝えたい$GOPATHではまった話
今日からGoをはじめる人に伝えたい$GOPATHではまった話今日からGoをはじめる人に伝えたい$GOPATHではまった話
今日からGoをはじめる人に伝えたい$GOPATHではまった話Yuta Ohashi
 
「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後「Laravelから学びレガシーと闘いはじめた」のその後
「Laravelから学びレガシーと闘いはじめた」のその後Yuta Ohashi
 
無知の表明でチームをビルドする
無知の表明でチームをビルドする無知の表明でチームをビルドする
無知の表明でチームをビルドするYuta Ohashi
 
許可を求めるな謝罪せよ?
許可を求めるな謝罪せよ?許可を求めるな謝罪せよ?
許可を求めるな謝罪せよ?Yuta Ohashi
 
Laravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめたLaravelから学びレガシーと闘いはじめた
Laravelから学びレガシーと闘いはじめたYuta Ohashi
 
2016年恥ずかしいふりかえり
2016年恥ずかしいふりかえり2016年恥ずかしいふりかえり
2016年恥ずかしいふりかえりYuta Ohashi
 
My開発環境の話
My開発環境の話My開発環境の話
My開発環境の話Yuta Ohashi
 
テストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったことテストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったことYuta Ohashi
 
Dockerをすこーしさわってみる
DockerをすこーしさわってみるDockerをすこーしさわってみる
DockerをすこーしさわってみるYuta Ohashi
 
5分でなんとなーくわかるDocker
5分でなんとなーくわかるDocker5分でなんとなーくわかるDocker
5分でなんとなーくわかるDockerYuta Ohashi
 
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!
WindowsでもVagrantとChefでLaravelのローカル環境を(自分で)つくりたい!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のローカル環境を(自分で)つくりたい!
 

Recently uploaded

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Recently uploaded (8)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

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. ご静聴ありがとうございました