Validate download ステップは専用の CLI ステップで、さまざまなファイル形式のダウンロード内容が期待通りであることを検証できます。各ファイル形式に関連するパラメーターをチェックできます。例:CSV ファイルの場合は行数と内容をチェック、画像ファイルの場合は画像タイプと寸法をチェック、MS PowerPoint の場合はスライド数とその内容をチェックできます。
前提条件
- CLI アクションステップを含むテストをローカルで実行するには、次のコマンドを実行する必要があります:npm i -g @testim/testim-cli && testim connect(下記参照)。
Validate download ステップを含むテストにはファイル URL へのアクセスが必要です。これらのテストを実行するには、Testim Editor Chrome 拡張機能で Allow access to file URLs 権限を有効にする必要があります(下記参照)。
PDF ファイルの Validate download ステップを含むテストには、さらに 2 つの前提条件があります:
- Chrome 67 以上を使用していること
- Chrome ブラウザの PDF 設定が次のように設定されていることを確認してください:Download PDF files instead of automatically opening them in Chrome(下記参照)。
「Download PDFs」権限を有効にするには:
- Chrome ブラウザで、Chrome メニュー(右上の三点リーダー)をクリックします。
- Settings をクリックします。
- Privacy and security をクリックします。
- Site settings をクリックします。
- Additional content settings をクリックします。
- PDF documents をクリックします。
- default behavior で、Download PDFs option が選択されていることを確認します。

CLI アクションステップを含むテストをローカルで実行するには:
- お使いのオペレーティングシステムの コマンドプロンプト ウィンドウを開きます。
- コマンドプロンプトで次のコマンドを入力します:npm i -g @testim/testim-cli && testim connect

- プロセスの実行が完了するまで待ちます。

Chrome ブラウザで PDF ファイルを自動的にダウンロードするように設定するには(開く代わりに):
- Chrome ブラウザで、Chrome メニュー(右上の三点リーダー)をクリックします。

Chrome menu のオプションが表示されます。
- Settings をクリックします。

Chrome Settings ページが開きます。
- Privacy and security セクションまでスクロールし、Site Settings をクリックします。

- Additional content settings セクションまでスクロールします。セクションが展開されていない場合は、クリックして展開します。
- Additional content settings セクションで、PDF documents までスクロールしてクリックします。

- Download PDF files instead of automatically opening them in Chrome トグルが有効(右側)になっていることを確認します。有効でない場合は、クリックして有効にします。

設定が有効になります。
Validate download ステップの追加
Validate download ステップを追加する一般的な手順は、ダウンロードするファイル形式(csv、jpg、ppt、doc、xls、image、pdf など)に関わらず同じです。コードとパラメーターは、ダウンロードするファイルの種類や検証したい属性に応じて変わります。以下の手順(CSV ファイルを例として)の後に、各ファイル形式のサンプルコードとパラメーターを示します。
Validate download ステップを追加するには:
- 検証を追加したい位置の (矢印記号)(または最終ステップの後の + 記号)にカーソルを合わせます。

- 「M」(Testim 定義済みステップ)をクリックします。
Predefined steps メニューが開きます。

- Validations をクリックします。
Validations メニューが展開されます。

- メニューをスクロールして Validate download を選択します。
Add Step ウィンドウが表示されます。

- Name the new step フィールドに、このステップの名前を入力します。
- このステップをこのテストまたは他のテストで再利用可能な共有ステップにする場合は、Shared step の横のチェックボックスを選択したまま(デフォルト)にし、Select shared step フォルダーリストからこのステップを保存するフォルダーを選択します。そうでない場合は、チェックボックスの選択を解除します。
共有ステップの詳細については Groups を参照してください。 - Create Step をクリックします。
function エディターが開き、右側に Properties パネルが表示されます。

- Properties パネルの Description に必要なら説明を入力します(既定: “Run download validation”)。
- 次の手順で必要なパラメーターを定義します:
Properties パネルで + PARAMS ボタンをクリックします。
JS parameter: JavaScript パラメーターを追加する場合は、ドロップダウンリストから JS を選択し、JavaScript パラメーターを入力します。
Package parameter: NPM パッケージ変数を追加する場合は、ドロップダウンリストから Package を選択し、パッケージ変数を入力します。

d. 追加した項目は “param” または “packageVariable” といった既定名になります。わかりやすい名前にするには edit アイコンから変更してください。

- function エディターにコードを記述します。定義したパラメーターはコード内から参照できます。

- ステップが失敗した場合の動作を指定するには、Properties パネルの When this step fails の下矢印をクリックし、希望するオプションを選択します。オプション: Mark error & stop、Mark error & continue、Mark warning & continue。
- このステップの実行条件を制御するには、Properties パネルの When to run step の下矢印をクリックし、希望するオプションを選択します。詳細については、Conditions を参照してください。
- デフォルトのタイムアウト設定(30000ms)を上書きするには、Properties パネルの Override timeout ボタンをクリックし、希望するタイムアウト値を入力します。
- 左上の戻る矢印でエディターに戻ります。

ステップが作成されます。

Validate download の例
CSV ファイル
Validate download ステップで、行数や内容など CSV の高度な検証ができます。
以下の例では、CSV の行数が 237 行で、A1 セルに "JURISDICTION NAME" が含まれることを検証します。

Example Code:
const csvStr = fileBuffer.toString("utf8");return csv({ noheader: true, output: "csv"}) .fromString(csvStr) .then(csvRow => { // Number of rows in CSV console.log("Number of rows in CSV: ", csvRow.length); // Value in csvRow[0][0] in CSV console.log("Value in csvRow[0][0] in CSV: ", csvRow[0][0]); if (csvRow.length !== parseInt(expectedNumOfRows)) { return Promise.reject( new Error(`Number of rows doesn't match ${csvRow.length}`) ); } if (csvRow[0][0] !== expectedText) {
return Promise.reject( new Error(`Failed to find expected text ${csvRow[0][0]}`) ); } });Example Parameters:
| Name | Type | Value |
|---|---|---|
| csv | Package | [csvtojson@2.0.8] |
| expectedNumOfRows | JavaScript | '237' |
| expectedText | JavaScript | 'JURISDICTION NAME' |
画像ファイル
Validate download ステップで、画像タイプや寸法など画像の高度な検証ができます。
以下の例では、ダウンロードした画像ファイルの名前が yellow-cat-cartoon-style-clipart、ファイル形式が jpg、寸法が 573(幅)X 600(高さ)であることをチェックします。

Example Code:
var dimensions = sizeOf(fileBuffer);var { width, height, type } = dimensions;console.log('Image dimensions', JSON.stringify(dimensions));
return ( width === parseInt(expectedWidth) && height === parseInt(expectedHeight) && type === expectedImageType && fileName.includes(expectedName));Example Parameters:
| Name | Type | Value |
|---|---|---|
| sizeOf | Package | [image-size@0.6.3] |
| expectedName | JavaScript | 'yellow-cat-cartoon-style-clipart' |
| expectedImageType | JavaScript | 'jpg' |
| expectedWidth | JavaScript | '573' |
| expectedHeight | JavaScript | '600' |
MS Excel ファイル
Validate download ステップで、シート数やシート名など Excel の高度な検証ができます。
以下の例では、シート数が 3、最初のシート名が “Example Test” であることを検証します。

Example code:
const { SheetNames, Sheets } = XLSX.read(fileBuffer);const sheet = SheetNames[0];
if (SheetNames.length !== parseInt(expectedNumOfSheets)) { throw new Error(`Failed to validate: Number of sheets doesn't match "${expectedNumOfSheets}"`);}
if (sheet !== expectedPageName) { throw new Error(`Failed to validate: Sheet 1 name doesn't match "${expectedPageName}"`);}Example Parameters:
| Name | Type | Value |
|---|---|---|
| XLSX | Package | [xlsx@0.14.1] |
| expectedNumOfSheets | JavaScript | '3' |
| expectedPageName | JavaScript | 'Example Test' |
MS PowerPoint ファイル
Validate download ステップで、スライド数や内容など PowerPoint の高度な検証ができます。
以下の例では、ダウンロードした MS PowerPoint ファイルのスライド数が 9 で、最初のページに Department、2 ページ目に Location という単語が含まれていることをチェックします。

Example code:
var zip = new JSZip(fileBuffer);var doc = new Docxtemplater();doc.loadZip(zip);const slides = Object.keys(doc.zip.files).filter( fileName => _.startsWith(fileName, "ppt/slides/") && _.endsWith(fileName, ".xml"));console.log("Num of slides:", slides.length);
if (slides.length !== parseInt(excpectedNumOfSlides)) { return false;}
expectedText = JSON.parse(expectedText);
expectedText.forEach(item => { const { slideIndex, text } = item; const slideText = doc.getFullText(slides[slideIndex]); if (!slideText.includes(text)) { throw new Error(`Failed to find ${text} in slide index: ${slideIndex}`); }});Example Parameters:
| Name | Type | Value |
|---|---|---|
| Docxtemplater | Package | [docxtemplater@3.9.5] |
| JSZip | Package | [jszip@2.*] |
| expectedText | JavaScript |
:0,"text":"Department"},{"slideIndex":1,"text":"Location"}]
|
| Package | [lodash@4.17.11] | |
| excpectedNumOfSlides | JavaScript | '9' |
MS Word ファイル
Validate download ステップで、内容など Word の高度な検証ができます。
以下の例では、ダウンロードした Word に “Item A” というテキストが含まれることを検証します。

Example code:
var zip = new JSZip(fileBuffer);var doc = new Docxtemplater();
doc.loadZip(zip);var docxText = doc.getFullText();console.log('text:', docxText);
return docxText.includes(expectedText);Example Parameters:
| Name | Type | Value |
|---|---|---|
| Docxtemplater | Package | [docxtemplater@3.9.5] |
| JSZip | Package | [jszip@2.*] |
| expectedText | JavaScript | 'Item A' |
PDF ファイル
Validate download ステップで、ページ数や内容など PDF の高度な検証ができます。
前提条件:
- Chrome 67 以上を使用していること
- Chrome の PDF 設定で Download PDF files instead of automatically opening them in Chrome を有効にしていること
以下の例では、PDF のページ数が 2、テキスト "A Simple PDF file" が含まれることを検証します。

Example code:
return pdf(fileBuffer).then((data) => { const { numpages, text } = data; // number of pages console.log('numpages', numpages); // PDF text console.log('text', text); if (numpages !== parseInt(expectedNumOfPages)) { return Promise.reject(new Error(`Invalid number of pages: ${numpages}`)); } if (!text.includes(expectedText)) { return Promise.reject(new Error(`Invalid pdf text: ${text}`)); }});Example Parameters:
| Name | Type | Value |
|---|---|---|
| Package | [pdf-parse@latest] | |
| expectedNumOfPages | JavaScript | '2' |
| expectedText | JavaScript | 'A Simple PDF File' |