test: Adjust Cypress tests for new public share UI

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2024-09-06 18:07:01 +02:00
Родитель 88a84ffc74
Коммит 7ea95b187f
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 45FAE7268762B400
6 изменённых файлов: 77 добавлений и 22 удалений

Просмотреть файл

@ -152,7 +152,7 @@ export default function(file, type, sidebar = false) {
})
it('Open the viewer on file click (public)', function() {
cy.openFileInShare(placedName)
cy.openFile(placedName)
cy.get('body > .viewer').should('be.visible')
})

Просмотреть файл

@ -36,10 +36,6 @@ describe(`Download ${fileName} in viewer`, function() {
cy.visit('/apps/files')
})
})
after(function() {
// already logged out after visiting share link
// cy.logout()
})
it('See the default files list', function() {
cy.getFile('welcome.txt').should('contain', 'welcome .txt')
@ -62,7 +58,7 @@ describe(`Download ${fileName} in viewer`, function() {
}
})
cy.createLinkShare('/Photos').then(token => {
cy.createLinkShare('/Photos').then((token: string) => {
cy.intercept('GET', '**/apps/files_sharing/api/v1/shares*').as('sharingAPI')
// Open the sidebar from the breadcrumbs
@ -80,25 +76,50 @@ describe(`Download ${fileName} in viewer`, function() {
cy.get('@hideDownloadBtn').get('span').contains('Hide download').click()
cy.get('@hideDownloadBtn').get('input[type=checkbox]').should('be.checked')
cy.intercept('PUT', '/ocs/v2.php/apps/files_sharing/api/v1/shares/*').as('updateShare')
cy.contains('button', 'Update share').click()
cy.wait('@updateShare')
// Log out and access link share
cy.logout()
cy.visit(`/s/${token}`)
})
})
it('See only view action', () => {
for (const file of ['image1.jpg', 'image2.jpg']) {
cy.get(`[data-cy-files-list-row-name="${CSS.escape(file)}"]`)
.find('[data-cy-files-list-row-actions]')
.find('button')
.click()
// Only view action
cy.get('[role="menu"]:visible')
.find('button')
.should('have.length', 1)
.first()
.should('contain.text', 'View')
cy.get(`[data-cy-files-list-row-name="${CSS.escape(file)}"]`)
.find('[data-cy-files-list-row-actions]')
.find('button')
.click()
}
})
it('Open the viewer on file click', function() {
cy.openFileInShare('image1.jpg')
cy.openFile('image1.jpg')
cy.get('body > .viewer').should('be.visible')
})
it('Does not see a loading animation', function() {
// TODO: FIX DOWNLOAD DISABLED SHARES
it.skip('Does not see a loading animation', function() {
cy.get('body > .viewer', { timeout: 10000 })
.should('be.visible')
.and('have.class', 'modal-mask')
.and('not.have.class', 'icon-loading')
})
it('See the title on the viewer header but not the Download nor the menu button', function() {
// TODO: FIX DOWNLOAD DISABLED SHARES
it.skip('See the title on the viewer header but not the Download nor the menu button', function() {
cy.get('body > .viewer .modal-header__name').should('contain', 'image1.jpg')
cy.get('body a[download="image1.jpg"]').should('not.exist')
cy.get('body > .viewer .modal-header button.action-item__menutoggle').should('not.exist')

Просмотреть файл

@ -67,7 +67,7 @@ describe(`Download ${fileName} from viewer in link share`, function() {
})
it('Open the viewer on file click', function() {
cy.openFileInShare('image1.jpg')
cy.openFile('image1.jpg')
cy.get('body > .viewer').should('be.visible')
})

Просмотреть файл

@ -69,7 +69,7 @@ describe('See shared folder with link share', function() {
})
it('Open the viewer on file click', function() {
cy.openFileInShare('image1.jpg')
cy.openFile('image1.jpg')
cy.get('body > .viewer').should('be.visible')
})

Просмотреть файл

@ -47,20 +47,52 @@ describe('See shared folder with link share', function() {
it('Opens the shared image in the viewer', function() {
cy.visit(`/s/${imageToken}`)
cy.get('#imgframe img').should('be.visible')
cy.get('#imgframe > #viewer').should('be.visible')
cy.contains('image1.jpg').should('be.visible')
cy.scrollTo('bottom', { ensureScrollable: false })
cy.get(`#header a[href*="/s/${imageToken}/download"]`).should('be.visible')
cy.intercept('GET', '**/apps/files_sharing/publicpreview/**').as('getImage')
cy.openFileInSingleShare()
cy.wait('@getImage')
.its('response.statusCode')
.should('eq', 200)
// Make sure loading is finished
cy.get('body > .viewer', { timeout: 10000 })
.should('be.visible')
.and('have.class', 'modal-mask')
.and('not.have.class', 'icon-loading')
// The image source is the preview url
cy.get('body > .viewer .modal-container .viewer__file.viewer__file--active img')
.should('have.attr', 'src')
.and('contain', '/apps/files_sharing/publicpreview/')
// See the menu icon and close button
cy.get('body > .viewer .modal-header button.action-item__menutoggle').should('be.visible')
cy.get('body > .viewer .modal-header button.header-close').should('be.visible')
})
it('Opens the shared video in the viewer', function() {
cy.visit(`/s/${videoToken}`)
cy.get('#imgframe .plyr').should('be.visible')
cy.get('#imgframe > #viewer').should('be.visible')
cy.contains('video1.mp4').should('be.visible')
cy.scrollTo('bottom', { ensureScrollable: false })
cy.get(`#header a[href*="/s/${videoToken}/download"]`).should('be.visible')
cy.intercept('GET', '**/public.php/dav/files/**').as('loadVideo')
cy.openFileInSingleShare()
cy.wait('@loadVideo')
// Make sure loading is finished
cy.get('body > .viewer', { timeout: 10000 })
.should('be.visible')
.and('have.class', 'modal-mask')
.and('not.have.class', 'icon-loading')
// The video source is the preview url
cy.get('body > .viewer .modal-container .viewer__file.viewer__file--active video')
.should('have.attr', 'src')
.and('contain', `/public.php/dav/files/${videoToken}`)
// See the menu icon and close button
cy.get('body > .viewer .modal-header button.action-item__menutoggle').should('be.visible')
cy.get('body > .viewer .modal-header button.header-close').should('be.visible')
})
})

Просмотреть файл

@ -28,7 +28,7 @@ import { addCompareSnapshotCommand } from 'cypress-visual-regression/dist/comman
addCommands()
addCompareSnapshotCommand()
const url = Cypress.config('baseUrl').replace(/\/index.php\/?$/g, '')
const url = Cypress.config('baseUrl')!.replace(/\/index.php\/?$/g, '')
Cypress.env('baseUrl', url)
/**
@ -97,8 +97,10 @@ Cypress.Commands.add('openFile', fileName => {
cy.wait(250)
})
Cypress.Commands.add('openFileInShare', fileName => {
cy.get(`.files-fileList tr[data-file="${CSS.escape(fileName)}"] a.name`).click()
Cypress.Commands.add('openFileInSingleShare', () => {
cy.get('tr[data-cy-files-list-row-name]')
.should('have.length', 1)
.click()
// eslint-disable-next-line
cy.wait(250)
})