LoginSignup
1
0

More than 5 years have passed since last update.

TestCafe のヘッドレスブラウザからファイルを自動ダウンロードさせる方法

Posted at

概要

Webアプリの自動テストツール TestCafe にはビルトインで chrome ブラウザが付属していますが、headless モードでブラウザを起動するとファイルのダウンロードのテストが正しく動作しない問題に遭遇します。
本記事ではファイルのダウンロードを行うための方法について記載します。

対処方法

1. CDPポートの指定

chrome の起動時のオプションから Chrome Debugging Protocol のポートを指定します。

chromium:headless:cdpPort=9222 --no-sandbox

ちなみに、ポートを指定しない場合は空いているポートが自動で割り当てられてしまうため、ポートの指定は必須となります。

2. ダウンロードの許可と保存先パスの指定

以下のようにテストケース内で Page.setDownloadBehaviorbehaviorallow に変更して downloadPath へダウンロードするファイルの保存先パスを指定することで、ファイルを自動ダウンロードさせることができます。

const CDP = require('chrome-remote-interface');

fixture`ファイルをダウンロードするテスト`
    .page`about:blank`;

test('ZIPファイルのダウンロード', async t => {
    const client = await CDP();
    const { Network, Page } = client;

    await Promise.all([
        Network.enable(),
        Page.enable()
    ]);

    await Page.setDownloadBehavior({
        behavior: 'allow',
        downloadPath: '/tmp'
    });

    await t
        .click(Selector('summary.btn-primary'))
        .click(Selector('a[href="/DevExpress/testcafe/archive/master.zip"]'));
});

このテストケースを実行すると、ダウンロードのボタンをクリックしたタイミングで master.zip/tmp へ自動でダウンロードされます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0