Slide 1

Slide 1 text

「Playwright for PythonではじめるE2Eテスト」 ぺぺ@Pep299 1

Slide 2

Slide 2 text

目次 自己紹介 用語の確認 PlaywrightではじめるE2Eテスト Playwright Tips CI デバッグ・レポーティング ブラウザ対応 まとめ 自動テスト Tips 2

Slide 3

Slide 3 text

自己紹介 ぺぺ@Pep299 https://twitter.com/Pep299 情報系学士卒 エンジニア歴6年目 SES(金融系)-> フリーランス -> Web系受託 -> Web系自社サ Python・TypeScript・Nuxt・AWS 東京都 新型コロナウイルス感染症対策サイトのコントリビュート経験 PyCon JP 2021 スタッフ 開催日:10/15(金),16(土) ゲーム(Dead By Daylight、Among Us、ボードゲーム)・ブレイクダンス 3

Slide 4

Slide 4 text

用語の確認 自動テストとは E2Eテストとは Playwrightとは 4

Slide 5

Slide 5 text

自動テストとは テスト実行や結果チェックに際し、ソフトウェアを利用して自動制御すること 背景 開発したアプリケーションが要件を満たしていることを確認する必要がある アプリケーションは作り切りではなく、長期的にかつ継続的に開発される 繰り返し行うテストを自動化できれば、開発サイクルの短縮化が見込める 5

Slide 6

Slide 6 text

E2Eテストとは テストの種類の一つ ユーザーに提供している機能の内、UIを通じて実行できる機能をテストすること 例) ECサイトでのE2Eテスト ログイン画面にアクセスし、idとpwを入力してログインできること TOP画面にて商品を検索して商品詳細ページに遷移できること 商品をカートに入れ、カート内の商品を購入・決済できること キャンセル画面にて決済のキャンセルができること → ネットワーク接続やデータベース、外部アプリケーションとの通信をテストする 6

Slide 7

Slide 7 text

Playwrightとは モダンなwebブラウザを対象に、ブラウザ操作の自動化のためのライブラリ 概要 モダンなWebブラウザ:Chrome/Edge/Firefox/Safari Microsoft製 操作可能な言語 JavaScript/TypeScript Python Java C# 7

Slide 8

Slide 8 text

PlaywrightではじめるE2Eテスト インストール コード作成 実行 テスト環境構築 テストコード化 テスト実施 8

Slide 9

Slide 9 text

PlaywrightではじめるE2Eテスト ~インストール~ $ pip install playwright $ playwright install playwright公式のインストール手順:https://playwright.dev/python/docs/intro 9

Slide 10

Slide 10 text

PlaywrightではじめるE2Eテスト ~コード作成~ $ playwright codegen wikipedia.org -o test.py Playwright公式のコード生成手順:https://playwright.dev/python/docs/cli/#generate- code 10

Slide 11

Slide 11 text

PlaywrightではじめるE2Eテスト ~コード作成~ 11

Slide 12

Slide 12 text

PlaywrightではじめるE2Eテスト ~コード作成~ 12

Slide 13

Slide 13 text

PlaywrightではじめるE2Eテスト ~コード作成~ 13

Slide 14

Slide 14 text

PlaywrightではじめるE2Eテスト ~実行~ $ python ./test.py 14

Slide 15

Slide 15 text

PlaywrightではじめるE2Eテスト ~テスト環境構築~ pythonのテスト実行ライブラリは、Playwright公式がサポートするPytestを利用 $ pip install pytest $ pip install pytest-playwright Playwright公式のPytest連携:https://playwright.dev/python/docs/test-runners 15

Slide 16

Slide 16 text

PlaywrightではじめるE2Eテスト ~テストコード化~ 先ほど生成したスクリプトをPytest実行用に修正 from playwright.sync_api import Page def test_wiki(page: Page): page.goto("https://www.wikipedia.org/") page.click("input[name=\"search\"]") page.fill("input[name=\"search\"]", "python") page.press("input[name=\"search\"]", "Enter") assert page.url == "https://en.wikipedia.org/wiki/Python" 16

Slide 17

Slide 17 text

PlaywrightではじめるE2Eテスト ~テスト実施~ $ pytest test.py 実行結果 ========================== test session starts ========================== platform darwin -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 rootdir: /Users/xxx/ plugins: base-url-1.4.2, playwright-0.1.2 collected 1 item test.py . [100%] =========================== 1 passed in 4.47s =========================== 17

Slide 18

Slide 18 text

PlaywrightではじめるE2Eテスト ~まとめ~ 環境構築がお手軽 画面操作 → コード作成機能によるテストコード作成の補助 テスト実行ライブラリの連携までサポート 18

Slide 19

Slide 19 text

Playwright Tips CI デバッグ・レポーティング ブラウザ対応 19

Slide 20

Slide 20 text

CI 各種CIプロバイダの導入手順の記載 GitHub Actions/Azure Pipeline/Travis CI/Circle CI/Jenkins/Bitbucket Pipeline/GitLab CI 公式Dockerイメージの提供 マルチプラットフォームで実行可能なので、GitHub Actionsであれば、 Linux/Mac/Windows × Chrome/Edge/Firefox/Safariのマトリクス実行が可能 Playwright公式:https://playwright.dev/python/docs/ci 20

Slide 21

Slide 21 text

デバッグ・レポーティング E2Eテストを運用していくと、必ずではないが失敗するテストが発生する 失敗の原因を素早く掴むためにデバッグ・レポーティングの機能は重要 デバッグ:Trace Viewer レポーティング:Allure 21

Slide 22

Slide 22 text

デバッグ:Trace Viewer Playwright公式:https://playwright.dev/python/docs/trace-viewer 22

Slide 23

Slide 23 text

レポーティング:Allure(アリュアー) Allure公式:https://docs.qameta.io/allure/#_pytest 失敗時の動画保存:https://qiita.com/YusukeIwaki/items/0ec10c5ae6dd2edcb581 23

Slide 24

Slide 24 text

ブラウザ対応 モダンなブラウザのみのサポートになり、レガシーなブラウザは確認できない IE11やEdge legacy(chromiumベースになる前)は非対応 AndroidやiOSなど実機ブラウザは非対応 こちらは後々対応していく予定の様子。Androidはテスト実装中 モバイルはviewportを操作する事である程度は確認可能 Playwright公式サポートのデバイス一覧: https://github.com/microsoft/playwright/blob/master/src/server/deviceDescripto rsSource.json 24

Slide 25

Slide 25 text

まとめ 環境構築が自動化しやすいため、CIなど環境構築を繰り返す場面にも強い 画面操作 → コード作成機能によるテストコード作成の補助 実行OSを選択できるCIを利用する事でOS×ブラウザのマトリクス実行が可能 Trace Viewerの情報可視化によるデバッグ体験 モダンなブラウザ対応 25

Slide 26

Slide 26 text

自動テスト Tips E2Eテスト以外のテストの概要:BrowserStackのガイド https://www.browserstack.com/guide/types-of-testing Webブラウザ関連の自動テストのベストプラクティス:Cypressのガイド https://docs.cypress.io/guides/references/best-practices awesome 〇〇:関連ライブラリや記事、参考リポジトリのまとめ https://project-awesome.org/mxschmitt/awesome-playwright 26