X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/b68d6b620d1e442bd2a231fa8a6d50b2678215f5..4c0099ec3509061ca3f507658689bf3bba77e5ea:/cypress/integration/collection.spec.js diff --git a/cypress/integration/collection.spec.js b/cypress/integration/collection.spec.js index b451fd66..384b789f 100644 --- a/cypress/integration/collection.spec.js +++ b/cypress/integration/collection.spec.js @@ -251,9 +251,9 @@ describe('Collection panel tests', function () { .should('contain', 'someKey: someValue') .and('not.contain', 'anotherKey: anotherValue'); // Check that the file listing show both read & write operations - cy.get('[data-cy=collection-files-panel]').within(() => { - cy.wait(1000); - cy.root().should('contain', fileName); + cy.waitForDom().get('[data-cy=collection-files-panel]').within(() => { + cy.get('[data-cy=collection-files-right-panel]', { timeout: 5000 }) + .should('contain', fileName); if (isWritable) { cy.get('[data-cy=upload-button]') .should(`${isWritable ? '' : 'not.'}contain`, 'Upload data'); @@ -261,7 +261,7 @@ describe('Collection panel tests', function () { }); // Test context menus cy.get('[data-cy=collection-files-panel]') - .contains(fileName).rightclick({ force: true }); + .contains(fileName).rightclick(); cy.get('[data-cy=context-menu]') .should('contain', 'Download') .and('not.contain', 'Open in new tab') @@ -270,7 +270,7 @@ describe('Collection panel tests', function () { .and(`${isWritable ? '' : 'not.'}contain`, 'Remove'); cy.get('body').click(); // Collapse the menu cy.get('[data-cy=collection-files-panel]') - .contains(subDirName).rightclick({ force: true }); + .contains(subDirName).rightclick(); cy.get('[data-cy=context-menu]') .should('not.contain', 'Download') .and('not.contain', 'Open in new tab') @@ -334,7 +334,7 @@ describe('Collection panel tests', function () { 'bar' // make sure we can go back to the original name as a last step ]; eachPair(names, (from, to) => { - cy.get('[data-cy=collection-files-panel]') + cy.waitForDom().get('[data-cy=collection-files-panel]') .contains(`${from}`).rightclick(); cy.get('[data-cy=context-menu]') .contains('Rename') @@ -368,7 +368,7 @@ describe('Collection panel tests', function () { ['subdir', 'G%C3%BCnter\'s%20file', 'table%&?*2'].forEach((subdir) => { cy.get('[data-cy=collection-files-panel]') - .contains('bar').rightclick({force: true}); + .contains('bar').rightclick(); cy.get('[data-cy=context-menu]') .contains('Rename') .click(); @@ -381,9 +381,9 @@ describe('Collection panel tests', function () { cy.get('[data-cy=collection-files-panel]') .should('not.contain', 'bar') .and('contain', subdir); - cy.wait(1000); cy.get('[data-cy=collection-files-panel]').contains(subdir).click(); - // Rename 'subdir/foo' to 'foo' + + // Rename 'subdir/foo' to 'bar' cy.wait(1000); cy.get('[data-cy=collection-files-panel]') .contains('foo').rightclick(); @@ -399,7 +399,6 @@ describe('Collection panel tests', function () { }); cy.get('[data-cy=form-submit-btn]').click(); - cy.wait(1000); cy.get('[data-cy=collection-files-panel]') .contains('Home') .click(); @@ -419,6 +418,20 @@ describe('Collection panel tests', function () { }); }); + it('shows collection owner', () => { + cy.createCollection(adminUser.token, { + name: `Test collection ${Math.floor(Math.random() * 999999)}`, + owner_uuid: activeUser.user.uuid, + manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n" + }) + .as('testCollection').then((testCollection) => { + cy.loginAs(activeUser); + cy.goToPath(`/collections/${testCollection.uuid}`); + cy.wait(5000); + cy.get('[data-cy=collection-info-panel]').contains(`Collection User`); + }); + }); + it('tries to rename a file with illegal names', function () { // Creates the collection using the admin token so we can set up // a bogus manifest text without block signatures. @@ -842,7 +855,7 @@ describe('Collection panel tests', function () { cy.get('[data-cy=form-submit-btn]').click(); - cy.get('.layout-pane-primary', { wait: 12000 }).contains('Projects').click(); + cy.waitForDom().get('.layout-pane-primary', { timeout: 12000 }).contains('Projects').click(); cy.get('main').contains(`Files extracted from: ${this.collection.name}`).should('exist'); }); @@ -947,7 +960,7 @@ describe('Collection panel tests', function () { cy.createCollection(adminUser.token, { name: `Test collection ${Math.floor(Math.random() * 999999)}`, owner_uuid: activeUser.user.uuid, - manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n" + manifest_text: "./subdir 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo\n. 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n" }).as('testCollection1'); }); @@ -959,17 +972,25 @@ describe('Collection panel tests', function () { cy.get('[data-cy=upload-button]').click(); cy.get('[data-cy=collection-files-panel]') .contains('5mb_a.bin').should('not.exist'); - cy.get('[data-cy=collection-file-count]').should('contain', '1'); + cy.get('[data-cy=collection-file-count]').should('contain', '2'); cy.fixture('files/5mb.bin', 'base64').then(content => { cy.get('[data-cy=drag-and-drop]').upload(content, '5mb_a.bin'); cy.get('[data-cy=form-submit-btn]').click(); cy.get('[data-cy=form-submit-btn]').should('not.exist'); + cy.get('[data-cy=collection-files-panel]') + .contains('5mb_a.bin').should('exist'); + cy.get('[data-cy=collection-file-count]').should('contain', '3'); + + cy.get('[data-cy=collection-files-panel]').contains('subdir').click(); + cy.get('[data-cy=upload-button]').click(); + cy.fixture('files/5mb.bin', 'base64').then(content => { + cy.get('[data-cy=drag-and-drop]').upload(content, '5mb_b.bin'); + cy.get('[data-cy=form-submit-btn]').click(); + cy.get('[data-cy=form-submit-btn]').should('not.exist'); + cy.get('[data-cy=collection-files-right-panel]') + .contains('5mb_b.bin').should('exist'); + }); }); - // Confirm that the file browser has been updated. - cy.get('[data-cy=collection-files-panel]') - .contains('5mb_a.bin').should('exist'); - // Confirm that the collection panel has been updated. - cy.get('[data-cy=collection-file-count]').should('contain', '2'); }); }); @@ -1026,6 +1047,14 @@ describe('Collection panel tests', function () { cy.goToPath(`/collections/${testCollection1.uuid}`); + // Confirm initial collection state. + cy.get('[data-cy=collection-files-panel]') + .contains('bar').should('exist'); + cy.get('[data-cy=collection-files-panel]') + .contains('5mb_a.bin').should('not.exist'); + cy.get('[data-cy=collection-files-panel]') + .contains('5mb_b.bin').should('not.exist'); + cy.get('[data-cy=upload-button]').click(); cy.fixture('files/5mb.bin', 'base64').then(content => { @@ -1035,9 +1064,25 @@ describe('Collection panel tests', function () { cy.get('[data-cy=form-submit-btn]').click(); cy.get('button[aria-label=Remove]').should('exist'); - cy.get('button[aria-label=Remove]').click({ multiple: true, force: true }); + cy.get('button[aria-label=Remove]') + .click({ multiple: true, force: true }); cy.get('[data-cy=form-submit-btn]').should('not.exist'); + + // Confirm final collection state. + cy.get('[data-cy=collection-files-panel]') + .contains('bar').should('exist'); + // The following fails, but doesn't seem to happen + // in the real world. Maybe there's a race between + // the PUT request finishing and the 'Remove' button + // dissapearing, because sometimes just one of the 2 + // files gets uploaded. + // Maybe this will be needed to simulate a slow network: + // https://docs.cypress.io/api/commands/intercept#Convenience-functions-1 + // cy.get('[data-cy=collection-files-panel]') + // .contains('5mb_a.bin').should('not.exist'); + // cy.get('[data-cy=collection-files-panel]') + // .contains('5mb_b.bin').should('not.exist'); }); }); });