🧪

Playwrightを使用して、ブラウザテスト(E2E)を実行する①

2024/08/31に公開

Playwrightのインストール

npm init playwright@latest

これにより、Playwright の初期設定が行われ、設定ファイルやサンプルテストが生成されます。プロンプトに従って、適切な選択を行ってください。(デフォルトの選択でOK)

テスト対象の作成

今回はReact.jsを使って簡単なログインフォームを作成し、入力に対するエラーメッセージの表示のテストを行います。

まず、ログインフォームを作成します。

import React, { useState } from 'react';
import './App.css';

function App() {
 const [errors, setErrors] = useState({ email: '', password: '' });

 const validateForm = (event) => {
   event.preventDefault(); // フォームのデフォルト送信動作を防ぐ
   const email = event.target.email.value; // メールアドレスの値を取得
   const password = event.target.password.value; // パスワードの値を取得
   let valid = true; // バリデーションの状態を示す
   let errors = { email: '', password: '' }; // エラーメッセージの初期状態

   if (!email.includes('@')) {
     errors.email = 'メールアドレスが無効です'; // エラーメッセージを設定
     valid = false; // バリデーション失敗
   }

   if (password.length < 6) {
     errors.password = 'パスワードは6文字以上でなければなりません';
     valid = false;
   }

   setErrors(errors); // エラーメッセージをステートに設定

   if (valid) {
     // フォーム送信処理
   }
 };

 return (
   <div className="App">
     <h1>ログイン画面</h1>
     <form id="loginForm" onSubmit={validateForm}>
       <div>
         <label htmlFor="email">メールアドレス:</label>
         <input type="email" name="email" id="email" placeholder="Email" />
         <span id="emailError" className="error">
           {errors.email}
         </span>
       </div>
       <div>
         <label htmlFor="password">パスワード:</label>
         <input type="password" name="password" id="password" />
         <span id="passwordError" className="error">
           {errors.password}
         </span>
       </div>
       <button type="submit">ログイン</button>
     </form>
   </div>
 );
}

export default App;

コードの内容

  const [errors, setErrors] = useState({ email: '', password: '' });

useState フックを使用して errors ステートを定義します。errors は、メールアドレスとパスワードのエラーメッセージを保持するためのオブジェクトとして機能します。それぞれの初期値は空文字。

  const validateForm = (event) => {
    event.preventDefault(); // フォームのデフォルト送信動作を防ぐ
    const email = event.target.email.value; // メールアドレスの値を取得
    const password = event.target.password.value; // パスワードの値を取得
    let valid = true; // バリデーションの状態を示す
    let errors = { email: '', password: '' }; // エラーメッセージの初期状態

    if (!email.includes('@')) {
      errors.email = 'メールアドレスが無効です'; // エラーメッセージを設定
      valid = false; // バリデーション失敗
    }

    if (password.length < 6) {
      errors.password = 'パスワードは6文字以上でなければなりません';
      valid = false;
    }

    setErrors(errors); // エラーメッセージをステートに設定

    if (valid) {
      // フォーム送信処理
    }
  };

validateForm 関数を使って、フォームの送信を処理していきます。エラーが見つかった場合、errors オブジェクトにエラーメッセージを設定します。
event.preventDefault() では、フォームがデフォルトで送信されるのを防ぎます。
次の2行は(event.target.email.value,event.target.password.value)については、フォームの入力値を取得します。
setErrors()はエラーメッセージを保持するための関数。
if (valid){...はフォームの送信が成功した場合の処理を入力します。

return以降のコードは、画面のフォームの設定を行っています。

-----②-----につづく

参考サイト:https://tech-blog.rakus.co.jp/entry/20230509/playwright

Discussion