Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kata_junn
October 20, 2021
Technology
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!
CodeceptJS is god
kata_junn
October 20, 2021
More Decks by kata_junn
See All by kata_junn
[OutSystems] ユニットテスト in OutSystems
kata_junn
0
610
O11?ODC?一体何が違うのさ?_v1.0.2.pdf
kata_junn
0
1.6k
[OutSystems] O11 ユーザーに贈る ODC 移行に備えておくと良さそうなコト
kata_junn
0
680
ODC を乗りこなすために理解しておくと良いかもしれないいくつかのこと~Case:External Logic~
kata_junn
0
510
[OutSystems] シン・とりあえず Reactive なプロジェクトにはこれ導入しておくと良い規約
kata_junn
0
320
[OutSystems] Testing Framework がいい。とてもいい。
kata_junn
0
1.9k
[OutSystems] OutSystems が誘う Null がない世界の罠
kata_junn
0
1.1k
[OutSystems] とりあえず Reactive なプロジェクトにはこれ導入しておくと良いって規約
kata_junn
1
1.8k
[Agile][Scrum] 転リファ
kata_junn
3
11k
Other Decks in Technology
See All in Technology
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
610
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
Tab5をRubyで動くパソコンにする
kishima
2
350
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
180
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
200
Omarchy Quattro の日本語設定周り
simosako
2
150
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
120
消えない 動かない 効かない
yama3133
1
120
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
280
20260912_スクラムにジェネラリストは必要か
ryugen04
0
380
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
150
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
130
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
Google's AI Overviews - The New Search
badams
0
1.6k
Accessibility Awareness
sabderemane
1
210
Utilizing Notion as your number one productivity tool
mfonobong
4
590
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Designing for humans not robots
tammielis
254
26k
How to train your dragon (web standard)
notwaldorf
97
6.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
Transcript
CodeceptJS を使って 快適な E2E テストライフを送ろう! 片野 潤一 伊藤忠テクノソリューションズ株式会社 アジャイル営業推進部 OutSystems
Developer Conference 2021
Java Struts/Spring/MyBATIS 2005 2014 OutSystems Developer@3人(6か月) Developer && TL@約10人(24か月) OutSystems
推進 2019 2020 Scrum on AWS Role:Developer TypeScript Serverless Dynamo, Lambda, S3, SQS, Kinesis, Athena Angular 認定スクラムマスター(CSM) AWS Certified DevOps Engineer - Professional OutSystems Expert Traditional Web Developer OutSystems Architecture Specialist 好き:リアル脱出ゲーム、低温調理、スパイス、モブプロ、DQW、ゼルダ 20% OutSystems OutSystems 推進 Expert Service BootCamp 講師 PoC 提案+実施 now!! 2 片野 潤一(かたじゅん) Twitter:@kata_junn
書いてるよ!!! OutSystems プロジェクトで E2E テストを… 書いてないよ!!! E2E しらんよ!!! Zoom の
↓ の機能で枠内に✓とかつけてね!
今日の話が響きそうな人 ⚫ E2E テストってなんだよ、な人 ⚫ E2E テストにこれから取り組むぞ!な人 ⚫ E2E テストの実装やメンテに大変な思いをしている人
4
CodeceptJS こーどせぷとじぇいえす
CodeceptJS https://codecept.io/ Node.js で実装された E2E フレームワーク ヘルパーとして Webdriver や Puppeteer
などが選択でき、本体はそれらの Wrapper API を提供 https://codecept.io/basics/
E2E テスト いーつーいー/えんどつーえんど
E2E テスト “ エンドツーエンドテスト(E2Eテスト)とは、アプリケーションのワークフロー を最初から最後までテストすることを含むソフトウェアテスト方法を指します。こ の方法は基本的に、実際のユーザーシナリオを複製して、システムの統合とデータ の整合性を検証できるようにすることを目的としています。 https://www.browserstack.com/guide/end-to-end-testing
E2E テスト “ エンドツーエンドテスト(E2Eテスト)とは、アプリケーションのワークフロー を最初から最後までテストすることを含むソフトウェアテスト方法を指します。こ の方法は基本的に、実際のユーザーシナリオを複製して、システムの統合とデータ の整合性を検証できるようにすることを目的としています。 https://www.browserstack.com/guide/end-to-end-testing ブラウザや実機でぽちぽちするテスト
積み重なった機能群 (インクリメント)を 継続的にデリバリーするために 事実上必須だから なぜ人類は E2E テストをプログラムで実装するのか
E2E が快適でなかった時代 あるいは OutSystems での E2E 実装の思い出
OutSystems での E2E 実装の思い出 ⚫ [Traditional] ID が自動生成されるので後方一致検索する ⚫ Input_Hoge,
Select_Hoge を “Hoge” で検索すると混ざるので注意 ⚫ XPath やら CSS セレクタで特定する ⚫ HTML に独自属性(data-*)を付けて頑張って一意にする 12 参考: https://success.outsystems.com/Documentation/How-to_Guides/DevOps/How_to_do_UI_testing_with_Selenium
テストページに飛んでボタンを押してテキストを入力する with Puppeteer
テストページに飛んで テストページに飛んでボタンを押してテキストを入力する with Puppeteer
テストページに飛んで ボタンを押して テストページに飛んでボタンを押してテキストを入力する with Puppeteer
テストページに飛んで テキストを入力する ボタンを押して テストページに飛んでボタンを押してテキストを入力する with Puppeteer
OutSystems での E2E 実装の思い出 ⚫ [Traditional] ID が自動生成されるので後方一致検索する ⚫ Input_Hoge,
Select_Hoge を “Hoge” で検索すると混ざるので注意 ⚫ XPath やら CSS セレクタで特定する ⚫ HTML に独自属性(data-*)を付けて頑張って一意にする ⚫ 上記の事情から、画面実装を変更すると大体のテストは死ぬ ※ OutSystems に限らない話であり、OutSystems でもこういった問題は避けられないよ、という意味 17 参考: https://success.outsystems.com/Documentation/How-to_Guides/DevOps/How_to_do_UI_testing_with_Selenium
E2E テストの突然死に対するアプローチ ⚫ 死ぬたびにメンテ ⚫ やがて実装者の精神も死ぬ諸刃の剣 ⚫ Page Object Pattern
で影響範囲を狭める ⚫ E2E テスト実装の保守性を高める方法論 ⚫ DOM 検索をいい感じにする ⚫ CodeceptJS の Semantic Locator がいい感じに適合 18
Semantic Locator せまんてぃっく ろけーたー
Semantic Locator
Semantic Locator
Semantic Locator (速度はちょっぴり犠牲になるけど) Label とか文言でマッチすれば探し当ててくれる
Traditional Reactive
Traditional Reactive Semantic Locator 結果は等価
テストページに飛んでボタンを押してテキストを入力する with CodeceptJS
テストページに飛んでボタンを押してテキストを入力する with CodeceptJS テキスト(等)を入力する ボタンを押して テストページに飛んで
Semantic Locator でコードの可読性を高くできる(もちろんセレクタ指定も可能) 失敗時のスクショを自動的に保存 アクションごとにスクショを保存して簡易なレポートを作成(Allure と連携もできる) Translator でログがわかりやすい CodeceptJS の良いところ
「画面に対してテストを行う」文脈で E2E テストが書ける CodeceptJS と OutSystems の相性の良いところ Semantic Locator の恩恵
Traditional と Reactive を区別することなくテストコードが書ける プロダクト実装と E2E 実装の密さを軽減できる ServiceStudio での UI 実装の一覧性があまり快適でないことへの対策
書いてみたので Demo します! ひゃくぶんはいっけんにしかず
None
URL 以外コードは同じ
まとめ ⚫ プロダクトのリリースサイクルを早めるためにはテスト自動化が必須 ⁻ ユニットテストは言わずもがな ⁻ E2E テストも例外ではない ⚫ E2E
テスト実装はガラス細工のように脆く壊れやすい繊細さを持つ ⁻ 画面実装を変えると大体突然死 ⚫ 突然死の対抗手段の一つが Semantic Locator ⁻ CodeceptJS の実装が OutSystems と良相性 ⁻ 可読性やポータビリティが得られる代わりに速度は犠牲になる ⚫ CodeceptJS で快適な E2E テストライフを手に入れよう!!
CodeceptJS 使いたくなった? なった!!! いや… Zoom の ↓ の機能で枠内に✓とかつけてね!
ご清聴ありがとうございました ご質問があれば お願いします!
参考になる CodeceptJS 関連の記事たち CodeceptJSで、非エンジニアでも読みやすいテストコードを書く https://qiita.com/tsuemura/items/70b156baecfbcffb03fb E2Eテストの面倒くさいことはCodeceptJSにお願いしよう https://qiita.com/Kesin11/items/11da1b4cf9d58e4dd9af エンジニア視点で見たCodeceptJSのよさ https://qiita.com/tsuemura/items/fc0c74884cb3c6760a75 我が名は神龍……どんなテストもひとつだけ自動化してやろう
https://qiita.com/tsuemura/items/56ba9942565963858d8f CodeceptJSのfuzzy locatorは若干遅いことがある https://qiita.com/jyunji_watanabe/items/c4c9d31397c7e0f4372d