Cit*_*nex 5 session-storage cypress
我目前正在开发一个将信息保存在会话存储中的应用程序。登录过程结束后,我看到会话存储被清除,并且 DOM 被刷新回登录屏幕。我想在每个规范的测试之间保留会话存储,这样我就不必不断注销并重新登录来检查同一容器中的多个内容。
我当前的设置如下所示:
describe('Quickpanel', () => {
before(() => {
cy.visit(base_url, {onBeforeLoad: (window) => {
window.sessionStorage.setItem('someInfo',
`{"SubsId":${info[0]},"RId":${nfo[1]}}`)
window.sessionStorage.setItem('loc', `${info[2]}`)
}})
LoginPage
.login(login_username, login_password)
Navbar
.clickOnBookingsSubLink('Beta Calendar')
.verifyCalendarLoads()
.clickBookReservationButton()
.verifyQuickPanelIsOpen()
})
Run Code Online (Sandbox Code Playgroud)
第一个测试运行良好,设置了正确的会话存储值,并使用提供的信息创建了其他值。当我移动到第二个“It()”时,会话存储就会消失。我还尝试在“beforeEach()”中设置会话存储项目,但出现了同样的问题。
如有任何帮助,我们将不胜感激,谢谢:)
该cy.session()命令是一个缓存 - 里面的任何内容都不会被多次调用。
beforeEach()您不仅需要调用它一次 test before(),而且 setup 函数只调用一次。
这是一个概念验证
Cypress.config('experimentalSessionSupport', true)
let sessionCallCount = 0;
Cypress.session.clearAllSavedSessions() // to avoid caching across browser reload
beforeEach(() => {
cy.session('mySession', () => {
cy.visit('https://example.com', {
onBeforeLoad: (window) => {
window.sessionStorage.setItem('myKey', 'someInfo')
sessionCallCount++
}
})
})
})
it('t1', () => {
cy.window().then(window => {
let data = window.sessionStorage.getItem('myKey')
expect(data).to.eq('someInfo')
expect(sessionCallCount).to.eq(1)
})
})
it('t2', () => {
cy.window().then(window => {
let data = window.sessionStorage.getItem('myKey')
expect(data).to.eq('someInfo')
expect(sessionCallCount).to.eq(1) // cached code is called only once
})
})
Run Code Online (Sandbox Code Playgroud)
登录示例
Cypress.config('experimentalSessionSupport', true)
Cypress.session.clearAllSavedSessions() // to avoid caching across browser reload
beforeEach(() => {
cy.session('mySession', () => {
cy.visit('https://example.com', {
onBeforeLoad: (window) => {
cy.login(userName, password) // sets a cookie
}
})
})
})
it('t1', () => {
cy.visit('https://example.com') // uses cookie set by cy.login call
})
it('t2', () => {
cy.visit('https://example.com') // uses cookie preserved by cy.session cache
// so app sees logged-in state
// and does not redirect to login page
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16081 次 |
| 最近记录: |