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")}