Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!

kata_junn
October 20, 2021

[OutSystems] CodeceptJS で快適な E2E ライフを送ろう!

CodeceptJS is god

kata_junn

October 20, 2021
Tweet

More Decks by kata_junn

Other Decks in Technology

Transcript

  1. 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
  2. CodeceptJS https://codecept.io/ Node.js で実装された E2E フレームワーク ヘルパーとして Webdriver や Puppeteer

    などが選択でき、本体はそれらの Wrapper API を提供 https://codecept.io/basics/
  3. 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
  4. 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
  5. E2E テストの突然死に対するアプローチ ⚫ 死ぬたびにメンテ ⚫ やがて実装者の精神も死ぬ諸刃の剣 ⚫ Page Object Pattern

    で影響範囲を狭める ⚫ E2E テスト実装の保守性を高める方法論 ⚫ DOM 検索をいい感じにする ⚫ CodeceptJS の Semantic Locator がいい感じに適合 18
  6. 「画面に対してテストを行う」文脈で E2E テストが書ける CodeceptJS と OutSystems の相性の良いところ Semantic Locator の恩恵

    Traditional と Reactive を区別することなくテストコードが書ける プロダクト実装と E2E 実装の密さを軽減できる ServiceStudio での UI 実装の一覧性があまり快適でないことへの対策
  7. まとめ ⚫ プロダクトのリリースサイクルを早めるためにはテスト自動化が必須 ⁻ ユニットテストは言わずもがな ⁻ E2E テストも例外ではない ⚫ E2E

    テスト実装はガラス細工のように脆く壊れやすい繊細さを持つ ⁻ 画面実装を変えると大体突然死 ⚫ 突然死の対抗手段の一つが Semantic Locator ⁻ CodeceptJS の実装が OutSystems と良相性 ⁻ 可読性やポータビリティが得られる代わりに速度は犠牲になる ⚫ CodeceptJS で快適な E2E テストライフを手に入れよう!!