@nextcloud/cypress

Nextcloud cypress helpers for Nextcloud apps and libraries
New package available
@nextcloud/e2e-test-server is a more generic version of @nextcloud/cypress
that will work nicely with both cypress and playwright.
It will eventually superseed @nextcloud/cypress.
When starting a new project we recommend using @nextcloud/e2e-test-server.
Commands
You can import individual commands or all at once
You can find the list of all available commands here
import { addCommands } from '@nextcloud/cypress'
addCommands()
import { getNc } from '@nextcloud/cypress/commands'
Cypress.Commands.add('getNc', getNc)
Selectors
You can find the list of all available selectors here
import { UploadPicker as UploadPickerComponent} from '../../dist/index.js'
import { UploadPicker, UploadPickerInput } from '@nextcloud/cypress/selectors'
describe('UploadPicker rendering', () => {
it('Renders default UploadPicker', () => {
cy.mount(UploadPickerComponent)
cy.getNc(UploadPicker).should('exist')
.should('have.class', 'upload-picker')
cy.getNc(UploadPickerInput).should('exist')
})
})
Starting Nextcloud Docker container
It is possible to automatically start a docker container providing a Nextcloud instance for testing.
Therefor adjust your cypress.config.ts (or .js):
import { configureNextcloud, startNextcloud, stopNextcloud, waitOnNextcloud } from '@nextcloud/cypress/docker'
export default defineConfig({
e2e: {
setupNodeEvents(on, config) {
on('after:run', () => {
stopNextcloud()
})
return startNextcloud(process.env.BRANCH)
.then((ip) => {
config.baseUrl = `http://${ip}/index.php`
return ip
})
.then(waitOnNextcloud)
.then(() => configureNextcloud(['viewer']))
.then(() => {
return config
})
},
},
})