X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/40ad26356794ff381c4cecb35141417dad0807ea..6e4b23e9a99ab64e25c60a128e6beb4fa8636374:/cypress/support/commands.js?ds=sidebyside diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 97bb2450..07290e55 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -193,12 +193,12 @@ Cypress.Commands.add( ) Cypress.Commands.add( - "editProjectOrCollection", (container, oldName, newName, newDescription, isProject = true) => { + "testEditProjectOrCollection", (container, oldName, newName, newDescription, isProject = true) => { cy.get(container).contains(oldName).rightclick(); cy.get('[data-cy=context-menu]').contains(isProject ? 'Edit project' : 'Edit collection').click(); cy.get('[data-cy=form-dialog]').within(() => { cy.get('input[name=name]').clear().type(newName); - cy.get(isProject ? 'div[contenteditable=true]' : 'input[name=description]').type(newDescription); + cy.get(isProject ? 'div[contenteditable=true]' : 'input[name=description]').clear().type(newDescription); cy.get('[data-cy=form-submit-btn]').click(); }); @@ -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