e2e_sushiとtemplate_literal_sushiでPageObjectパターンの話をした
vivaldi_sushiとe2e_sushiと隣でやってたtemplate_literal_sushi
に参加した
- #template_literal_sushi と #e2e_sushi のログ - Togetterまとめ
- ログはいつもどおり記憶だよりで色々間違ってる気がするので気になるところは本人に聞こう
Vivaldi_sushi
- Vivaldiの話 付く前に終わってた
Testium - azu
自分はTestiumとPageObjectパターンの話をしました。
- Testiumって何?
- 同期的なWebDriver API
- PageObjectパターン
という感じの内容です。
Testium関係で色々報告したりPR送ったりしたので、自分が気になるところは大体直った感じがします。 後はgroupon-testium/webdriver-http-syncのAPIが順次実装されていけば、他のIntegrationテストフレームワークと同等の機能になる気がします。
- Implement Element.prototype.getElement(s) by azu · Pull Request #22 · groupon-testium/webdriver-http-sync
- doesn’t deal with multibyte unicode characters · Issue #124 · groupon-testium/testium
- create example repo(s) · Issue #126 · groupon-testium/testium
- Add Element.prototype.getElement(s) tests by azu · Pull Request #129 · groupon-testium/testium
- Update Alerts in API.md by azu · Pull Request #125 · groupon-testium/testium
- fix example of .testiumrc in README by azu · Pull Request #123 · groupon-testium/testium
Selenium + Sinon.js // Speaker Deck - hokaccha
- E2Eテスト時にSinon.jsでstubしてしまう話
余談
#e2e_sushi @teppeis さんのテスト分類講座を聞いてる
— azu (@azu_re) January 27, 2015
そもそも E2Eテスト or Integrationテスト or UIテスト or 受け入れテスト ??
-
UIテストという単語は使うべきではない
- UX的なコンテキストのUIテスト(QA的な話)
- Seleniumを使ったUIのテストが混じってしまう
- 事例: 今夜、Webアプリの正しいUIテストの方法が決定されます : ATND
- E2Eテスト
- 本来はAPI先のサーバ等も含めてEnd to Endなテストをすること
- Protractorあたりが使い始めてフロントエンドのコンテキストだと若干意味が曖昧
- 例えば、HTMLをローカルサーバで表示してテストするのもE2Eなのか?(別にサーバのAPIを叩くわけじゃない)
- UI Automation的なテストの事をいったりしてる
- E2EがIntegrationを含むこともある
- Integrationテスト
- システム同士が上手くつながってるのかをテストする
- ある境界を含めたテスト
- 受け入れテスト
- 要求条件を満たすかどうかのテスト
- 他のやつとはレイヤーが違う感じだけど、
- 要求条件がE2E的なことなら、他のテストを含んでいることがあってやっぱり曖昧
- 新しい用語が欲しい感じがする
- 字面的に日本語だと受け入れてテストとか統合テストか何かアレな感じがする…
- ツールが◯◯ test frameworkって名乗るのが難しい感じがする
本来は
#e2e_sushi 「サーバがあることをテストしたいからE2Eテスト」
— azu (@azu_re) January 27, 2015
E2Eテストの独立性 // Speaker Deck
- E2Eテストのテストケースの初期化コストは高い
- しかし、前後のテストに依存してると管理が大変
- それぞれのテストケース毎にデータベースとかも初期化する
- => Seleniumのテストとかに膨大な時間がかかる一因
- みなさんどうしてるか?
- テストケースレベルで毎回初期化してる *2
- ハイパフォーマンスSeleniumテスト@サイボウズ
JavaScriptを実行した結果をE2Eテストする
- JavaScriptを実行した結果が上手く行ったのかをテスト
- 副作用を検証する使い方など
Node.jsとio.js - yosuke_furukawa
#template_literal_sushi iojs会長の node.js + io.jsの話
— azu (@azu_re) January 27, 2015
- io.jsのEventEmitterに
off
を加えるissueを立てた話
#template_literal_sushi onの対義語がoffじゃないだろという-1意見
— azu (@azu_re) January 27, 2015
template literal と io.js
-
util.format
が遅いのでtemplate literalにしたい - io.js & Node.jsはClosure Linterを使ってる
- Closure Linterがtemplate literalをサポートしてないのでテストが落ちる話
ReactStyle - kyo_ago
- ReactStyleについて
- js-next/react-style
var styles = ReactStyle`
color: red;
background-color: white;
`
という感じでTemplate literalとあわせて書ける
Closure Templateは何をやってるのか? セキュリティ編 - teppeis
Need Slide
最近Mavenになったgoogle/closure-templates。
#template_literal_sushi 脱Ant!!祝Maven化!
— azu (@azu_re) January 27, 2015
- Closure Templatesのオートエスケープが最強すぎる件 - teppeis blogの続き
- 今はStrict Autoescapingというものが作られてる
- Contextual Autoescapingの発展形
#template_literal_sushi テンプレートをパース -> コンテキスト別にエスケープする関数でラップしたものを組み立てる。
(正しくないHTMLなどは投げ捨てられる)
Contextual Autoscaping
=> Strict Autoescaping🆕
— azu (@azu_re) January 27, 2015
#template_literal_sushi Strict AutoescapingはContextual Autoscapingの上に型付文字列を追加した機能
— azu (@azu_re) January 27, 2015
クライアントサイドでAPIモック - jxck
- localStorageをmockにしてjsonengineのクライアントを開発する - Block Rockin’ Codes
- -> CouchDBをmockにしてAPI駆動開発(仮) - Block Rockin’ Codes
- -> ServiceWorker を使った XHR のモックテスト - Block Rockin’ Codes (イマココ)
Fetch API polyfill - jxck
- github/fetch は Isomorphic じゃない
- Fetch APIはXHRのラッパではなくて、本来はXHRをFetch APIで実現できる機能(低レイヤー)
- HTML5 ConfでもExtensible Webの低レイヤーの話が話題になった
- 低レイヤーのAPIが来ることで本当は何が嬉しいのかという話
- Fetch API 解説、または Web において "Fetch する" とは何か? - Block Rockin’ Codes
- Fetch APIのアルゴリズムはPure JavaScriptで実装できるもの
- Jxck/fetch
- Fetch APIが実装できれば、Nodeにも本物のXHRが実装できるはず
Fetch API polyfillに必要なものの話
#e2e_sushi FetchAPIは`URL`に依存してるので、まずは`URL`のpolyfillを作るところから始まった
— azu (@azu_re) January 27, 2015
- URLが必要
- URLSearchParamsが必要
- URLエンコードするのに、TextEncoder & TextDecoderが必要
- TextDecoderは色々な文字コードがある(大変)
- UTF-8以外はLegacy扱い -> UTF-8を前提にしておく
- Jxck/utf8-encoding
#template_literal_sushi 文字コードは闇ですね
— azu (@azu_re) January 27, 2015
その他
- Open Socialの話
- Social要素はいらないけどウィジェットは欲しかったり、逆もあった
- 誰も触らなくなってしまった
- iGoogleで使えたのは良かった
#e2e_sushi open socialはsocialとウィジェットが悪魔合体した仕様
— azu (@azu_re) January 27, 2015
- phantomjsを直でつかってますか?
- スクレイピング用途ならWebDriver API経由でやった方が、乗り換えが効いて安全
#e2e_sushi $ phantomjs script.jsみたいな使い方する人はもういない。
(WebDriver API経由とかで使ったほうが他に乗り換えできるので安全)
— azu (@azu_re) January 27, 2015
お疲れ様でした。次は #crosushiとのこと
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。