X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/0fab1ce0739811ff8bc02488d32aa2ad184c7b1e..d8f669aadc5f3d7241395abd6aa764406079d7d3:/cypress/support/commands.js diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 069ed96d..07290e55 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -280,4 +280,42 @@ Cypress.Commands.add('createProject', ({ cy.addToFavorites(user.token, user.user.uuid, project.uuid); } }); -}); \ No newline at end of file +}); + +Cypress.Commands.add( + 'upload', + { + prevSubject: 'element', + }, + (subject, file, fileName) => { + cy.window().then(window => { + const blob = b64toBlob(file, '', 512); + const testFile = new window.File([blob], fileName); + + cy.wrap(subject).trigger('drop', { + dataTransfer: { files: [testFile] }, + }); + }) + } +) + +function b64toBlob(b64Data, contentType = '', sliceSize = 512) { + const byteCharacters = atob(b64Data) + const byteArrays = [] + + for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) { + const slice = byteCharacters.slice(offset, offset + sliceSize); + + const byteNumbers = new Array(slice.length); + for (let i = 0; i < slice.length; i++) { + byteNumbers[i] = slice.charCodeAt(i); + } + + const byteArray = new Uint8Array(byteNumbers); + + byteArrays.push(byteArray); + } + + const blob = new Blob(byteArrays, { type: contentType }); + return blob +} \ No newline at end of file