The Cypress documentation recommends using fixtures for file uploads, but cluttering up a repository with fixture files can feel gross. Ideally, the test suite could programmatically generate files on the fly that match the needs of a particular test.
You can use Cypress's selectFile
method and a Blob
to create file testing stubs that don't require an underlying fixture.
cy.get('[data-testid="file-input"]').selectFile({
contents: Cypress.Blob.createBlob([]),
fileName: "picture.png",
mimeType: "image/png",
lastModified: Date.now(),
});
This code stubs out a basic file that can be used by a file input. The only property that Cypress requires is contents
, but the other properties can be used on an as-needed basis. For example, the mimeType
can be used if the input field has an accept
attribute, and the browser will use the mimeType
from the stub and behave accordingly.
Top comments (0)