Skip to content

Cypress custom command to wait and verify that file has been downloaded

License

Notifications You must be signed in to change notification settings

elaichenkov/cy-verify-downloads

Folders and files

NameName
Last commit message
Last commit date
Dec 9, 2023
May 16, 2022
Sep 14, 2022
Sep 8, 2023
Dec 8, 2023
Aug 5, 2021
Aug 5, 2021
Sep 27, 2023
Sep 14, 2022
Feb 17, 2025
Jan 20, 2025

Repository files navigation

Stand With Ukraine

cy-verify-downloads tests Total npm downloads

logo

Custom Cypress command to wait and verify that file is downloaded.

Installation

npm i -D cy-verify-downloads

Extend Cypress command

This package extends Cypress' cy command.

For Cypress v10+:

Add this line to your project's cypress/support/e2e.js:

require('cy-verify-downloads').addCustomCommand();

Then you need to add the following lines of code to your project's cypress.config.js:

const { verifyDownloadTasks } = require('cy-verify-downloads');

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('task', verifyDownloadTasks);
    },
  },
});

For Cucumber:

Additionally, you may need to install and add node polyfill in your support/e2e.js file:

  1. Install the polyfill module:
npm i -D esbuild-plugin-polyfill-node
  1. Import the following code in your support/e2e.js file:
const { polyfillNode } = require('esbuild-plugin-polyfill-node');
  1. Add the following code in your plugins property:
module.exports = defineConfig({
  e2e: {
    async setupNodeEvents(on, config) {
      const bundler = createBundler({
        plugins: [polyfillNode({ polyfills: { crypto: true } }), createEsbuildPlugin(config)],
      });
    }
  }
});

For Cypress v9:

So, you need to add this line to your project's cypress/support/commands.js:

require('cy-verify-downloads').addCustomCommand();

And add the following lines to your project's cypress/plugins/index.js:

const { verifyDownloadTasks } = require('cy-verify-downloads');

module.exports = (on, config) => {
  on('task', verifyDownloadTasks)
}

Usage

Then, in your test, you can use it like this:

cy.verifyDownload('picture.png');

// verify download by file extension or partial filename
cy.verifyDownload('.png', { contains: true });
cy.verifyDownload('pic', { contains: true });

// or increase timeout
cy.verifyDownload('archive.zip', { timeout: 25000 });

// or increase timeout and interval pooling
cy.verifyDownload('archive.zip', { timeout: 25000, interval: 600 });

Types

Autocompletion

To enable IntelliSense information and autocomplete you have to include types in the tsconfig.json file:

{
  "compilerOptions": {
    "types": ["cypress", "cy-verify-downloads"]
  }
}

Author

Yevhen Laichenkov elaichenkov@gmail.com

License

MIT