X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/4043ab4e285f08e9d56ffd8f8a401b68816fc841..e42867f560b3c2f4c09cf6a2c07c964c63714141:/cypress/support/commands.js diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 36358991f0..cfdfa9ecff 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -150,6 +150,15 @@ Cypress.Commands.add( } ) +Cypress.Commands.add( + "createVirtualMachine", (token, data) => { + return cy.createResource(token, 'virtual_machines', { + virtual_machine: JSON.stringify(data), + ensure_unique_name: true + }) + } +) + Cypress.Commands.add( "createResource", (token, suffix, data) => { return cy.doRequest('POST', '/arvados/v1/' + suffix, data, null, token, true) @@ -183,6 +192,8 @@ Cypress.Commands.add( Cypress.Commands.add( "loginAs", (user) => { + cy.clearCookies() + cy.clearLocalStorage() cy.visit(`/token/?api_token=${user.token}`); cy.url({timeout: 10000}).should('contain', '/projects/'); cy.get('div#root').should('contain', 'Arvados Workbench (zzzzz)'); @@ -190,6 +201,32 @@ Cypress.Commands.add( } ) +Cypress.Commands.add( + "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]').clear().type(newDescription); + cy.get('[data-cy=form-submit-btn]').click(); + }); + + cy.get(container).contains(newName).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]').should('have.value', newName); + + if (isProject) { + cy.get('span[data-text=true]').contains(newDescription); + } else { + cy.get('input[name=description]').should('have.value', newDescription); + } + + cy.get('[data-cy=form-cancel-btn]').click(); + }); + } +) + Cypress.Commands.add( "doSearch", (searchTerm) => { cy.get('[data-cy=searchbar-input-field]').type(`{selectall}${searchTerm}{enter}`); @@ -252,4 +289,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 +}