SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
はじめての
Wallaby.js
2015/12/7 @subuta
このスライドは
•Goodpatch Advent
Calendar 2015 の

7日目です。
•アイキャッチのロゴは

Goodpatchのデザイナの
@ryokoさんが作ってくれ
ました。ありがたい・・
•公式のロゴはコレ
Wallaby.jsとは?
•JavaScriptのテストランナー

(node.jsもブラウザも実行できる。
•ソースの変更を即時に検知して、必要なテストだ
けを並列で実行する。 - 早い!
•カバレッジを表示したり、ブラウザ上での最後の
実行結果のキャプチャを表示できたりかゆいとこ
ろに手が届く。
• 👽有料(個人向け:$140/法人向け:$220)です。👽
インストール
1.http://wallabyjs.com/ から購入。
2.自分のIDEに合ったプラグインを

ダウンロードする。
3.IDE上でプラグインをインストールする。
4.Wallabyの起動後に表示されるActivationの
プロンプトに、メールで来たライセンスキー
を入力する。(もちろんトライアル利用も可
レシピ
•
Wallaby.js

- 主役。
• jQuery

- これのテストを書く
• Mocha

- これでテストを書く
•
そのほか(説明しません)

- Gulp / Babel / 

webpack
では、はじめましょう!
シナリオ
• コンソールっぽいメッセー
ジ表示をするWebアプリ
ケーションを作る。
• 以下のリポジトリをクロー
ンしてください。

https://github.com/
subuta/introduction-to-
wallayjs
リポジトリの構成
• /src - ソース(今回は
JavaScriptのみをいじっ
ていきます。)
• /tests - mochaのテスト
• /example - 利用方法のサ
ンプル
• wallaby.js - Wallaby.js
のテストに関する設定
テストの設定
•
JSON形式(wallaby.json)やJavaScriptファ
イル(wallaby.js)として定義する。
• 設定値のオブジェクトを返すfunctionと
して定義する。
• files - ソース(カバレッジに含まれる)
• tests - テスト
• testFramework - どのテスト用のフレー
ムワークを利用するか
• compilers - ソースファイルのコンパイ
ルの設定(ES6/Coffee/TypeScript/JSXな
ど)
• 詳細はコチラへ
WebStormへの
テスト実行設定の追加
1.メニューから`Run - Edit Configrations`を選択する。
2.左上の追加(+)アイコンからWallaby.jsを追加する。
3.Name欄に任意の名前を入力し、Configuration File欄から

設定ファイル(wallaby.js)を選択する。
4.右下の`OK`ボタンを押す。
5.詳細はこの辺り。他のIDE(Visual Studio/Atomなど)にも対応してるよ!
実装の流れ
•現状は、引数に渡された要素にスタイル用のク
ラスと”$ hello”を足すだけのライブラリ。
•コレに対して、以下の機能を足しながら、説明
していこうと思います。
•STEP1 - jQueryプラグイン化
•STEP2 - メッセージの変更
•STEP3 - アニメーションの追加
やること
•STEP1 - jQueryプラグイン化
•STEP2 - メッセージの変更
•STEP3 - アニメーションの追加
1. jQueryプラグイン化
•現状はES6のモジュールになっている
ので、そのままだとindex.htmlから
呼べない・・・
•jQueryプラグイン化して、だれでも
簡単に呼べるようにする!
1. 実装の流れ
• wallabyを実行すると、IDE内
のコンソールに結果が表示。
• IDEの行番号の横にカバレッ
ジが表示(緑がOK/灰色がテス
ト無し/赤色がテストNG)
• エラー時は該当行の行末にエ
ラーメッセージが表示
• 保存しなくても変更を検知し
てテストを実施するよ!
https://youtu.be/YOcV8ruh4i4
やること
•STEP1 - jQueryプラグイン化
•STEP2 - メッセージの変更
•STEP3 - アニメーションの追加
2. メッセージの変更
• せっかくなので、`hello`か
ら`hello wallaby.js`に変
えてみる。
• 既に有るテストが失敗する
ので、直していきます!
2. 実装の流れ
• リファクタリングすると、
左側のカバレッジからす
でにあるテストケースが
失敗した事が、すぐ分かり
ます。
• 失敗したテストケースを
修正することで、デグレ
を防ぐことができます。
https://youtu.be/lGjVgGe95ac
やること
•STEP1 - jQueryプラグイン化
•STEP2 - メッセージの変更
•STEP3 - アニメーションの追加
3. アニメーションの追加
• これだとメッセージ感が
薄いので、タイピングし
てるっぽいアニメーショ
ンを足したい。
• 良い感じなTyped.jsを使い
ます!
3. 実装の流れ
• Wallaby.jsとSinon.jsを組
み合わせる事で、通常だと
やりづらい、細かな挙動
のテストが効率よく実装出
来ます。
• Sinon.jsの
FakeTimer(setTimeoutを
スキップ)は便利なので、
活用してみてください!
https://youtu.be/IMaHDgL4dCk
まとめ
•こんな感じになりました。
•wallaby.jsを使う事で、IDEの機能を活か
して、高速にテストを実装する事が出来
ます。
•まだまだ紹介できない機能はたくさん有
りますし、流行りのAngularJS/Reactな
どとの連携例もたくさん有ります!
まとめ
•[今まで(with istanbul/isparta)]

テストのカバレッジ(%)を見ながら、指
標値(例:80%)を下ったら、テストを追加
する。
•[これから(with wallaby.js)]

ソースを実装しながら、常に表示される
カバレッジを見つつ、カバーできてない
部分のテストを追加していく。
スライドは以上です。
最後までお付き合いいただき、
ありがとうございました!

Mais conteúdo relacionado

Mais procurados

データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-Koichi Inami
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
「DevOps with GitLab」でDevOps環境をセットアップしてみた!
「DevOps with GitLab」でDevOps環境をセットアップしてみた!「DevOps with GitLab」でDevOps環境をセットアップしてみた!
「DevOps with GitLab」でDevOps環境をセットアップしてみた!VirtualTech Japan Inc./Begi.net Inc.
 
型安全性入門
型安全性入門型安全性入門
型安全性入門Akinori Abe
 
サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦Teppei Sato
 
Git Flowを運用するために
Git Flowを運用するためにGit Flowを運用するために
Git Flowを運用するためにShun Tsunoda
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだTetsuya Kaneuchi
 
広告がうざい
広告がうざい広告がうざい
広告がうざいGen Ito
 
他山の石勉強会 DRBD編
他山の石勉強会 DRBD編他山の石勉強会 DRBD編
他山の石勉強会 DRBD編tkomachi
 
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾 ~Microsoft の xDR で攻撃者を追え!!~​
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾  ~Microsoft の xDR で攻撃者を追え!!~​【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾  ~Microsoft の xDR で攻撃者を追え!!~​
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾 ~Microsoft の xDR で攻撃者を追え!!~​日本マイクロソフト株式会社
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)Wataru NOGUCHI
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較Shinya Sugiyama
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術KLab Inc. / Tech
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Minoru Maeda
 
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するC++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するYou&I
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 

Mais procurados (20)

データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-データモデリング入門-astah*を使って、TMの手法を使う-
データモデリング入門-astah*を使って、TMの手法を使う-
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 
「DevOps with GitLab」でDevOps環境をセットアップしてみた!
「DevOps with GitLab」でDevOps環境をセットアップしてみた!「DevOps with GitLab」でDevOps環境をセットアップしてみた!
「DevOps with GitLab」でDevOps環境をセットアップしてみた!
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦
 
Git Flowを運用するために
Git Flowを運用するためにGit Flowを運用するために
Git Flowを運用するために
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだ
 
広告がうざい
広告がうざい広告がうざい
広告がうざい
 
他山の石勉強会 DRBD編
他山の石勉強会 DRBD編他山の石勉強会 DRBD編
他山の石勉強会 DRBD編
 
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾 ~Microsoft の xDR で攻撃者を追え!!~​
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾  ~Microsoft の xDR で攻撃者を追え!!~​【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾  ~Microsoft の xDR で攻撃者を追え!!~​
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾 ~Microsoft の xDR で攻撃者を追え!!~​
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術モバイルアプリの高速で安定したビルドを支えるJenkins運用術
モバイルアプリの高速で安定したビルドを支えるJenkins運用術
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門
 
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するC++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 

Semelhante a はじめてのWallaby.js

Application insights で行ってみよう
Application insights で行ってみようApplication insights で行ってみよう
Application insights で行ってみようKazushi Kamegawa
 
Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編Yasuharu Hayami
 
ビルド職人頼みの自社製品リリースを、CI可能にした取り組み
ビルド職人頼みの自社製品リリースを、CI可能にした取り組みビルド職人頼みの自社製品リリースを、CI可能にした取り組み
ビルド職人頼みの自社製品リリースを、CI可能にした取り組みStudy Group by SciencePark Corp.
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテストYoichiro Sakurai
 
開発を彩る技術たち
開発を彩る技術たち開発を彩る技術たち
開発を彩る技術たちOda Shinsuke
 
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionKazuchika Sekiya
 
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money FowardNaoki Shimizu
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理You&I
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験についてRakuten Group, Inc.
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdeviofd0
 
次世代エンタープライズの開発環境をライブで読み解く
次世代エンタープライズの開発環境をライブで読み解く次世代エンタープライズの開発環境をライブで読み解く
次世代エンタープライズの開発環境をライブで読み解くShin Takeuchi
 
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaKeycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaYoshimasa Tanabe
 
第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料tantack
 
2016年第一回プレ卒研in山口研
2016年第一回プレ卒研in山口研2016年第一回プレ卒研in山口研
2016年第一回プレ卒研in山口研dmcc2015
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法João Orui
 
JavaとScalaとGroovyと
JavaとScalaとGroovyとJavaとScalaとGroovyと
JavaとScalaとGroovyとirof N
 

Semelhante a はじめてのWallaby.js (20)

Application insights で行ってみよう
Application insights で行ってみようApplication insights で行ってみよう
Application insights で行ってみよう
 
いまさら触るAwt
いまさら触るAwtいまさら触るAwt
いまさら触るAwt
 
Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編Groovyスクリプト"再"入門 起動編
Groovyスクリプト"再"入門 起動編
 
ビルド職人頼みの自社製品リリースを、CI可能にした取り組み
ビルド職人頼みの自社製品リリースを、CI可能にした取り組みビルド職人頼みの自社製品リリースを、CI可能にした取り組み
ビルド職人頼みの自社製品リリースを、CI可能にした取り組み
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテスト
 
開発を彩る技術たち
開発を彩る技術たち開発を彩る技術たち
開発を彩る技術たち
 
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
 
実戦Scala
実戦Scala実戦Scala
実戦Scala
 
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理Pivotal Trackerでアジャイルなプロジェクト管理
Pivotal Trackerでアジャイルなプロジェクト管理
 
Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
 
次世代エンタープライズの開発環境をライブで読み解く
次世代エンタープライズの開発環境をライブで読み解く次世代エンタープライズの開発環境をライブで読み解く
次世代エンタープライズの開発環境をライブで読み解く
 
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷javaKeycloak で SSO #渋谷java
Keycloak で SSO #渋谷java
 
第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料
 
2016年第一回プレ卒研in山口研
2016年第一回プレ卒研in山口研2016年第一回プレ卒研in山口研
2016年第一回プレ卒研in山口研
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
 
JavaとScalaとGroovyと
JavaとScalaとGroovyとJavaとScalaとGroovyと
JavaとScalaとGroovyと
 

はじめてのWallaby.js