DEV Community

Cover image for How to upload a file in Cypress?
Dilpreet Johal
Dilpreet Johal

Posted on • Edited on • Originally published at sdetunicorns.com

7 2

How to upload a file in Cypress?

In this tutorial, we will learn how to upload a file in Cypress using the cypress-file-upload NPM package. Cypress does not have a native support to do file uploads at the moment, however, this is something they plan to add in the future.

Installation

Since, we need to use a third-party library to do file upload, we will need to get that installed and setup to make it work with Cypress. 

Install NPM Package

First thing you need to do is install the package - 
npm install --save-dev cypress-file-upload

Setup Custom Command

cypress-file-upload library provides a custom command which we can use once we set it up. To do that, we need to import the library in the custom command file (cypress/support/commands.js) like this -

import 'cypress-file-upload';

Then, make sure this commands.js is imported in cypress/support/index.js (it might be commented):

import './commands';


Upload File Test

Now, that we have installed the package, we can go ahead and start using the custom command. In the example below, I will be uploading a file on my test website.

cypress file upload example

The key thing to focus on the example above is the .attachFile() command which is added by the helper library that we installed. It takes in a parameter i.e. the file name which should be included inside the fixtures folder as shown below.

cypress fixtures folder


Working with hidden input fields

Typically, the .attachFile() command would work if the input[type=file] element is intractable. However, if the element is hidden then you will need to make necessary changes to make the element visible and intractable again. You can do that using the help of the Cypress .invoke() function as seen below - 

Cypress .invoke function

In this example, I am removing the hidden class using the jquery removeClass function which is making my element intractable again.


To learn more about how to upload a file in Cypress, checkout the video below - 


📧 Subscribe to my mailing list to get access to more content like this as well as be part of amazing free giveaways.

👍 You can follow my content here as well -

...

I love coffees! And, if this post helped you out and you would like to support my work, you can do that by clicking on the button below and buying me a cup of coffee -

Buy me a coffee

You can also support me by liking and sharing this content.


Enjoyed this read? Discover more insightful articles on software testing and development on my blog. 🌐

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (1)

Collapse
 
ninjainpajama profile image
ninja in pajama

Thanks brother.

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay