Puppeteerを使用してテストを自動化する方法

Puppeteerとは

PuppeteerはGoogleが開発している、Chromiumブラウザを制御するためのNode.jsライブラリです。WebスクレイピングやWebサービスのテスト自動化、スクリーンショットの撮影など、さまざまなブラウザ操作を自動化できます。

Puppeteerでできる事

Puppeteerを利用することで、WebスクレイピングやソフトウェアのE2Eテストを行うことができます。
GUIを持たない環境でもブラウザの自動操作を行うことができる特徴を活かすことで、CI/CD環境でE2Eテストを実行することも可能です。

Puppeteerを使ったブラウザテストの自動化手順

実際にPuppeteerを利用してブラウザのテストを自動化する手順をご紹介します。
今回はテストを行うために以下のような簡単なデモサイトを用意し、Puppeteerによってテストを自動化します。

まずはデモサイトの挙動を確認します。
登録フォームにIDと名前の入力欄があります。登録ボタンを押下するとユーザ情報画面へ遷移します。


登録フォームで入力されたIDと名前が、ユーザ情報画面にリスト表示される作りになっています。


Puppeteerを使って、デモサイトの登録処理が正常に動作しているかを確認するテストコードを書いていきます。

実行環境:
・Node.js (v20.14.0)
・Puppeteer (v22.10.0)

今回実行するテストコードです。

const assert = require("assert");
const puppeteer = require('puppeteer');

(async () => {
  // 1.ブラウザをヘッドレスモードで起動
  const browser = await puppeteer.launch({});
  const page = await browser.newPage();

  // 2.登録フォームへアクセス
  await page.goto('http://node-puppeteer-tutorial.s3-website-ap-northeast-1.amazonaws.com');

  // 3.IDと名前の入力
  const inputId = '1';
  const inputName = '山田 花子';
  await page.type('#id', inputId);
  await page.type('#name', inputName);

  // 4.登録ボタンをクリックし、画面遷移を待機
  await Promise.all([
    page.click('button[type="submit"]'),
    page.waitForNavigation({ waitUntil: 'load'})
  ]);

  // 5.テーブルの一番下のIDと名前を取得してコンソールに出力
  const lastRowId = await page.evaluate(() => {
    const table = document.getElementById('userTable');
    const lastRow = table.rows[table.rows.length - 1];
    return lastRow.cells[0].textContent;
  });

  const lastRowName = await page.evaluate(() => {
    const table = document.getElementById('userTable');
    const lastRow = table.rows[table.rows.length - 1];
    return lastRow.cells[1].textContent;
  });

  // 6.正しい値が取得されたかをアサート
  assert.strictEqual(lastRowId, inputId);
  assert.strictEqual(lastRowName, inputName);

  console.log('テストコードの実行が完了しました。');

  await browser.close();
})();

このテストコードについて、各番号順に解説します。

  1. ヘッドレスモードでブラウザを起動します。
  2. 登録フォームへアクセスします。
  3. IDと名前のInput要素にそれぞれ「1」と「山田 花子」を入力します。
  4. 登録ボタンを押下し、ユーザ情報画面のローディングが終了するまで待機します。
  5. 登録したユーザ情報を取得するため、テーブル最終行のIDと名前を取得します。
  6. 取得したIDと名前をアサートします。

テストコードを実行

先ほどのテストコードを実行してみます。
[node test.jsの実行結果]


テストコードが正常に完了した旨のメッセージが表示されました。

アサートする部分を書き換えて、失敗パターンも確認してみます。
先ほどのテストコードのアサート処理を以下のように書き換えます。

  // 6.正しい値が取得されたかをアサート
  assert.strictEqual(lastRowId, inputId);
  assert.strictEqual(lastRowName,’テスト 太郎’); // ここを書き換えました

再度テストコードを実行してみます。
[node test.jsの実行結果]


アサートが失敗し、エラー終了となりました。

まとめ

Puppeteerを使用してテストを自動化する方法について解説しました。
Node.js環境があればPuppeteerによってE2Eテストを行うことができます。さらにCI/CD環境でテストコードを動作させることで、テストの自動化を行うことが可能になり、バグを未然に防ぎつつソフトウェアの品質を維持することができるようになります。

テストの自動化をお考えなら『クラウドBOT』をお試しください

クラウドBOTはブラウザ操作を自動化できるクラウド型のRPAサービスです。複雑な環境構築をが不要であり、会員登録すると無料でブラウザ操作を自動化するロボットを作成できます。ロボットは基本的にノーコードで構築できますが、複雑な処理を行いたい場合は、javascriptを直接記述し、実行させることもできます。
テストの自動化を検討されている方は是非一度お試し下さい。


クラウド型RPAについてもっと詳しく


  1. クラウド型RPAを低価格で導入!そもそもRPAとは?導入ニーズが高まった背景 無料体験も実施!活用事例も参考に
  2. クラウド型RPAを導入するメリットとは?専門知識がなくても簡単に活用できるのが魅力
  3. クラウド型RPAツールを無料体験!代表的なRPA製品「オンプレミス型」と「クラウド型」について
  4. クラウド型RPAツールの導入事例をご紹介!RPAツールの選定ポイント 使い方簡単で格安
  5. iPaaS製品の必要性 iPaaSとの連携が可能なクラウド型RPA『クラウドBOT』 無料プランから利用可能!初めての方は事例を参考に
  6. iPaaS製品とRPAツールの違い 日本でも普及が広がる!iPaaSを導入するメリット
  7. SaaSを連携させてワークフローの自動化・効率化を実現!クラウドサービス「SaaS」の連携手段とクラウド型のRPAツールを利用した連携
  8. SaaSの連携に有用な2製品「iPaaS」と「クラウド型RPA」とは SaaSの連携なら各APIに対応可能◎活用事例も多い『クラウドBOT』の導入を
  9. webブラウザ操作の自動化なら『クラウドBOT』 RPAツールで自動化・効率化できる業務 データ抽出を効率化するなら
  10. webブラウザ操作の自動化ならプログラミング不要で更新も手間いらずの『クラウドBOT』 自動化できる操作をご紹介
  11. ブラウザ操作を自動化する『クラウドBOT』は、日常的に行っているブラウザ操作をノーコードで自動化する事ができます
  12. ブラウザを自動操作する方法 - 『クラウドBOT』を使用して、ブラウザを自動操作する方法を解説します。
  13. Google Chromeのを自動操作するならインストール不要・プログラミング不要で自動操作を実化できる『クラウドBOT』がおすすめ
  14. 初心者でも簡単に使えるおすすめのRPAツール3選 | RPAの選定ポイントについても解説
  15. ブラウザのスクリーンショット撮影を自動化する方法をご紹介
  16. Seleniumを使ってWebスクレイピングを行う方法について
  17. Web上の業務を効率化できるツールをご紹介 | iPaaS、RPAの違いとは
  18. 総務におすすめRPA活用事例をご紹介 | クラウド型RPA活用事例
  19. ブラウザ上で行っている業務を効率化できるおすすめツール3選
  20. PuppeteerとNode.jsを使用してブラウザ操作を自動化する方法
  21. Selenium×pythonでWebスクレイピングを実現する方法(ソースコード付き) | Seleniumとpythonの環境構築と実行手順も解説
  22. クラウド型RPAを用いたカートシステムとWMSのデータ連携事例をご紹介 | ローコストで始める受注データの連携、出荷データの連携
  23. Chromeの拡張機能を使用してWebページのスクリーンショット撮影する方法
  24. Playwrightを使用して、Webページのスクリーンショット撮影を行う
  25. 無料で使えるおすすめのRPAをご紹介 | 無料RPAのメリット・デメリットや選定基準も解説
  26. APIがないWebシステムとデータ連携する方法
  27. Puppeteerを使用してテストを自動化する方法
  28. 簡単にできる!Webサイト画像の一括ダウンロードガイド
  29. 税理士・会計士におすすめ!RPA活用事例 RPAを使って業務効率改善を
  30. RPAとAIの組み合わせ事例をご紹介 | RPA、AIのそれぞれの特徴と組み合わせで実現できる自動化について解説
  31. playwrightを使用してブラウザのテストを自動化する方法について