Skip to content

Commit

Permalink
test: Add Cypress test for renaming loading state
Browse files Browse the repository at this point in the history
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
  • Loading branch information
susnux authored and AndyScherzinger committed Sep 1, 2024
1 parent b4b93d6 commit 49d2d96
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
45 changes: 45 additions & 0 deletions cypress/e2e/files/files-renaming.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,49 @@ describe('files: Rename nodes', { testIsolation: true }, () => {
// See validity
.should(haveValidity(/reserved name/i))
})

it('shows accessible loading information', () => {
const { resolve, promise } = Promise.withResolvers()

getRowForFile('file.txt').should('be.visible')

// intercept the rename (MOVE)
// the callback will wait until the promise resolve (so we have time to check the loading state)
cy.intercept(
'MOVE',
/\/remote.php\/dav\/files\//,
async () => { await promise },
).as('moveFile')

// Start the renaming
triggerActionForFile('file.txt', 'rename')
getRowForFile('file.txt')
.findByRole('textbox', { name: 'Filename' })
.should('be.visible')
.type('{selectAll}new-name.txt{enter}')

// Loading state is visible
getRowForFile('new-name.txt')
.findByRole('img', { name: 'File is loading' })
.should('be.visible')
// checkbox is not visible
getRowForFile('new-name.txt')
.findByRole('checkbox', { name: /^Toggle selection/ })
.should('not.exist')

cy.log('Resolve promise to preoceed with MOVE request')
.then(() => resolve(null))

// Ensure the request is done (file renamed)
cy.wait('@moveFile')

// checkbox visible again
getRowForFile('new-name.txt')
.findByRole('checkbox', { name: /^Toggle selection/ })
.should('exist')
// see the loading state is gone
getRowForFile('new-name.txt')
.findByRole('img', { name: 'File is loading' })
.should('not.exist')
})
})
3 changes: 3 additions & 0 deletions cypress/support/e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
import 'cypress-axe'
import './commands.ts'

// Remove with Node 22
import 'core-js/actual/promise/with-resolvers.js'

// Fix ResizeObserver loop limit exceeded happening in Cypress only
// @see https://github.com/cypress-io/cypress/issues/20341
Cypress.on('uncaught:exception', err => !err.message.includes('ResizeObserver loop limit exceeded'))
Expand Down

0 comments on commit 49d2d96

Please sign in to comment.