ファイルのアップロードとダウンロードの処理は、エンドツーエンド テストの一般的なシナリオです。この投稿では、Cypress を使用してファイルのアップロードとダウンロードの両方を処理する方法を検討します。 Cypress にはこれらの操作に対するサポートが組み込まれていませんが、いくつかのライブラリと Cypress の強力なコマンド セットを活用することでこの機能を実現できます。
このガイドを最後まで読むと、次の方法がわかるようになります:
例に従うには、Cypress がインストールされ、セットアップされていることを確認してください。 Cypress v13.6.2 を使用している場合は、この投稿で示されているアプローチと互換性があります。
Cypress にファイルをアップロードするには、テスト中にファイルのアップロード アクションを簡単にシミュレートする方法を提供する cypress-file-upload プラグインを使用します。
ステップ 1: cypress-file-upload プラグインをインストールする
Cypress でファイルのアップロードを処理するには、まず cypress-file-upload パッケージをインストールする必要があります。
npm install --save-dev cypress-file-upload
次に、Cypress サポート フォルダー内の command.js ファイルにインポートします。
import 'cypress-file-upload';
ステップ 2: フォルダー構造
テスト ファイルを保存し、テスト中にアップロードするために、プロジェクトに次のフォルダー構造があることを確認してください:
cypress/ fixtures/ exampleFile.pdf // Test file for uploading e2e/ fileUploadTests.cy.js // Test file to upload and validate
ステップ 3: ファイルをアップロードする
プラグインをインストールしたら、attachFile コマンドを使用してフィクスチャ フォルダーからファイルをアップロードできます。
ファイルをアップロードする方法は次のとおりです:
describe('File Upload Test in Cypress', () => { it('should upload a file successfully', () => { // Visit the page with a file upload input cy.visit('/upload'); // Select the file input element and upload a file from the fixtures folder cy.get('input[type="file"]').attachFile('exampleFile.pdf'); // Validate that the file was uploaded (depends on your app's specific response) cy.get('.file-name').should('contain', 'exampleFile.pdf'); }); });
このテストでは:
ファイルのアップロードの検証は、アップロード後にファイル名またはパスが Web ページに表示されるかどうかを確認するのと同じくらい簡単です。ただし、複雑なシナリオ (ファイルの内容やサイズの検証など) では、サーバー側のチェックやスタブが必要になる場合があります。
例: 追加データを使用したファイルのアップロードの検証
describe('File Upload and Validation', () => { it('should upload a file and validate metadata', () => { cy.visit('/upload'); cy.get('input[type="file"]').attachFile('exampleFile.pdf'); // Assert that the file metadata like size is displayed correctly cy.get('.file-size').should('contain', 'Size: 1MB'); }); });
Cypress でのファイルのダウンロード
Cypress は、ファイルのダウンロードを検証するためのネイティブ サポートを提供していません (ブラウザは Cypress の制御外でファイルをダウンロードするため) ですが、ローカル ファイル システムでダウンロードされたファイルを直接確認することでこれを回避できます。
ステップ 1: cypress-downloadfile のインストール
Cypress でのファイルのダウンロードを検証するには、cypress-downloadfile プラグインを使用できます。
npm 経由でインストールします:
npm install --save-dev cypress-downloadfile
次に、commands.js ファイルにプラグインを追加します:
require('cypress-downloadfile/lib/downloadFileCommand');
ステップ 2: ファイルのダウンロードと検証
ファイルをダウンロードしてその内容を検証するテストを作成できるようになりました。
例: ファイルのダウンロード
describe('File Download Test in Cypress', () => { it('should download a file and validate its content', () => { cy.visit('/download'); // Download the file and save it to a custom downloads folder cy.downloadFile('https://example.com/sample.pdf', 'cypress/downloads', 'sample.pdf'); // Validate that the file exists in the specified location cy.readFile('cypress/downloads/sample.pdf').should('exist'); }); });
このテストでは:
ステップ 3: ファイルの内容を検証する
ダウンロードが成功したことを確認するには、ダウンロードしたファイルの内容を確認する必要がある場合があります。テキストベースのファイル (.txt、.csv など) の場合、Cypress の cy.readFile() を使用してファイルのコンテンツをアサートできます。
例: ダウンロードしたファイルの内容を検証する
describe('Validate Downloaded File Content', () => { it('should download and check the content of a text file', () => { cy.visit('/download'); // Download the text file cy.downloadFile('https://example.com/sample.txt', 'cypress/downloads', 'sample.txt'); // Read the file and assert its content cy.readFile('cypress/downloads/sample.txt').then((fileContent) => { expect(fileContent).to.contain('This is a sample text file'); }); }); });
このテストでは、.txt ファイルをダウンロードし、期待されるテキストが含まれているかどうかを確認します。
ファイルのアップロードとダウンロードは、Web アプリケーションのテストにおいて重要な操作です。Cypress はこれらの操作をネイティブにサポートしていませんが、cypress-file-upload プラグインと cypress-downloadfile プラグインは使いやすい回避策を提供します。
このガイドでは、次の方法を検討しました:
これらのツールとテクニックを使用すると、Cypress のエンドツーエンド テストでファイルのアップロードとダウンロードを自信を持って処理できます!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3