Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix(cypress): files_versions flakyness
Signed-off-by: skjnldsv <[email protected]>
  • Loading branch information
skjnldsv authored and nextcloud-command committed Feb 29, 2024
commit 13014e1653e2b813ede5628e72c04cb871d15614
39 changes: 19 additions & 20 deletions cypress/e2e/files_versions/filesVersionsUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@
*
*/

import path from "path"
import type { User } from "@nextcloud/cypress"
import type { User } from '@nextcloud/cypress'
import path from 'path'

export function uploadThreeVersions(user: User, fileName: string) {
export const uploadThreeVersions = (user: User, fileName: string) => {
// A new version will not be created if the changes occur
// within less than one second of each other.
// eslint-disable-next-line cypress/no-unnecessary-waiting
Expand All @@ -35,23 +35,22 @@ export function uploadThreeVersions(user: User, fileName: string) {
cy.login(user)
}

export function openVersionsPanel(fileName: string) {
cy.get(`[data-cy-files-list] [data-cy-files-list-row-name="${fileName}"]`).within(() => {
cy.get('[data-cy-files-list-row-actions] .action-item__menutoggle')
.click()
})

cy.get('.action-item__popper')
.get('[data-cy-files-list-row-action="details"]')
.click()
export const openVersionsPanel = (fileName: string) =>{
// Detect the versions list fetch
cy.intercept('PROPFIND', '**/dav/versions/*/versions/**').as('getVersions')

cy.get('#app-sidebar-vue')
.get('[aria-controls="tab-version_vue"]')
.click()
// Open the versions tab
cy.window().then(win => {
win.OCA.Files.Sidebar.setActiveTab('version_vue')
win.OCA.Files.Sidebar.open(`/${fileName}`)
})

// Wait for the versions list to be fetched
cy.wait('@getVersions')
cy.get('#tab-version_vue').should('be.visible', { timeout: 10000 })
}

export function openVersionMenu(index: number) {
export const openVersionMenu = (index: number) => {
cy.get('#tab-version_vue').within(() => {
cy.get('[data-files-versions-version]')
.eq(index).within(() => {
Expand All @@ -61,19 +60,19 @@ export function openVersionMenu(index: number) {
})
}

export function clickPopperAction(actionName: string) {
export const clickPopperAction = (actionName: string) => {
cy.get('.v-popper__popper').filter(':visible')
.contains(actionName)
.click()
}

export function nameVersion(index: number, name: string) {
export const nameVersion = (index: number, name: string) => {
openVersionMenu(index)
clickPopperAction('Name this version')
cy.get(':focused').type(`${name}{enter}`)
}

export function assertVersionContent(filename: string, index: number, expectedContent: string) {
export const assertVersionContent = (filename: string, index: number, expectedContent: string) => {
const downloadsFolder = Cypress.config('downloadsFolder')

openVersionMenu(index)
Expand All @@ -82,4 +81,4 @@ export function assertVersionContent(filename: string, index: number, expectedCo
return cy.readFile(path.join(downloadsFolder, filename))
.then((versionContent) => expect(versionContent).to.equal(expectedContent))
.then(() => cy.exec(`rm ${downloadsFolder}/${filename}`))
}
}
4 changes: 3 additions & 1 deletion cypress/e2e/files_versions/version_restoration.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@

import { assertVersionContent, clickPopperAction, openVersionMenu, openVersionsPanel, uploadThreeVersions } from './filesVersionsUtils'

function restoreVersion(index: number) {
const restoreVersion = (index: number) => {
cy.intercept('MOVE', '**/dav/versions/*/versions/**').as('restoreVersion')
openVersionMenu(index)
clickPopperAction('Restore version')
cy.wait('@restoreVersion')
}

describe('Versions restoration', () => {
Expand Down