diff --git a/packages/storage-ui/cypress/support/page-objects/bucketsPage.ts b/packages/storage-ui/cypress/support/page-objects/bucketsPage.ts
index 472f221c58..dda685fad6 100644
--- a/packages/storage-ui/cypress/support/page-objects/bucketsPage.ts
+++ b/packages/storage-ui/cypress/support/page-objects/bucketsPage.ts
@@ -1,5 +1,6 @@
// Only add things here that could be applicable to the bucket page
+import { FILE_SYSTEM_TYPES } from "../utils/TestConstants"
import { basePage } from "./basePage"
import { createBucketModal } from "./modals/createBucketModal"
@@ -12,8 +13,9 @@ export const bucketsPage = {
// bucket browser row elements
bucketItemRow: () => cy.get("[data-cy=row-bucket-item]"),
- nameTableHeader: () => cy.get("[data-cy=table-header-name]"),
- sizeTableHeader: () => cy.get("[data-cy=table-header-size]"),
+ bucketsTableHeaderName: () => cy.get("[data-cy=buckets-table-header-name]"),
+ bucketsTableHeaderFileSystem: () => cy.get("[data-cy=buckets-table-header-file-system]"),
+ bucketsTableHeaderSize: () => cy.get("[data-cy=buckets-table-header-size]"),
bucketItemName: () => cy.get("[data-cy=cell-bucket-name]"),
bucketFileSystemType: () => cy.get("[data-cy=cell-file-system-type]"),
bucketRowKebabButton: () => cy.get("[data-testid=dropdown-title-bucket-kebab]"),
@@ -22,11 +24,19 @@ export const bucketsPage = {
deleteBucketMenuOption: () => cy.get("[data-cy=menu-delete-bucket]"),
// helpers and convenience functions
- createBucket(bucketName: string) {
+ createBucket(bucketName: string, bucketType: FILE_SYSTEM_TYPES) {
this.createBucketButton().click()
createBucketModal.body().should("be.visible")
createBucketModal.bucketNameInput().type(bucketName)
- createBucketModal.submitButton().safeClick()
+ switch (bucketType) {
+ case FILE_SYSTEM_TYPES.IPFS:
+ createBucketModal.ipfsRadioInput().click()
+ break
+ case FILE_SYSTEM_TYPES.CHAINSAFE:
+ createBucketModal.chainsafeRadioInput().click()
+ break
+ }
+ createBucketModal.submitButton().click()
createBucketModal.body().should("not.exist")
}
}
diff --git a/packages/storage-ui/cypress/support/utils/TestConstants.ts b/packages/storage-ui/cypress/support/utils/TestConstants.ts
new file mode 100644
index 0000000000..00f55cfab3
--- /dev/null
+++ b/packages/storage-ui/cypress/support/utils/TestConstants.ts
@@ -0,0 +1,4 @@
+export enum FILE_SYSTEM_TYPES {
+ CHAINSAFE,
+ IPFS
+}
\ No newline at end of file
diff --git a/packages/storage-ui/cypress/tests/bucket-management.cy.ts b/packages/storage-ui/cypress/tests/bucket-management.cy.ts
index 8db8c31b34..a35bf8651f 100644
--- a/packages/storage-ui/cypress/tests/bucket-management.cy.ts
+++ b/packages/storage-ui/cypress/tests/bucket-management.cy.ts
@@ -6,6 +6,7 @@ import { navigationMenu } from "../support/page-objects/navigationMenu"
import { fileUploadModal } from "../support/page-objects/modals/fileUploadModal"
import { deleteBucketModal } from "../support/page-objects/modals/deleteBucketModal"
import { uploadCompleteToast } from "../support/page-objects/toasts/uploadCompleteToast"
+import { FILE_SYSTEM_TYPES } from "../support/utils/TestConstants"
describe("Bucket management", () => {
@@ -103,5 +104,39 @@ describe("Bucket management", () => {
bucketsPage.bucketItemRow().should("not.exist")
bucketsPage.bucketItemName().should("not.exist")
})
+
+ it("can sort by name or file system in buckets table", () => {
+ cy.web3Login({ deleteFpsBuckets: true })
+ navigationMenu.bucketsNavButton().click()
+
+ bucketsPage.createBucket(chainSafeBucketName, FILE_SYSTEM_TYPES.CHAINSAFE)
+ bucketsPage.bucketItemRow().should("have.length", 1)
+ bucketsPage.createBucket(ipfsBucketName, FILE_SYSTEM_TYPES.IPFS)
+ bucketsPage.bucketItemRow().should("have.length", 2)
+
+ // by default should be sort by date uploading in ascending order (oldest first)
+ bucketsPage.bucketItemName().eq(0).should("have.text", chainSafeBucketName)
+ bucketsPage.bucketItemName().eq(1).should("have.text", ipfsBucketName)
+
+ // ensure that sort by name in descending order (Z-A)
+ bucketsPage.bucketsTableHeaderName().click()
+ bucketsPage.bucketItemName().eq(0).should("have.text", ipfsBucketName)
+ bucketsPage.bucketItemName().eq(1).should("have.text", chainSafeBucketName)
+
+ // ensure that sort by name in ascending order (A-Z)
+ bucketsPage.bucketsTableHeaderName().click()
+ bucketsPage.bucketItemName().eq(0).should("have.text", chainSafeBucketName)
+ bucketsPage.bucketItemName().eq(1).should("have.text", ipfsBucketName)
+
+ // ensure that sort by file system in descending order (Z-A)
+ bucketsPage.bucketsTableHeaderFileSystem().click()
+ bucketsPage.bucketItemName().eq(0).should("have.text", ipfsBucketName)
+ bucketsPage.bucketItemName().eq(1).should("have.text", chainSafeBucketName)
+
+ // ensure that sort by file system in ascending order (A-Z)
+ bucketsPage.bucketsTableHeaderFileSystem().click()
+ bucketsPage.bucketItemName().eq(0).should("have.text", chainSafeBucketName)
+ bucketsPage.bucketItemName().eq(1).should("have.text", ipfsBucketName)
+ })
})
})
diff --git a/packages/storage-ui/src/Components/Pages/BucketsPage.tsx b/packages/storage-ui/src/Components/Pages/BucketsPage.tsx
index 9c900157e6..c579fb0af9 100644
--- a/packages/storage-ui/src/Components/Pages/BucketsPage.tsx
+++ b/packages/storage-ui/src/Components/Pages/BucketsPage.tsx
@@ -300,7 +300,7 @@ const BucketsPage = () => {
className={classes.tableRow}
>
handleSortToggle("name")}
@@ -310,7 +310,7 @@ const BucketsPage = () => {
Name
handleSortToggle("file_system")}
@@ -320,7 +320,7 @@ const BucketsPage = () => {
File System
handleSortToggle("size")}