diff --git a/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Media/media.ts b/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Media/media.ts new file mode 100644 index 0000000000..fd2f0a0972 --- /dev/null +++ b/tests/Umbraco.Tests.AcceptanceTest/cypress/integration/Media/media.ts @@ -0,0 +1,195 @@ +/// + +import {MediaBuilder} from 'umbraco-cypress-testhelpers'; + +context('Media', () => { + + beforeEach(() => { + cy.umbracoLogin(Cypress.env('username'), Cypress.env('password')); + cy.umbracoSection("media"); + }); + + function refreshMediaTree() { + // Refresh to update the tree + cy.get('li .umb-tree-root:contains("Media")').should("be.visible").rightclick(); + //Needs to wait or it can give an error + cy.wait(1000); + cy.get(".umb-outline").contains("Reload").click(); + } + + it('Create folder', () => { + const folderName = 'Media Folder'; + //Ensures that there is not already an existing folder with the same name + cy.umbracoEnsureMediaNameNotExists(folderName); + + //Action + //Creates folder + cy.get(".dropdown-toggle").contains("Create").click({force: true}); + cy.get('[role="menuitem"]').contains("Folder").click({force: true}); + cy.get('[data-element="editor-name-field"]').type(folderName); + cy.umbracoButtonByLabelKey("buttons_save").click(); + + //Assert + cy.umbracoSuccessNotification().should("be.visible"); + + //Cleans up + cy.umbracoEnsureMediaNameNotExists(folderName); + }); + + it('Create folder inside of folder', () => { + const folderName = 'Folder'; + const insideFolderName = 'Folder in folder'; + //Ensures that there is not already existing folders with the same names + cy.umbracoEnsureMediaNameNotExists(folderName); + cy.umbracoEnsureMediaNameNotExists(insideFolderName); + + //Action + //Creates the first folder with an API call + const mediaFolder = new MediaBuilder() + .withName(folderName) + .withContentTypeAlias('Folder') + .build() + cy.saveMedia(mediaFolder, null); + //Creates second folder + refreshMediaTree(); + cy.umbracoTreeItem('media', [folderName]).click(); + cy.get(".dropdown-toggle").contains("Create").click({force: true}); + cy.get('[role="menuitem"]').contains("Folder").click({force: true}); + cy.get('[data-element="editor-name-field"]').type(insideFolderName); + cy.umbracoButtonByLabelKey("buttons_save").click(); + + //Assert + cy.umbracoSuccessNotification().should("be.visible"); + + //Cleans up + cy.umbracoEnsureMediaNameNotExists(folderName); + cy.umbracoEnsureMediaNameNotExists(insideFolderName); + }); + + it('Create image', () => { + const imageName = 'ImageTest'; + //Ensures that there is not already an existing image with the name + cy.umbracoEnsureMediaNameNotExists(imageName); + const umbracoFileValue = {"src": "Umbraco.png,"} + + //Action + const mediaImage = new MediaBuilder() + .withName(imageName) + .withContentTypeAlias('Image') + .addProperty() + .withAlias("umbracoFile") + .withValue(umbracoFileValue) + .done() + .build() + const blob = Cypress.Blob.base64StringToBlob("iVBORw0KGgoAAAANSUhEUgAAADcAAAAjCAYAAAAwnJLLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGpSURBVFhH7ZRNq0FRFIbPbzD3A/wKSUkZmCgzAyUpkhhRyMT8TIwlEylDI2WgJMyMmJAB+SqS5OvVXjY599ad3eyt/dRpnbXW7rSf1upo+GKUnKwoOVlRcrKi5GRFycmKkpMVJScrSk5WhJDr9/uIRqPYbDa8Aux2O2QyGVitVjidTrTbbd55cLvdUKlUUCgUcDqdeNXIR+XYBev1OtxuNzweD1ar1auu6zrK5TK9j8dj+P1+LJdL6jOazSZisRj2+z2v/OajcuxitVoNk8kEwWDQIMdqh8OBcjbFcDiM0WhE+Xw+RyKRoPgXQqwlk3qX+0m320UymcTxeKQnHo/D4XDA5XIhn89jvV7zk0aEl2MrydbvOaVerwefz4fZbIbr9YpqtYp0Oo3L5UL9d4SWY2KRSITik1arhWKxyDNgOp0ilUq9VvgdYeWYUCgUwnA45JUHg8EA2WwW5/OZ8kajgVwuJ+bk2F/RZrPBbDZTZPl2u4XX64XFYoHJZIKmaRQ7nQ5JlEol2O12Oh8IBLBYLPjXjAgxuf9CycmKkpMVJScrSk5WvlgOuANsVZDROrcwfgAAAABJRU5ErkJggg=="); + const testFile = new File([blob], "test.jpg"); + cy.saveMedia(mediaImage, testFile); + refreshMediaTree(); + + //Assert + cy.get('[data-element="tree-item-ImageTest"]').should("be.visible"); + + //Cleans up + cy.umbracoEnsureMediaNameNotExists(imageName); + }); + + it('Create SVG', () => { + const svgName = 'svgTest'; + //Ensures that there is not already an existing SVG with the name + cy.umbracoEnsureMediaNameNotExists(svgName); + + //Action + const mediaSVG = new MediaBuilder() + .withName(svgName) + .withContentTypeAlias('umbracoMediaVectorGraphics') + .build() + cy.saveMedia(mediaSVG, null); + refreshMediaTree(); + + //Assert + cy.get('[data-element="tree-item-svgTest"]').should("be.visible"); + + //Cleans up + cy.umbracoEnsureMediaNameNotExists(svgName); + }); + + it('Create Audio', () => { + const audioName = 'audioTest'; + //Ensures that there is not already an existing audio with the name + cy.umbracoEnsureMediaNameNotExists(audioName); + + //Action + const mediaAudio = new MediaBuilder() + .withName(audioName) + .withContentTypeAlias('umbracoMediaAudio') + .build() + cy.saveMedia(mediaAudio, null); + refreshMediaTree(); + + //Assert + cy.get('[data-element="tree-item-audioTest"]').should("be.visible"); + + //Cleans up + cy.umbracoEnsureMediaNameNotExists(audioName); + }); + + it('Create File', () => { + const fileName = 'fileTest'; + //Ensures that there is not already an existing file with the name + cy.umbracoEnsureMediaNameNotExists(fileName); + + //Action + const mediaFile = new MediaBuilder() + .withName(fileName) + .withContentTypeAlias('File') + .build() + cy.saveMedia(mediaFile, null); + refreshMediaTree(); + + //Assert + cy.get('[data-element="tree-item-fileTest"]').should("be.visible"); + + //Cleans up + cy.umbracoEnsureMediaNameNotExists(fileName); + }); + + it('Create Video', () => { + const videoName = 'videoTest'; + //Ensures that there is not already an existing video with the name + cy.umbracoEnsureMediaNameNotExists(videoName); + + //Action + const mediaVideo = new MediaBuilder() + .withName(videoName) + .withContentTypeAlias('umbracoMediaVideo') + .build() + cy.saveMedia(mediaVideo, null); + refreshMediaTree(); + + //Assert + cy.get('[data-element="tree-item-videoTest"]').should("be.visible"); + + //Cleans up + cy.umbracoEnsureMediaNameNotExists(videoName); + }); + + it('Create Article', () => { + const articleName = 'articleTest'; + //Ensures that there is not already an existing article with the name + cy.umbracoEnsureMediaNameNotExists(articleName); + + //Action + const mediaArticle = new MediaBuilder() + .withName(articleName) + .withContentTypeAlias('umbracoMediaArticle') + .build() + cy.saveMedia(mediaArticle, null); + refreshMediaTree(); + + //Assert + cy.get('[data-element="tree-item-articleTest"]').should("be.visible"); + + //Cleans up + cy.umbracoEnsureMediaNameNotExists(articleName); + }); +}); \ No newline at end of file diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index 1df679c2a5..e0572c1cb3 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json @@ -16,7 +16,7 @@ "del": "^6.0.0", "ncp": "^2.0.0", "prompt": "^1.2.0", - "umbraco-cypress-testhelpers": "^1.0.0-beta-69" + "umbraco-cypress-testhelpers": "^1.0.0-beta-73" } }, "node_modules/@cypress/request": { @@ -2176,9 +2176,9 @@ } }, "node_modules/umbraco-cypress-testhelpers": { - "version": "1.0.0-beta-69", - "resolved": "https://registry.npmjs.org/umbraco-cypress-testhelpers/-/umbraco-cypress-testhelpers-1.0.0-beta-69.tgz", - "integrity": "sha512-2IM+C2XtmiA3txyWatZxgKuNxLdcKLGKICPf0ZqYbOrPeSxTiIPAM9tuoh3heDP6/CdtUnvpaiTUl1c8O6A5Fw==", + "version": "1.0.0-beta-73", + "resolved": "https://registry.npmjs.org/umbraco-cypress-testhelpers/-/umbraco-cypress-testhelpers-1.0.0-beta-73.tgz", + "integrity": "sha512-VZy7QFjY5o1oTWdpYGb9xrwr4qUw5BcbEwz0GYZexiKCr+Vqq3MllmLMWfkRl4/9O/tbu+ggKx3OZ49GRAGUyg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3964,9 +3964,9 @@ "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==" }, "umbraco-cypress-testhelpers": { - "version": "1.0.0-beta-69", - "resolved": "https://registry.npmjs.org/umbraco-cypress-testhelpers/-/umbraco-cypress-testhelpers-1.0.0-beta-69.tgz", - "integrity": "sha512-2IM+C2XtmiA3txyWatZxgKuNxLdcKLGKICPf0ZqYbOrPeSxTiIPAM9tuoh3heDP6/CdtUnvpaiTUl1c8O6A5Fw==", + "version": "1.0.0-beta-73", + "resolved": "https://registry.npmjs.org/umbraco-cypress-testhelpers/-/umbraco-cypress-testhelpers-1.0.0-beta-73.tgz", + "integrity": "sha512-VZy7QFjY5o1oTWdpYGb9xrwr4qUw5BcbEwz0GYZexiKCr+Vqq3MllmLMWfkRl4/9O/tbu+ggKx3OZ49GRAGUyg==", "dev": true, "requires": { "camelize": "^1.0.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json index e087d3f3a2..45ef9bef67 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package.json @@ -14,7 +14,7 @@ "del": "^6.0.0", "ncp": "^2.0.0", "prompt": "^1.2.0", - "umbraco-cypress-testhelpers": "^1.0.0-beta-69" + "umbraco-cypress-testhelpers": "^1.0.0-beta-73" }, "dependencies": { "typescript": "^3.9.2"