Documentation Index

Fetch the complete documentation index at: https://helpcenter.autify.com/llms.txt

Use this file to discover all available pages before exploring further.

ダウンロードされたファイルに対するアサーション

Prev Next

一部のWebサイトでは、レポートのエクスポートやドキュメントの保存時にファイルのダウンロードが発生します。

テストでは、ファイルが正しくダウンロードされたかどうか、ファイル名が正しいか、内容が正しいかなどを確認したい場合があります。

このページでは、ダウンロードファイルに対してアサーションを行うためのコード例を紹介しています。

設定方法

まず、ファイルダウンロードをトリガーするステップ(通常はクリックステップ)を特定します。

そのステップの前に、ファイルのダウンロード開始を待つPlaywrightコードステップを追加します。

const downloadPromise = page.waitForEvent("download");

次に、クリックステップの後に、ダウンロードされたファイルを扱い、アサーションを行うための別のPlaywrightコードステップを追加します。

ファイルの中身を検証

以下の例では、ダウンロードされたファイルの内容をメモリに読み込み、ファイル内に「Q2 report」という文字列が含まれているかをアサート(検証)しています。

const download = await downloadPromise;

const downloadStream = await download.createReadStream();

const fileContent = await new Promise((resolve) => {

  const chunks: Buffer[] = [];

  downloadStream.on("data", (chunk) => {
    chunks.push(chunk);
  });

  downloadStream.on("end", () => {
    resolve(Buffer.concat(chunks));
  });

});

// アサーション例 — ユースケースに合わせて更新してください
expect(fileContent.toString("utf-8")).toContain("Q2 report");

ファイル名を検証

以下の例では、ファイル名に「Q2 report」という文字列が含まれているかをアサート(検証)しています。

const download = await downloadPromise;

// ファイル名を取得
const fileName = download.suggestedFilename();

// ファイル名の検証(アサーション)例
expect(fileName).toContain("Q2 report");

このコードスニペットはカスタマイズ可能で、ダウンロードやダウンロードされたファイルに関するさまざまな検証に応用できます。
他にどのようなダウンロード操作がAutify NexusのPlaywrightステップで行えるかについては、Playwrightの公式ドキュメントをご参照ください。

1つのシナリオで複数回のダウンロード検証を行う場合

1つのシナリオ内でファイルのダウンロード検証を2回以上行う場合、そのままでは2回目以降の検証が正しく動作しないことがあります。 これは、Playwrightの page.waitForEvent("download") が一度イベントを検知すると完了してしまい、1回目のダウンロード情報を参照し続けてしまう仕様によるものです。

新しくダウンロードしたファイルに対して正しくアサーション(内容一致確認)を行うためには、2回目のダウンロードをトリガーするステップ( ダウンロード などのクリック)の直前に、再度ダウンロードイベントを待ち受けるコードを追加する必要があります。

以下の手順で修正を行ってください。

  1. 2回目以降のダウンロードを行うステップ( 要素をクリック など)の直前に、 Playwrightコードステップ を挿入します。

  2. 以下のコードを記述し、 downloadPromise を再定義します。

// constは付けずに記述してください
downloadPromise = page.waitForEvent("download");


FAQ

リプレイ時にダウンロードするファイルのファイル名が変わるのはなぜですか?

Playwrightの仕様になります。
ダウンロードしたファイル名を確認したい場合、上述しているsuggestedFilename()を利用することで検証することが可能です。