mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 00:32:29 -04:00
chore(cypress): allow db snapshot and restore fo faster tests
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
This commit is contained in:
parent
49fa2e508d
commit
b6bc28833c
2 changed files with 43 additions and 7 deletions
|
|
@ -102,11 +102,23 @@ const genericProperties = ['Location', 'X (formerly Twitter)', 'Fediverse']
|
|||
const nonfederatedProperties = ['Organisation', 'Role', 'Headline', 'About']
|
||||
|
||||
describe('Settings: Change personal information', { testIsolation: true }, () => {
|
||||
let snapshot: string = ''
|
||||
|
||||
before(() => {
|
||||
// ensure we can set locale and language
|
||||
cy.runOccCommand('config:system:delete force_language')
|
||||
cy.runOccCommand('config:system:delete force_locale')
|
||||
cy.createRandomUser().then(($user) => {
|
||||
user = $user
|
||||
cy.modifyUser(user, 'language', 'en')
|
||||
cy.modifyUser(user, 'locale', 'en_US')
|
||||
})
|
||||
|
||||
cy.wait(500)
|
||||
|
||||
cy.backupDB().then(($snapshot) => {
|
||||
snapshot = $snapshot
|
||||
})
|
||||
})
|
||||
|
||||
after(() => {
|
||||
|
|
@ -115,16 +127,15 @@ describe('Settings: Change personal information', { testIsolation: true }, () =>
|
|||
})
|
||||
|
||||
beforeEach(() => {
|
||||
cy.createRandomUser().then(($user) => {
|
||||
user = $user
|
||||
cy.modifyUser(user, 'language', 'en')
|
||||
cy.modifyUser(user, 'locale', 'en_US')
|
||||
cy.login($user)
|
||||
cy.visit('/settings/user')
|
||||
})
|
||||
cy.login(user)
|
||||
cy.visit('/settings/user')
|
||||
cy.intercept('PUT', /ocs\/v2.php\/cloud\/users\//).as('submitSetting')
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
cy.restoreDB(snapshot)
|
||||
})
|
||||
|
||||
it('Can dis- and enable the profile', () => {
|
||||
cy.visit(`/u/${user.userId}`)
|
||||
cy.contains('h2', user.userId).should('be.visible')
|
||||
|
|
@ -132,6 +143,7 @@ describe('Settings: Change personal information', { testIsolation: true }, () =>
|
|||
cy.visit('/settings/user')
|
||||
cy.contains('Enable profile').click()
|
||||
handlePasswordConfirmation(user.password)
|
||||
cy.wait('@submitSetting')
|
||||
|
||||
cy.visit(`/u/${user.userId}`, { failOnStatusCode: false })
|
||||
cy.contains('h2', 'Profile not found').should('be.visible')
|
||||
|
|
@ -139,6 +151,7 @@ describe('Settings: Change personal information', { testIsolation: true }, () =>
|
|||
cy.visit('/settings/user')
|
||||
cy.contains('Enable profile').click()
|
||||
handlePasswordConfirmation(user.password)
|
||||
cy.wait('@submitSetting')
|
||||
|
||||
cy.visit(`/u/${user.userId}`, { failOnStatusCode: false })
|
||||
cy.contains('h2', user.userId).should('be.visible')
|
||||
|
|
|
|||
|
|
@ -65,6 +65,17 @@ declare global {
|
|||
* Run an occ command in the docker container.
|
||||
*/
|
||||
runOccCommand(command: string, options?: Partial<Cypress.ExecOptions>): Cypress.Chainable<Cypress.Exec>,
|
||||
|
||||
/**
|
||||
* Create a snapshot of the current database
|
||||
*/
|
||||
backupDB(): Cypress.Chainable<string>,
|
||||
|
||||
/**
|
||||
* Restore a snapshot of the database
|
||||
* Default is the post-setup state
|
||||
*/
|
||||
restoreDB(snapshot?: string): Cypress.Chainable,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -276,3 +287,15 @@ Cypress.Commands.add('runOccCommand', (command: string, options?: Partial<Cypres
|
|||
const env = Object.entries(options?.env ?? {}).map(([name, value]) => `-e '${name}=${value}'`).join(' ')
|
||||
return cy.exec(`docker exec --user www-data ${env} nextcloud-cypress-tests-server php ./occ ${command}`, options)
|
||||
})
|
||||
|
||||
Cypress.Commands.add('backupDB', (): Cypress.Chainable<string> => {
|
||||
const randomString = Math.random().toString(36).substring(7)
|
||||
cy.exec(`docker exec nextcloud-cypress-tests-server cp /var/www/html/data/owncloud.db /var/www/html/data/owncloud.db-${randomString}`)
|
||||
cy.log(`Created snapshot ${randomString}`)
|
||||
return cy.wrap(randomString)
|
||||
})
|
||||
|
||||
Cypress.Commands.add('restoreDB', (snapshot: string = 'init') => {
|
||||
cy.exec(`docker exec nextcloud-cypress-tests-server cp /var/www/html/data/owncloud.db-${snapshot} /var/www/html/data/owncloud.db`)
|
||||
cy.log(`Restored snapshot ${snapshot}`)
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue