21988: added default details panel test
[arvados.git] / services / workbench2 / cypress / e2e / details-panel.cy.js
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 describe('Details panel', () => {
6   let adminUser;
7
8   before(() => {
9     cy.getUser("active", "Active", "User", true, true)
10       .as("activeUser")
11       .then((user) => {
12         adminUser = user;
13       });
14   });
15
16   // Add this test to the existing describe block in details-panel.cy.js
17
18   it('displays root project details when no items are selected', () => {
19     cy.loginAs(adminUser);
20
21     // Navigate to the user's root project
22     cy.visit(`/projects/${adminUser.user.uuid}`);
23
24     // Wait for the data table to load
25     cy.get('[data-cy=data-table]').should('be.visible');
26
27     // Ensure no items are selected
28     cy.get('[data-cy=data-table-row] input[type="checkbox"]:checked').should('not.exist');
29
30     // Open the details panel
31     cy.get('[data-cy=details-panel]').should('not.exist');
32     cy.get('[data-testid=InfoIcon]').click();
33     cy.get('[data-cy=details-panel]').should('be.visible');
34
35     // Check if root project details are displayed
36     cy.get('[data-cy=details-panel]').within(() => {
37       cy.contains('Type').should('be.visible');
38       cy.contains('Root Project').should('be.visible');
39       cy.contains('User').should('be.visible');
40       cy.contains('Created at').should('be.visible');
41       cy.contains('UUID').should('be.visible');
42
43       // Verify specific root project details
44       cy.contains(adminUser.user.uuid).should('be.visible');
45     });
46
47     // Verify that the Root Project icon is displayed
48     cy.get('[data-cy=details-panel]').find('[data-testid=InboxIcon]').should('be.visible');
49   });
50 });
51
52 describe('Collection details panel', () => {
53   let adminUser;
54
55   before(() => {
56     cy.getUser("active", "Active", "User", true, true)
57       .as("activeUser")
58       .then((user) => {
59         adminUser = user;
60       });
61   });
62
63   it('displays appropriate attributes when a collection is selected', () => {
64     cy.loginAs(adminUser);
65
66     // Create a test collection
67     const collectionName = `Test Collection ${Math.floor(Math.random() * 999999)}`;
68     cy.createCollection(adminUser.token, {
69       name: collectionName,
70       owner_uuid: adminUser.user.uuid,
71       manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:foo\n",
72     }).as('testCollection');
73
74     // Navigate to the project containing the collection
75     cy.get('@testCollection').then((collection) => {
76       cy.visit(`/projects/${adminUser.user.uuid}`);
77
78       // Wait for the data table to load
79       cy.get('[data-cy=data-table]').should('be.visible');
80
81       // Find and check the checkbox for the test collection
82       cy.contains('[data-cy=data-table-row]', collectionName)
83         .find('input[type="checkbox"]')
84         .click();
85
86       // Open the details panel
87       cy.get('[data-cy=details-panel]').should('not.exist');
88       cy.get('[data-testid=InfoIcon]').click();
89       cy.get('[data-cy=details-panel]').should('be.visible');
90
91       // Check if appropriate attributes are displayed
92       cy.get('[data-cy=details-panel]').within(() => {
93         cy.contains('Collection UUID').should('be.visible');
94         cy.contains('Portable data hash').should('be.visible');
95         cy.contains('Owner').should('be.visible');
96         cy.contains('Created at').should('be.visible');
97         cy.contains('Last modified').should('be.visible');
98         cy.contains('Content size').should('be.visible');
99         cy.contains('Number of files').should('be.visible');
100         cy.contains('Properties').should('be.visible');
101       });
102
103       // Verify specific collection details
104       cy.get('[data-cy=details-panel]').within(() => {
105         cy.contains(collection.uuid).should('be.visible');
106         cy.contains(collection.portable_data_hash).should('be.visible');
107         cy.contains(adminUser.user.uuid).should('be.visible');
108         cy.contains('1').should('be.visible'); // Number of files
109         cy.contains('3 B').should('be.visible'); // Content size
110       });
111     });
112   });
113 });