ファイルを選べても、文書が正しく保存・表示されるとは限りません。選択、送信、保存、表示を分けて調べます。最初は小さなPDFで一連の操作を試し、容量やページ数を1つずつ変えると、どの条件で失敗したかを追いやすくなります。
1. 小さなPDFを1つ用意する
PDF生成で1ページを選び、タイトルをUpload testにして保存します。保存したファイルを普段のPDFビューアーで開けることを確かめてから、アップロード画面で使います。次のAPIは小さな文書を作るためのもので、容量の指定には対応していません。
curl --fail 'https://anyplaceholder.com/api/pdf?pages=1&title=Upload%20test' --output upload-test.pdf
2. アップロードの段階ごとに調べる
| 段階 | 見るところ |
|---|---|
| 選択 | 選んだファイル名と容量が分かり、選択の取り消し・差し替えができます。 |
| 送信 | 処理中の表示が終了し、失敗時に再試行の方法が分かります。連打で不要な重複が作られないかも見ます。 |
| 保存 | 成功時に文書とファイルが保存されています。拒否されたファイルについて、利用可能な文書レコードが残っていません。 |
| 表示 | 先頭ページと最終ページに本文が表示されます。画面を開き直しても、正しい文書を表示できます。 |
| 再保存 | 保存し直したファイルが開けて、ページ数も一致します。ダウンロードリンクを押せたことだけでは、保存できたとは判断しません。 |
3. 容量制限の境界を試す
制限がMBかMiBかを先に決めます。5 MBなら4,999,999・5,000,000・5,000,001バイト、5 MiBなら5,242,879・5,242,880・5,242,881バイトを使います。上限ちょうどのファイルを許可する仕様かを決め、画面とサーバーで同じ判定になるかを調べてください。
4. ページ数と容量を別々に変える
文字だけの20ページのPDFは、スキャン画像1ページより小さくなることがあります。1・3・20ページでページ切り替えやサムネイルを試し、容量制限は指定容量の生成で試します。容量調整用のデータを含むPDFでは画像のデコードやOCRまでは試せないため、必要なら画像を含む別のテスト素材を用意します。
5. プレビューが空白の場合
- 保存した文書をPDFビューアーで開きます。文書が開く場合は、埋め込み表示とブラウザの条件を分けて調べます。
- 応答のステータスとContent-Typeを調べます。iframeはHTMLのエラーページでも読み込みを終えるため、loadイベントだけではPDFを受け取ったと判断できません。
- アプリに文書を直接開くリンクがあれば試します。ビューアーやブラウザの設定によって、埋め込み表示と直接表示の結果が異なる場合があります。
テスト素材を手順と一緒に残す
ファイル本体、バイト数、ページ数、期待する結果をテストケースと一緒に保存します。外部サービスに依存させたくない自動テストには、保存した素材を使ってください。顧客の文書や個人情報を再現用の素材にしないでください。