Skip to content

Commit

Permalink
Merge pull request #5143 from nextcloud/test/fix-cypress-workspace
Browse files Browse the repository at this point in the history
  • Loading branch information
juliusknorr authored Dec 18, 2023
2 parents 020a280 + 7842447 commit ad331b6
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 55 deletions.
103 changes: 52 additions & 51 deletions cypress/e2e/workspace.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,24 @@ import { randUser } from '../utils/index.js'
const user = randUser()

describe('Workspace', function() {
let currentFolder

before(function() {
cy.createUser(user, 'password')
cy.createUser(user)
})

beforeEach(function() {
cy.login(user)
// Some tests modify the language.
// Make sure it's the default otherwise.
cy.modifyUser(user, 'language', 'en')
// isolate tests - each happens in its own folder
const retry = cy.state('test').currentRetry()
currentFolder = retry
? `${Cypress.currentTest.title} (${retry})`
: Cypress.currentTest.title
cy.createFolder(currentFolder)
cy.createTestFolder().as('testFolder')
})

it('Hides the workspace when switching to another folder', function() {
cy.uploadFile('test.md', 'text/markdown', `${currentFolder}/README.md`)
cy.createFolder(`${currentFolder}/subdirectory`)
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.uploadFile('test.md', 'text/markdown', `${this.testFolder}/README.md`)
cy.createFolder(`${this.testFolder}/subdirectory`)
cy.visitTestFolder()
cy.getFile('README.md')
cy.get('#rich-workspace .ProseMirror')
.should('contain', 'Hello world')
Expand All @@ -53,8 +51,8 @@ describe('Workspace', function() {
})

it('Hides the workspace when switching to another view', function() {
cy.uploadFile('test.md', 'text/markdown', `${currentFolder}/README.md`)
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.uploadFile('test.md', 'text/markdown', `${this.testFolder}/README.md`)
cy.visitTestFolder()
cy.getFile('README.md')
cy.get('#rich-workspace .ProseMirror')
.should('contain', 'Hello world')
Expand All @@ -65,15 +63,16 @@ describe('Workspace', function() {
})

it('adds a Readme.md', function() {
cy.createDescription(currentFolder)
cy.visitTestFolder()
cy.createDescription()
openSidebar('Readme.md')
cy.get('#rich-workspace .text-editor .text-editor__wrapper')
.should('be.visible')
})

it('formats text', function() {
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.openWorkspace(currentFolder)
cy.visitTestFolder()
cy.openWorkspace()
const buttons = [
['bold', 'strong'],
['italic', 'em'],
Expand All @@ -87,8 +86,8 @@ describe('Workspace', function() {
})

it('creates headings via submenu', function() {
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.openWorkspace(currentFolder).type('Heading')
cy.visitTestFolder()
cy.openWorkspace().type('Heading')
cy.getContent().type('{selectall}')
;['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].forEach((heading) => {
const actionName = `headings-${heading}`
Expand All @@ -108,8 +107,8 @@ describe('Workspace', function() {
})

it('creates lists', function() {
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.openWorkspace(currentFolder).type('List me')
cy.visitTestFolder()
cy.openWorkspace().type('List me')
cy.getContent().type('{selectall}')
;[
['unordered-list', 'ul'],
Expand All @@ -119,16 +118,16 @@ describe('Workspace', function() {
})

it('takes README.md into account', function() {
cy.uploadFile('test.md', 'text/markdown', `${Cypress.currentTest.title}/README.md`)
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.uploadFile('test.md', 'text/markdown', `${this.testFolder}/README.md`)
cy.visitTestFolder()
cy.getFile('README.md')
cy.get('#rich-workspace .ProseMirror')
.should('contain', 'Hello world')
})

it('emoji picker', () => {
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.openWorkspace(currentFolder)
it('emoji picker', function() {
cy.visitTestFolder()
cy.openWorkspace()
.type('# Let\'s smile together{enter}## ')

cy.getMenuEntry('emoji-picker')
Expand All @@ -143,14 +142,14 @@ describe('Workspace', function() {
.contains('😀')
})

it('relative folder links', () => {
cy.createFolder(`${currentFolder}/sub-folder`)
cy.createFolder(`${currentFolder}/sub-folder/alpha`)
it('relative folder links', function() {
cy.createFolder(`${this.testFolder}/sub-folder`)
cy.createFolder(`${this.testFolder}/sub-folder/alpha`)

cy.uploadFile('test.md', 'text/markdown', `${currentFolder}/sub-folder/alpha/test.md`)
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.uploadFile('test.md', 'text/markdown', `${this.testFolder}/sub-folder/alpha/test.md`)
cy.visitTestFolder()

cy.openWorkspace(currentFolder)
cy.openWorkspace()
.type('link me')
cy.getContent()
.type('{selectall}')
Expand All @@ -166,7 +165,7 @@ describe('Workspace', function() {
cy.getEditor()
.find('a')
.should('have.attr', 'href')
.and('contains', `dir=/${currentFolder}/sub-folder/alpha`)
.and('contains', `dir=/${this.testFolder}/sub-folder/alpha`)
.and('contains', '#relPath=sub-folder/alpha/test.md')

cy.getEditor()
Expand All @@ -183,15 +182,15 @@ describe('Workspace', function() {
cy.getModal().find('button.header-close').click()
})

describe('callouts', () => {
describe('callouts', function() {
const types = ['info', 'warn', 'error', 'success']

beforeEach(function() {
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.openWorkspace(currentFolder).type('Callout')
cy.visitTestFolder()
cy.openWorkspace().type('Callout')
})
// eslint-disable-next-line cypress/no-async-tests
it('create callout', () => {
it('create callout', function() {
cy.wrap(types).each((type) => {
cy.log(`creating ${type} callout`)

Expand All @@ -212,7 +211,7 @@ describe('Workspace', function() {
})
})

it('toggle callouts', () => {
it('toggle callouts', function() {
const [first, ...rest] = types

// enable callout
Expand All @@ -233,26 +232,28 @@ describe('Workspace', function() {
})
})

describe('localize', () => {
describe('localize', function() {
it('takes localized file name into account', function() {
cy.modifyUser(user, 'language', 'de_DE')
cy.uploadFile('test.md', 'text/markdown', `${Cypress.currentTest.title}/Anleitung.md`)
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.uploadFile('test.md', 'text/markdown', `${this.testFolder}/Anleitung.md`)
cy.visitTestFolder()
cy.getFile('Anleitung.md')
cy.get('#rich-workspace .ProseMirror')
.should('contain', 'Hello world')
})

it('ignores localized file name in other language', function() {
cy.modifyUser(user, 'language', 'fr')
cy.uploadFile('test.md', 'text/markdown', `${Cypress.currentTest.title}/Anleitung.md`)
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
cy.uploadFile('test.md', 'text/markdown', `${this.testFolder}/Anleitung.md`)
cy.visitTestFolder()
cy.getFile('Anleitung.md')
cy.get('#rich-workspace .ProseMirror')
.should('not.exist')
})
})

describe('create Readme.md', () => {
const checkContent = () => {
describe('create Readme.md', function() {
const checkContent = function() {
const txt = Cypress.currentTest.title

cy.getEditor().find('[data-text-el="editor-content-wrapper"]').click()
Expand All @@ -261,22 +262,22 @@ describe('Workspace', function() {
cy.getContent().should('contain', txt)
}

beforeEach(() => {
cy.visit(`apps/files?dir=/${encodeURIComponent(currentFolder)}`)
beforeEach(function() {
cy.visitTestFolder()
})

it('click', () => {
cy.openWorkspace(currentFolder).click()
it('click', function() {
cy.openWorkspace().click()
checkContent()
})

it('enter', () => {
cy.openWorkspace(currentFolder).type('{enter}')
it('enter', function() {
cy.openWorkspace().type('{enter}')
checkContent()
})

it('spacebar', () => {
cy.openWorkspace(currentFolder)
it('spacebar', function() {
cy.openWorkspace()
.trigger('keyup', {
keyCode: 32,
which: 32,
Expand Down
7 changes: 3 additions & 4 deletions cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -473,8 +473,8 @@ Cypress.Commands.add('clearContent', () => {
cy.getContent()
})

Cypress.Commands.add('openWorkspace', (folder) => {
cy.createDescription(folder)
Cypress.Commands.add('openWorkspace', () => {
cy.createDescription()
cy.get('#rich-workspace .editor__content').click({ force: true })
cy.getEditor().find('[data-text-el="editor-content-wrapper"]').click({ force: true })

Expand Down Expand Up @@ -510,12 +510,11 @@ Cypress.Commands.add('showHiddenFiles', (value = true) => {
})
})

Cypress.Commands.add('createDescription', (folder) => {
Cypress.Commands.add('createDescription', () => {
const url = '**/remote.php/dav/files/**'
cy.intercept({ method: 'PUT', url })
.as('addDescription')

cy.visit(`apps/files?dir=/${encodeURIComponent(folder)}`)
cy.get('[data-cy-files-list] tr[data-cy-files-list-row-name="Readme.md"]').should('not.exist')
cy.get('[data-cy-upload-picker] button.action-item__menutoggle').click()
cy.get('li.upload-picker__menu-entry button').contains('Add description').click()
Expand Down

0 comments on commit ad331b6

Please sign in to comment.